Commit 45017204 authored by Ethen Pociask's avatar Ethen Pociask

[indexer.client] Non-parallelized test support

parent 4734a5ad
......@@ -19,7 +19,7 @@ import (
)
func TestE2EBridgeL1CrossDomainMessenger(t *testing.T) {
testSuite := createE2ETestSuite(t)
testSuite := createIndexerTestSuite(t)
l1CrossDomainMessenger, err := bindings.NewL1CrossDomainMessenger(testSuite.OpCfg.L1Deployments.L1CrossDomainMessengerProxy, testSuite.L1Client)
require.NoError(t, err)
......@@ -93,7 +93,7 @@ func TestE2EBridgeL1CrossDomainMessenger(t *testing.T) {
}
func TestE2EBridgeL2CrossDomainMessenger(t *testing.T) {
testSuite := createE2ETestSuite(t)
testSuite := createIndexerTestSuite(t)
optimismPortal, err := bindings.NewOptimismPortal(testSuite.OpCfg.L1Deployments.OptimismPortalProxy, testSuite.L1Client)
require.NoError(t, err)
......
......@@ -21,7 +21,7 @@ import (
)
func TestE2EBridgeTransactionsOptimismPortalDeposits(t *testing.T) {
testSuite := createE2ETestSuite(t)
testSuite := createIndexerTestSuite(t)
optimismPortal, err := bindings.NewOptimismPortal(testSuite.OpCfg.L1Deployments.OptimismPortalProxy, testSuite.L1Client)
require.NoError(t, err)
......@@ -70,7 +70,7 @@ func TestE2EBridgeTransactionsOptimismPortalDeposits(t *testing.T) {
}
func TestE2EBridgeTransactionsL2ToL1MessagePasserWithdrawal(t *testing.T) {
testSuite := createE2ETestSuite(t)
testSuite := createIndexerTestSuite(t)
optimismPortal, err := bindings.NewOptimismPortal(testSuite.OpCfg.L1Deployments.OptimismPortalProxy, testSuite.L1Client)
require.NoError(t, err)
......@@ -166,7 +166,7 @@ func TestE2EBridgeTransactionsL2ToL1MessagePasserWithdrawal(t *testing.T) {
}
func TestE2EBridgeTransactionsL2ToL1MessagePasserFailedWithdrawal(t *testing.T) {
testSuite := createE2ETestSuite(t)
testSuite := createIndexerTestSuite(t)
l2ToL1MessagePasser, err := bindings.NewL2ToL1MessagePasser(predeploys.L2ToL1MessagePasserAddr, testSuite.L2Client)
require.NoError(t, err)
......
......@@ -25,7 +25,7 @@ import (
)
func TestE2EBridgeTransfersStandardBridgeETHDeposit(t *testing.T) {
testSuite := createE2ETestSuite(t)
testSuite := createIndexerTestSuite(t)
l1StandardBridge, err := bindings.NewL1StandardBridge(testSuite.OpCfg.L1Deployments.L1StandardBridgeProxy, testSuite.L1Client)
require.NoError(t, err)
......@@ -92,7 +92,7 @@ func TestE2EBridgeTransfersStandardBridgeETHDeposit(t *testing.T) {
}
func TestE2EBridgeTransfersOptimismPortalETHReceive(t *testing.T) {
testSuite := createE2ETestSuite(t)
testSuite := createIndexerTestSuite(t)
optimismPortal, err := bindings.NewOptimismPortal(testSuite.OpCfg.L1Deployments.OptimismPortalProxy, testSuite.L1Client)
require.NoError(t, err)
......@@ -151,7 +151,7 @@ func TestE2EBridgeTransfersOptimismPortalETHReceive(t *testing.T) {
}
func TestE2EBridgeTransfersCursoredDeposits(t *testing.T) {
testSuite := createE2ETestSuite(t)
testSuite := createIndexerTestSuite(t)
l1StandardBridge, err := bindings.NewL1StandardBridge(testSuite.OpCfg.L1Deployments.L1StandardBridgeProxy, testSuite.L1Client)
require.NoError(t, err)
......@@ -220,7 +220,7 @@ func TestE2EBridgeTransfersCursoredDeposits(t *testing.T) {
}
func TestE2EBridgeTransfersStandardBridgeETHWithdrawal(t *testing.T) {
testSuite := createE2ETestSuite(t)
testSuite := createIndexerTestSuite(t)
optimismPortal, err := bindings.NewOptimismPortal(testSuite.OpCfg.L1Deployments.OptimismPortalProxy, testSuite.L1Client)
require.NoError(t, err)
......@@ -305,7 +305,7 @@ func TestE2EBridgeTransfersStandardBridgeETHWithdrawal(t *testing.T) {
}
func TestE2EBridgeTransfersL2ToL1MessagePasserETHReceive(t *testing.T) {
testSuite := createE2ETestSuite(t)
testSuite := createIndexerTestSuite(t)
optimismPortal, err := bindings.NewOptimismPortal(testSuite.OpCfg.L1Deployments.OptimismPortalProxy, testSuite.L1Client)
require.NoError(t, err)
......@@ -379,7 +379,7 @@ func TestE2EBridgeTransfersL2ToL1MessagePasserETHReceive(t *testing.T) {
}
func TestE2EBridgeTransfersCursoredWithdrawals(t *testing.T) {
testSuite := createE2ETestSuite(t)
testSuite := createIndexerTestSuite(t)
l2StandardBridge, err := bindings.NewL2StandardBridge(predeploys.L2StandardBridgeAddr, testSuite.L2Client)
require.NoError(t, err)
......@@ -449,7 +449,7 @@ func TestE2EBridgeTransfersCursoredWithdrawals(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)
require.NoError(t, err)
......
......@@ -19,7 +19,7 @@ import (
)
func TestE2EETL(t *testing.T) {
testSuite := createE2ETestSuite(t)
testSuite := createIndexerTestSuite(t)
l2OutputOracle, err := bindings.NewL2OutputOracle(testSuite.OpCfg.L1Deployments.L2OutputOracleProxy, testSuite.L1Client)
require.NoError(t, err)
......
......@@ -43,7 +43,15 @@ type E2ETestSuite struct {
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")
dbName := setupTestDatabase(t)
......@@ -58,9 +66,15 @@ func createE2ETestSuite(t *testing.T) E2ETestSuite {
require.NoError(t, err)
t.Cleanup(func() { opSys.Close() })
// E2E tests can run on the order of magnitude of minutes. Once
// the system is running, mark this test for Parallel execution
t.Parallel()
if !withAPI {
// E2E tests can run on the order of magnitude of minutes. Once
// 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
indexerCfg := config.Config{
......@@ -100,9 +114,9 @@ func createE2ETestSuite(t *testing.T) E2ETestSuite {
indexer, err := indexer.NewIndexer(indexerLog, db, indexerCfg.Chain, indexerCfg.RPCs, indexerCfg.HTTPServer, indexerCfg.MetricsServer)
require.NoError(t, err)
indexerCtx, indexerStop := context.WithCancel(context.Background())
appCtx, appStop := context.WithCancel(context.Background())
go func() {
err := indexer.Run(indexerCtx)
err := indexer.Run(appCtx)
if err != nil { // panicking here ensures that the test will exit
// during service failure. Using t.Fail() wouldn't be caught
// until all awaiting routines finish which would never happen.
......@@ -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{
Host: "127.0.0.1",
Port: 4321,
}
mCfg := config.ServerConfig{
Host: "127.0.0.1",
Port: 0,
}
if withAPI {
apiLog := testlog.Logger(t, log.LvlInfo).New("role", "indexer_api")
api := api.NewApi(apiLog, db.BridgeTransfers, apiCfg, mCfg)
apiCtx, apiStop := context.WithCancel(context.Background())
go func() {
err := api.Start(apiCtx)
if err != nil {
panic(err)
apiCfg := config.ServerConfig{
Host: "127.0.0.1",
Port: 4321,
}
}()
t.Cleanup(func() {
apiStop()
indexerStop()
})
client, err := client.NewClient(&client.Config{
PaginationLimit: 100,
BaseURL: fmt.Sprintf("http://%s:%d", indexerCfg.HTTPServer.Host, indexerCfg.HTTPServer.Port),
})
mCfg := config.ServerConfig{
Host: "127.0.0.1",
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{
t: t,
Client: client,
API: indexerAPI,
Client: indexerClient,
DB: db,
Indexer: indexer,
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