github.com/Blockdaemon/celo-blockchain@v0.0.0-20200129231733-e667f6b08419/consensus/istanbul/backend/announce_test.go (about) 1 package backend 2 3 import ( 4 "net" 5 "testing" 6 7 "github.com/ethereum/go-ethereum/consensus/consensustest" 8 "github.com/ethereum/go-ethereum/p2p/enode" 9 ) 10 11 func TestHandleIstAnnounce(t *testing.T) { 12 _, b := newBlockChain(4, true) 13 for b == nil || b.Address() == getAddress() { 14 _, b = newBlockChain(4, true) 15 } 16 17 block := b.currentBlock() 18 valSet := b.getValidators(block.Number().Uint64(), block.Hash()) 19 20 val1PrivateKey, _ := generatePrivateKey() 21 val1IPAddress := net.ParseIP("1.2.3.4") 22 val1Node := enode.NewV4(&val1PrivateKey.PublicKey, val1IPAddress, 0, 0) 23 val1Addr := getAddress() 24 val1P2pServer := &consensustest.MockP2PServer{Node: val1Node} 25 26 // Set backend to val1 27 b.SetP2PServer(val1P2pServer) 28 b.Authorize(val1Addr, signerFn, signerBLSHashFn, signerBLSMessageFn) 29 30 // Generate an ist announce message using val1 31 istMsg, err := b.generateIstAnnounce() 32 istMsg.Sign(b.Sign) 33 payload, _ := istMsg.Payload() 34 35 // Set backend to val2 36 b.address = valSet.GetByIndex(2).Address() 37 38 // Handle val1's announce message 39 if err = b.handleIstAnnounce(payload); err != nil { 40 t.Errorf("error %v", err) 41 } 42 43 if node, err := b.valEnodeTable.GetNodeFromAddress(val1Addr); err == nil { 44 if node == nil || node.String() != val1Node.String() { 45 t.Errorf("Expected %v, but got %v instead", val1Node.String(), node) 46 } 47 } else { 48 t.Errorf("Failed to save enode entry") 49 } 50 }