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 require.NotNil(t, s)
42
43 // Test Sync
44 // err = s.Sync()
45 // require.Nil(t, err)
46
47 // TODO: Reorg will be properly tested once we have the mock ethClient implemented
48 /*
49 // Force a Reorg
50 lastSavedBlock, err := historyDB.GetLastBlock()
51 require.Nil(t, err)
52
53 lastSavedBlock.EthBlockNum++
54 err = historyDB.AddBlock(lastSavedBlock)
55 require.Nil(t, err)
56
57 lastSavedBlock.EthBlockNum++
58 err = historyDB.AddBlock(lastSavedBlock)
59 require.Nil(t, err)
60
61 log.Debugf("Wait for the blockchain to generate some blocks...")
62 time.Sleep(40 * time.Second)
63
64
65 err = s.Sync()
66 require.Nil(t, err)
67 */
68
69 // Close History DB
70 if err := historyDB.Close(); err != nil {
71 fmt.Println("Error closing the history DB:", err)
72 }
73}