hermez-node/synchronizer/synchronizer_test.go
synchronizer/synchronizer_test.goRaw
1package synchronizer
2
3import (
4 "io/ioutil"
5 "os"
6 "testing"
7
8 "github.com/ethereum/go-ethereum/ethclient"
9 dbUtils "github.com/hermeznetwork/hermez-node/db"
10 "github.com/hermeznetwork/hermez-node/db/historydb"
11 "github.com/hermeznetwork/hermez-node/db/statedb"
12 "github.com/hermeznetwork/hermez-node/eth"
13 "github.com/stretchr/testify/assert"
14 "github.com/stretchr/testify/require"
15)
16
17func Test(t *testing.T) {
18 // Int State DB
19 dir, err := ioutil.TempDir("", "tmpdb")
20 require.Nil(t, err)
21
22 sdb, err := statedb.NewStateDB(dir, statedb.TypeSynchronizer, 32)
23 assert.Nil(t, err)
24
25 // Init History DB
26 pass := os.Getenv("POSTGRES_PASS")
27 db, err := dbUtils.InitSQLDB(5432, "localhost", "hermez", pass, "hermez")
28 require.Nil(t, err)
29 historyDB := historydb.NewHistoryDB(db)
30 err = historyDB.Reorg(0)
31 assert.Nil(t, err)
32
33 // Init eth client
34 ehtClientDialURL := os.Getenv("ETHCLIENT_DIAL_URL")
35 ethClient, err := ethclient.Dial(ehtClientDialURL)
36 require.Nil(t, err)
37
38 client := eth.NewClient(ethClient, nil, nil, nil)
39
40 // Create Synchronizer
41 s := NewSynchronizer(client, historyDB, sdb)
42 require.NotNil(t, s)
43
44 // Test Sync
45 // err = s.Sync()
46 // require.Nil(t, err)
47
48 // TODO: Reorg will be properly tested once we have the mock ethClient implemented
49 /*
50 // Force a Reorg
51 lastSavedBlock, err := historyDB.GetLastBlock()
52 require.Nil(t, err)
53
54 lastSavedBlock.EthBlockNum++
55 err = historyDB.AddBlock(lastSavedBlock)
56 require.Nil(t, err)
57
58 lastSavedBlock.EthBlockNum++
59 err = historyDB.AddBlock(lastSavedBlock)
60 require.Nil(t, err)
61
62 log.Debugf("Wait for the blockchain to generate some blocks...")
63 time.Sleep(40 * time.Second)
64
65
66 err = s.Sync()
67 require.Nil(t, err)
68 */
69}