github.com/pf-qiu/concourse/v6@v6.7.3-0.20201207032516-1f455d73275f/atc/scheduler/algorithm/suite_test.go (about)

     1  package algorithm_test
     2  
     3  import (
     4  	"os"
     5  	"testing"
     6  
     7  	. "github.com/onsi/ginkgo"
     8  	. "github.com/onsi/gomega"
     9  	"github.com/tedsuo/ifrit"
    10  	"go.opentelemetry.io/otel/exporters/trace/jaeger"
    11  
    12  	"github.com/pf-qiu/concourse/v6/atc/db"
    13  	"github.com/pf-qiu/concourse/v6/atc/db/lock"
    14  	"github.com/pf-qiu/concourse/v6/atc/metric"
    15  	"github.com/pf-qiu/concourse/v6/atc/postgresrunner"
    16  	"github.com/pf-qiu/concourse/v6/tracing"
    17  )
    18  
    19  var (
    20  	postgresRunner postgresrunner.Runner
    21  	dbProcess      ifrit.Process
    22  
    23  	lockFactory lock.LockFactory
    24  	teamFactory db.TeamFactory
    25  
    26  	dbConn db.Conn
    27  
    28  	exporter *jaeger.Exporter
    29  )
    30  
    31  func TestAlgorithm(t *testing.T) {
    32  	RegisterFailHandler(Fail)
    33  	RunSpecs(t, "Algorithm Suite")
    34  }
    35  
    36  var _ = BeforeSuite(func() {
    37  	jaegerURL := os.Getenv("JAEGER_URL")
    38  
    39  	if jaegerURL != "" {
    40  		c := tracing.Config{
    41  			Jaeger: tracing.Jaeger{
    42  				Endpoint: jaegerURL + "/api/traces",
    43  				Service:  "algorithm_test",
    44  			},
    45  		}
    46  
    47  		err := c.Prepare()
    48  		Expect(err).ToNot(HaveOccurred())
    49  	}
    50  
    51  	postgresRunner = postgresrunner.Runner{
    52  		Port: 5433 + GinkgoParallelNode(),
    53  	}
    54  
    55  	dbProcess = ifrit.Invoke(postgresRunner)
    56  
    57  	postgresRunner.CreateTestDB()
    58  })
    59  
    60  var _ = BeforeEach(func() {
    61  	postgresRunner.Truncate()
    62  
    63  	dbConn = postgresRunner.OpenConn()
    64  
    65  	lockFactory = lock.NewLockFactory(postgresRunner.OpenSingleton(), metric.LogLockAcquired, metric.LogLockReleased)
    66  	teamFactory = db.NewTeamFactory(dbConn, lockFactory)
    67  })
    68  
    69  var _ = AfterEach(func() {
    70  	err := dbConn.Close()
    71  	Expect(err).NotTo(HaveOccurred())
    72  })
    73  
    74  var _ = AfterSuite(func() {
    75  	dbProcess.Signal(os.Interrupt)
    76  	<-dbProcess.Wait()
    77  
    78  	if exporter != nil {
    79  		exporter.Flush()
    80  	}
    81  })