arnaucube
arnaucube/hermez-nodePublic Self-hosted repository
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}