Skip to content

Commit

Permalink
refactor(e2e): remove most netconf usage
Browse files Browse the repository at this point in the history
  • Loading branch information
corverroos committed Oct 16, 2024
1 parent ae2573e commit 63d6555
Show file tree
Hide file tree
Showing 18 changed files with 229 additions and 208 deletions.
12 changes: 6 additions & 6 deletions e2e/app/admin/bridgespec.go
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ func (s BridgeSpec) Verify() error {
func EnsureBridgeSpec(ctx context.Context, def app.Definition, cfg Config, specOverride *NetworkBridgeSpec) error {
s := setup(def, cfg)

l1Chain, ok := s.network.EthereumChain()
l1Chain, ok := s.testnet.EthereumChain()
if !ok {
return errors.New("no ethereum chain")
}
Expand Down Expand Up @@ -120,12 +120,12 @@ func EnsureBridgeSpec(ctx context.Context, def app.Definition, cfg Config, specO

// ensureNativeBridgeSpec ensures that the live native bridge contract is configured as per the local spec.
func ensureNativeBridgeSpec(ctx context.Context, s shared, c chain, specOverride *BridgeSpec) error {
local := bridgeSpec[s.network.ID].Native
local := bridgeSpec[s.testnet.Network].Native
if specOverride != nil {
local = *specOverride
}

ethCl, err := ethclient.Dial(c.Name, c.rpc)
ethCl, err := ethclient.Dial(c.Name, c.RPCEndpoint)
if err != nil {
return errors.Wrap(err, "dial eth client")
}
Expand All @@ -152,17 +152,17 @@ func ensureNativeBridgeSpec(ctx context.Context, s shared, c chain, specOverride

// ensureL1BridgeSpec ensures that the live L1 bridge contract is configured as per the local spec.
func ensureL1BridgeSpec(ctx context.Context, s shared, c chain, specOverride *BridgeSpec) error {
local := bridgeSpec[s.network.ID].L1
local := bridgeSpec[s.testnet.Network].L1
if specOverride != nil {
local = *specOverride
}

ethCl, err := ethclient.Dial(c.Name, c.rpc)
ethCl, err := ethclient.Dial(c.Name, c.RPCEndpoint)
if err != nil {
return errors.Wrap(err, "dial eth client")
}

addrs, err := contracts.GetAddresses(ctx, s.network.ID)
addrs, err := contracts.GetAddresses(ctx, s.testnet.Network)
if err != nil {
return errors.Wrap(err, "get addrs")
}
Expand Down
57 changes: 29 additions & 28 deletions e2e/app/admin/common.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import (
"github.com/omni-network/omni/e2e/app"
"github.com/omni-network/omni/e2e/app/eoa"
fbproxy "github.com/omni-network/omni/e2e/fbproxy/app"
"github.com/omni-network/omni/e2e/types"
"github.com/omni-network/omni/lib/anvil"
"github.com/omni-network/omni/lib/contracts"
"github.com/omni-network/omni/lib/errors"
Expand All @@ -33,16 +34,18 @@ type shared struct {
upgrader common.Address
deployer common.Address
endpoints xchain.RPCEndpoints
network netconf.Network
testnet types.Testnet
cfg Config
fireAPIKey string
fireKeyPath string
}

// chain contains chain specific resources, exteding netconf.Chain with an rpc endpoint.
// chain contains chain specific resources, extending EVMChain with the PortalAddress and an RPCEndpoint endpoint.
// Netconf.Chain cannot be used since we don't know the DeployHeight.
type chain struct {
netconf.Chain
rpc string
types.EVMChain
PortalAddress common.Address
RPCEndpoint string
}

// setup returns common resources for all admin operations.
Expand All @@ -52,7 +55,6 @@ func setup(def app.Definition, cfg Config) shared {
upgrader := eoa.MustAddress(netID, eoa.RoleUpgrader)
deployer := eoa.MustAddress(netID, eoa.RoleDeployer)
endpoints := app.ExternalEndpoints(def)
network := app.NetworkFromDef(def)

// addrs set lazily in setupChain

Expand All @@ -61,7 +63,7 @@ func setup(def app.Definition, cfg Config) shared {
upgrader: upgrader,
deployer: deployer,
endpoints: endpoints,
network: network,
testnet: def.Testnet,
cfg: cfg,
fireAPIKey: def.Cfg.FireAPIKey,
fireKeyPath: def.Cfg.FireKeyPath,
Expand All @@ -71,34 +73,33 @@ func setup(def app.Definition, cfg Config) shared {
// setupChain returns chain specific resources.
// starts and fbproxy for non-devnet chains.
func setupChain(ctx context.Context, s shared, name string) (chain, error) {
c, ok := s.network.ChainByName(name)
c, ok := s.testnet.EVMChainByName(name)
if !ok {
return chain{}, errors.New("chain not found", "chain", name)
}

rpc, err := s.endpoints.ByNameOrID(c.Name, c.ID)
rpc, err := s.endpoints.ByNameOrID(c.Name, c.ChainID)
if err != nil {
return chain{}, errors.Wrap(err, "rpc endpoint")
}

// add portal address if not already set
if c.PortalAddress == (common.Address{}) {
addrs, err := contracts.GetAddresses(ctx, s.network.ID)
if err != nil {
return chain{}, errors.Wrap(err, "get addresses")
}

c.PortalAddress = addrs.Portal
addrs, err := contracts.GetAddresses(ctx, s.testnet.Network)
if err != nil {
return chain{}, errors.Wrap(err, "get addresses")
}

if s.fireAPIKey != "" || s.fireKeyPath != "" {
rpc, err = startFBProxy(ctx, s.network.ID, rpc, s.fireAPIKey, s.fireKeyPath)
rpc, err = startFBProxy(ctx, s.testnet.Network, rpc, s.fireAPIKey, s.fireKeyPath)
if err != nil {
return chain{}, errors.Wrap(err, "start fb proxy")
}
}

return chain{Chain: c, rpc: rpc}, nil
return chain{
EVMChain: c,
PortalAddress: addrs.Portal,
RPCEndpoint: rpc,
}, nil
}

type runOpts struct {
Expand All @@ -125,7 +126,7 @@ func (s shared) run(
o(&opts)
}

names, err := maybeAll(s.network, s.cfg.Chain, opts.exclude)
names, err := maybeAll(s.testnet.EVMChains(), s.cfg.Chain, opts.exclude)
if err != nil {
return err
}
Expand All @@ -145,24 +146,24 @@ func (s shared) run(
}

// maybeAll returns all chains if chain is empty, otherwise returns chain.
func maybeAll(network netconf.Network, chain string, exclude []string) ([]string, error) {
func maybeAll(chains []types.EVMChain, chain string, exclude []string) ([]string, error) {
excluded := make(map[string]bool)
for _, e := range exclude {
excluded[e] = true
}

if chain == "" {
var chains []string
var resp []string

for _, c := range network.EVMChains() {
for _, c := range chains {
if excluded[c.Name] {
continue
}

chains = append(chains, c.Name)
resp = append(resp, c.Name)
}

return chains, nil
return resp, nil
}

if excluded[chain] {
Expand All @@ -177,7 +178,7 @@ func (s shared) runForge(ctx context.Context, rpc string, input []byte, senders
return runForge(ctx, rpc, input, s.cfg.Broadcast, senders...)
}

// runForge runs an Admin forge script against an rpc, returning the ouptut.
// runForge runs an Admin forge script against an RPCEndpoint, returning the ouptut.
// if the senders are known anvil accounts, it will sign with private keys directly.
// otherwise, it will use the unlocked flag.
func runForge(ctx context.Context, rpc string, input []byte, broadcast bool, senders ...common.Address,
Expand All @@ -200,8 +201,8 @@ func runForge(ctx context.Context, rpc string, input []byte, broadcast bool, sen

args := []string{
"script", script,
"--slow", // wait for each tx to succed before sending the next
"--rpc-url", rpc, // rpc endpoint, fb proxy for non-devnet
"--slow", // wait for each tx to succed before sending the next
"--RPCEndpoint-url", rpc, // RPCEndpoint endpoint, fb proxy for non-devnet
"--sig", hexutil.Encode(input), // Admin.sol calldata
}

Expand All @@ -222,7 +223,7 @@ func runForge(ctx context.Context, rpc string, input []byte, broadcast bool, sen
return execCmd(ctx, dir, "forge", args...)
}

// startFBProxy starts a fireblocks proxy to rpc, returns the listen address. The proxy stops when ctx is done.
// startFBProxy starts a fireblocks proxy to RPCEndpoint, returns the listen address. The proxy stops when ctx is done.
func startFBProxy(ctx context.Context, netID netconf.ID, baseRPC string, fireAPIKey string, fireKeyPath string,
) (string, error) {
cfg := fbproxy.Config{
Expand Down
4 changes: 2 additions & 2 deletions e2e/app/admin/pausebridge.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ func pauseBridge(ctx context.Context, s shared, c chain, addr common.Address, ac
return errors.Wrap(err, "pack calldata", "chain", c.Name)
}

out, err := s.runForge(ctx, c.rpc, calldata, s.manager)
out, err := s.runForge(ctx, c.RPCEndpoint, calldata, s.manager)
if err != nil {
return errors.Wrap(err, "run forge", "out", out, "chain", c.Name)
}
Expand All @@ -37,7 +37,7 @@ func unpauseBridge(ctx context.Context, s shared, c chain, addr common.Address,
return errors.Wrap(err, "pack calldata", "chain", c.Name)
}

out, err := s.runForge(ctx, c.rpc, calldata, s.manager)
out, err := s.runForge(ctx, c.RPCEndpoint, calldata, s.manager)
if err != nil {
return errors.Wrap(err, "run forge", "out", out, "chain", c.Name)
}
Expand Down
4 changes: 2 additions & 2 deletions e2e/app/admin/pauseportal.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ func pausePortal(ctx context.Context, s shared, c chain) error {
return errors.Wrap(err, "pack calldata", "chain", c.Name)
}

out, err := s.runForge(ctx, c.rpc, calldata, s.manager)
out, err := s.runForge(ctx, c.RPCEndpoint, calldata, s.manager)
if err != nil {
return errors.Wrap(err, "run forge", "out", out, "chain", c.Name)
}
Expand All @@ -35,7 +35,7 @@ func unpausePortal(ctx context.Context, s shared, c chain) error {
return errors.Wrap(err, "pack calldata", "chain", c.Name)
}

out, err := s.runForge(ctx, c.rpc, calldata, s.manager)
out, err := s.runForge(ctx, c.RPCEndpoint, calldata, s.manager)
if err != nil {
return errors.Wrap(err, "run forge", "out", out, "chain", c.Name)
}
Expand Down
16 changes: 8 additions & 8 deletions e2e/app/admin/pausexcall.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ func pauseXCall(ctx context.Context, s shared, c chain) error {
return errors.Wrap(err, "pack calldata", "chain", c.Name)
}

out, err := s.runForge(ctx, c.rpc, calldata, s.manager)
out, err := s.runForge(ctx, c.RPCEndpoint, calldata, s.manager)
if err != nil {
return errors.Wrap(err, "run forge", "out", out, "chain", c.Name)
}
Expand All @@ -29,19 +29,19 @@ func pauseXCall(ctx context.Context, s shared, c chain) error {

// pauseXCallTo pauses xcalls to a chain, on a chain.
func pauseXCallTo(ctx context.Context, s shared, c chain, toID uint64) error {
to, ok := s.network.Chain(toID)
to, ok := s.testnet.EVMChainByID(toID)
if !ok {
return errors.New("chain id not in network", "chain", toID)
}

log.Info(ctx, "Pausing xcall...", "chain", c.Name, "to", to.Name, "addr", c.PortalAddress)

calldata, err := adminABI.Pack("pauseXCallTo", s.manager, c.PortalAddress, to.ID)
calldata, err := adminABI.Pack("pauseXCallTo", s.manager, c.PortalAddress, to.ChainID)
if err != nil {
return errors.Wrap(err, "pack calldata", "chain", c.Name)
}

out, err := s.runForge(ctx, c.rpc, calldata, s.manager)
out, err := s.runForge(ctx, c.RPCEndpoint, calldata, s.manager)
if err != nil {
return errors.Wrap(err, "run forge", "out", out, "chain", c.Name)
}
Expand All @@ -60,7 +60,7 @@ func unpauseXCall(ctx context.Context, s shared, c chain) error {
return errors.Wrap(err, "pack calldata", "chain", c.Name)
}

out, err := s.runForge(ctx, c.rpc, calldata, s.manager)
out, err := s.runForge(ctx, c.RPCEndpoint, calldata, s.manager)
if err != nil {
return errors.Wrap(err, "run forge", "out", out, "chain", c.Name)
}
Expand All @@ -72,19 +72,19 @@ func unpauseXCall(ctx context.Context, s shared, c chain) error {

// pauseXCallTo pauses xcalls to a chain, on a chain.
func unpauseXCallTo(ctx context.Context, s shared, c chain, toID uint64) error {
to, ok := s.network.Chain(toID)
to, ok := s.testnet.EVMChainByID(toID)
if !ok {
return errors.New("chain id not in network", "chain", toID)
}

log.Info(ctx, "Unpausing xcall...", "chain", c.Name, "to", to.Name, "addr", c.PortalAddress)

calldata, err := adminABI.Pack("unpauseXCallTo", s.manager, c.PortalAddress, to.ID)
calldata, err := adminABI.Pack("unpauseXCallTo", s.manager, c.PortalAddress, to.ChainID)
if err != nil {
return errors.Wrap(err, "pack calldata", "chain", c.Name)
}

out, err := s.runForge(ctx, c.rpc, calldata, s.manager)
out, err := s.runForge(ctx, c.RPCEndpoint, calldata, s.manager)
if err != nil {
return errors.Wrap(err, "run forge", "out", out, "chain", c.Name)
}
Expand Down
16 changes: 8 additions & 8 deletions e2e/app/admin/pausexsubmit.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ func pauseXSubmit(ctx context.Context, s shared, c chain) error {
return errors.Wrap(err, "pack calldata", "chain", c.Name)
}

out, err := s.runForge(ctx, c.rpc, calldata, s.manager)
out, err := s.runForge(ctx, c.RPCEndpoint, calldata, s.manager)
if err != nil {
return errors.Wrap(err, "run forge", "out", out, "chain", c.Name)
}
Expand All @@ -29,19 +29,19 @@ func pauseXSubmit(ctx context.Context, s shared, c chain) error {

// pauseXSubmitFrom pauses xsubmits from a chain, on a chain.
func pauseXSubmitFrom(ctx context.Context, s shared, c chain, fromID uint64) error {
from, ok := s.network.Chain(fromID)
from, ok := s.testnet.EVMChainByID(fromID)
if !ok {
return errors.New("chain id not in network", "chain", fromID)
}

log.Info(ctx, "Pausing xsubmit...", "chain", c.Name, "from", from.Name, "addr", c.PortalAddress)

calldata, err := adminABI.Pack("pauseXSubmitFrom", s.manager, c.PortalAddress, from.ID)
calldata, err := adminABI.Pack("pauseXSubmitFrom", s.manager, c.PortalAddress, from.ChainID)
if err != nil {
return errors.Wrap(err, "pack calldata", "chain", c.Name)
}

out, err := s.runForge(ctx, c.rpc, calldata, s.manager)
out, err := s.runForge(ctx, c.RPCEndpoint, calldata, s.manager)
if err != nil {
return errors.Wrap(err, "run forge", "out", out, "chain", c.Name)
}
Expand All @@ -60,7 +60,7 @@ func unpauseXSubmit(ctx context.Context, s shared, c chain) error {
return errors.Wrap(err, "pack calldata", "chain", c.Name)
}

out, err := s.runForge(ctx, c.rpc, calldata, s.manager)
out, err := s.runForge(ctx, c.RPCEndpoint, calldata, s.manager)
if err != nil {
return errors.Wrap(err, "run forge", "out", out, "chain", c.Name)
}
Expand All @@ -72,19 +72,19 @@ func unpauseXSubmit(ctx context.Context, s shared, c chain) error {

// pauseXSubmitFrom pauses xsubmits from a chain, on a chain.
func unpauseXSubmitFrom(ctx context.Context, s shared, c chain, fromID uint64) error {
from, ok := s.network.Chain(fromID)
from, ok := s.testnet.EVMChainByID(fromID)
if !ok {
return errors.New("chain id not in network", "chain", fromID)
}

log.Info(ctx, "Unpausing xsubmit...", "chain", c.Name, "from", from.Name, "addr", c.PortalAddress)

calldata, err := adminABI.Pack("unpauseXSubmitFrom", s.manager, c.PortalAddress, from.ID)
calldata, err := adminABI.Pack("unpauseXSubmitFrom", s.manager, c.PortalAddress, from.ChainID)
if err != nil {
return errors.Wrap(err, "pack calldata", "chain", c.Name)
}

out, err := s.runForge(ctx, c.rpc, calldata, s.manager)
out, err := s.runForge(ctx, c.RPCEndpoint, calldata, s.manager)
if err != nil {
return errors.Wrap(err, "run forge", "out", out, "chain", c.Name)
}
Expand Down
Loading

0 comments on commit 63d6555

Please sign in to comment.