示例#1
0
func ensureRunning(instance *redis.Instance, repo *redis.LocalRepository, processController *redis.OSProcessController, logger lager.Logger) {
	configPath := repo.InstanceConfigPath(instance.ID)
	instanceDataDir := repo.InstanceDataDir(instance.ID)
	pidfilePath := repo.InstancePidFilePath(instance.ID)
	logfilePath := repo.InstanceLogFilePath(instance.ID)

	err := processController.EnsureRunning(instance, configPath, instanceDataDir, pidfilePath, logfilePath)
	if err != nil {
		logger.Fatal("Error starting instance", err, lager.Data{
			"instance": instance.ID,
		})
	}
}
			})

			It("overwrites the config file", func() {
				originalConfigContents := []byte("my custom config")
				err := ioutil.WriteFile(repo.InstanceConfigPath(instance.ID), originalConfigContents, 0755)
				Ω(err).NotTo(HaveOccurred())

				writeInstance(instance, repo)

				configContents, err := ioutil.ReadFile(repo.InstanceConfigPath(instance.ID))
				Ω(err).NotTo(HaveOccurred())
				Ω(configContents).ShouldNot(Equal(originalConfigContents))
			})

			It("does not clear the data directory", func() {
				dataFilePath := filepath.Join(repo.InstanceDataDir(instance.ID), "appendonly.aof")

				originalDataFileContents := []byte("DATA FILE")
				err := ioutil.WriteFile(dataFilePath, originalDataFileContents, 0755)
				Ω(err).NotTo(HaveOccurred())

				writeInstance(instance, repo)

				dataFileContents, err := ioutil.ReadFile(dataFilePath)
				Ω(err).NotTo(HaveOccurred())
				Ω(dataFileContents).Should(Equal(originalDataFileContents))
			})

			It("does not clear the log directory", func() {
				logFilePath := filepath.Join(repo.InstanceLogDir(instance.ID), "redis-server.log")