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")
} 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, )