package synchronizer import ( "io/ioutil" "os" "testing" "github.com/ethereum/go-ethereum/ethclient" dbUtils "github.com/hermeznetwork/hermez-node/db" "github.com/hermeznetwork/hermez-node/db/historydb" "github.com/hermeznetwork/hermez-node/db/statedb" "github.com/hermeznetwork/hermez-node/eth" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) func Test(t *testing.T) { // Int State DB dir, err := ioutil.TempDir("", "tmpdb") require.Nil(t, err) sdb, err := statedb.NewStateDB(dir, statedb.TypeSynchronizer, 32) assert.Nil(t, err) // Init History DB pass := os.Getenv("POSTGRES_PASS") db, err := dbUtils.InitSQLDB(5432, "localhost", "hermez", pass, "hermez") require.Nil(t, err) historyDB := historydb.NewHistoryDB(db) err = historyDB.Reorg(0) assert.Nil(t, err) // Init eth client ehtClientDialURL := os.Getenv("ETHCLIENT_DIAL_URL") ethClient, err := ethclient.Dial(ehtClientDialURL) require.Nil(t, err) client := eth.NewClient(ethClient, nil, nil, nil) // Create Synchronizer s := NewSynchronizer(client, historyDB, sdb) require.NotNil(t, s) // Test Sync // err = s.Sync() // require.Nil(t, err) // TODO: Reorg will be properly tested once we have the mock ethClient implemented /* // Force a Reorg lastSavedBlock, err := historyDB.GetLastBlock() require.Nil(t, err) lastSavedBlock.EthBlockNum++ err = historyDB.AddBlock(lastSavedBlock) require.Nil(t, err) lastSavedBlock.EthBlockNum++ err = historyDB.AddBlock(lastSavedBlock) require.Nil(t, err) log.Debugf("Wait for the blockchain to generate some blocks...") time.Sleep(40 * time.Second) err = s.Sync() require.Nil(t, err) */ }