func countFiles(fs system.FileSystem, dir string) (count int) { fs.Walk(dir, func(path string, info os.FileInfo, err error) error { count++ return nil }) return }
func AbsolutifyPath(pathToManifest string, pathToFile string, fs boshsys.FileSystem) (string, error) { if strings.HasPrefix(pathToFile, "http") { return pathToFile, nil } if strings.HasPrefix(pathToFile, "file:///") || strings.HasPrefix(pathToFile, "/") { return pathToFile, nil } if strings.HasPrefix(pathToFile, "file://~") { return pathToFile, nil } if strings.HasPrefix(pathToFile, "~") { return fs.ExpandPath(pathToFile) } var absPath string if !strings.HasPrefix(pathToFile, "file://") { absPath = filepath.Join(filepath.Dir(pathToManifest), pathToFile) } else { pathToFile = strings.Replace(pathToFile, "file://", "", 1) absPath = filepath.Join(filepath.Dir(pathToManifest), pathToFile) absPath = "file://" + absPath } return absPath, nil }
// New returns a new logger (that writes to the specified file) & the open file handle // All log levels >= the specified level are written to the specified file. // User is responsible for closing the returned file handle, unless an error is returned. func New(level boshlog.LogLevel, filePath string, fileMode os.FileMode, fs boshsys.FileSystem) (boshlog.Logger, boshsys.File, error) { file, err := fs.OpenFile(filePath, os.O_CREATE|os.O_WRONLY|os.O_APPEND, fileMode) if err != nil { return nil, file, bosherr.WrapErrorf(err, "Failed to open log file '%s'", filePath) } return boshlog.NewWriterLogger(level, file, file), file, nil }
func describeDummyPlatform() { var ( platform Platform collector boshstats.Collector fs boshsys.FileSystem cmdRunner boshsys.CmdRunner dirProvider boshdirs.Provider devicePathResolver boshdpresolv.DevicePathResolver logger boshlog.Logger ) BeforeEach(func() { collector = &fakestats.FakeCollector{} fs = fakesys.NewFakeFileSystem() cmdRunner = fakesys.NewFakeCmdRunner() dirProvider = boshdirs.NewProvider("/fake-dir") devicePathResolver = fakedpresolv.NewFakeDevicePathResolver() logger = boshlog.NewLogger(boshlog.LevelNone) }) JustBeforeEach(func() { platform = NewDummyPlatform( collector, fs, cmdRunner, dirProvider, devicePathResolver, logger, ) }) Describe("GetDefaultNetwork", func() { It("returns the contents of dummy-defaults-network-settings.json since that's what the dummy cpi writes", func() { settingsFilePath := "/fake-dir/bosh/dummy-default-network-settings.json" fs.WriteFileString(settingsFilePath, `{"IP": "1.2.3.4"}`) network, err := platform.GetDefaultNetwork() Expect(err).NotTo(HaveOccurred()) Expect(network.IP).To(Equal("1.2.3.4")) }) }) Describe("GetCertManager", func() { It("returs a dummy cert manager", func() { certManager := platform.GetCertManager() Expect(certManager.UpdateCertificates("")).Should(BeNil()) }) }) }
func deleteFiles(fs boshsys.FileSystem, path string, filenamePrefix string) (int, error) { var deletedFilesCount int files, err := fs.Glob(fmt.Sprintf("%s%s*", path, filenamePrefix)) if err != nil { return deletedFilesCount, bosherr.WrapError(err, "Glob command failed") } for _, file := range files { err = fs.RemoveAll(file) if err != nil { return deletedFilesCount, bosherr.WrapErrorf(err, "deleting %s failed", file) } deletedFilesCount++ } return deletedFilesCount, err }
func NewConfig(fs boshsys.FileSystem) (*Config, error) { path := os.Getenv("BOSH_INIT_CONFIG_PATH") if path == "" { return &Config{}, errors.New("Must provide config file via BOSH_INIT_CONFIG_PATH environment variable") } configContents, err := fs.ReadFile(path) if err != nil { return &Config{}, err } var config Config err = json.Unmarshal(configContents, &config) if err != nil { return &Config{}, err } return &config, nil }
return dirInfo.IsDir(), nil } func (m beDirMatcher) FailureMessage(actual interface{}) string { return fmt.Sprintf("Expected `%s' to be a directory", actual) } func (m beDirMatcher) NegatedFailureMessage(actual interface{}) string { return fmt.Sprintf("Expected `%s' to not be a directory", actual) } var _ = Describe("tarballCompressor", func() { var ( dstDir string cmdRunner boshsys.CmdRunner fs boshsys.FileSystem compressor Compressor ) BeforeEach(func() { logger := boshlog.NewLogger(boshlog.LevelNone) cmdRunner = boshsys.NewExecCmdRunner(logger) fs = boshsys.NewOsFileSystem(logger) tmpDir, err := fs.TempDir("tarballCompressor-test") Expect(err).NotTo(HaveOccurred()) dstDir = filepath.Join(tmpDir, "TestCompressor") compressor = NewTarballCompressor(cmdRunner, fs) }) BeforeEach(func() { fs.MkdirAll(dstDir, os.ModePerm)
package index_test import ( . "github.com/cloudfoundry/bosh-init/index" boshlog "github.com/cloudfoundry/bosh-init/internal/github.com/cloudfoundry/bosh-utils/logger" boshsys "github.com/cloudfoundry/bosh-init/internal/github.com/cloudfoundry/bosh-utils/system" . "github.com/cloudfoundry/bosh-init/internal/github.com/onsi/ginkgo" . "github.com/cloudfoundry/bosh-init/internal/github.com/onsi/gomega" ) var _ = Describe("FileIndex", func() { var ( fs boshsys.FileSystem indexFilePath string index FileIndex ) BeforeEach(func() { logger := boshlog.NewLogger(boshlog.LevelNone) fs = boshsys.NewOsFileSystem(logger) file, err := fs.TempFile("file-index") Expect(err).ToNot(HaveOccurred()) indexFilePath = file.Name() err = file.Close() Expect(err).ToNot(HaveOccurred()) err = fs.RemoveAll(indexFilePath) Expect(err).ToNot(HaveOccurred())
bitestutils "github.com/cloudfoundry/bosh-init/testutils" ) const ( stageTimePattern = "\\(\\d{2}:\\d{2}:\\d{2}\\)" stageFinishedPattern = "\\.\\.\\. Finished " + stageTimePattern + "$" ) var _ = Describe("bosh-init", func() { var ( logger boshlog.Logger fileSystem boshsys.FileSystem sshCmdRunner CmdRunner cmdEnv map[string]string quietCmdEnv map[string]string testEnv Environment config *Config instanceSSH InstanceSSH instanceUsername = "******" instancePassword = "******" // encrypted value must be in the manifest: resource_pool.env.bosh.password instanceIP = "10.244.0.42" ) var readLogFile = func(logPath string) (stdout string) { stdout, _, exitCode, err := sshCmdRunner.RunCommand(cmdEnv, "cat", logPath) Expect(err).ToNot(HaveOccurred()) Expect(exitCode).To(Equal(0)) return stdout } var deleteLogFile = func(logPath string) {
"io/ioutil" "os" "path/filepath" "github.com/cloudfoundry/bosh-init/cmd" boshlog "github.com/cloudfoundry/bosh-init/internal/github.com/cloudfoundry/bosh-utils/logger" boshsys "github.com/cloudfoundry/bosh-init/internal/github.com/cloudfoundry/bosh-utils/system" . "github.com/cloudfoundry/bosh-init/internal/github.com/onsi/ginkgo" . "github.com/cloudfoundry/bosh-init/internal/github.com/onsi/gomega" ) var _ = Describe("TempRootConfigurator", func() { Describe("PrepareAndSetUpTempRoot", func() { var fs boshsys.FileSystem var testTempDir string var tempRoot string var logger boshlog.Logger BeforeEach(func() { var err error testTempDir, err = ioutil.TempDir("", "temp_root_configurator_test") Expect(err).ToNot(HaveOccurred()) tempRoot = filepath.Join(testTempDir, "my-temp-root") logger = boshlog.NewLogger(boshlog.LevelNone) fs = boshsys.NewOsFileSystem(logger) }) AfterEach(func() {
BeforeEach(func() { outBuffer = bytes.NewBufferString("") errBuffer = bytes.NewBufferString("") logger = boshlog.NewWriterLogger(boshlog.LevelDebug, outBuffer, errBuffer) fakeSHA1Calculator = fakebicrypto.NewFakeSha1Calculator() renderedJobList = NewRenderedJobList() }) Describe("Compress", func() { Context("with a real fs & compressor", func() { var ( fs boshsys.FileSystem cmdRunner boshsys.CmdRunner compressor boshcmd.Compressor ) BeforeEach(func() { fs = boshsys.NewOsFileSystem(logger) cmdRunner = boshsys.NewExecCmdRunner(logger) compressor = boshcmd.NewTarballCompressor(cmdRunner, fs) renderedJobListCompressor = NewRenderedJobListCompressor(fs, compressor, fakeSHA1Calculator, logger) }) It("copies rendered jobs into a new temp dir, compresses the temp dir, and wraps it in a RenderedJobListArchive", func() { // create rendered job with 2 rendered scripts renderedJobDir0, err := fs.TempDir("RenderedJobListCompressorTest")
import ( "time" . "github.com/cloudfoundry/bosh-init/internal/github.com/onsi/ginkgo" . "github.com/cloudfoundry/bosh-init/internal/github.com/onsi/gomega" . "github.com/cloudfoundry/bosh-init/internal/github.com/cloudfoundry/bosh-agent/infrastructure/devicepathresolver" boshsettings "github.com/cloudfoundry/bosh-init/internal/github.com/cloudfoundry/bosh-agent/settings" boshsys "github.com/cloudfoundry/bosh-init/internal/github.com/cloudfoundry/bosh-utils/system" fakesys "github.com/cloudfoundry/bosh-init/internal/github.com/cloudfoundry/bosh-utils/system/fakes" ) var _ = Describe("mappedDevicePathResolver", func() { var ( fs boshsys.FileSystem diskSettings boshsettings.DiskSettings resolver DevicePathResolver ) BeforeEach(func() { fs = fakesys.NewFakeFileSystem() resolver = NewMappedDevicePathResolver(time.Second, fs) diskSettings = boshsettings.DiskSettings{ Path: "/dev/sda", } }) Context("when a matching /dev/xvdX device is found", func() { BeforeEach(func() { fs.WriteFile("/dev/xvda", []byte{}) fs.WriteFile("/dev/vda", []byte{})
"os" "path/filepath" . "github.com/cloudfoundry/bosh-init/internal/github.com/onsi/ginkgo" . "github.com/cloudfoundry/bosh-init/internal/github.com/onsi/gomega" "github.com/cloudfoundry/bosh-init/internal/github.com/stretchr/testify/assert" . "github.com/cloudfoundry/bosh-init/internal/github.com/cloudfoundry/bosh-utils/fileutil" boshlog "github.com/cloudfoundry/bosh-init/internal/github.com/cloudfoundry/bosh-utils/logger" boshsys "github.com/cloudfoundry/bosh-init/internal/github.com/cloudfoundry/bosh-utils/system" ) var _ = Describe("cpCopier", func() { var ( fs boshsys.FileSystem cmdRunner boshsys.CmdRunner cpCopier Copier ) BeforeEach(func() { logger := boshlog.NewLogger(boshlog.LevelNone) fs = boshsys.NewOsFileSystem(logger) cmdRunner = boshsys.NewExecCmdRunner(logger) cpCopier = NewCpCopier(cmdRunner, fs, logger) }) Describe("FilteredCopyToTemp", func() { copierFixtureSrcDir := func() string { pwd, err := os.Getwd() Expect(err).ToNot(HaveOccurred()) return filepath.Join(pwd, "test_assets", "test_filtered_copy_to_temp")
func GenerateDeploymentManifest(deploymentManifestFilePath string, fs boshsys.FileSystem, manifestContents string) error { return fs.WriteFileString(deploymentManifestFilePath, manifestContents) }
package util_test import ( "github.com/cloudfoundry/bosh-init/common/util" boshlog "github.com/cloudfoundry/bosh-init/internal/github.com/cloudfoundry/bosh-utils/logger" boshsys "github.com/cloudfoundry/bosh-init/internal/github.com/cloudfoundry/bosh-utils/system" . "github.com/cloudfoundry/bosh-init/internal/github.com/onsi/ginkgo" . "github.com/cloudfoundry/bosh-init/internal/github.com/onsi/gomega" ) var _ = Describe("AbsolutifyPath", func() { var realfs boshsys.FileSystem var fakeManifestPath, fakeFilePath string BeforeEach(func() { logger := boshlog.NewLogger(boshlog.LevelNone) realfs = boshsys.NewOsFileSystem(logger) fakeManifestPath = "/fake/manifest/path/manifest.yml" }) Context("File path is not a url", func() { Context("File path is relative", func() { Context("File path begins with a series of ../", func() { It("joins file path to the manifest directory", func() { fakeFilePath = "../fake/relative/path/file.tgz" Expect(util.AbsolutifyPath(fakeManifestPath, fakeFilePath, realfs)).To( Equal("/fake/manifest/fake/relative/path/file.tgz")) }) }) Context("File is located in same directory as manifest or subdirectory", func() { It("makes the file path relative to the manifest directory", func() {