import (
"context"
+ "errors"
"git.arvados.org/arvados.git/lib/config"
"git.arvados.org/arvados.git/lib/controller/rpc"
db *sqlx.DB
dbConnector *ctrlctx.DBConnector
tx *sqlx.Tx
+ txFinish func(*error)
+ userctx context.Context // uses ActiveUser token
localdb *Conn
railsSpy *arvadostest.Proxy
}
+func (s *localdbSuite) SetUpSuite(c *check.C) {
+ arvadostest.StartKeep(2, true)
+}
+
func (s *localdbSuite) TearDownSuite(c *check.C) {
// Undo any changes/additions to the user database so they
// don't affect subsequent tests.
func (s *localdbSuite) SetUpTest(c *check.C) {
*s = localdbSuite{}
+ logger := ctxlog.TestLogger(c)
s.ctx, s.cancel = context.WithCancel(context.Background())
- cfg, err := config.NewLoader(nil, ctxlog.TestLogger(c)).Load()
+ s.ctx = ctxlog.Context(s.ctx, logger)
+ cfg, err := config.NewLoader(nil, logger).Load()
c.Assert(err, check.IsNil)
s.cluster, err = cfg.GetCluster("")
c.Assert(err, check.IsNil)
s.dbConnector = &ctrlctx.DBConnector{PostgreSQL: s.cluster.PostgreSQL}
s.db, err = s.dbConnector.GetDB(s.ctx)
c.Assert(err, check.IsNil)
+ s.ctx, s.txFinish = ctrlctx.New(s.ctx, s.dbConnector.GetDB)
+ s.tx, err = ctrlctx.CurrentTx(s.ctx)
+ c.Assert(err, check.IsNil)
s.localdb = NewConn(s.ctx, s.cluster, s.dbConnector.GetDB)
s.railsSpy = arvadostest.NewProxy(c, s.cluster.Services.RailsAPI)
*s.localdb.railsProxy = *rpc.NewConn(s.cluster.ClusterID, s.railsSpy.URL, true, rpc.PassthroughTokenProvider)
-
- s.tx, err = s.db.Beginx()
- c.Assert(err, check.IsNil)
- s.ctx = ctrlctx.NewWithTransaction(s.ctx, s.tx)
+ s.userctx = ctrlctx.NewWithToken(s.ctx, s.cluster, arvadostest.ActiveTokenV2)
}
+var errRollbackAfterTest = errors.New("rollback after test")
+
func (s *localdbSuite) TearDownTest(c *check.C) {
if s.tx != nil {
s.tx.Rollback()
}
+ if s.txFinish != nil {
+ s.txFinish(&errRollbackAfterTest)
+ }
if s.railsSpy != nil {
s.railsSpy.Close()
}