Beispiel #1
0
func NewBootstrapState(fs boshsys.FileSystem, path string) (*BootstrapState, error) {
	state := BootstrapState{fs: fs, path: path}

	if !fs.FileExists(path) {
		return &state, nil
	}

	bytes, err := fs.ReadFile(path)
	if err != nil {
		return nil, bosherr.WrapError(err, "Reading bootstrap state file")
	}

	err = json.Unmarshal(bytes, &state)
	if err != nil {
		return nil, bosherr.WrapError(err, "Unmarshalling bootstrap state")
	}

	return &state, nil
}
			))
		})
	})

	Describe("CleanUp", func() {
		It("removes tarball path", func() {
			fs := fakesys.NewFakeFileSystem()
			compressor := NewTarballCompressor(cmdRunner, fs)

			err := fs.WriteFileString("/fake-tarball.tar", "")
			Expect(err).ToNot(HaveOccurred())

			err = compressor.CleanUp("/fake-tarball.tar")
			Expect(err).ToNot(HaveOccurred())

			Expect(fs.FileExists("/fake-tarball.tar")).To(BeFalse())
		})

		It("returns error if removing tarball path fails", func() {
			fs := fakesys.NewFakeFileSystem()
			compressor := NewTarballCompressor(cmdRunner, fs)

			fs.RemoveAllStub = func(_ string) error {
				return errors.New("fake-remove-all-err")
			}

			err := compressor.CleanUp("/fake-tarball.tar")
			Expect(err).To(MatchError("fake-remove-all-err"))
		})
	})
})
			Expect(err).ToNot(HaveOccurred())
			assert.Contains(GinkgoT(), content, "this is app stdout")

			content, err = fs.ReadFileString(dstDir + "/app.stderr.log")
			Expect(err).ToNot(HaveOccurred())
			assert.Contains(GinkgoT(), content, "this is app stderr")

			content, err = fs.ReadFileString(dstDir + "/other_logs/other_app.stdout.log")
			Expect(err).ToNot(HaveOccurred())
			assert.Contains(GinkgoT(), content, "this is other app stdout")

			content, err = fs.ReadFileString(dstDir + "/other_logs/more_logs/more.stdout.log")
			Expect(err).ToNot(HaveOccurred())
			assert.Contains(GinkgoT(), content, "this is more stdout")

			Expect(fs.FileExists(dstDir + "/some_directory")).To(BeTrue())
			Expect(fs.FileExists(dstDir + "/some_directory/sub_dir")).To(BeTrue())
			Expect(fs.FileExists(dstDir + "/some_directory/sub_dir/other_sub_dir")).To(BeTrue())

			_, err = fs.ReadFile(dstDir + "/other_logs/other_app.stderr.log")
			Expect(err).To(HaveOccurred())

			_, err = fs.ReadFile(dstDir + "/../some.config")
			Expect(err).To(HaveOccurred())
		})

		It("copies the content of directories when specified as a filter", func() {
			srcDir := copierFixtureSrcDir()
			filters := []string{
				"some_directory",
			}
	Context("Delete", func() {
		BeforeEach(func() {
			blobId = "smurf-25"
		})

		Describe("when file to be deleted does not exist in blobsPath", func() {
			It("does not freak out", func() {
				blobManager := NewBlobManager(fs, basePath)

				err := blobManager.Delete("hello-i-am-no-one")

				Expect(err).To(BeNil())
			})
		})

		Describe("when file to be deleted exists in blobsPath", func() {
			It("should delete the blob", func() {
				err := fs.WriteFileString(filepath.Join(basePath, blobId), "smurf-content")
				Expect(err).To(BeNil())
				Expect(fs.FileExists(filepath.Join(basePath, blobId))).To(BeTrue())

				blobManager := NewBlobManager(fs, basePath)
				err = blobManager.Delete(blobId)
				Expect(err).To(BeNil())

				Expect(fs.FileExists(filepath.Join(basePath, blobId))).To(BeFalse())
			})
		})
	})
})
			Expect(err).ToNot(HaveOccurred())
			assert.Contains(GinkgoT(), content, "this is app stdout")

			content, err = fs.ReadFileString(filepath.Join(dstDir, "app.stderr.log"))
			Expect(err).ToNot(HaveOccurred())
			assert.Contains(GinkgoT(), content, "this is app stderr")

			content, err = fs.ReadFileString(filepath.Join(dstDir, "other_logs", "other_app.stdout.log"))
			Expect(err).ToNot(HaveOccurred())
			assert.Contains(GinkgoT(), content, "this is other app stdout")

			content, err = fs.ReadFileString(filepath.Join(dstDir, "other_logs", "more_logs", "more.stdout.log"))
			Expect(err).ToNot(HaveOccurred())
			assert.Contains(GinkgoT(), content, "this is more stdout")

			Expect(fs.FileExists(filepath.Join(dstDir, "some_directory"))).To(BeTrue())
			Expect(fs.FileExists(filepath.Join(dstDir, "some_directory", "sub_dir"))).To(BeTrue())
			Expect(fs.FileExists(filepath.Join(dstDir, "some_directory", "sub_dir", "other_sub_dir"))).To(BeTrue())

			_, err = fs.ReadFile(filepath.Join(dstDir, "other_logs", "other_app.stderr.log"))
			Expect(err).To(HaveOccurred())

			_, err = fs.ReadFile(filepath.Join(dstDir, "..", "some.config"))
			Expect(err).To(HaveOccurred())
		})

		Describe("changing permissions", func() {
			BeforeEach(func() {
				if runtime.GOOS == "windows" {
					// https://golang.org/src/os/path_test.go#L124
					Skip("Pending on Windows, chmod is not supported")
Beispiel #6
0
		}
		quietCmdEnv = map[string]string{
			"TMPDIR":              testEnv.Home(),
			"BOSH_INIT_LOG_LEVEL": "ERROR",
			"BOSH_INIT_LOG_PATH":  testEnv.Path("bosh-init-cleanup.log"),
		}

		// clean up from previous failed tests
		deleteLogFile(cmdEnv["BOSH_INIT_LOG_PATH"])
		deleteLogFile(quietCmdEnv["BOSH_INIT_LOG_PATH"])

		err = bitestutils.BuildExecutableForArch("linux-amd64")
		Expect(err).NotTo(HaveOccurred())

		boshInitPath := "./../out/bosh-init"
		Expect(fileSystem.FileExists(boshInitPath)).To(BeTrue())
		err = testEnv.Copy("bosh-init", boshInitPath)
		Expect(err).NotTo(HaveOccurred())

		instanceSSH = NewInstanceSSH(
			config.VMUsername,
			config.VMIP,
			config.VMPort,
			config.PrivateKeyPath,
			instanceUsername,
			instanceIP,
			instancePassword,
			fileSystem,
			logger,
		)