This repository has been archived by the owner on Oct 6, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathtest_client.go
82 lines (71 loc) · 2.37 KB
/
test_client.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
package eth
import (
"github.com/Worldcoin/hubble-commander/bls"
"github.com/Worldcoin/hubble-commander/eth/deployer/rollup"
"github.com/Worldcoin/hubble-commander/metrics"
"github.com/Worldcoin/hubble-commander/models"
"github.com/Worldcoin/hubble-commander/testutils/simulator"
"github.com/ethereum/go-ethereum/common"
)
type TestClient struct {
*Client
*simulator.Simulator
ExampleTokenAddress common.Address
TxsChannels *TxsTrackingChannels
}
type TestClientConfig struct {
TxsChannels *TxsTrackingChannels
ClientConfig
}
var (
DomainOnlyTestClient = &Client{domain: &bls.TestDomain}
)
// NewTestClient Sets up a TestClient backed by automining simulator.
// Remember to call Close() at the end of the test
func NewTestClient() (*TestClient, error) {
return NewConfiguredTestClient(&rollup.DeploymentConfig{}, &TestClientConfig{})
}
func NewConfiguredTestClient(cfg *rollup.DeploymentConfig, clientCfg *TestClientConfig) (*TestClient, error) {
sim, err := simulator.NewAutominingSimulator()
if err != nil {
return nil, err
}
contracts, err := rollup.DeployConfiguredRollup(sim, cfg)
if err != nil {
return nil, err
}
startTxsSending := clientCfg.TxsChannels == nil
if startTxsSending {
clientCfg.TxsChannels = &TxsTrackingChannels{
SkipChannelSending: true,
}
}
client, err := NewClient(sim, metrics.NewCommanderMetrics(), &NewClientParams{
ChainState: models.ChainState{
ChainID: sim.GetChainID(),
AccountRegistry: contracts.AccountRegistryAddress,
AccountRegistryDeploymentBlock: 0,
TokenRegistry: contracts.TokenRegistryAddress,
SpokeRegistry: contracts.SpokeRegistryAddress,
DepositManager: contracts.DepositManagerAddress,
Rollup: contracts.RollupAddress,
GenesisAccounts: nil,
},
Rollup: contracts.Rollup,
AccountRegistry: contracts.AccountRegistry,
TokenRegistry: contracts.TokenRegistry,
SpokeRegistry: contracts.SpokeRegistry,
DepositManager: contracts.DepositManager,
ClientConfig: clientCfg.ClientConfig,
TxsChannels: clientCfg.TxsChannels,
})
if err != nil {
return nil, err
}
return &TestClient{
Client: client,
Simulator: sim,
ExampleTokenAddress: contracts.ExampleTokenAddress,
TxsChannels: clientCfg.TxsChannels,
}, nil
}