diff --git a/graft/subnet-evm/tests/antithesis/gencomposeconfig/main.go b/graft/subnet-evm/tests/antithesis/gencomposeconfig/main.go index 37f864b87237..d937f84c3c9a 100644 --- a/graft/subnet-evm/tests/antithesis/gencomposeconfig/main.go +++ b/graft/subnet-evm/tests/antithesis/gencomposeconfig/main.go @@ -5,9 +5,8 @@ package main import ( "log" - "os" - "path/filepath" + "github.com/ava-labs/avalanchego/graft/subnet-evm/tests" "github.com/ava-labs/avalanchego/graft/subnet-evm/tests/utils" "github.com/ava-labs/avalanchego/tests/antithesis" "github.com/ava-labs/avalanchego/tests/fixture/tmpnet" @@ -17,18 +16,10 @@ const baseImageName = "antithesis-subnet-evm" // Creates docker-compose.yml and its associated volumes in the target path. func main() { - // Assume the working directory is the root of the repository - cwd, err := os.Getwd() - if err != nil { - log.Fatalf("failed to get current working directory: %s", err) - } - - genesisPath := filepath.Join(cwd, "tests/load/genesis.json") - // Create a network with a subnet-evm subnet network := tmpnet.LocalNetworkOrPanic() network.Subnets = []*tmpnet.Subnet{ - utils.NewTmpnetSubnet("subnet-evm", genesisPath, utils.DefaultChainConfig, network.Nodes...), + utils.NewTmpnetSubnet("subnet-evm", tests.Genesis, utils.DefaultChainConfig, network.Nodes...), } if err := antithesis.GenerateComposeConfig(network, baseImageName); err != nil { diff --git a/graft/subnet-evm/tests/antithesis/main.go b/graft/subnet-evm/tests/antithesis/main.go index 4999b157b319..6f63adaeb9e0 100644 --- a/graft/subnet-evm/tests/antithesis/main.go +++ b/graft/subnet-evm/tests/antithesis/main.go @@ -9,8 +9,6 @@ import ( "crypto/rand" "fmt" "math/big" - "path/filepath" - "runtime" "time" "github.com/antithesishq/antithesis-sdk-go/assert" @@ -23,6 +21,7 @@ import ( "github.com/ava-labs/avalanchego/graft/subnet-evm/accounts/abi/bind" "github.com/ava-labs/avalanchego/graft/subnet-evm/ethclient" + "github.com/ava-labs/avalanchego/graft/subnet-evm/tests" "github.com/ava-labs/avalanchego/graft/subnet-evm/tests/utils" "github.com/ava-labs/avalanchego/ids" "github.com/ava-labs/avalanchego/tests/antithesis" @@ -51,10 +50,8 @@ func main() { tmpnet.FlagsMap{}, ), func(nodes ...*tmpnet.Node) []*tmpnet.Subnet { - _, thisFile, _, _ := runtime.Caller(0) - genesisPath := filepath.Join(filepath.Dir(thisFile), "..", "load", "genesis.json") return []*tmpnet.Subnet{ - utils.NewTmpnetSubnet("subnet-evm", genesisPath, utils.DefaultChainConfig, nodes...), + utils.NewTmpnetSubnet("subnet-evm", tests.Genesis, utils.DefaultChainConfig, nodes...), } }, ) diff --git a/graft/subnet-evm/tests/genesis.go b/graft/subnet-evm/tests/genesis.go new file mode 100644 index 000000000000..bb2d0c48c81b --- /dev/null +++ b/graft/subnet-evm/tests/genesis.go @@ -0,0 +1,13 @@ +// Copyright (C) 2019-2026, Ava Labs, Inc. All rights reserved. +// See the file LICENSE for licensing terms. + +package tests + +import ( + _ "embed" +) + +// Genesis contains the embedded genesis.json file used by tests. +// +//go:embed load/genesis.json +var Genesis []byte diff --git a/graft/subnet-evm/tests/load/load_test.go b/graft/subnet-evm/tests/load/load_test.go index aa74ae2a024e..08b980e54406 100644 --- a/graft/subnet-evm/tests/load/load_test.go +++ b/graft/subnet-evm/tests/load/load_test.go @@ -7,14 +7,13 @@ import ( "fmt" "os" "os/exec" - "path/filepath" - "runtime" "strings" "testing" "github.com/ava-labs/libevm/log" "github.com/stretchr/testify/require" + "github.com/ava-labs/avalanchego/graft/subnet-evm/tests" "github.com/ava-labs/avalanchego/graft/subnet-evm/tests/utils" "github.com/ava-labs/avalanchego/ids" "github.com/ava-labs/avalanchego/tests/fixture/e2e" @@ -45,13 +44,17 @@ func TestE2E(t *testing.T) { var _ = ginkgo.Describe("[Load Simulator]", ginkgo.Ordered, func() { require := require.New(ginkgo.GinkgoT()) - var env *e2e.TestEnvironment - _, thisFile, _, _ := runtime.Caller(0) - testDir := filepath.Dir(thisFile) + var ( + env *e2e.TestEnvironment + repoRoot string + ) ginkgo.BeforeAll(func() { tc := e2e.NewTestContext() - genesisPath := filepath.Join(testDir, "genesis.json") + + var err error + repoRoot, err = e2e.GetRepoRootPath("tests/load") + require.NoError(err) nodes := utils.NewTmpnetNodes(nodeCount) env = e2e.NewTestEnvironment( @@ -61,7 +64,7 @@ var _ = ginkgo.Describe("[Load Simulator]", ginkgo.Ordered, func() { "subnet-evm-small-load", nodes, tmpnet.FlagsMap{}, - utils.NewTmpnetSubnet(subnetAName, genesisPath, utils.DefaultChainConfig, nodes...), + utils.NewTmpnetSubnet(subnetAName, tests.Genesis, utils.DefaultChainConfig, nodes...), ), ) }) @@ -88,7 +91,7 @@ var _ = ginkgo.Describe("[Load Simulator]", ginkgo.Ordered, func() { log.Info("Running load simulator...", "rpcEndpoints", commaSeparatedRPCEndpoints) cmd := exec.Command("./scripts/run_simulator.sh") - cmd.Dir = filepath.Join(testDir, "../..") + cmd.Dir = repoRoot log.Info("Running load simulator script", "cmd", cmd.String()) out, err := cmd.CombinedOutput() diff --git a/graft/subnet-evm/tests/utils/tmpnet.go b/graft/subnet-evm/tests/utils/tmpnet.go index 62ef6d4e4c33..1214d0331f5a 100644 --- a/graft/subnet-evm/tests/utils/tmpnet.go +++ b/graft/subnet-evm/tests/utils/tmpnet.go @@ -5,7 +5,6 @@ package utils import ( "encoding/json" - "os" "github.com/ava-labs/avalanchego/config" "github.com/ava-labs/avalanchego/graft/subnet-evm/plugin/evm" @@ -45,7 +44,7 @@ func NewTmpnetNetwork(owner string, nodes []*tmpnet.Node, flags tmpnet.FlagsMap, // Create the configuration that will enable creation and access to a // subnet created on a temporary network. -func NewTmpnetSubnet(name string, genesisPath string, chainConfig map[string]any, nodes ...*tmpnet.Node) *tmpnet.Subnet { +func NewTmpnetSubnet(name string, genesis []byte, chainConfig map[string]any, nodes ...*tmpnet.Node) *tmpnet.Subnet { if len(nodes) == 0 { panic("a subnet must be validated by at least one node") } @@ -55,11 +54,6 @@ func NewTmpnetSubnet(name string, genesisPath string, chainConfig map[string]any validatorIDs[i] = node.NodeID } - genesisBytes, err := os.ReadFile(genesisPath) - if err != nil { - panic(err) - } - chainConfigBytes, err := json.Marshal(chainConfig) if err != nil { panic(err) @@ -70,7 +64,7 @@ func NewTmpnetSubnet(name string, genesisPath string, chainConfig map[string]any Chains: []*tmpnet.Chain{ { VMID: evm.ID, - Genesis: genesisBytes, + Genesis: genesis, Config: string(chainConfigBytes), PreFundedKey: tmpnet.HardhatKey, }, diff --git a/graft/subnet-evm/tests/warp/warp_test.go b/graft/subnet-evm/tests/warp/warp_test.go index 2c2689a40e99..9e8b1bca25a4 100644 --- a/graft/subnet-evm/tests/warp/warp_test.go +++ b/graft/subnet-evm/tests/warp/warp_test.go @@ -9,8 +9,6 @@ import ( "crypto/ecdsa" "fmt" "math/big" - "path/filepath" - "runtime" "strings" "testing" "time" @@ -21,6 +19,8 @@ import ( "github.com/ava-labs/libevm/log" "github.com/stretchr/testify/require" + _ "embed" + "github.com/ava-labs/avalanchego/api/info" "github.com/ava-labs/avalanchego/graft/subnet-evm/accounts/abi/bind" "github.com/ava-labs/avalanchego/graft/subnet-evm/cmd/simulator/key" @@ -55,6 +55,9 @@ const ( ) var ( + //go:embed genesis.json + genesis []byte + flagVars *e2e.FlagVars subnetA, subnetB, cChainSubnetDetails *Subnet @@ -88,8 +91,6 @@ var _ = ginkgo.SynchronizedBeforeSuite(func() []byte { tc := e2e.NewTestContext() nodes := utils.NewTmpnetNodes(tmpnet.DefaultNodeCount) - _, thisFile, _, _ := runtime.Caller(0) - genesisPath := filepath.Join(filepath.Dir(thisFile), "genesis.json") env := e2e.NewTestEnvironment( tc, @@ -98,8 +99,8 @@ var _ = ginkgo.SynchronizedBeforeSuite(func() []byte { "subnet-evm-warp-e2e", nodes, tmpnet.FlagsMap{}, - utils.NewTmpnetSubnet(subnetAName, genesisPath, utils.DefaultChainConfig, nodes...), - utils.NewTmpnetSubnet(subnetBName, genesisPath, utils.DefaultChainConfig, nodes...), + utils.NewTmpnetSubnet(subnetAName, genesis, utils.DefaultChainConfig, nodes...), + utils.NewTmpnetSubnet(subnetBName, genesis, utils.DefaultChainConfig, nodes...), ), )