hermez-node/coordinator/coordinator_test.go
coordinator/coordinator_test.goRaw
1package coordinator
2
3import (
4 "io/ioutil"
5 "os"
6 "testing"
7 "time"
8
9 "github.com/hermeznetwork/hermez-node/batchbuilder"
10 "github.com/hermeznetwork/hermez-node/db/historydb"
11 "github.com/hermeznetwork/hermez-node/db/l2db"
12 "github.com/hermeznetwork/hermez-node/db/statedb"
13 "github.com/hermeznetwork/hermez-node/eth"
14 "github.com/hermeznetwork/hermez-node/log"
15 "github.com/hermeznetwork/hermez-node/txselector"
16 "github.com/stretchr/testify/assert"
17 "github.com/stretchr/testify/require"
18)
19
20func newTestModules(t *testing.T) (*txselector.TxSelector, *batchbuilder.BatchBuilder) { // FUTURE once Synchronizer is ready, should return it also
21 nLevels := 32
22
23 synchDB, err := ioutil.TempDir("", "tmpSynchDB")
24 require.Nil(t, err)
25 sdb, err := statedb.NewStateDB(synchDB, true, nLevels)
26 assert.Nil(t, err)
27
28 pass := os.Getenv("POSTGRES_PASS")
29 l2DB, err := l2db.NewL2DB(5432, "localhost", "hermez", pass, "l2", 10, 512, 24*time.Hour)
30 require.Nil(t, err)
31
32 txselDir, err := ioutil.TempDir("", "tmpTxSelDB")
33 require.Nil(t, err)
34 txsel, err := txselector.NewTxSelector(txselDir, sdb, l2DB, 10, 10, 10)
35 assert.Nil(t, err)
36
37 bbDir, err := ioutil.TempDir("", "tmpBatchBuilderDB")
38 require.Nil(t, err)
39 bb, err := batchbuilder.NewBatchBuilder(bbDir, sdb, nil, 0, uint64(nLevels))
40 assert.Nil(t, err)
41
42 // l1Txs, coordinatorL1Txs, poolL2Txs := test.GenerateTestTxsFromSet(t, test.SetTest0)
43
44 return txsel, bb
45}
46
47func TestCoordinator(t *testing.T) {
48 txsel, bb := newTestModules(t)
49
50 conf := Config{
51 LoopInterval: 100 * time.Millisecond,
52 }
53 hdb := &historydb.HistoryDB{}
54 c := NewCoordinator(conf, hdb, txsel, bb, ð.Client{})
55 c.Start()
56 time.Sleep(1 * time.Second)
57
58 // simulate forgeSequence time
59 log.Debug("simulate entering in forge time")
60 c.isForgeSeq = true
61 time.Sleep(1 * time.Second)
62
63 // simulate going out from forgeSequence
64 log.Debug("simulate going out from forge time")
65 c.isForgeSeq = false
66 time.Sleep(1 * time.Second)
67
68 // simulate entering forgeSequence time again
69 log.Debug("simulate entering in forge time again")
70 c.isForgeSeq = true
71 time.Sleep(1 * time.Second)
72
73 // simulate stopping forgerLoop by channel
74 log.Debug("simulate stopping forgerLoop by closing coordinator stopch")
75 c.Stop()
76 time.Sleep(1 * time.Second)
77}