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  }