hermez-node/synchronizer/synchronizer_test.go
synchronizer/synchronizer_test.goRaw
1package synchronizer
2
3import (
4 "fmt"
5 "io/ioutil"
6 "os"
7 "testing"
8
9 "github.com/ethereum/go-ethereum/ethclient"
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, true, 32)
23 assert.Nil(t, err)
24
25 // Init History DB
26 pass := os.Getenv("POSTGRES_PASS")
27 historyDB, err := historydb.NewHistoryDB(5432, "localhost", "hermez", pass, "history")
28 require.Nil(t, err)
29 err = historyDB.Reorg(0)
30 assert.Nil(t, err)
31
32 // Init eth client
33 ehtClientDialURL := os.Getenv("ETHCLIENT_DIAL_URL")
34 ethClient, err := ethclient.Dial(ehtClientDialURL)
35 require.Nil(t, err)
36
37 client := eth.NewClient(ethClient, nil, nil, nil)
38
39 // Create Synchronizer
40 s := NewSynchronizer(client, historyDB, sdb)
41
42 // Test Sync
43 err = s.Sync()
44 require.Nil(t, err)
45
46 // TODO: Reorg will be properly tested once we have the mock ethClient implemented
47 /*
48 // Force a Reorg
49 lastSavedBlock, err := historyDB.GetLastBlock()
50 require.Nil(t, err)
51
52 lastSavedBlock.EthBlockNum++
53 err = historyDB.AddBlock(lastSavedBlock)
54 require.Nil(t, err)
55
56 lastSavedBlock.EthBlockNum++
57 err = historyDB.AddBlock(lastSavedBlock)
58 require.Nil(t, err)
59
60 log.Debugf("Wait for the blockchain to generate some blocks...")
61 time.Sleep(40 * time.Second)
62
63
64 err = s.Sync()
65 require.Nil(t, err)
66 */
67
68 // Close History DB
69 if err := historyDB.Close(); err != nil {
70 fmt.Println("Error closing the history DB:", err)
71 }
72}