From 4d30c241d6d5fc1f0f3855a31583392155f78d67 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 25 Apr 2024 12:02:31 -0400 Subject: [PATCH 1/3] chore(deps): Bump golangci/golangci-lint-action from 4.0.0 to 5.0.0 (#3384) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [golangci/golangci-lint-action](https://github.com/golangci/golangci-lint-action) from 4.0.0 to 5.0.0.
Release notes

Sourced from golangci/golangci-lint-action's releases.

v5.0.0

What's Changed

Changes

New Contributors

Full Changelog: https://github.com/golangci/golangci-lint-action/compare/v4.0.1...v5.0.0

v4.0.1

What's Changed

Documentation

Dependencies

... (truncated)

Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=golangci/golangci-lint-action&package-manager=github_actions&previous-version=4.0.0&new-version=5.0.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/lint.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 1e9cfad305..33b067be30 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -20,7 +20,7 @@ jobs: **/**.go go.mod go.sum - - uses: golangci/golangci-lint-action@v4.0.0 + - uses: golangci/golangci-lint-action@v5.0.0 with: version: v1.57.0 args: --timeout 10m From ae207ae94268f6e11683e3386c295d40f9fbc193 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?nina=20/=20=E1=83=9C=E1=83=98=E1=83=9C=E1=83=90?= Date: Thu, 25 Apr 2024 18:10:45 +0200 Subject: [PATCH 2/3] refactor: change testnets package name to testnet (#3360) ## Overview change testnet variable to follow camelCase naming convention and testnets package name to follow singular package naming rule. --- test/e2e/benchmark/throughput.go | 32 +++---- test/e2e/check_upgrades.go | 84 +++++++++---------- test/e2e/main.go | 2 +- test/e2e/simple.go | 28 +++---- test/e2e/{testnets => testnet}/defaults.go | 2 +- test/e2e/{testnets => testnet}/node.go | 2 +- test/e2e/{testnets => testnet}/setup.go | 2 +- .../e2e/{testnets => testnet}/test_helpers.go | 2 +- test/e2e/{testnets => testnet}/testnet.go | 2 +- test/e2e/{testnets => testnet}/txsimNode.go | 2 +- test/e2e/{testnets => testnet}/util.go | 2 +- test/e2e/{testnets => testnet}/versions.go | 2 +- test/e2e/testnet/versions_test.go | 49 +++++++++++ test/e2e/testnets/versions_test.go | 49 ----------- 14 files changed, 130 insertions(+), 130 deletions(-) rename test/e2e/{testnets => testnet}/defaults.go (88%) rename test/e2e/{testnets => testnet}/node.go (99%) rename test/e2e/{testnets => testnet}/setup.go (98%) rename test/e2e/{testnets => testnet}/test_helpers.go (87%) rename test/e2e/{testnets => testnet}/testnet.go (99%) rename test/e2e/{testnets => testnet}/txsimNode.go (98%) rename test/e2e/{testnets => testnet}/util.go (98%) rename test/e2e/{testnets => testnet}/versions.go (99%) create mode 100644 test/e2e/testnet/versions_test.go delete mode 100644 test/e2e/testnets/versions_test.go diff --git a/test/e2e/benchmark/throughput.go b/test/e2e/benchmark/throughput.go index 227417de4d..55d2b6cbbf 100644 --- a/test/e2e/benchmark/throughput.go +++ b/test/e2e/benchmark/throughput.go @@ -7,7 +7,7 @@ import ( "time" "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" - "github.com/celestiaorg/celestia-app/v2/test/e2e/testnets" + "github.com/celestiaorg/celestia-app/v2/test/e2e/testnet" "github.com/celestiaorg/celestia-app/v2/test/util/testnode" ) @@ -23,50 +23,50 @@ func main() { } func E2EThroughput() error { - latestVersion, err := testnets.GetLatestVersion() - testnets.NoError("failed to get latest version", err) + latestVersion, err := testnet.GetLatestVersion() + testnet.NoError("failed to get latest version", err) log.Println("=== RUN E2EThroughput", "version:", latestVersion) // create a new testnet - testnet, err := testnets.New("E2EThroughput", seed, testnets.GetGrafanaInfoFromEnvVar()) - testnets.NoError("failed to create testnet", err) + testNet, err := testnet.New("E2EThroughput", seed, testnet.GetGrafanaInfoFromEnvVar()) + testnet.NoError("failed to create testnet", err) defer func() { log.Print("Cleaning up testnet") - testnet.Cleanup() + testNet.Cleanup() }() // add 2 validators - testnets.NoError("failed to create genesis nodes", testnet.CreateGenesisNodes(2, latestVersion, 10000000, 0, testnets.DefaultResources)) + testnet.NoError("failed to create genesis nodes", testNet.CreateGenesisNodes(2, latestVersion, 10000000, 0, testnet.DefaultResources)) // obtain the GRPC endpoints of the validators - gRPCEndpoints, err := testnet.RemoteGRPCEndpoints() - testnets.NoError("failed to get validators GRPC endpoints", err) + gRPCEndpoints, err := testNet.RemoteGRPCEndpoints() + testnet.NoError("failed to get validators GRPC endpoints", err) log.Println("validators GRPC endpoints", gRPCEndpoints) // create txsim nodes and point them to the validators log.Println("Creating txsim nodes") - err = testnet.CreateTxClients(txsimVersion, 1, "10000-10000", testnets.DefaultResources, gRPCEndpoints) - testnets.NoError("failed to create tx clients", err) + err = testNet.CreateTxClients(txsimVersion, 1, "10000-10000", testnet.DefaultResources, gRPCEndpoints) + testnet.NoError("failed to create tx clients", err) // start the testnet log.Println("Setting up testnet") - testnets.NoError("failed to setup testnet", testnet.Setup()) + testnet.NoError("failed to setup testnet", testNet.Setup()) log.Println("Starting testnet") - testnets.NoError("failed to start testnet", testnet.Start()) + testnet.NoError("failed to start testnet", testNet.Start()) // once the testnet is up, start the txsim log.Println("Starting txsim nodes") - testnets.NoError("failed to start tx clients", testnet.StartTxClients()) + testnet.NoError("failed to start tx clients", testNet.StartTxClients()) // wait some time for the txsim to submit transactions time.Sleep(1 * time.Minute) log.Println("Reading blockchain") - blockchain, err := testnode.ReadBlockchain(context.Background(), testnet.Node(0).AddressRPC()) - testnets.NoError("failed to read blockchain", err) + blockchain, err := testnode.ReadBlockchain(context.Background(), testNet.Node(0).AddressRPC()) + testnet.NoError("failed to read blockchain", err) totalTxs := 0 for _, block := range blockchain { diff --git a/test/e2e/check_upgrades.go b/test/e2e/check_upgrades.go index c4510050de..2f6b63643d 100644 --- a/test/e2e/check_upgrades.go +++ b/test/e2e/check_upgrades.go @@ -14,7 +14,7 @@ import ( "github.com/celestiaorg/celestia-app/v2/app/encoding" v1 "github.com/celestiaorg/celestia-app/v2/pkg/appconsts/v1" v2 "github.com/celestiaorg/celestia-app/v2/pkg/appconsts/v2" - "github.com/celestiaorg/celestia-app/v2/test/e2e/testnets" + "github.com/celestiaorg/celestia-app/v2/test/e2e/testnet" "github.com/celestiaorg/celestia-app/v2/test/txsim" "github.com/celestiaorg/knuu/pkg/knuu" "github.com/tendermint/tendermint/rpc/client/http" @@ -22,8 +22,8 @@ import ( func MinorVersionCompatibility(logger *log.Logger) error { versionStr, err := getAllVersions() - testnets.NoError("failed to get versions", err) - versions := testnets.ParseVersions(versionStr).FilterMajor(MajorVersion).FilterOutReleaseCandidates() + testnet.NoError("failed to get versions", err) + versions := testnet.ParseVersions(versionStr).FilterMajor(MajorVersion).FilterOutReleaseCandidates() if len(versions) == 0 { logger.Fatal("no versions to test") @@ -32,37 +32,37 @@ func MinorVersionCompatibility(logger *log.Logger) error { r := rand.New(rand.NewSource(seed)) logger.Println("Running minor version compatibility test", "versions", versions) - testnet, err := testnets.New("runMinorVersionCompatibility", seed, nil) - testnets.NoError("failed to create testnet", err) + testNet, err := testnet.New("runMinorVersionCompatibility", seed, nil) + testnet.NoError("failed to create testnet", err) - defer testnet.Cleanup() + defer testNet.Cleanup() - testnet.SetConsensusParams(app.DefaultInitialConsensusParams()) + testNet.SetConsensusParams(app.DefaultInitialConsensusParams()) // preload all docker images preloader, err := knuu.NewPreloader() - testnets.NoError("failed to create preloader", err) + testnet.NoError("failed to create preloader", err) defer func() { _ = preloader.EmptyImages() }() for _, v := range versions { - testnets.NoError("failed to add image", preloader.AddImage(testnets.DockerImageName(v.String()))) + testnet.NoError("failed to add image", preloader.AddImage(testnet.DockerImageName(v.String()))) } for i := 0; i < numNodes; i++ { // each node begins with a random version within the same major version set v := versions.Random(r).String() logger.Println("Starting node", "node", i, "version", v) - testnets.NoError("failed to create genesis node", testnet.CreateGenesisNode(v, 10000000, 0, testnets.DefaultResources)) + testnet.NoError("failed to create genesis node", testNet.CreateGenesisNode(v, 10000000, 0, testnet.DefaultResources)) } - kr, err := testnet.CreateAccount("alice", 1e12, "") - testnets.NoError("failed to create account", err) + kr, err := testNet.CreateAccount("alice", 1e12, "") + testnet.NoError("failed to create account", err) // start the testnet logger.Println("Setting up testnet") - testnets.NoError("Failed to setup testnet", testnet.Setup()) + testnet.NoError("Failed to setup testnet", testNet.Setup()) logger.Println("Starting testnet") - testnets.NoError("Failed to start testnet", testnet.Start()) + testnet.NoError("Failed to start testnet", testNet.Start()) // TODO: with upgrade tests we should simulate a far broader range of transactions sequences := txsim.NewBlobSequence(txsim.NewRange(200, 4000), txsim.NewRange(1, 3)).Clone(5) @@ -74,7 +74,7 @@ func MinorVersionCompatibility(logger *log.Logger) error { ctx, cancel := context.WithCancel(context.Background()) defer cancel() go func() { - errCh <- txsim.Run(ctx, testnet.GRPCEndpoints()[0], kr, encCfg, opts, sequences...) + errCh <- txsim.Run(ctx, testNet.GRPCEndpoints()[0], kr, encCfg, opts, sequences...) }() for i := 0; i < len(versions)*2; i++ { @@ -83,25 +83,25 @@ func MinorVersionCompatibility(logger *log.Logger) error { if i%numNodes == 0 { continue } - client, err := testnet.Node(i % numNodes).Client() - testnets.NoError("failed to get client", err) + client, err := testNet.Node(i % numNodes).Client() + testnet.NoError("failed to get client", err) heightBefore, err := getHeight(ctx, client, time.Second) - testnets.NoError("failed to get height", err) + testnet.NoError("failed to get height", err) newVersion := versions.Random(r).String() logger.Println("Upgrading node", "node", i%numNodes+1, "version", newVersion) - testnets.NoError("failed to upgrade node", testnet.Node(i%numNodes+1).Upgrade(newVersion)) + testnet.NoError("failed to upgrade node", testNet.Node(i%numNodes+1).Upgrade(newVersion)) // wait for the node to reach two more heights - testnets.NoError("failed to wait for height", waitForHeight(ctx, client, heightBefore+2, 30*time.Second)) + testnet.NoError("failed to wait for height", waitForHeight(ctx, client, heightBefore+2, 30*time.Second)) } heights := make([]int64, 4) for i := 0; i < numNodes; i++ { - client, err := testnet.Node(i).Client() - testnets.NoError("failed to get client", err) + client, err := testNet.Node(i).Client() + testnet.NoError("failed to get client", err) heights[i], err = getHeight(ctx, client, time.Second) - testnets.NoError("failed to get height", err) + testnet.NoError("failed to get height", err) } logger.Println("checking that all nodes are at the same height") @@ -127,8 +127,8 @@ func MinorVersionCompatibility(logger *log.Logger) error { } func MajorUpgradeToV2(logger *log.Logger) error { - latestVersion, err := testnets.GetLatestVersion() - testnets.NoError("failed to get latest version", err) + latestVersion, err := testnet.GetLatestVersion() + testnet.NoError("failed to get latest version", err) logger.Println("Running major upgrade to v2 test", "version", latestVersion) @@ -138,31 +138,31 @@ func MajorUpgradeToV2(logger *log.Logger) error { defer cancel() logger.Println("Creating testnet") - testnet, err := testnets.New("runMajorUpgradeToV2", seed, nil) - testnets.NoError("failed to create testnet", err) + testNet, err := testnet.New("runMajorUpgradeToV2", seed, nil) + testnet.NoError("failed to create testnet", err) - defer testnet.Cleanup() + defer testNet.Cleanup() preloader, err := knuu.NewPreloader() - testnets.NoError("failed to create preloader", err) + testnet.NoError("failed to create preloader", err) defer func() { _ = preloader.EmptyImages() }() - testnets.NoError("failed to add image", preloader.AddImage(testnets.DockerImageName(latestVersion))) + testnet.NoError("failed to add image", preloader.AddImage(testnet.DockerImageName(latestVersion))) logger.Println("Creating genesis nodes") for i := 0; i < numNodes; i++ { - err := testnet.CreateGenesisNode(latestVersion, 10000000, upgradeHeight, testnets.DefaultResources) - testnets.NoError("failed to create genesis node", err) + err := testNet.CreateGenesisNode(latestVersion, 10000000, upgradeHeight, testnet.DefaultResources) + testnet.NoError("failed to create genesis node", err) } - kr, err := testnet.CreateAccount("alice", 1e12, "") - testnets.NoError("failed to create account", err) + kr, err := testNet.CreateAccount("alice", 1e12, "") + testnet.NoError("failed to create account", err) // start the testnet logger.Println("Setting up testnet") - testnets.NoError("Failed to setup testnet", testnet.Setup()) + testnet.NoError("Failed to setup testnet", testNet.Setup()) logger.Println("Starting testnet") - testnets.NoError("Failed to start testnet", testnet.Start()) + testnet.NoError("Failed to start testnet", testNet.Start()) errCh := make(chan error) encCfg := encoding.MakeConfig(app.ModuleEncodingRegisters...) @@ -170,26 +170,26 @@ func MajorUpgradeToV2(logger *log.Logger) error { sequences := txsim.NewBlobSequence(txsim.NewRange(200, 4000), txsim.NewRange(1, 3)).Clone(5) sequences = append(sequences, txsim.NewSendSequence(4, 1000, 100).Clone(5)...) go func() { - errCh <- txsim.Run(ctx, testnet.GRPCEndpoints()[0], kr, encCfg, opts, sequences...) + errCh <- txsim.Run(ctx, testNet.GRPCEndpoints()[0], kr, encCfg, opts, sequences...) }() // assert that the network is initially running on v1 heightBefore := upgradeHeight - 1 for i := 0; i < numNodes; i++ { - client, err := testnet.Node(i).Client() - testnets.NoError("failed to get client", err) + client, err := testNet.Node(i).Client() + testnet.NoError("failed to get client", err) - testnets.NoError("failed to wait for height", waitForHeight(ctx, client, upgradeHeight, time.Minute)) + testnet.NoError("failed to wait for height", waitForHeight(ctx, client, upgradeHeight, time.Minute)) resp, err := client.Header(ctx, &heightBefore) - testnets.NoError("failed to get header", err) + testnet.NoError("failed to get header", err) logger.Println("Node", i, "is running on version", resp.Header.Version.App) if resp.Header.Version.App != v1.Version { return fmt.Errorf("version mismatch before upgrade: expected %d, got %d", v1.Version, resp.Header.Version.App) } resp, err = client.Header(ctx, &upgradeHeight) - testnets.NoError("failed to get header", err) + testnet.NoError("failed to get header", err) if resp.Header.Version.App != v2.Version { return fmt.Errorf("version mismatch before upgrade: expected %d, got %d", v2.Version, resp.Header.Version.App) } diff --git a/test/e2e/main.go b/test/e2e/main.go index bc5dc1a850..fc90d7c41d 100644 --- a/test/e2e/main.go +++ b/test/e2e/main.go @@ -44,7 +44,7 @@ func main() { if !specificTestFound { logger.Println("No particular test specified. Running all tests.") - logger.Println("go run test/e2e/*.go to run a specific test") + logger.Println("go run ./test/e2e to run a specific test") logger.Printf("Valid tests are: %s\n\n", getTestNames(tests)) // if no specific test is passed, run all tests for _, test := range tests { diff --git a/test/e2e/simple.go b/test/e2e/simple.go index d0890aece4..9d147a290f 100644 --- a/test/e2e/simple.go +++ b/test/e2e/simple.go @@ -10,7 +10,7 @@ import ( "github.com/celestiaorg/celestia-app/v2/app" "github.com/celestiaorg/celestia-app/v2/app/encoding" "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" - "github.com/celestiaorg/celestia-app/v2/test/e2e/testnets" + "github.com/celestiaorg/celestia-app/v2/test/e2e/testnet" "github.com/celestiaorg/celestia-app/v2/test/txsim" "github.com/celestiaorg/celestia-app/v2/test/util/testnode" ) @@ -19,28 +19,28 @@ import ( // and MsgSends over 30 seconds and then asserts that at least 10 transactions were // committed. func E2ESimple(logger *log.Logger) error { - latestVersion, err := testnets.GetLatestVersion() - testnets.NoError("failed to get latest version", err) + latestVersion, err := testnet.GetLatestVersion() + testnet.NoError("failed to get latest version", err) logger.Println("Running simple e2e test", "version", latestVersion) - testnet, err := testnets.New("E2ESimple", seed, nil) - testnets.NoError("failed to create testnet", err) + testNet, err := testnet.New("E2ESimple", seed, nil) + testnet.NoError("failed to create testnet", err) - defer testnet.Cleanup() + defer testNet.Cleanup() logger.Println("Creating testnet validators") - testnets.NoError("failed to create genesis nodes", testnet.CreateGenesisNodes(4, latestVersion, 10000000, 0, testnets.DefaultResources)) + testnet.NoError("failed to create genesis nodes", testNet.CreateGenesisNodes(4, latestVersion, 10000000, 0, testnet.DefaultResources)) logger.Println("Creating account") - kr, err := testnet.CreateAccount("alice", 1e12, "") - testnets.NoError("failed to create account", err) + kr, err := testNet.CreateAccount("alice", 1e12, "") + testnet.NoError("failed to create account", err) logger.Println("Setting up testnets") - testnets.NoError("failed to setup testnets", testnet.Setup()) + testnet.NoError("failed to setup testnets", testNet.Setup()) logger.Println("Starting testnets") - testnets.NoError("failed to start testnets", testnet.Start()) + testnet.NoError("failed to start testnets", testNet.Start()) logger.Println("Running txsim") sequences := txsim.NewBlobSequence(txsim.NewRange(200, 4000), txsim.NewRange(1, 3)).Clone(5) @@ -50,15 +50,15 @@ func E2ESimple(logger *log.Logger) error { ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second) defer cancel() opts := txsim.DefaultOptions().WithSeed(seed).SuppressLogs() - err = txsim.Run(ctx, testnet.GRPCEndpoints()[0], kr, encCfg, opts, sequences...) + err = txsim.Run(ctx, testNet.GRPCEndpoints()[0], kr, encCfg, opts, sequences...) if !errors.Is(err, context.DeadlineExceeded) { return fmt.Errorf("expected context.DeadlineExceeded, got %w", err) } logger.Println("Reading blockchain") - blockchain, err := testnode.ReadBlockchain(context.Background(), testnet.Node(0).AddressRPC()) - testnets.NoError("failed to read blockchain", err) + blockchain, err := testnode.ReadBlockchain(context.Background(), testNet.Node(0).AddressRPC()) + testnet.NoError("failed to read blockchain", err) totalTxs := 0 for _, block := range blockchain { diff --git a/test/e2e/testnets/defaults.go b/test/e2e/testnet/defaults.go similarity index 88% rename from test/e2e/testnets/defaults.go rename to test/e2e/testnet/defaults.go index 9641d164d2..2fda895240 100644 --- a/test/e2e/testnets/defaults.go +++ b/test/e2e/testnet/defaults.go @@ -1,4 +1,4 @@ -package testnets +package testnet var DefaultResources = Resources{ MemoryRequest: "200Mi", diff --git a/test/e2e/testnets/node.go b/test/e2e/testnet/node.go similarity index 99% rename from test/e2e/testnets/node.go rename to test/e2e/testnet/node.go index e05c03d7d6..54c86a2fa6 100644 --- a/test/e2e/testnets/node.go +++ b/test/e2e/testnet/node.go @@ -1,4 +1,4 @@ -package testnets +package testnet import ( "fmt" diff --git a/test/e2e/testnets/setup.go b/test/e2e/testnet/setup.go similarity index 98% rename from test/e2e/testnets/setup.go rename to test/e2e/testnet/setup.go index 266587e9f9..343d803db0 100644 --- a/test/e2e/testnets/setup.go +++ b/test/e2e/testnet/setup.go @@ -1,4 +1,4 @@ -package testnets +package testnet import ( "fmt" diff --git a/test/e2e/testnets/test_helpers.go b/test/e2e/testnet/test_helpers.go similarity index 87% rename from test/e2e/testnets/test_helpers.go rename to test/e2e/testnet/test_helpers.go index 7df9b783cd..a3de3cf4c3 100644 --- a/test/e2e/testnets/test_helpers.go +++ b/test/e2e/testnet/test_helpers.go @@ -1,4 +1,4 @@ -package testnets +package testnet import ( "log" diff --git a/test/e2e/testnets/testnet.go b/test/e2e/testnet/testnet.go similarity index 99% rename from test/e2e/testnets/testnet.go rename to test/e2e/testnet/testnet.go index d332be19f4..d7ccb2987d 100644 --- a/test/e2e/testnets/testnet.go +++ b/test/e2e/testnet/testnet.go @@ -1,4 +1,4 @@ -package testnets +package testnet import ( "context" diff --git a/test/e2e/testnets/txsimNode.go b/test/e2e/testnet/txsimNode.go similarity index 98% rename from test/e2e/testnets/txsimNode.go rename to test/e2e/testnet/txsimNode.go index 6c8709db32..f6e965ebf9 100644 --- a/test/e2e/testnets/txsimNode.go +++ b/test/e2e/testnet/txsimNode.go @@ -1,4 +1,4 @@ -package testnets +package testnet import ( "fmt" diff --git a/test/e2e/testnets/util.go b/test/e2e/testnet/util.go similarity index 98% rename from test/e2e/testnets/util.go rename to test/e2e/testnet/util.go index 87067fefad..443f342986 100644 --- a/test/e2e/testnets/util.go +++ b/test/e2e/testnet/util.go @@ -1,4 +1,4 @@ -package testnets +package testnet import ( "io" diff --git a/test/e2e/testnets/versions.go b/test/e2e/testnet/versions.go similarity index 99% rename from test/e2e/testnets/versions.go rename to test/e2e/testnet/versions.go index 2d029f3134..19c6120f2c 100644 --- a/test/e2e/testnets/versions.go +++ b/test/e2e/testnet/versions.go @@ -1,4 +1,4 @@ -package testnets +package testnet import ( "fmt" diff --git a/test/e2e/testnet/versions_test.go b/test/e2e/testnet/versions_test.go new file mode 100644 index 0000000000..71ddcaad27 --- /dev/null +++ b/test/e2e/testnet/versions_test.go @@ -0,0 +1,49 @@ +package testnet_test + +import ( + "testing" + + "github.com/celestiaorg/celestia-app/v2/test/e2e/testnet" + "github.com/stretchr/testify/require" +) + +func TestVersionParsing(t *testing.T) { + versionStr := "v1.3.0 v1.1.0 v1.2.0-rc0" + versions := testnet.ParseVersions(versionStr) + require.Len(t, versions, 3) + require.Len(t, versions.FilterOutReleaseCandidates(), 2) + require.Equal(t, versions.GetLatest(), testnet.Version{1, 3, 0, false, 0}) +} + +// Test case with multiple major versions and filtering out a single major version +func TestFilterMajorVersions(t *testing.T) { + versionStr := "v2.0.0 v1.1.0 v2.1.0-rc0 v1.2.0 v2.2.0 v1.3.0" + versions := testnet.ParseVersions(versionStr) + require.Len(t, versions, 6) + require.Len(t, versions.FilterMajor(1), 3) +} + +// Test case to check the Order function +func TestOrder(t *testing.T) { + versionStr := "v1.3.0 v1.1.0 v1.2.0-rc0 v1.4.0 v1.2.1 v2.0.0" + versions := testnet.ParseVersions(versionStr) + versions.Order() + require.Equal(t, versions[0], testnet.Version{1, 1, 0, false, 0}) + require.Equal(t, versions[1], testnet.Version{1, 2, 0, true, 0}) + require.Equal(t, versions[2], testnet.Version{1, 2, 1, false, 0}) + require.Equal(t, versions[3], testnet.Version{1, 3, 0, false, 0}) + require.Equal(t, versions[4], testnet.Version{1, 4, 0, false, 0}) + require.Equal(t, versions[5], testnet.Version{2, 0, 0, false, 0}) + for i := len(versions) - 1; i > 0; i-- { + require.True(t, versions[i].IsGreater(versions[i-1])) + } +} + +func TestOrderOfReleaseCandidates(t *testing.T) { + versionsStr := "v1.0.0 v1.0.0-rc0 v1.0.0-rc1" + versions := testnet.ParseVersions(versionsStr) + versions.Order() + require.Equal(t, versions[0], testnet.Version{1, 0, 0, true, 0}) + require.Equal(t, versions[1], testnet.Version{1, 0, 0, true, 1}) + require.Equal(t, versions[2], testnet.Version{1, 0, 0, false, 0}) +} diff --git a/test/e2e/testnets/versions_test.go b/test/e2e/testnets/versions_test.go deleted file mode 100644 index f15bf69021..0000000000 --- a/test/e2e/testnets/versions_test.go +++ /dev/null @@ -1,49 +0,0 @@ -package testnets_test - -import ( - "testing" - - "github.com/celestiaorg/celestia-app/v2/test/e2e/testnets" - "github.com/stretchr/testify/require" -) - -func TestVersionParsing(t *testing.T) { - versionStr := "v1.3.0 v1.1.0 v1.2.0-rc0" - versions := testnets.ParseVersions(versionStr) - require.Len(t, versions, 3) - require.Len(t, versions.FilterOutReleaseCandidates(), 2) - require.Equal(t, versions.GetLatest(), testnets.Version{1, 3, 0, false, 0}) -} - -// Test case with multiple major versions and filtering out a single major version -func TestFilterMajorVersions(t *testing.T) { - versionStr := "v2.0.0 v1.1.0 v2.1.0-rc0 v1.2.0 v2.2.0 v1.3.0" - versions := testnets.ParseVersions(versionStr) - require.Len(t, versions, 6) - require.Len(t, versions.FilterMajor(1), 3) -} - -// Test case to check the Order function -func TestOrder(t *testing.T) { - versionStr := "v1.3.0 v1.1.0 v1.2.0-rc0 v1.4.0 v1.2.1 v2.0.0" - versions := testnets.ParseVersions(versionStr) - versions.Order() - require.Equal(t, versions[0], testnets.Version{1, 1, 0, false, 0}) - require.Equal(t, versions[1], testnets.Version{1, 2, 0, true, 0}) - require.Equal(t, versions[2], testnets.Version{1, 2, 1, false, 0}) - require.Equal(t, versions[3], testnets.Version{1, 3, 0, false, 0}) - require.Equal(t, versions[4], testnets.Version{1, 4, 0, false, 0}) - require.Equal(t, versions[5], testnets.Version{2, 0, 0, false, 0}) - for i := len(versions) - 1; i > 0; i-- { - require.True(t, versions[i].IsGreater(versions[i-1])) - } -} - -func TestOrderOfReleaseCandidates(t *testing.T) { - versionsStr := "v1.0.0 v1.0.0-rc0 v1.0.0-rc1" - versions := testnets.ParseVersions(versionsStr) - versions.Order() - require.Equal(t, versions[0], testnets.Version{1, 0, 0, true, 0}) - require.Equal(t, versions[1], testnets.Version{1, 0, 0, true, 1}) - require.Equal(t, versions[2], testnets.Version{1, 0, 0, false, 0}) -} From 32e7015aba1fd808ae8b782f4e49c3dfb7e1702b Mon Sep 17 00:00:00 2001 From: Viacheslav Date: Fri, 26 Apr 2024 16:38:05 +0300 Subject: [PATCH 3/3] feat: introduce gas multiplier to increase gas limit (#3385) ## Overview Resolves https://github.com/celestiaorg/celestia-app/issues/3258 --------- Co-authored-by: CHAMI Rachid --- pkg/user/signer.go | 50 ++++++++++++++++++++++++++++++++--------- pkg/user/signer_test.go | 13 ++++++----- 2 files changed, 47 insertions(+), 16 deletions(-) diff --git a/pkg/user/signer.go b/pkg/user/signer.go index ad35f2a622..58a625cc14 100644 --- a/pkg/user/signer.go +++ b/pkg/user/signer.go @@ -8,9 +8,6 @@ import ( "sync" "time" - "github.com/celestiaorg/celestia-app/v2/app/encoding" - apperrors "github.com/celestiaorg/celestia-app/v2/app/errors" - blobtypes "github.com/celestiaorg/celestia-app/v2/x/blob/types" "github.com/celestiaorg/go-square/blob" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/grpc/tmservice" @@ -23,9 +20,25 @@ import ( authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" abci "github.com/tendermint/tendermint/abci/types" "google.golang.org/grpc" + + "github.com/celestiaorg/celestia-app/v2/app/encoding" + apperrors "github.com/celestiaorg/celestia-app/v2/app/errors" + blobtypes "github.com/celestiaorg/celestia-app/v2/x/blob/types" ) -const DefaultPollTime = 3 * time.Second +const ( + DefaultPollTime = 3 * time.Second + DefaultGasMultiplier float64 = 1.1 +) + +type Option func(s *Signer) + +// WithGasMultiplier is a functional option allows to configure the gas multiplier. +func WithGasMultiplier(multiplier float64) Option { + return func(s *Signer) { + s.gasMultiplier = multiplier + } +} // Signer is an abstraction for building, signing, and broadcasting Celestia transactions type Signer struct { @@ -48,6 +61,8 @@ type Signer struct { localSequence uint64 // the chains last known sequence number networkSequence uint64 + // gasMultiplier is used to increase gas limit as it is sometimes underestimated + gasMultiplier float64 // lookup map of all pending and yet to be confirmed outbound transactions outboundSequences map[uint64]struct{} // a reverse map for confirming which sequence numbers have been committed @@ -63,6 +78,7 @@ func NewSigner( chainID string, accountNumber, sequence, appVersion uint64, + options ...Option, ) (*Signer, error) { // check that the address exists record, err := keys.KeyByAddress(address) @@ -75,7 +91,7 @@ func NewSigner( return nil, err } - return &Signer{ + signer := &Signer{ keys: keys, address: address, grpc: conn, @@ -87,16 +103,28 @@ func NewSigner( localSequence: sequence, networkSequence: sequence, pollTime: DefaultPollTime, + gasMultiplier: DefaultGasMultiplier, outboundSequences: make(map[uint64]struct{}), reverseTxHashSequenceMap: make(map[string]uint64), - }, nil + } + + for _, opt := range options { + opt(signer) + } + return signer, nil } // SetupSingleSigner sets up a signer based on the provided keyring. The keyring // must contain exactly one key. It extracts the address from the key and uses // the grpc connection to populate the chainID, account number, and sequence // number. -func SetupSingleSigner(ctx context.Context, keys keyring.Keyring, conn *grpc.ClientConn, encCfg encoding.Config) (*Signer, error) { +func SetupSingleSigner( + ctx context.Context, + keys keyring.Keyring, + conn *grpc.ClientConn, + encCfg encoding.Config, + options ...Option, +) (*Signer, error) { records, err := keys.List() if err != nil { return nil, err @@ -111,7 +139,7 @@ func SetupSingleSigner(ctx context.Context, keys keyring.Keyring, conn *grpc.Cli return nil, err } - return SetupSigner(ctx, keys, conn, address, encCfg) + return SetupSigner(ctx, keys, conn, address, encCfg, options...) } // SetupSigner uses the underlying grpc connection to populate the chainID, accountNumber and sequence number of the @@ -122,6 +150,7 @@ func SetupSigner( conn *grpc.ClientConn, address sdktypes.AccAddress, encCfg encoding.Config, + options ...Option, ) (*Signer, error) { resp, err := tmservice.NewServiceClient(conn).GetLatestBlock( ctx, @@ -138,7 +167,7 @@ func SetupSigner( return nil, err } - return NewSigner(keys, conn, address, encCfg.TxConfig, chainID, accNum, seqNum, appVersion) + return NewSigner(keys, conn, address, encCfg.TxConfig, chainID, accNum, seqNum, appVersion, options...) } // SubmitTx forms a transaction from the provided messages, signs it, and submits it to the chain. TxOptions @@ -416,7 +445,8 @@ func (s *Signer) EstimateGas(ctx context.Context, msgs []sdktypes.Msg, opts ...T return 0, err } - return resp.GasInfo.GasUsed, nil + gasLimit := uint64(float64(resp.GasInfo.GasUsed) * s.gasMultiplier) + return gasLimit, nil } // ChainID returns the chain ID of the signer. diff --git a/pkg/user/signer_test.go b/pkg/user/signer_test.go index e1d3f18a07..e01bd48ab9 100644 --- a/pkg/user/signer_test.go +++ b/pkg/user/signer_test.go @@ -6,17 +6,18 @@ import ( "testing" "time" - "github.com/celestiaorg/celestia-app/v2/app" - "github.com/celestiaorg/celestia-app/v2/app/encoding" - "github.com/celestiaorg/celestia-app/v2/pkg/user" - "github.com/celestiaorg/celestia-app/v2/test/util/blobfactory" - "github.com/celestiaorg/celestia-app/v2/test/util/testnode" sdk "github.com/cosmos/cosmos-sdk/types" bank "github.com/cosmos/cosmos-sdk/x/bank/types" "github.com/stretchr/testify/require" "github.com/stretchr/testify/suite" abci "github.com/tendermint/tendermint/abci/types" "github.com/tendermint/tendermint/libs/rand" + + "github.com/celestiaorg/celestia-app/v2/app" + "github.com/celestiaorg/celestia-app/v2/app/encoding" + "github.com/celestiaorg/celestia-app/v2/pkg/user" + "github.com/celestiaorg/celestia-app/v2/test/util/blobfactory" + "github.com/celestiaorg/celestia-app/v2/test/util/testnode" ) func TestSignerTestSuite(t *testing.T) { @@ -43,7 +44,7 @@ func (s *SignerTestSuite) SetupSuite() { s.Require().NoError(err) addr, err := rec.GetAddress() s.Require().NoError(err) - s.signer, err = user.SetupSigner(s.ctx.GoContext(), s.ctx.Keyring, s.ctx.GRPCClient, addr, s.encCfg) + s.signer, err = user.SetupSigner(s.ctx.GoContext(), s.ctx.Keyring, s.ctx.GRPCClient, addr, s.encCfg, user.WithGasMultiplier(1.2)) s.Require().NoError(err) }