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, }) } }
} func (fakeProcessKiller *fakeProcessKiller) Kill(pid int) error { fakeProcessKiller.lastPidKilled = pid fakeProcessKiller.killed = true return nil } type fakeInstanceInformer struct{} func (*fakeInstanceInformer) InstancePid(instanceId string) (int, error) { return 123, nil } var _ = Describe("Redis Process Controller", func() { var processController *redis.OSProcessController var instance *redis.Instance = &redis.Instance{} var instanceInformer *fakeInstanceInformer var logger *lagertest.TestLogger var fakeProcessChecker *fakeProcessChecker = &fakeProcessChecker{} var fakeProcessKiller *fakeProcessKiller = &fakeProcessKiller{} var commandRunner *system.FakeCommandRunner var connectionTimeoutErr error BeforeEach(func() { connectionTimeoutErr = nil instanceInformer = &fakeInstanceInformer{} logger = lagertest.NewTestLogger("process-controller") commandRunner = &system.FakeCommandRunner{} })