github.com/schwarzm/garden-linux@v0.0.0-20150507151835-33bca2147c47/integration/measurements/measurements_suite_test.go (about) 1 package measurements_test 2 3 import ( 4 "fmt" 5 "log" 6 "os" 7 "syscall" 8 "testing" 9 10 gardenClient "github.com/cloudfoundry-incubator/garden/client" 11 . "github.com/onsi/ginkgo" 12 . "github.com/onsi/gomega" 13 "github.com/onsi/gomega/gexec" 14 "github.com/tedsuo/ifrit" 15 16 "github.com/cloudfoundry-incubator/garden-linux/integration/runner" 17 ) 18 19 var binPath = "../../old/linux_backend/bin" // relative to test suite directory 20 var rootFSPath = os.Getenv("GARDEN_TEST_ROOTFS") 21 var graphPath = os.Getenv("GARDEN_TEST_GRAPHPATH") 22 23 var gardenBin string 24 25 var gardenRunner *runner.Runner 26 var gardenProcess ifrit.Process 27 28 var client gardenClient.Client 29 30 func startGarden(argv ...string) gardenClient.Client { 31 gardenAddr := fmt.Sprintf("/tmp/garden_%d.sock", GinkgoParallelNode()) 32 33 { // Check this test suite is in the correct directory 34 b, err := os.Open(binPath) 35 Expect(err).ToNot(HaveOccurred()) 36 b.Close() 37 } 38 39 gardenRunner = runner.New("unix", gardenAddr, gardenBin, binPath, rootFSPath, graphPath, argv...) 40 41 gardenProcess = ifrit.Invoke(gardenRunner) 42 43 return gardenRunner.NewClient() 44 } 45 46 func restartGarden(argv ...string) { 47 gardenProcess.Signal(syscall.SIGINT) 48 Eventually(gardenRunner.TryDial, 10).Should(HaveOccurred()) 49 50 startGarden(argv...) 51 } 52 53 func TestLifecycle(t *testing.T) { 54 if rootFSPath == "" { 55 log.Println("GARDEN_TEST_ROOTFS undefined; skipping") 56 return 57 } 58 59 SynchronizedBeforeSuite(func() []byte { 60 gardenPath, err := gexec.Build("github.com/cloudfoundry-incubator/garden-linux", "-a", "-race", "-tags", "daemon") 61 Expect(err).ToNot(HaveOccurred()) 62 return []byte(gardenPath) 63 }, func(gardenPath []byte) { 64 gardenBin = string(gardenPath) 65 }) 66 67 AfterEach(func() { 68 gardenProcess.Signal(syscall.SIGQUIT) 69 Eventually(gardenProcess.Wait(), 5).Should(Receive()) 70 }) 71 72 SynchronizedAfterSuite(func() { 73 //noop 74 }, func() { 75 gexec.CleanupBuildArtifacts() 76 }) 77 78 RegisterFailHandler(Fail) 79 RunSpecs(t, "Measurements Suite") 80 }