S: extract common Ginkgo setup

several test suites had to do the same setup/teardown for the postgres
process. this commit adds a helper to configure the Before/AfterSuite
for the common case, while adding more fine-grained helpers if you e.g.
need a more complicated Before/AfterSuite (since Ginkgo only lets you
have one)

Signed-off-by: Aidan Oldershaw <aoldershaw@pivotal.io>
This commit is contained in:
Aidan Oldershaw 2021-02-04 17:56:13 -05:00
parent 3dc0c519c4
commit 31bf677cee
9 changed files with 51 additions and 116 deletions

View File

@ -1,7 +1,6 @@
package db_test
import (
"os"
"testing"
"time"
@ -19,7 +18,6 @@ import (
"github.com/concourse/concourse/atc/db/lock"
"github.com/concourse/concourse/atc/metric"
"github.com/concourse/concourse/atc/postgresrunner"
"github.com/tedsuo/ifrit"
)
func TestDB(t *testing.T) {
@ -29,7 +27,6 @@ func TestDB(t *testing.T) {
var (
postgresRunner postgresrunner.Runner
dbProcess ifrit.Process
dbConn db.Conn
fakeSecrets *credsfakes.FakeSecrets
@ -95,15 +92,7 @@ var (
psql = sq.StatementBuilder.PlaceholderFormat(sq.Dollar)
)
var _ = BeforeSuite(func() {
postgresRunner = postgresrunner.Runner{
Port: 5433 + GinkgoParallelNode(),
}
dbProcess = ifrit.Invoke(postgresRunner)
postgresRunner.InitializeTestDBTemplate()
})
var _ = postgresrunner.GinkgoRunner(&postgresRunner)
var _ = BeforeEach(func() {
postgresRunner.CreateTestDBFromTemplate()
@ -244,8 +233,3 @@ var _ = AfterEach(func() {
postgresRunner.DropTestDB()
})
var _ = AfterSuite(func() {
dbProcess.Signal(os.Interrupt)
<-dbProcess.Wait()
})

View File

@ -1,13 +1,9 @@
package lock_test
import (
"os"
"time"
"github.com/concourse/concourse/atc/postgresrunner"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
"github.com/tedsuo/ifrit"
"testing"
)
@ -18,19 +14,5 @@ func TestLock(t *testing.T) {
}
var postgresRunner postgresrunner.Runner
var dbProcess ifrit.Process
var _ = BeforeSuite(func() {
postgresRunner = postgresrunner.Runner{
Port: 5433 + GinkgoParallelNode(),
}
dbProcess = ifrit.Invoke(postgresRunner)
postgresRunner.InitializeTestDBTemplate()
})
var _ = AfterSuite(func() {
dbProcess.Signal(os.Interrupt)
Eventually(dbProcess.Wait(), 10*time.Second).Should(Receive())
})
var _ = postgresrunner.GinkgoRunner(&postgresRunner)

View File

@ -1,14 +1,10 @@
package migration_test
import (
"os"
"time"
"github.com/concourse/concourse/atc/postgresrunner"
"github.com/gobuffalo/packr"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
"github.com/tedsuo/ifrit"
"testing"
)
@ -19,14 +15,8 @@ func TestMigration(t *testing.T) {
}
var postgresRunner postgresrunner.Runner
var dbProcess ifrit.Process
var _ = BeforeSuite(func() {
postgresRunner = postgresrunner.Runner{
Port: 5433 + GinkgoParallelNode(),
}
dbProcess = ifrit.Invoke(postgresRunner)
})
var _ = postgresrunner.GinkgoRunner(&postgresRunner)
var _ = BeforeEach(func() {
postgresRunner.CreateEmptyTestDB()
@ -36,9 +26,4 @@ var _ = AfterEach(func() {
postgresRunner.DropTestDB()
})
var _ = AfterSuite(func() {
dbProcess.Signal(os.Interrupt)
Eventually(dbProcess.Wait(), 10*time.Second).Should(Receive())
})
var asset = packr.NewBox("./migrations").MustBytes

View File

@ -2,7 +2,6 @@ package gc_test
import (
"context"
"os"
"time"
"code.cloudfoundry.org/lager"
@ -17,7 +16,6 @@ import (
"github.com/concourse/concourse/atc/postgresrunner"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
"github.com/tedsuo/ifrit"
"testing"
)
@ -35,7 +33,6 @@ var psql = sq.StatementBuilder.PlaceholderFormat(sq.Dollar)
var (
postgresRunner postgresrunner.Runner
dbProcess ifrit.Process
dbConn db.Conn
err error
@ -62,15 +59,7 @@ var (
fakeLogFunc = func(logger lager.Logger, id lock.LockID) {}
)
var _ = BeforeSuite(func() {
postgresRunner = postgresrunner.Runner{
Port: 5433 + GinkgoParallelNode(),
}
dbProcess = ifrit.Invoke(postgresRunner)
postgresRunner.InitializeTestDBTemplate()
})
var _ = postgresrunner.GinkgoRunner(&postgresRunner)
var _ = BeforeEach(func() {
postgresRunner.CreateTestDBFromTemplate()
@ -155,8 +144,3 @@ var _ = AfterEach(func() {
Expect(dbConn.Close()).To(Succeed())
postgresRunner.DropTestDB()
})
var _ = AfterSuite(func() {
dbProcess.Signal(os.Interrupt)
Eventually(dbProcess.Wait(), 10*time.Second).Should(Receive())
})

View File

@ -26,20 +26,11 @@ import (
var (
cmd *atccmd.RunCommand
postgresRunner postgresrunner.Runner
dbProcess ifrit.Process
atcProcess ifrit.Process
atcURL string
)
var _ = BeforeSuite(func() {
postgresRunner = postgresrunner.Runner{
Port: 5433 + GinkgoParallelNode(),
}
dbProcess = ifrit.Invoke(postgresRunner)
postgresRunner.InitializeTestDBTemplate()
})
var _ = postgresrunner.GinkgoRunner(&postgresRunner)
var _ = BeforeEach(func() {
cmd = &atccmd.RunCommand{}
@ -106,11 +97,6 @@ var _ = AfterEach(func() {
postgresRunner.DropTestDB()
})
var _ = AfterSuite(func() {
dbProcess.Signal(os.Interrupt)
<-dbProcess.Wait()
})
func TestIntegration(t *testing.T) {
RegisterFailHandler(Fail)
RunSpecs(t, "Integration Suite")

View File

@ -0,0 +1,40 @@
package postgresrunner
import (
"os"
"time"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
"github.com/tedsuo/ifrit"
)
type none struct{}
func GinkgoRunner(runner *Runner) none {
var dbProcess ifrit.Process
BeforeSuite(func() {
InitializeRunnerForGinkgo(runner, &dbProcess)
})
AfterSuite(func() {
dbProcess.Signal(os.Interrupt)
Eventually(dbProcess.Wait(), 10*time.Second).Should(Receive())
})
return none{}
}
func InitializeRunnerForGinkgo(runner *Runner, dbProcess *ifrit.Process) {
*runner = Runner{
Port: 5433 + GinkgoParallelNode(),
}
*dbProcess = ifrit.Invoke(*runner)
runner.InitializeTestDBTemplate()
}
func FinalizeRunnerForGinkgo(runner *Runner, dbProcess *ifrit.Process) {
(*dbProcess).Signal(os.Interrupt)
Eventually((*dbProcess).Wait(), 10*time.Second).Should(Receive())
}

View File

@ -48,13 +48,7 @@ var _ = BeforeSuite(func() {
Expect(err).ToNot(HaveOccurred())
}
postgresRunner = postgresrunner.Runner{
Port: 5433 + GinkgoParallelNode(),
}
dbProcess = ifrit.Invoke(postgresRunner)
postgresRunner.InitializeTestDBTemplate()
postgresrunner.InitializeRunnerForGinkgo(&postgresRunner, &dbProcess)
})
var _ = BeforeEach(func() {
@ -74,8 +68,7 @@ var _ = AfterEach(func() {
})
var _ = AfterSuite(func() {
dbProcess.Signal(os.Interrupt)
<-dbProcess.Wait()
postgresrunner.FinalizeRunnerForGinkgo(&postgresRunner, &dbProcess)
if exporter != nil {
exporter.Flush()

View File

@ -38,10 +38,8 @@ var _ = Describe("Web Command", func() {
BeforeEach(func() {
hostKeyFile, hostPubKeyFile, _, _ = generateSSHKeypair()
postgresRunner = postgresrunner.Runner{
Port: 5433 + GinkgoParallelNode(),
}
dbProcess = ifrit.Invoke(postgresRunner)
postgresrunner.InitializeRunnerForGinkgo(&postgresRunner, &dbProcess)
postgresRunner.CreateEmptyTestDB()
concourseCommand = exec.Command(
@ -82,9 +80,7 @@ var _ = Describe("Web Command", func() {
<-concourseProcess.Wait()
postgresRunner.DropTestDB()
dbProcess.Signal(os.Interrupt)
err := <-dbProcess.Wait()
Expect(err).NotTo(HaveOccurred())
postgresrunner.FinalizeRunnerForGinkgo(&postgresRunner, &dbProcess)
os.Remove(hostKeyFile)
os.Remove(hostPubKeyFile)
os.Remove(filepath.Dir(hostPubKeyFile))

View File

@ -1,12 +1,9 @@
package dexserver_test
import (
"os"
"github.com/concourse/concourse/atc/postgresrunner"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
"github.com/tedsuo/ifrit"
"testing"
)
@ -17,15 +14,8 @@ func TestDexServer(t *testing.T) {
}
var postgresRunner postgresrunner.Runner
var dbProcess ifrit.Process
var _ = BeforeSuite(func() {
postgresRunner = postgresrunner.Runner{
Port: 5433 + GinkgoParallelNode(),
}
dbProcess = ifrit.Invoke(postgresRunner)
postgresRunner.InitializeTestDBTemplate()
})
var _ = postgresrunner.GinkgoRunner(&postgresRunner)
var _ = BeforeEach(func() {
postgresRunner.CreateTestDBFromTemplate()
@ -34,8 +24,3 @@ var _ = BeforeEach(func() {
var _ = AfterEach(func() {
postgresRunner.DropTestDB()
})
var _ = AfterSuite(func() {
dbProcess.Signal(os.Interrupt)
<-dbProcess.Wait()
})