Commit 45017204 authored by Ethen Pociask's avatar Ethen Pociask

[indexer.client] Non-parallelized test support

parent 4734a5ad
...@@ -19,7 +19,7 @@ import ( ...@@ -19,7 +19,7 @@ import (
) )
func TestE2EBridgeL1CrossDomainMessenger(t *testing.T) { func TestE2EBridgeL1CrossDomainMessenger(t *testing.T) {
testSuite := createE2ETestSuite(t) testSuite := createIndexerTestSuite(t)
l1CrossDomainMessenger, err := bindings.NewL1CrossDomainMessenger(testSuite.OpCfg.L1Deployments.L1CrossDomainMessengerProxy, testSuite.L1Client) l1CrossDomainMessenger, err := bindings.NewL1CrossDomainMessenger(testSuite.OpCfg.L1Deployments.L1CrossDomainMessengerProxy, testSuite.L1Client)
require.NoError(t, err) require.NoError(t, err)
...@@ -93,7 +93,7 @@ func TestE2EBridgeL1CrossDomainMessenger(t *testing.T) { ...@@ -93,7 +93,7 @@ func TestE2EBridgeL1CrossDomainMessenger(t *testing.T) {
} }
func TestE2EBridgeL2CrossDomainMessenger(t *testing.T) { func TestE2EBridgeL2CrossDomainMessenger(t *testing.T) {
testSuite := createE2ETestSuite(t) testSuite := createIndexerTestSuite(t)
optimismPortal, err := bindings.NewOptimismPortal(testSuite.OpCfg.L1Deployments.OptimismPortalProxy, testSuite.L1Client) optimismPortal, err := bindings.NewOptimismPortal(testSuite.OpCfg.L1Deployments.OptimismPortalProxy, testSuite.L1Client)
require.NoError(t, err) require.NoError(t, err)
......
...@@ -21,7 +21,7 @@ import ( ...@@ -21,7 +21,7 @@ import (
) )
func TestE2EBridgeTransactionsOptimismPortalDeposits(t *testing.T) { func TestE2EBridgeTransactionsOptimismPortalDeposits(t *testing.T) {
testSuite := createE2ETestSuite(t) testSuite := createIndexerTestSuite(t)
optimismPortal, err := bindings.NewOptimismPortal(testSuite.OpCfg.L1Deployments.OptimismPortalProxy, testSuite.L1Client) optimismPortal, err := bindings.NewOptimismPortal(testSuite.OpCfg.L1Deployments.OptimismPortalProxy, testSuite.L1Client)
require.NoError(t, err) require.NoError(t, err)
...@@ -70,7 +70,7 @@ func TestE2EBridgeTransactionsOptimismPortalDeposits(t *testing.T) { ...@@ -70,7 +70,7 @@ func TestE2EBridgeTransactionsOptimismPortalDeposits(t *testing.T) {
} }
func TestE2EBridgeTransactionsL2ToL1MessagePasserWithdrawal(t *testing.T) { func TestE2EBridgeTransactionsL2ToL1MessagePasserWithdrawal(t *testing.T) {
testSuite := createE2ETestSuite(t) testSuite := createIndexerTestSuite(t)
optimismPortal, err := bindings.NewOptimismPortal(testSuite.OpCfg.L1Deployments.OptimismPortalProxy, testSuite.L1Client) optimismPortal, err := bindings.NewOptimismPortal(testSuite.OpCfg.L1Deployments.OptimismPortalProxy, testSuite.L1Client)
require.NoError(t, err) require.NoError(t, err)
...@@ -166,7 +166,7 @@ func TestE2EBridgeTransactionsL2ToL1MessagePasserWithdrawal(t *testing.T) { ...@@ -166,7 +166,7 @@ func TestE2EBridgeTransactionsL2ToL1MessagePasserWithdrawal(t *testing.T) {
} }
func TestE2EBridgeTransactionsL2ToL1MessagePasserFailedWithdrawal(t *testing.T) { func TestE2EBridgeTransactionsL2ToL1MessagePasserFailedWithdrawal(t *testing.T) {
testSuite := createE2ETestSuite(t) testSuite := createIndexerTestSuite(t)
l2ToL1MessagePasser, err := bindings.NewL2ToL1MessagePasser(predeploys.L2ToL1MessagePasserAddr, testSuite.L2Client) l2ToL1MessagePasser, err := bindings.NewL2ToL1MessagePasser(predeploys.L2ToL1MessagePasserAddr, testSuite.L2Client)
require.NoError(t, err) require.NoError(t, err)
......
...@@ -25,7 +25,7 @@ import ( ...@@ -25,7 +25,7 @@ import (
) )
func TestE2EBridgeTransfersStandardBridgeETHDeposit(t *testing.T) { func TestE2EBridgeTransfersStandardBridgeETHDeposit(t *testing.T) {
testSuite := createE2ETestSuite(t) testSuite := createIndexerTestSuite(t)
l1StandardBridge, err := bindings.NewL1StandardBridge(testSuite.OpCfg.L1Deployments.L1StandardBridgeProxy, testSuite.L1Client) l1StandardBridge, err := bindings.NewL1StandardBridge(testSuite.OpCfg.L1Deployments.L1StandardBridgeProxy, testSuite.L1Client)
require.NoError(t, err) require.NoError(t, err)
...@@ -92,7 +92,7 @@ func TestE2EBridgeTransfersStandardBridgeETHDeposit(t *testing.T) { ...@@ -92,7 +92,7 @@ func TestE2EBridgeTransfersStandardBridgeETHDeposit(t *testing.T) {
} }
func TestE2EBridgeTransfersOptimismPortalETHReceive(t *testing.T) { func TestE2EBridgeTransfersOptimismPortalETHReceive(t *testing.T) {
testSuite := createE2ETestSuite(t) testSuite := createIndexerTestSuite(t)
optimismPortal, err := bindings.NewOptimismPortal(testSuite.OpCfg.L1Deployments.OptimismPortalProxy, testSuite.L1Client) optimismPortal, err := bindings.NewOptimismPortal(testSuite.OpCfg.L1Deployments.OptimismPortalProxy, testSuite.L1Client)
require.NoError(t, err) require.NoError(t, err)
...@@ -151,7 +151,7 @@ func TestE2EBridgeTransfersOptimismPortalETHReceive(t *testing.T) { ...@@ -151,7 +151,7 @@ func TestE2EBridgeTransfersOptimismPortalETHReceive(t *testing.T) {
} }
func TestE2EBridgeTransfersCursoredDeposits(t *testing.T) { func TestE2EBridgeTransfersCursoredDeposits(t *testing.T) {
testSuite := createE2ETestSuite(t) testSuite := createIndexerTestSuite(t)
l1StandardBridge, err := bindings.NewL1StandardBridge(testSuite.OpCfg.L1Deployments.L1StandardBridgeProxy, testSuite.L1Client) l1StandardBridge, err := bindings.NewL1StandardBridge(testSuite.OpCfg.L1Deployments.L1StandardBridgeProxy, testSuite.L1Client)
require.NoError(t, err) require.NoError(t, err)
...@@ -220,7 +220,7 @@ func TestE2EBridgeTransfersCursoredDeposits(t *testing.T) { ...@@ -220,7 +220,7 @@ func TestE2EBridgeTransfersCursoredDeposits(t *testing.T) {
} }
func TestE2EBridgeTransfersStandardBridgeETHWithdrawal(t *testing.T) { func TestE2EBridgeTransfersStandardBridgeETHWithdrawal(t *testing.T) {
testSuite := createE2ETestSuite(t) testSuite := createIndexerTestSuite(t)
optimismPortal, err := bindings.NewOptimismPortal(testSuite.OpCfg.L1Deployments.OptimismPortalProxy, testSuite.L1Client) optimismPortal, err := bindings.NewOptimismPortal(testSuite.OpCfg.L1Deployments.OptimismPortalProxy, testSuite.L1Client)
require.NoError(t, err) require.NoError(t, err)
...@@ -305,7 +305,7 @@ func TestE2EBridgeTransfersStandardBridgeETHWithdrawal(t *testing.T) { ...@@ -305,7 +305,7 @@ func TestE2EBridgeTransfersStandardBridgeETHWithdrawal(t *testing.T) {
} }
func TestE2EBridgeTransfersL2ToL1MessagePasserETHReceive(t *testing.T) { func TestE2EBridgeTransfersL2ToL1MessagePasserETHReceive(t *testing.T) {
testSuite := createE2ETestSuite(t) testSuite := createIndexerTestSuite(t)
optimismPortal, err := bindings.NewOptimismPortal(testSuite.OpCfg.L1Deployments.OptimismPortalProxy, testSuite.L1Client) optimismPortal, err := bindings.NewOptimismPortal(testSuite.OpCfg.L1Deployments.OptimismPortalProxy, testSuite.L1Client)
require.NoError(t, err) require.NoError(t, err)
...@@ -379,7 +379,7 @@ func TestE2EBridgeTransfersL2ToL1MessagePasserETHReceive(t *testing.T) { ...@@ -379,7 +379,7 @@ func TestE2EBridgeTransfersL2ToL1MessagePasserETHReceive(t *testing.T) {
} }
func TestE2EBridgeTransfersCursoredWithdrawals(t *testing.T) { func TestE2EBridgeTransfersCursoredWithdrawals(t *testing.T) {
testSuite := createE2ETestSuite(t) testSuite := createIndexerTestSuite(t)
l2StandardBridge, err := bindings.NewL2StandardBridge(predeploys.L2StandardBridgeAddr, testSuite.L2Client) l2StandardBridge, err := bindings.NewL2StandardBridge(predeploys.L2StandardBridgeAddr, testSuite.L2Client)
require.NoError(t, err) require.NoError(t, err)
...@@ -449,7 +449,7 @@ func TestE2EBridgeTransfersCursoredWithdrawals(t *testing.T) { ...@@ -449,7 +449,7 @@ func TestE2EBridgeTransfersCursoredWithdrawals(t *testing.T) {
} }
func Test_ClientGetWithdrawals(t *testing.T) { func Test_ClientGetWithdrawals(t *testing.T) {
testSuite := createE2ETestSuite(t) testSuite := createAPITestSuite(t)
optimismPortal, err := bindings.NewOptimismPortal(testSuite.OpCfg.L1Deployments.OptimismPortalProxy, testSuite.L1Client) optimismPortal, err := bindings.NewOptimismPortal(testSuite.OpCfg.L1Deployments.OptimismPortalProxy, testSuite.L1Client)
require.NoError(t, err) require.NoError(t, err)
......
...@@ -19,7 +19,7 @@ import ( ...@@ -19,7 +19,7 @@ import (
) )
func TestE2EETL(t *testing.T) { func TestE2EETL(t *testing.T) {
testSuite := createE2ETestSuite(t) testSuite := createIndexerTestSuite(t)
l2OutputOracle, err := bindings.NewL2OutputOracle(testSuite.OpCfg.L1Deployments.L2OutputOracleProxy, testSuite.L1Client) l2OutputOracle, err := bindings.NewL2OutputOracle(testSuite.OpCfg.L1Deployments.L2OutputOracleProxy, testSuite.L1Client)
require.NoError(t, err) require.NoError(t, err)
......
...@@ -43,7 +43,15 @@ type E2ETestSuite struct { ...@@ -43,7 +43,15 @@ type E2ETestSuite struct {
L2Client *ethclient.Client L2Client *ethclient.Client
} }
func createE2ETestSuite(t *testing.T) E2ETestSuite { func createIndexerTestSuite(t *testing.T) E2ETestSuite {
return buildE2ETestSuite(t, false)
}
func createAPITestSuite(t *testing.T) E2ETestSuite {
return buildE2ETestSuite(t, true)
}
func buildE2ETestSuite(t *testing.T, withAPI bool) E2ETestSuite {
dbUser := os.Getenv("DB_USER") dbUser := os.Getenv("DB_USER")
dbName := setupTestDatabase(t) dbName := setupTestDatabase(t)
...@@ -58,9 +66,15 @@ func createE2ETestSuite(t *testing.T) E2ETestSuite { ...@@ -58,9 +66,15 @@ func createE2ETestSuite(t *testing.T) E2ETestSuite {
require.NoError(t, err) require.NoError(t, err)
t.Cleanup(func() { opSys.Close() }) t.Cleanup(func() { opSys.Close() })
// E2E tests can run on the order of magnitude of minutes. Once if !withAPI {
// the system is running, mark this test for Parallel execution // E2E tests can run on the order of magnitude of minutes. Once
t.Parallel() // the system is running, mark this test for Parallel execution
// E2E API tests will not be marked for Parallel execution as they
// will try consuming the same port and fail. This can be fixed if a
// unique sport is dynamically allocated for each test.
t.Parallel()
}
// Indexer Configuration and Start // Indexer Configuration and Start
indexerCfg := config.Config{ indexerCfg := config.Config{
...@@ -100,9 +114,9 @@ func createE2ETestSuite(t *testing.T) E2ETestSuite { ...@@ -100,9 +114,9 @@ func createE2ETestSuite(t *testing.T) E2ETestSuite {
indexer, err := indexer.NewIndexer(indexerLog, db, indexerCfg.Chain, indexerCfg.RPCs, indexerCfg.HTTPServer, indexerCfg.MetricsServer) indexer, err := indexer.NewIndexer(indexerLog, db, indexerCfg.Chain, indexerCfg.RPCs, indexerCfg.HTTPServer, indexerCfg.MetricsServer)
require.NoError(t, err) require.NoError(t, err)
indexerCtx, indexerStop := context.WithCancel(context.Background()) appCtx, appStop := context.WithCancel(context.Background())
go func() { go func() {
err := indexer.Run(indexerCtx) err := indexer.Run(appCtx)
if err != nil { // panicking here ensures that the test will exit if err != nil { // panicking here ensures that the test will exit
// during service failure. Using t.Fail() wouldn't be caught // during service failure. Using t.Fail() wouldn't be caught
// until all awaiting routines finish which would never happen. // until all awaiting routines finish which would never happen.
...@@ -110,42 +124,45 @@ func createE2ETestSuite(t *testing.T) E2ETestSuite { ...@@ -110,42 +124,45 @@ func createE2ETestSuite(t *testing.T) E2ETestSuite {
} }
}() }()
apiLog := testlog.Logger(t, log.LvlInfo).New("role", "indexer_api") var indexerAPI *api.API
var indexerClient *client.Client
apiCfg := config.ServerConfig{ if withAPI {
Host: "127.0.0.1", apiLog := testlog.Logger(t, log.LvlInfo).New("role", "indexer_api")
Port: 4321,
}
mCfg := config.ServerConfig{
Host: "127.0.0.1",
Port: 0,
}
api := api.NewApi(apiLog, db.BridgeTransfers, apiCfg, mCfg) apiCfg := config.ServerConfig{
apiCtx, apiStop := context.WithCancel(context.Background()) Host: "127.0.0.1",
go func() { Port: 4321,
err := api.Start(apiCtx)
if err != nil {
panic(err)
} }
}()
t.Cleanup(func() {
apiStop()
indexerStop()
})
client, err := client.NewClient(&client.Config{ mCfg := config.ServerConfig{
PaginationLimit: 100, Host: "127.0.0.1",
BaseURL: fmt.Sprintf("http://%s:%d", indexerCfg.HTTPServer.Host, indexerCfg.HTTPServer.Port), Port: 0,
}) }
require.NoError(t, err) indexerAPI = api.NewApi(apiLog, db.BridgeTransfers, apiCfg, mCfg)
go func() {
err := indexerAPI.Start(appCtx)
if err != nil {
panic(err)
}
}()
t.Cleanup(func() {
appStop()
})
indexerClient, err = client.NewClient(&client.Config{
PaginationLimit: 100,
BaseURL: fmt.Sprintf("http://%s:%d", indexerCfg.HTTPServer.Host, indexerCfg.HTTPServer.Port),
})
require.NoError(t, err)
}
return E2ETestSuite{ return E2ETestSuite{
t: t, t: t,
Client: client, API: indexerAPI,
Client: indexerClient,
DB: db, DB: db,
Indexer: indexer, Indexer: indexer,
OpCfg: &opCfg, OpCfg: &opCfg,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment