kaspad/integration/basic_sync_test.go
Ori Newman 8e170cf327
[NOD-1225] Rename wire to domainmessage and get rid of InvType (#853)
* [NOD-1225] Rename wire to domainmessage

* [NOD-1225] Get rid of references to package wire in the code, and get rid of InvType
2020-08-09 12:39:15 +03:00

52 lines
1.5 KiB
Go

package integration
import (
"testing"
"time"
"github.com/kaspanet/kaspad/domainmessage"
)
func TestIntegrationBasicSync(t *testing.T) {
appHarness1, appHarness2, appHarness3, teardown := standardSetup(t)
defer teardown()
// Connect nodes in chain: 1 <--> 2 <--> 3
// So that node 3 doesn't directly get blocks from node 1
connect(t, appHarness1, appHarness2)
connect(t, appHarness2, appHarness3)
app2OnBlockAddedChan := make(chan *domainmessage.BlockHeader)
setOnBlockAddedHandler(t, appHarness2, func(header *domainmessage.BlockHeader) {
app2OnBlockAddedChan <- header
})
app3OnBlockAddedChan := make(chan *domainmessage.BlockHeader)
setOnBlockAddedHandler(t, appHarness3, func(header *domainmessage.BlockHeader) {
app3OnBlockAddedChan <- header
})
block := mineNextBlock(t, appHarness1)
var header *domainmessage.BlockHeader
select {
case header = <-app2OnBlockAddedChan:
case <-time.After(defaultTimeout):
t.Fatalf("Timeout waiting for block added notification on node directly connected to miner")
}
if !header.BlockHash().IsEqual(block.Hash()) {
t.Errorf("Expected block with hash '%s', but got '%s'", block.Hash(), header.BlockHash())
}
select {
case header = <-app3OnBlockAddedChan:
case <-time.After(defaultTimeout):
t.Fatalf("Timeout waiting for block added notification on node indirectly connected to miner")
}
if !header.BlockHash().IsEqual(block.Hash()) {
t.Errorf("Expected block with hash '%s', but got '%s'", block.Hash(), header.BlockHash())
}
}