Skip to content

Commit

Permalink
Allow custom networks (#1639)
Browse files Browse the repository at this point in the history
  • Loading branch information
rianhughes authored Jan 15, 2024
1 parent 3d9b7e0 commit db28910
Show file tree
Hide file tree
Showing 42 changed files with 711 additions and 613 deletions.
16 changes: 8 additions & 8 deletions adapters/sn2core/sn2core_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ func TestAdaptBlock(t *testing.T) {

for _, test := range tests {
t.Run(test.network.String()+" block number "+strconv.FormatUint(test.number, 10), func(t *testing.T) {
client := feeder.NewTestClient(t, test.network)
client := feeder.NewTestClient(t, &test.network)

response, err := client.Block(ctx, strconv.FormatUint(test.number, 10))
require.NoError(t, err)
Expand Down Expand Up @@ -108,7 +108,7 @@ func TestAdaptBlock(t *testing.T) {
func TestStateUpdate(t *testing.T) {
numbers := []uint64{0, 1, 2, 21656}

client := feeder.NewTestClient(t, utils.Mainnet)
client := feeder.NewTestClient(t, &utils.Mainnet)
ctx := context.Background()

for _, number := range numbers {
Expand Down Expand Up @@ -157,7 +157,7 @@ func TestStateUpdate(t *testing.T) {
}

t.Run("v0.11.0 state update", func(t *testing.T) {
integClient := feeder.NewTestClient(t, utils.Integration)
integClient := feeder.NewTestClient(t, &utils.Integration)

t.Run("declared Cairo0 classes", func(t *testing.T) {
feederUpdate, err := integClient.StateUpdate(ctx, "283746")
Expand Down Expand Up @@ -199,7 +199,7 @@ func TestClassV0(t *testing.T) {
"0x56b96c1d1bbfa01af44b465763d1b71150fa00c6c9d54c3947f57e979ff68c3",
}

client := feeder.NewTestClient(t, utils.Goerli)
client := feeder.NewTestClient(t, &utils.Goerli)
ctx := context.Background()

for _, hashString := range classHashes {
Expand Down Expand Up @@ -236,8 +236,8 @@ func TestClassV0(t *testing.T) {
}

func TestTransaction(t *testing.T) {
clientGoerli := feeder.NewTestClient(t, utils.Goerli)
clientMainnet := feeder.NewTestClient(t, utils.Mainnet)
clientGoerli := feeder.NewTestClient(t, &utils.Goerli)
clientMainnet := feeder.NewTestClient(t, &utils.Mainnet)
ctx := context.Background()

t.Run("invoke transaction", func(t *testing.T) {
Expand Down Expand Up @@ -348,7 +348,7 @@ func TestTransaction(t *testing.T) {
}

func TestTransactionV3(t *testing.T) {
client := feeder.NewTestClient(t, utils.Integration)
client := feeder.NewTestClient(t, &utils.Integration)
ctx := context.Background()

tests := map[string]core.Transaction{
Expand Down Expand Up @@ -469,7 +469,7 @@ func TestTransactionV3(t *testing.T) {
}

func TestClassV1(t *testing.T) {
client := feeder.NewTestClient(t, utils.Integration)
client := feeder.NewTestClient(t, &utils.Integration)

classHash := utils.HexToFelt(t, "0x1cd2edfb485241c4403254d550de0a097fa76743cd30696f714a491a454bad5")

Expand Down
6 changes: 3 additions & 3 deletions blockchain/blockchain.go
Original file line number Diff line number Diff line change
Expand Up @@ -79,11 +79,11 @@ type Blockchain struct {
cachedPending atomic.Pointer[Pending]
}

func New(database db.DB, network utils.Network) *Blockchain {
func New(database db.DB, network *utils.Network) *Blockchain {
RegisterCoreTypesToEncoder()
return &Blockchain{
database: database,
network: network,
network: *network,
listener: &SelectiveListener{},
}
}
Expand Down Expand Up @@ -640,7 +640,7 @@ func (b *Blockchain) SanityCheckNewHeight(block *core.Block, stateUpdate *core.S
return nil, err
}

return core.VerifyBlockHash(block, b.network)
return core.VerifyBlockHash(block, &b.network)
}

type txAndReceiptDBKey struct {
Expand Down
60 changes: 30 additions & 30 deletions blockchain/blockchain_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,10 @@ import (
var emptyCommitments = core.BlockCommitments{}

func TestNew(t *testing.T) {
client := feeder.NewTestClient(t, utils.Mainnet)
client := feeder.NewTestClient(t, &utils.Mainnet)
gw := adaptfeeder.New(client)
t.Run("empty blockchain's head is nil", func(t *testing.T) {
chain := blockchain.New(pebble.NewMemTest(t), utils.Mainnet)
chain := blockchain.New(pebble.NewMemTest(t), &utils.Mainnet)
assert.Equal(t, utils.Mainnet, chain.Network())
b, err := chain.Head()
assert.Nil(t, b)
Expand All @@ -40,21 +40,21 @@ func TestNew(t *testing.T) {
require.NoError(t, err)

testDB := pebble.NewMemTest(t)
chain := blockchain.New(testDB, utils.Mainnet)
chain := blockchain.New(testDB, &utils.Mainnet)
assert.NoError(t, chain.Store(block0, &emptyCommitments, stateUpdate0, nil))

chain = blockchain.New(testDB, utils.Mainnet)
chain = blockchain.New(testDB, &utils.Mainnet)
b, err := chain.Head()
require.NoError(t, err)
assert.Equal(t, block0, b)
})
}

func TestHeight(t *testing.T) {
client := feeder.NewTestClient(t, utils.Mainnet)
client := feeder.NewTestClient(t, &utils.Mainnet)
gw := adaptfeeder.New(client)
t.Run("return nil if blockchain is empty", func(t *testing.T) {
chain := blockchain.New(pebble.NewMemTest(t), utils.Goerli)
chain := blockchain.New(pebble.NewMemTest(t), &utils.Goerli)
_, err := chain.Height()
assert.Error(t, err)
})
Expand All @@ -66,20 +66,20 @@ func TestHeight(t *testing.T) {
require.NoError(t, err)

testDB := pebble.NewMemTest(t)
chain := blockchain.New(testDB, utils.Mainnet)
chain := blockchain.New(testDB, &utils.Mainnet)
assert.NoError(t, chain.Store(block0, &emptyCommitments, stateUpdate0, nil))

chain = blockchain.New(testDB, utils.Mainnet)
chain = blockchain.New(testDB, &utils.Mainnet)
height, err := chain.Height()
require.NoError(t, err)
assert.Equal(t, block0.Number, height)
})
}

func TestBlockByNumberAndHash(t *testing.T) {
chain := blockchain.New(pebble.NewMemTest(t), utils.Goerli)
chain := blockchain.New(pebble.NewMemTest(t), &utils.Goerli)
t.Run("same block is returned for both GetBlockByNumber and GetBlockByHash", func(t *testing.T) {
client := feeder.NewTestClient(t, utils.Mainnet)
client := feeder.NewTestClient(t, &utils.Mainnet)
gw := adaptfeeder.New(client)

block, err := gw.BlockByNumber(context.Background(), 0)
Expand Down Expand Up @@ -113,7 +113,7 @@ func TestVerifyBlock(t *testing.T) {
h1, err := new(felt.Felt).SetRandom()
require.NoError(t, err)

chain := blockchain.New(pebble.NewMemTest(t), utils.Mainnet)
chain := blockchain.New(pebble.NewMemTest(t), &utils.Mainnet)

t.Run("error if chain is empty and incoming block number is not 0", func(t *testing.T) {
block := &core.Block{Header: &core.Header{Number: 10}}
Expand All @@ -125,7 +125,7 @@ func TestVerifyBlock(t *testing.T) {
assert.EqualError(t, chain.VerifyBlock(block), "block's parent hash does not match head block hash")
})

client := feeder.NewTestClient(t, utils.Mainnet)
client := feeder.NewTestClient(t, &utils.Mainnet)

gw := adaptfeeder.New(client)
mainnetBlock0, err := gw.BlockByNumber(context.Background(), 0)
Expand Down Expand Up @@ -175,9 +175,9 @@ func TestSanityCheckNewHeight(t *testing.T) {
h1, err := new(felt.Felt).SetRandom()
require.NoError(t, err)

chain := blockchain.New(pebble.NewMemTest(t), utils.Mainnet)
chain := blockchain.New(pebble.NewMemTest(t), &utils.Mainnet)

client := feeder.NewTestClient(t, utils.Mainnet)
client := feeder.NewTestClient(t, &utils.Mainnet)

gw := adaptfeeder.New(client)

Expand Down Expand Up @@ -210,7 +210,7 @@ func TestSanityCheckNewHeight(t *testing.T) {
}

func TestStore(t *testing.T) {
client := feeder.NewTestClient(t, utils.Mainnet)
client := feeder.NewTestClient(t, &utils.Mainnet)
gw := adaptfeeder.New(client)

block0, err := gw.BlockByNumber(context.Background(), 0)
Expand All @@ -220,7 +220,7 @@ func TestStore(t *testing.T) {
require.NoError(t, err)

t.Run("add block to empty blockchain", func(t *testing.T) {
chain := blockchain.New(pebble.NewMemTest(t), utils.Mainnet)
chain := blockchain.New(pebble.NewMemTest(t), &utils.Mainnet)
require.NoError(t, chain.Store(block0, &emptyCommitments, stateUpdate0, nil))

headBlock, err := chain.Head()
Expand All @@ -246,7 +246,7 @@ func TestStore(t *testing.T) {
stateUpdate1, err := gw.StateUpdate(context.Background(), 1)
require.NoError(t, err)

chain := blockchain.New(pebble.NewMemTest(t), utils.Mainnet)
chain := blockchain.New(pebble.NewMemTest(t), &utils.Mainnet)
require.NoError(t, chain.Store(block0, &emptyCommitments, stateUpdate0, nil))
require.NoError(t, chain.Store(block1, &emptyCommitments, stateUpdate1, nil))

Expand All @@ -269,9 +269,9 @@ func TestStore(t *testing.T) {
}

func TestTransactionAndReceipt(t *testing.T) {
chain := blockchain.New(pebble.NewMemTest(t), utils.Mainnet)
chain := blockchain.New(pebble.NewMemTest(t), &utils.Mainnet)

client := feeder.NewTestClient(t, utils.Mainnet)
client := feeder.NewTestClient(t, &utils.Mainnet)
gw := adaptfeeder.New(client)

for i := uint64(0); i < 3; i++ {
Expand Down Expand Up @@ -357,9 +357,9 @@ func TestTransactionAndReceipt(t *testing.T) {

func TestState(t *testing.T) {
testDB := pebble.NewMemTest(t)
chain := blockchain.New(testDB, utils.Mainnet)
chain := blockchain.New(testDB, &utils.Mainnet)

client := feeder.NewTestClient(t, utils.Mainnet)
client := feeder.NewTestClient(t, &utils.Mainnet)
gw := adaptfeeder.New(client)

t.Run("head with no blocks", func(t *testing.T) {
Expand Down Expand Up @@ -420,9 +420,9 @@ func TestState(t *testing.T) {

func TestEvents(t *testing.T) {
testDB := pebble.NewMemTest(t)
chain := blockchain.New(testDB, utils.Goerli2)
chain := blockchain.New(testDB, &utils.Goerli2)

client := feeder.NewTestClient(t, utils.Goerli2)
client := feeder.NewTestClient(t, &utils.Goerli2)
gw := adaptfeeder.New(client)

for i := 0; i < 7; i++ {
Expand Down Expand Up @@ -539,9 +539,9 @@ func TestEvents(t *testing.T) {

func TestRevert(t *testing.T) {
testdb := pebble.NewMemTest(t)
chain := blockchain.New(testdb, utils.Mainnet)
chain := blockchain.New(testdb, &utils.Mainnet)

client := feeder.NewTestClient(t, utils.Mainnet)
client := feeder.NewTestClient(t, &utils.Mainnet)
gw := adaptfeeder.New(client)

for i := uint64(0); i < 3; i++ {
Expand Down Expand Up @@ -623,7 +623,7 @@ func TestL1Update(t *testing.T) {

for _, head := range heads {
t.Run(fmt.Sprintf("update L1 head to block %d", head.BlockNumber), func(t *testing.T) {
chain := blockchain.New(pebble.NewMemTest(t), utils.Mainnet)
chain := blockchain.New(pebble.NewMemTest(t), &utils.Mainnet)
require.NoError(t, chain.SetL1Head(head))
got, err := chain.L1Head()
require.NoError(t, err)
Expand All @@ -634,8 +634,8 @@ func TestL1Update(t *testing.T) {

func TestPending(t *testing.T) {
testDB := pebble.NewMemTest(t)
chain := blockchain.New(testDB, utils.Mainnet)
client := feeder.NewTestClient(t, utils.Mainnet)
chain := blockchain.New(testDB, &utils.Mainnet)
client := feeder.NewTestClient(t, &utils.Mainnet)
gw := adaptfeeder.New(client)

b, err := gw.BlockByNumber(context.Background(), 0)
Expand Down Expand Up @@ -775,7 +775,7 @@ func TestPending(t *testing.T) {

func TestStorePendingIncludesNumber(t *testing.T) {
network := utils.Mainnet
chain := blockchain.New(pebble.NewMemTest(t), network)
chain := blockchain.New(pebble.NewMemTest(t), &network)

// Store pending genesis.
require.NoError(t, chain.StorePending(&blockchain.Pending{
Expand All @@ -791,7 +791,7 @@ func TestStorePendingIncludesNumber(t *testing.T) {
require.Equal(t, uint64(0), pending.Block.Number)

// Add block zero.
gw := adaptfeeder.New(feeder.NewTestClient(t, network))
gw := adaptfeeder.New(feeder.NewTestClient(t, &network))
b, err := gw.BlockByNumber(context.Background(), 0)
require.NoError(t, err)
su, err := gw.StateUpdate(context.Background(), 0)
Expand Down
4 changes: 2 additions & 2 deletions clients/feeder/feeder.go
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ func NopBackoff(d time.Duration) time.Duration {
}

// NewTestClient returns a client and a function to close a test server.
func NewTestClient(t *testing.T, network utils.Network) *Client {
func NewTestClient(t *testing.T, network *utils.Network) *Client {
srv := newTestServer(t, network)
t.Cleanup(srv.Close)
ua := "Juno/v0.0.1-test Starknet Implementation"
Expand All @@ -117,7 +117,7 @@ func NewTestClient(t *testing.T, network utils.Network) *Client {
return c
}

func newTestServer(t *testing.T, network utils.Network) *httptest.Server {
func newTestServer(t *testing.T, network *utils.Network) *httptest.Server {
return httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
queryMap, err := url.ParseQuery(r.URL.RawQuery)
if err != nil {
Expand Down
Loading

0 comments on commit db28910

Please sign in to comment.