Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Run go tests in a package-specific database #1776

Merged
merged 36 commits into from
Jul 15, 2019
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
3ba520e
Clone database before each suite run.
Feb 19, 2019
b5dfcb6
Update db init for all test suites.
Feb 21, 2019
2633c70
Merge remote-tracking branch 'origin/master' into jb-parallel-tests
Mar 1, 2019
81efd50
Merge remote-tracking branch 'origin/master' into jb-parallel-tests
Mar 1, 2019
ed8d253
Clean up pop suite.
Mar 1, 2019
5d1bee1
Add make target that builds tests without running them for faster fee…
Mar 1, 2019
acd2313
Only use config/database.yml for soda.
Mar 2, 2019
33a3c67
Merge remote-tracking branch 'origin/master' into jb-parallel-tests
Mar 4, 2019
f05db3e
Merge remote-tracking branch 'origin/master' into jb-parallel-tests
Mar 14, 2019
4dc5db3
Update fuelprice test suite to define its package name.
Mar 14, 2019
712c951
Use psql to restore a SQL dump instead of the pgdump format.
Mar 15, 2019
0a293cb
Restore container section to database.yml
Mar 15, 2019
6206729
Use pg_dump 10
Mar 15, 2019
1d9181a
Use sudo
Mar 15, 2019
e30d47b
Pipe to sudo tee.
Mar 15, 2019
a306ec6
Merge remote-tracking branch 'origin/master' into jb-parallel-tests
Mar 26, 2019
fa56ce9
Restore test section to database.yml
Mar 26, 2019
b225103
Merge remote-tracking branch 'origin/master' into jb-parallel-tests
Mar 28, 2019
c1126f6
Merge remote-tracking branch 'origin/master' into jb-parallel-tests
Apr 10, 2019
5527e6f
Merge remote-tracking branch 'origin/master' into jb-parallel-tests
Apr 23, 2019
b8ae892
Merge remote-tracking branch 'origin/master' into jb-parallel-tests
Apr 30, 2019
ad216d6
Merge remote-tracking branch 'origin/master' into jb-parallel-tests
May 10, 2019
9402f4c
Merge remote-tracking branch 'origin/master' into jb-parallel-tests
May 16, 2019
bdb851b
Add package names to new test suties.
May 16, 2019
064ae75
Attempt to tweak postgres configuration on Circle.
May 16, 2019
dc6c859
Ignore cache when running server_test_build
May 17, 2019
c7c5032
Add unique test databases when there are multiple suites in one go pa…
May 17, 2019
e1c3630
Remove debug output.
May 20, 2019
328412f
Use a larger machine for server_test.
May 21, 2019
6f9996b
Run goimports
May 23, 2019
fd6ed2c
Install newer postgres tools.
May 23, 2019
99573d3
Merge remote-tracking branch 'origin/master' into jb-parallel-tests
May 24, 2019
0b950fe
Merge remote-tracking branch 'origin/master' into jb-parallel-tests
Jul 10, 2019
41b200d
Bring large executor up to date.
Jul 11, 2019
68effe7
Use working dir outside GOPATH.
Jul 11, 2019
94ebe2f
Merge remote-tracking branch 'origin/master' into jb-parallel-tests
Jul 15, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .envrc
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ export MYMOVE_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
export SECURE_MIGRATION_DIR="${MYMOVE_DIR}/local_migrations"
export SECURE_MIGRATION_SOURCE="local"
export DB_PASSWORD=mysecretpassword
export PGPASSWORD=$DB_PASSWORD
chrisgilmerproj marked this conversation as resolved.
Show resolved Hide resolved
export DB_USER=postgres
export DB_HOST=localhost
export DB_PORT=5432
Expand Down
3 changes: 1 addition & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -214,9 +214,8 @@ endif

server_test: server_deps server_generate db_test_reset db_test_migrate
# Don't run tests in /cmd or /pkg/gen & pass `-short` to exclude long running tests
# Use -test.parallel 1 to test packages serially and avoid database collisions
# Disable test caching with `-count 1` - caching was masking local test failures
go test -p 1 -count 1 -short $$(go list ./... | grep -v \\/pkg\\/gen\\/ | grep -v \\/cmd\\/)
go test -count 1 -short $$(go list ./... | grep -v \\/pkg\\/gen\\/ | grep -v \\/cmd\\/)

server_test_all: server_deps server_generate db_dev_reset db_dev_migrate
# Like server_test but runs extended tests that may hit external services.
Expand Down
50 changes: 15 additions & 35 deletions internal/pkg/dutystationsloader/duty_stations_loader_test.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package dutystationsloader

import (
"github.com/transcom/mymove/pkg/testingsuite"
"log"
"reflect"
"testing"
Expand All @@ -16,44 +17,23 @@ import (
)

type DutyStationsLoaderSuite struct {
suite.Suite
db *pop.Connection
testingsuite.PopTestSuite
logger *zap.Logger
}

func (suite *DutyStationsLoaderSuite) SetupTest() {
suite.db.TruncateAll()
}

func (suite *DutyStationsLoaderSuite) mustSave(model interface{}) {
t := suite.T()
t.Helper()

verrs, err := suite.db.ValidateAndSave(model)
if err != nil {
suite.T().Errorf("Errors encountered saving %v: %v", model, err)
}
if verrs.HasAny() {
suite.T().Errorf("Validation errors encountered saving %v: %v", model, verrs)
}
suite.DB().TruncateAll()
}

func TestDutyStationsLoaderSuite(t *testing.T) {
configLocation := "../../../config"
pop.AddLookupPaths(configLocation)
db, err := pop.Connect("test")
if err != nil {
log.Panic(err)
}

logger, err := zap.NewDevelopment()
if err != nil {
log.Panic(err)
}

hs := &DutyStationsLoaderSuite{
db: db,
logger: logger,
PopTestSuite: testingsuite.NewPopTestSuite(testingsuite.CurrentPackage()),
logger: logger,
}

suite.Run(t, hs)
Expand All @@ -63,7 +43,7 @@ func (suite *DutyStationsLoaderSuite) TestParsingFunctions() {
stationsPath := "./testdata/stations.xlsx"
officesPath := "./testdata/offices.xlsx"

builder := NewMigrationBuilder(suite.db, suite.logger)
builder := NewMigrationBuilder(suite.DB(), suite.logger)

stationRows, err := builder.parseStations(stationsPath)
suite.NoError(err)
Expand All @@ -81,7 +61,7 @@ func (suite *DutyStationsLoaderSuite) TestParsingFunctions() {
}

func (suite *DutyStationsLoaderSuite) TestInsertionString() {
builder := NewMigrationBuilder(suite.db, suite.logger)
builder := NewMigrationBuilder(suite.DB(), suite.logger)

something := "something"
zeroID := uuid.Nil
Expand All @@ -99,7 +79,7 @@ func (suite *DutyStationsLoaderSuite) TestInsertionString() {
}

func (suite *DutyStationsLoaderSuite) TestCreateInsertQuery() {
builder := NewMigrationBuilder(suite.db, suite.logger)
builder := NewMigrationBuilder(suite.DB(), suite.logger)

model := models.User{
ID: uuid.Must(uuid.FromString("cd40c92e-7c8a-4da4-ad58-4480df84b3f0")),
Expand All @@ -122,7 +102,7 @@ func (suite *DutyStationsLoaderSuite) TestSeparateStations() {
State: "CA",
PostalCode: postalCode1,
}
suite.mustSave(&address1)
suite.MustSave(&address1)

savedName := "Saved!"
saved := models.DutyStation{
Expand All @@ -131,7 +111,7 @@ func (suite *DutyStationsLoaderSuite) TestSeparateStations() {
Name: savedName,
Affiliation: internalmessages.AffiliationARMY,
}
suite.mustSave(&saved)
suite.MustSave(&saved)

postalCode2 := "00002"
address2 := models.Address{
Expand All @@ -149,7 +129,7 @@ func (suite *DutyStationsLoaderSuite) TestSeparateStations() {
Affiliation: internalmessages.AffiliationARMY,
}

builder := NewMigrationBuilder(suite.db, suite.logger)
builder := NewMigrationBuilder(suite.DB(), suite.logger)
new, existing, err := builder.separateExistingStations([]DutyStationWrapper{
DutyStationWrapper{
TransportationOfficeName: "Some name",
Expand Down Expand Up @@ -178,15 +158,15 @@ func (suite *DutyStationsLoaderSuite) TestCheckForDuplicates() {
State: "CA",
PostalCode: postalCode,
}
suite.mustSave(&address)
suite.MustSave(&address)

savedName := "Some Office"
saved := models.TransportationOffice{
AddressID: address.ID,
Address: address,
Name: savedName,
}
suite.mustSave(&saved)
suite.MustSave(&saved)

postalCode2 := "00002"
address2 := models.Address{
Expand All @@ -203,7 +183,7 @@ func (suite *DutyStationsLoaderSuite) TestCheckForDuplicates() {
Name: notSavedName,
}

builder := NewMigrationBuilder(suite.db, suite.logger)
builder := NewMigrationBuilder(suite.DB(), suite.logger)
new, existing, err := builder.separateExistingOffices([]models.TransportationOffice{saved, notSaved})

suite.NoError(err)
Expand Down Expand Up @@ -256,7 +236,7 @@ func (suite *DutyStationsLoaderSuite) TestPairStationsOffices() {
},
}

builder := NewMigrationBuilder(suite.db, suite.logger)
builder := NewMigrationBuilder(suite.DB(), suite.logger)
pairs := builder.pairOfficesToStations(
[]DutyStationWrapper{station1, station2, station3},
[]TransportationOfficeWrapper{office1, office2})
Expand Down
2 changes: 1 addition & 1 deletion pkg/auth/authentication/auth_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ func TestAuthSuite(t *testing.T) {
log.Panic(err)
}
hs := &AuthSuite{
PopTestSuite: testingsuite.NewPopTestSuite(),
PopTestSuite: testingsuite.NewPopTestSuite(testingsuite.CurrentPackage()),
logger: logger,
}
suite.Run(t, hs)
Expand Down
2 changes: 1 addition & 1 deletion pkg/awardqueue/awardqueue_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -792,7 +792,7 @@ func TestAwardQueueSuite(t *testing.T) {
}

hs := &AwardQueueSuite{
PopTestSuite: testingsuite.NewPopTestSuite(),
PopTestSuite: testingsuite.NewPopTestSuite(testingsuite.CurrentPackage()),
logger: &hnyzap.Logger{Logger: logger},
}
suite.Run(t, hs)
Expand Down
2 changes: 1 addition & 1 deletion pkg/dates/calculators_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,7 @@ func TestDatesSuite(t *testing.T) {
}

hs := &DatesSuite{
PopTestSuite: testingsuite.NewPopTestSuite(),
PopTestSuite: testingsuite.NewPopTestSuite(testingsuite.CurrentPackage()),
logger: &hnyzap.Logger{Logger: logger},
}
suite.Run(t, hs)
Expand Down
2 changes: 1 addition & 1 deletion pkg/db/dbfmt/dbfmt_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ func (suite *DBFmtSuite) SetupTest() {

func TestDBFmtSuite(t *testing.T) {
hs := &DBFmtSuite{
PopTestSuite: testingsuite.NewPopTestSuite(),
PopTestSuite: testingsuite.NewPopTestSuite(testingsuite.CurrentPackage()),
}
suite.Run(t, hs)
}
Expand Down
2 changes: 1 addition & 1 deletion pkg/db/sequence/sequencer_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ func TestSequenceSuite(t *testing.T) {
logger := zap.NewNop()

hs := &SequenceSuite{
PopTestSuite: testingsuite.NewPopTestSuite(),
PopTestSuite: testingsuite.NewPopTestSuite(testingsuite.CurrentPackage()),
logger: logger,
}
suite.Run(t, hs)
Expand Down
2 changes: 1 addition & 1 deletion pkg/edi/invoice/generator_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -315,7 +315,7 @@ func TestInvoiceSuite(t *testing.T) {
v.AutomaticEnv()

hs := &InvoiceSuite{
PopTestSuite: testingsuite.NewPopTestSuite(),
PopTestSuite: testingsuite.NewPopTestSuite(testingsuite.CurrentPackage()),
logger: logger,
Viper: v,
}
Expand Down
4 changes: 2 additions & 2 deletions pkg/handlers/apitests.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,9 @@ type BaseHandlerTestSuite struct {
}

// NewBaseHandlerTestSuite returns a new BaseHandlerTestSuite
func NewBaseHandlerTestSuite(logger *zap.Logger, sender notifications.NotificationSender) BaseHandlerTestSuite {
func NewBaseHandlerTestSuite(logger *zap.Logger, sender notifications.NotificationSender, packageName testingsuite.PackageName) BaseHandlerTestSuite {
return BaseHandlerTestSuite{
PopTestSuite: testingsuite.NewPopTestSuite(),
PopTestSuite: testingsuite.NewPopTestSuite(packageName),
logger: logger,
notificationSender: sender,
}
Expand Down
3 changes: 2 additions & 1 deletion pkg/handlers/dpsapi/api_test.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package dpsapi

import (
"github.com/transcom/mymove/pkg/testingsuite"
"log"
"testing"

Expand All @@ -23,7 +24,7 @@ func TestHandlerSuite(t *testing.T) {
}

hs := &HandlerSuite{
BaseHandlerTestSuite: handlers.NewBaseHandlerTestSuite(logger, notifications.NewStubNotificationSender("milmovelocal", logger)),
BaseHandlerTestSuite: handlers.NewBaseHandlerTestSuite(logger, notifications.NewStubNotificationSender("milmovelocal", logger), testingsuite.CurrentPackage()),
}

suite.Run(t, hs)
Expand Down
3 changes: 2 additions & 1 deletion pkg/handlers/internalapi/api_test.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package internalapi

import (
"github.com/transcom/mymove/pkg/testingsuite"
"log"
"testing"

Expand Down Expand Up @@ -36,7 +37,7 @@ func TestHandlerSuite(t *testing.T) {
}

hs := &HandlerSuite{
BaseHandlerTestSuite: handlers.NewBaseHandlerTestSuite(logger, notifications.NewStubNotificationSender("milmovelocal", logger)),
BaseHandlerTestSuite: handlers.NewBaseHandlerTestSuite(logger, notifications.NewStubNotificationSender("milmovelocal", logger), testingsuite.CurrentPackage()),
}

suite.Run(t, hs)
Expand Down
3 changes: 2 additions & 1 deletion pkg/handlers/publicapi/api_test.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package publicapi

import (
"github.com/transcom/mymove/pkg/testingsuite"
"log"
"testing"

Expand Down Expand Up @@ -36,7 +37,7 @@ func TestHandlerSuite(t *testing.T) {
}

hs := &HandlerSuite{
BaseHandlerTestSuite: handlers.NewBaseHandlerTestSuite(logger, notifications.NewStubNotificationSender("milmovelocal", logger)),
BaseHandlerTestSuite: handlers.NewBaseHandlerTestSuite(logger, notifications.NewStubNotificationSender("milmovelocal", logger), testingsuite.CurrentPackage()),
}

suite.Run(t, hs)
Expand Down
2 changes: 1 addition & 1 deletion pkg/models/models_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ func (suite *ModelSuite) noValidationErrors(verrs *validate.Errors, err error) b
}

func TestModelSuite(t *testing.T) {
hs := &ModelSuite{PopTestSuite: testingsuite.NewPopTestSuite()}
hs := &ModelSuite{PopTestSuite: testingsuite.NewPopTestSuite(testingsuite.CurrentPackage())}
suite.Run(t, hs)
}

Expand Down
2 changes: 1 addition & 1 deletion pkg/notifications/notification_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ func TestNotificationSuite(t *testing.T) {
logger, _ := zap.NewDevelopment()

s := &NotificationSuite{
PopTestSuite: testingsuite.NewPopTestSuite(),
PopTestSuite: testingsuite.NewPopTestSuite(testingsuite.CurrentPackage()),
logger: logger,
}
suite.Run(t, s)
Expand Down
2 changes: 1 addition & 1 deletion pkg/paperwork/paperwork_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ func TestPaperworkSuite(t *testing.T) {
}
storer := storageTest.NewFakeS3Storage(true)

popSuite := testingsuite.NewPopTestSuite()
popSuite := testingsuite.NewPopTestSuite(testingsuite.CurrentPackage())
hs := &PaperworkSuite{
PopTestSuite: popSuite,
logger: logger,
Expand Down
2 changes: 1 addition & 1 deletion pkg/rateengine/rateengine_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -205,7 +205,7 @@ func TestRateEngineSuite(t *testing.T) {
planner := route.NewTestingPlanner(1234)

hs := &RateEngineSuite{
PopTestSuite: testingsuite.NewPopTestSuite(),
PopTestSuite: testingsuite.NewPopTestSuite(testingsuite.CurrentPackage()),
logger: logger,
planner: planner,
}
Expand Down
2 changes: 1 addition & 1 deletion pkg/services/invoice/invoice_service_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ func TestInvoiceSuite(t *testing.T) {
fakeS3 := storageTest.NewFakeS3Storage(true)

hs := &InvoiceServiceSuite{
PopTestSuite: testingsuite.NewPopTestSuite(),
PopTestSuite: testingsuite.NewPopTestSuite(testingsuite.CurrentPackage()),
logger: logger,
storer: fakeS3,
}
Expand Down
19 changes: 7 additions & 12 deletions pkg/services/invoice/send_to_gex_http_test.go
Original file line number Diff line number Diff line change
@@ -1,38 +1,33 @@
package invoice

import (
"log"
"github.com/transcom/mymove/pkg/testingsuite"
"net/http"
"net/http/httptest"
"testing"

"github.com/gobuffalo/pop"
"github.com/stretchr/testify/suite"
"go.uber.org/zap"
)

type GexSuite struct {
suite.Suite
db *pop.Connection
testingsuite.PopTestSuite
logger *zap.Logger
}

func (suite *GexSuite) SetupTest() {
suite.db.TruncateAll()
suite.DB().TruncateAll()
}

func TestGexSuite(t *testing.T) {
configLocation := "../../../config"
pop.AddLookupPaths(configLocation)
db, err := pop.Connect("test")
if err != nil {
log.Panic(err)
}

// Use a no-op logger during testing
logger := zap.NewNop()

hs := &GexSuite{db: db, logger: logger}
hs := &GexSuite{
PopTestSuite: testingsuite.NewPopTestSuite(testingsuite.CurrentPackage()),
logger: logger,
}
suite.Run(t, hs)
}

Expand Down
2 changes: 1 addition & 1 deletion pkg/services/paperwork/create_form_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ func TestCreateFormSuite(t *testing.T) {
logger := zap.NewNop()

hs := &CreateFormSuite{
PopTestSuite: testingsuite.NewPopTestSuite(),
PopTestSuite: testingsuite.NewPopTestSuite(testingsuite.CurrentPackage()),
logger: logger,
}
suite.Run(t, hs)
Expand Down
2 changes: 1 addition & 1 deletion pkg/services/shipment/deliver_and_price_shipment_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ func TestUpdateInvoiceSuite(t *testing.T) {
logger := zap.NewNop()

hs := &DeliverPriceShipmentSuite{
PopTestSuite: testingsuite.NewPopTestSuite(),
PopTestSuite: testingsuite.NewPopTestSuite(testingsuite.CurrentPackage()),
logger: logger,
}
suite.Run(t, hs)
Expand Down
Loading