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