aboutsummaryrefslogtreecommitdiffstats
path: root/integration_test/node.go
diff options
context:
space:
mode:
Diffstat (limited to 'integration_test/node.go')
-rw-r--r--integration_test/node.go36
1 files changed, 15 insertions, 21 deletions
diff --git a/integration_test/node.go b/integration_test/node.go
index a26c005..0fb661b 100644
--- a/integration_test/node.go
+++ b/integration_test/node.go
@@ -73,6 +73,7 @@ type Node struct {
broadcastTargets map[types.NodeID]struct{}
networkLatency test.LatencyModel
proposingLatency test.LatencyModel
+ prevFinalHeight uint64
}
// NewNode constructs an instance of Node.
@@ -185,35 +186,28 @@ func (n *Node) processBlock(b *types.Block) (err error) {
// core/lattice_test.go, except the compaction-chain part.
var (
delivered []*types.Block
- verified []*types.Block
- pendings = []*types.Block{b}
)
if err = n.lattice.SanityCheck(b); err != nil {
- if err == core.ErrAckingBlockNotExists {
+ if _, ok := err.(*core.ErrAckingBlockNotExists); ok {
err = nil
+ } else {
+ return
}
+ }
+ if delivered, err = n.lattice.ProcessBlock(b); err != nil {
return
}
- for {
- if len(pendings) == 0 {
- break
- }
- b, pendings = pendings[0], pendings[1:]
- if verified, delivered, err = n.lattice.ProcessBlock(b); err != nil {
- return
- }
- // Deliver blocks.
- for _, b = range delivered {
- if err = n.db.Put(*b); err != nil {
- return
- }
- n.app.BlockDelivered(b.Hash, b.Finalization)
- }
- if err = n.lattice.PurgeBlocks(delivered); err != nil {
+ // Deliver blocks.
+ for _, b = range delivered {
+ if err = n.db.Put(*b); err != nil {
return
}
- // Update pending blocks for verified block (pass sanity check).
- pendings = append(pendings, verified...)
+ b.Finalization.Height = n.prevFinalHeight + 1
+ n.app.BlockDelivered(b.Hash, b.Finalization)
+ n.prevFinalHeight++
+ }
+ if err = n.lattice.PurgeBlocks(delivered); err != nil {
+ return
}
return
}