From c60f716eb01a85e552a6c86380bb0e3df0cc40b3 Mon Sep 17 00:00:00 2001 From: Roger <50648015+RogerLamTd@users.noreply.github.com> Date: Tue, 12 Sep 2023 13:09:15 -0700 Subject: [PATCH] test(eventindexer): testing configs (#14675) --- packages/eventindexer/cmd/flags/indexer.go | 1 + packages/eventindexer/indexer/config.go | 4 +- packages/eventindexer/indexer/config_test.go | 43 +++++++++++++-- packages/eventindexer/indexer/indexer.go | 2 +- packages/relayer/cmd/flags/indexer.go | 4 +- packages/relayer/indexer/config_test.go | 36 +++++++++++-- packages/relayer/processor/config.go | 3 -- packages/relayer/processor/config_test.go | 56 +++++++++++++++++++- 8 files changed, 132 insertions(+), 17 deletions(-) diff --git a/packages/eventindexer/cmd/flags/indexer.go b/packages/eventindexer/cmd/flags/indexer.go index 3b19820b05..37c845599b 100644 --- a/packages/eventindexer/cmd/flags/indexer.go +++ b/packages/eventindexer/cmd/flags/indexer.go @@ -121,6 +121,7 @@ var ( var IndexerFlags = MergeFlags(CommonFlags, []cli.Flag{ RPCUrl, // optional + ETHClientTimeout, L1TaikoAddress, HTTPPort, MetricsHTTPPort, diff --git a/packages/eventindexer/indexer/config.go b/packages/eventindexer/indexer/config.go index 1027999079..a46bd5c4af 100644 --- a/packages/eventindexer/indexer/config.go +++ b/packages/eventindexer/indexer/config.go @@ -36,7 +36,7 @@ type Config struct { SwapAddresses []common.Address CORSOrigins []string BlockBatchSize uint64 - Subscriptionbackoff uint64 + SubscriptionBackoff uint64 SyncMode SyncMode WatchMode WatchMode IndexNFTs bool @@ -78,7 +78,7 @@ func NewConfigFromCliContext(c *cli.Context) (*Config, error) { SwapAddresses: swaps, CORSOrigins: cors, BlockBatchSize: c.Uint64(flags.BlockBatchSize.Name), - Subscriptionbackoff: c.Uint64(flags.SubscriptionBackoff.Name), + SubscriptionBackoff: c.Uint64(flags.SubscriptionBackoff.Name), RPCUrl: c.String(flags.RPCUrl.Name), WatchMode: WatchMode(c.String(flags.WatchMode.Name)), SyncMode: SyncMode(c.String(flags.SyncMode.Name)), diff --git a/packages/eventindexer/indexer/config_test.go b/packages/eventindexer/indexer/config_test.go index cc59a48203..8513c8a5b4 100644 --- a/packages/eventindexer/indexer/config_test.go +++ b/packages/eventindexer/indexer/config_test.go @@ -10,11 +10,22 @@ import ( ) var ( - httpPort = "1000" - metricsHttpPort = "1001" - l1TaikoAddress = "0x63FaC9201494f0bd17B9892B9fae4d52fe3BD377" - bridgeAddress = "0x73FaC9201494f0bd17B9892B9fae4d52fe3BD377" - swapAddresses = "0x33FaC9201494f0bd17B9892B9fae4d52fe3BD377,0x13FaC9201494f0bd17B9892B9fae4d52fe3BD377" + httpPort = "1000" + metricsHttpPort = "1001" + l1TaikoAddress = "0x63FaC9201494f0bd17B9892B9fae4d52fe3BD377" + bridgeAddress = "0x73FaC9201494f0bd17B9892B9fae4d52fe3BD377" + swapAddresses = "0x33FaC9201494f0bd17B9892B9fae4d52fe3BD377,0x13FaC9201494f0bd17B9892B9fae4d52fe3BD377" + corsOrigins = "http://localhost:3000,http://localhost:3001" + databaseMaxIdleConns = "10" + databaseMaxOpenConns = "10" + databaseMaxConnLifetime = "30" + ethClientTimeout = "30" + blockBatchSize = "100" + subscriptionBackoff = "30" + syncMode = "sync" + watchMode = "filter" + indexNFTs = "true" + layer = "l1" ) func setupApp() *cli.App { @@ -44,6 +55,17 @@ func TestNewConfigFromCliContext(t *testing.T) { assert.Equal(t, uint64(1001), c.MetricsHTTPPort) assert.Equal(t, common.HexToAddress(l1TaikoAddress), c.L1TaikoAddress) assert.Equal(t, common.HexToAddress(bridgeAddress), c.BridgeAddress) + assert.Equal(t, uint64(10), c.DatabaseMaxIdleConns) + assert.Equal(t, uint64(10), c.DatabaseMaxOpenConns) + assert.Equal(t, uint64(30), c.DatabaseMaxConnLifetime) + assert.Equal(t, uint64(30), c.ETHClientTimeout) + assert.Equal(t, uint64(100), c.BlockBatchSize) + assert.Equal(t, uint64(30), c.SubscriptionBackoff) + assert.Equal(t, SyncMode(syncMode), c.SyncMode) + assert.Equal(t, WatchMode(watchMode), c.WatchMode) + assert.Equal(t, true, c.IndexNFTs) + assert.Equal(t, layer, c.Layer) + assert.NotNil(t, c.OpenDBFunc) // assert.Nil(t, InitFromConfig(context.Background(), new(Indexer), c)) @@ -62,5 +84,16 @@ func TestNewConfigFromCliContext(t *testing.T) { "-" + flags.SwapAddresses.Name, swapAddresses, "-" + flags.HTTPPort.Name, httpPort, "-" + flags.MetricsHTTPPort.Name, metricsHttpPort, + "-" + flags.CORSOrigins.Name, corsOrigins, + "-" + flags.DatabaseMaxIdleConns.Name, databaseMaxIdleConns, + "-" + flags.DatabaseMaxOpenConns.Name, databaseMaxOpenConns, + "-" + flags.DatabaseConnMaxLifetime.Name, databaseMaxConnLifetime, + "-" + flags.ETHClientTimeout.Name, ethClientTimeout, + "-" + flags.BlockBatchSize.Name, blockBatchSize, + "-" + flags.SubscriptionBackoff.Name, subscriptionBackoff, + "-" + flags.SyncMode.Name, syncMode, + "-" + flags.WatchMode.Name, watchMode, + "-" + flags.IndexNFTs.Name, indexNFTs, + "-" + flags.Layer.Name, layer, })) } diff --git a/packages/eventindexer/indexer/indexer.go b/packages/eventindexer/indexer/indexer.go index e1e8a53cd6..31d6ca2a6f 100644 --- a/packages/eventindexer/indexer/indexer.go +++ b/packages/eventindexer/indexer/indexer.go @@ -229,7 +229,7 @@ func InitFromConfig(ctx context.Context, i *Indexer, cfg *Config) error { i.bridge = bridgeContract i.swaps = swapContracts i.blockBatchSize = cfg.BlockBatchSize - i.subscriptionBackoff = time.Duration(cfg.Subscriptionbackoff) * time.Second + i.subscriptionBackoff = time.Duration(cfg.SubscriptionBackoff) * time.Second i.srv = srv i.httpPort = cfg.HTTPPort i.wg = &sync.WaitGroup{} diff --git a/packages/relayer/cmd/flags/indexer.go b/packages/relayer/cmd/flags/indexer.go index 26cfd7cfd2..9608b13166 100644 --- a/packages/relayer/cmd/flags/indexer.go +++ b/packages/relayer/cmd/flags/indexer.go @@ -71,9 +71,9 @@ var ( CORSOrigins = &cli.StringFlag{ Name: "http.corsOrigins", Usage: "Comma-delinated list of cors origins", - Required: false, + Category: indexerCategory, Value: "*", - Category: commonCategory, + EnvVars: []string{"HTTP_CORS_ORIGINS"}, } ) diff --git a/packages/relayer/indexer/config_test.go b/packages/relayer/indexer/config_test.go index 5956bca61b..d39e43a032 100644 --- a/packages/relayer/indexer/config_test.go +++ b/packages/relayer/indexer/config_test.go @@ -12,9 +12,19 @@ import ( ) var ( - srcTaikoAddr = "0x53FaC9201494f0bd17B9892B9fae4d52fe3BD377" - srcBridgeAddr = "0x73FaC9201494f0bd17B9892B9fae4d52fe3BD377" - destBridgeAddr = "0x63FaC9201494f0bd17B9892B9fae4d52fe3BD377" + srcTaikoAddr = "0x53FaC9201494f0bd17B9892B9fae4d52fe3BD377" + srcBridgeAddr = "0x73FaC9201494f0bd17B9892B9fae4d52fe3BD377" + destBridgeAddr = "0x63FaC9201494f0bd17B9892B9fae4d52fe3BD377" + ethClientTimeout = "10" + databaseMaxIdleConns = "10" + databaseMaxOpenConns = "10" + databaseMaxConnLifetime = "30" + blockBatchSize = "100" + numGoroutines = "10" + subscriptionBackoff = "30" + syncMode = "sync" + watchMode = "filter" + HTTPPort = "1000" ) func setupApp() *cli.App { @@ -48,6 +58,16 @@ func TestNewConfigFromCliContext(t *testing.T) { assert.Equal(t, common.HexToAddress(srcBridgeAddr), c.SrcBridgeAddress) assert.Equal(t, common.HexToAddress(srcTaikoAddr), c.SrcTaikoAddress) assert.Equal(t, []string{"*"}, c.CORSOrigins) + assert.Equal(t, uint64(10), c.ETHClientTimeout) + assert.Equal(t, uint64(10), c.DatabaseMaxIdleConns) + assert.Equal(t, uint64(10), c.DatabaseMaxOpenConns) + assert.Equal(t, uint64(30), c.DatabaseMaxConnLifetime) + assert.Equal(t, uint64(100), c.BlockBatchSize) + assert.Equal(t, uint64(10), c.NumGoroutines) + assert.Equal(t, uint64(30), c.SubscriptionBackoff) + assert.Equal(t, SyncMode(syncMode), c.SyncMode) + assert.Equal(t, WatchMode(watchMode), c.WatchMode) + assert.Equal(t, uint64(1000), c.HTTPPort) c.OpenDBFunc = func() (DB, error) { return &mock.DB{}, nil @@ -78,5 +98,15 @@ func TestNewConfigFromCliContext(t *testing.T) { "-" + flags.SrcBridgeAddress.Name, srcBridgeAddr, "-" + flags.SrcTaikoAddress.Name, srcTaikoAddr, "-" + flags.CORSOrigins.Name, "*", + "-" + flags.ETHClientTimeout.Name, ethClientTimeout, + "-" + flags.DatabaseMaxOpenConns.Name, databaseMaxOpenConns, + "-" + flags.DatabaseMaxIdleConns.Name, databaseMaxIdleConns, + "-" + flags.DatabaseConnMaxLifetime.Name, databaseMaxConnLifetime, + "-" + flags.BlockBatchSize.Name, blockBatchSize, + "-" + flags.MaxNumGoroutines.Name, numGoroutines, + "-" + flags.SubscriptionBackoff.Name, subscriptionBackoff, + "-" + flags.SyncMode.Name, syncMode, + "-" + flags.WatchMode.Name, watchMode, + "-" + flags.HTTPPort.Name, HTTPPort, })) } diff --git a/packages/relayer/processor/config.go b/packages/relayer/processor/config.go index a7edc96f15..f325e2f4e8 100644 --- a/packages/relayer/processor/config.go +++ b/packages/relayer/processor/config.go @@ -3,7 +3,6 @@ package processor import ( "crypto/ecdsa" "fmt" - "strings" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/crypto" @@ -56,7 +55,6 @@ type Config struct { SrcRPCUrl string DestRPCUrl string ETHClientTimeout uint64 - CORSOrigins []string OpenQueueFunc func() (queue.Queue, error) OpenDBFunc func() (DB, error) } @@ -91,7 +89,6 @@ func NewConfigFromCliContext(c *cli.Context) (*Config, error) { QueueHost: c.String(flags.QueueHost.Name), SrcRPCUrl: c.String(flags.SrcRPCUrl.Name), DestRPCUrl: c.String(flags.DestRPCUrl.Name), - CORSOrigins: strings.Split(c.String(flags.CORSOrigins.Name), ","), HeaderSyncInterval: c.Uint64(flags.HeaderSyncInterval.Name), Confirmations: c.Uint64(flags.Confirmations.Name), ConfirmationsTimeout: c.Uint64(flags.ConfirmationTimeout.Name), diff --git a/packages/relayer/processor/config_test.go b/packages/relayer/processor/config_test.go index 0ee7777487..d23ef0c108 100644 --- a/packages/relayer/processor/config_test.go +++ b/packages/relayer/processor/config_test.go @@ -12,7 +12,17 @@ import ( ) var ( - destBridgeAddr = "0x63FaC9201494f0bd17B9892B9fae4d52fe3BD377" + destBridgeAddr = "0x63FaC9201494f0bd17B9892B9fae4d52fe3BD377" + headerSyncInterval = "30" + confirmations = "10" + confirmationTimeout = "30" + profitableOnly = "true" + backoffRetryInterval = "20" + backOffMaxRetrys = "10" + databaseMaxIdleConns = "10" + databaseMaxOpenConns = "10" + databaseMaxConnLifetime = "30" + ethClientTimeout = "10" ) func setupApp() *cli.App { @@ -48,6 +58,16 @@ func TestNewConfigFromCliContext(t *testing.T) { assert.Equal(t, common.HexToAddress(destBridgeAddr), c.DestERC721VaultAddress) assert.Equal(t, common.HexToAddress(destBridgeAddr), c.DestERC1155VaultAddress) assert.Equal(t, common.HexToAddress(destBridgeAddr), c.DestTaikoAddress) + assert.Equal(t, uint64(30), c.HeaderSyncInterval) + assert.Equal(t, uint64(10), c.Confirmations) + assert.Equal(t, uint64(30), c.ConfirmationsTimeout) + assert.Equal(t, uint64(20), c.BackoffRetryInterval) + assert.Equal(t, uint64(10), c.BackOffMaxRetrys) + assert.Equal(t, uint64(10), c.DatabaseMaxIdleConns) + assert.Equal(t, uint64(10), c.DatabaseMaxOpenConns) + assert.Equal(t, uint64(30), c.DatabaseMaxConnLifetime) + assert.Equal(t, uint64(10), c.ETHClientTimeout) + assert.Equal(t, true, c.ProfitableOnly) c.OpenDBFunc = func() (DB, error) { return &mock.DB{}, nil @@ -81,5 +101,39 @@ func TestNewConfigFromCliContext(t *testing.T) { "-" + flags.DestERC1155VaultAddress.Name, destBridgeAddr, "-" + flags.DestTaikoAddress.Name, destBridgeAddr, "-" + flags.ProcessorPrivateKey.Name, dummyEcdsaKey, + "-" + flags.HeaderSyncInterval.Name, headerSyncInterval, + "-" + flags.Confirmations.Name, confirmations, + "-" + flags.ConfirmationTimeout.Name, confirmationTimeout, + "-" + flags.BackOffRetryInterval.Name, backoffRetryInterval, + "-" + flags.BackOffMaxRetrys.Name, backOffMaxRetrys, + "-" + flags.DatabaseMaxIdleConns.Name, databaseMaxIdleConns, + "-" + flags.DatabaseMaxOpenConns.Name, databaseMaxOpenConns, + "-" + flags.DatabaseConnMaxLifetime.Name, databaseMaxConnLifetime, + "-" + flags.ETHClientTimeout.Name, ethClientTimeout, + "-" + flags.ProfitableOnly.Name, profitableOnly, })) } + +func TestNewConfigFromCliContext_PrivKeyError(t *testing.T) { + app := setupApp() + assert.ErrorContains(t, app.Run([]string{ + "TestingNewConfigFromCliContext", + "-" + flags.DatabaseUsername.Name, "dbuser", + "-" + flags.DatabasePassword.Name, "dbpass", + "-" + flags.DatabaseHost.Name, "dbhost", + "-" + flags.DatabaseName.Name, "dbname", + "-" + flags.QueueUsername.Name, "queuename", + "-" + flags.QueuePassword.Name, "queuepassword", + "-" + flags.QueueHost.Name, "queuehost", + "-" + flags.QueuePort.Name, "5555", + "-" + flags.SrcRPCUrl.Name, "srcRpcUrl", + "-" + flags.DestRPCUrl.Name, "destRpcUrl", + "-" + flags.DestBridgeAddress.Name, destBridgeAddr, + "-" + flags.SrcSignalServiceAddress.Name, destBridgeAddr, + "-" + flags.DestERC721VaultAddress.Name, destBridgeAddr, + "-" + flags.DestERC20VaultAddress.Name, destBridgeAddr, + "-" + flags.DestERC1155VaultAddress.Name, destBridgeAddr, + "-" + flags.DestTaikoAddress.Name, destBridgeAddr, + "-" + flags.ProcessorPrivateKey.Name, "invalid-priv-key", + }), "invalid processorPrivateKey") +}