func (cmd *WorkerCommand) houdiniRunner(logger lager.Logger, platform string) (atc.Worker, ifrit.Runner, error) { depotDir := filepath.Join(cmd.WorkDir, "containers") err := os.MkdirAll(depotDir, 0755) if err != nil { return atc.Worker{}, nil, fmt.Errorf("failed to create depot dir: %s", err) } backend := houdini.NewBackend(depotDir) server := server.New( "tcp", cmd.bindAddr(), 0, backend, logger, ) worker := atc.Worker{ Platform: platform, Tags: cmd.Tags, } worker.Name, err = cmd.workerName() if err != nil { return atc.Worker{}, nil, err } return worker, gardenServerRunner{logger, server}, nil }
func main() { flag.Parse() logger := lager.NewLogger("houdini") logger.RegisterSink(lager.NewWriterSink(os.Stdout, lager.DEBUG)) depot, err := filepath.Abs(*containersDir) if err != nil { logger.Fatal("failed-to-determine-depot-dir", err) } backend := houdini.NewBackend(depot) gardenServer := server.New(*listenNetwork, *listenAddr, *containerGraceTime, backend, logger) err = gardenServer.Start() if err != nil { logger.Fatal("failed-to-start-server", err) } logger.Info("started", lager.Data{ "network": *listenNetwork, "addr": *listenAddr, }) signals := make(chan os.Signal, 1) go func() { <-signals gardenServer.Stop() os.Exit(0) }() signal.Notify(signals, syscall.SIGINT, syscall.SIGTERM, syscall.SIGHUP) debugListenAddr := fmt.Sprintf("%s:%d", *debugListenAddress, *debugListenPort) err = http.ListenAndServe(debugListenAddr, nil) if err != nil { logger.Fatal("failed-to-start-debug-server", err) } select {} }
. "github.com/onsi/ginkgo" . "github.com/onsi/gomega" "github.com/vito/houdini" "testing" ) var depotDir string var backend *houdini.Backend var _ = BeforeEach(func() { var err error depotDir, err = ioutil.TempDir("", "depot") Expect(err).ToNot(HaveOccurred()) backend = houdini.NewBackend(depotDir) err = backend.Start() Expect(err).ToNot(HaveOccurred()) }) var _ = AfterEach(func() { backend.Stop() err := os.RemoveAll(depotDir) Expect(err).ToNot(HaveOccurred()) }) func TestHoudini(t *testing.T) { RegisterFailHandler(Fail) RunSpecs(t, "Houdini Suite")