package blockpool import ( "fmt" "testing" // "time" "github.com/ethereum/go-ethereum/blockpool/test" ) var statusFields = []string{ "BlockHashes", "BlockHashesInPool", "Blocks", "BlocksInPool", "BlocksInChain", "NewBlocks", "Forks", "LongestChain", "Peers", "LivePeers", "ActivePeers", "BestPeers", "BadPeers", } func getStatusValues(s *Status) []int { return []int{ s.BlockHashes, s.BlockHashesInPool, s.Blocks, s.BlocksInPool, s.BlocksInChain, s.NewBlocks, s.Forks, s.LongestChain, s.Peers, s.LivePeers, s.ActivePeers, s.BestPeers, s.BadPeers, } } func checkStatus(t *testing.T, bp *BlockPool, syncing bool, expected []int) (err error) { s := bp.Status() if s.Syncing != syncing { t.Errorf("status for Syncing incorrect. expected %v, got %v", syncing, s.Syncing) } got := getStatusValues(s) for i, v := range expected { err = test.CheckInt(statusFields[i], got[i], v, t) if err != nil { return err } fmt.Printf("%v: %v (%v)\n", statusFields[i], got[i], v) } return } // func TestBlockPoolStatus(t *testing.T) { // test.LogInit() // _, blockPool, blockPoolTester := newTestBlockPool(t) // blockPoolTester.blockChain[0] = nil // blockPoolTester.initRefBlockChain(12) // blockPoolTester.refBlockChain[3] = []int{4, 7} // delete(blockPoolTester.refBlockChain, 6) // blockPool.Start() // peer1 := blockPoolTester.newPeer("peer1", 1, 9) // peer2 := blockPoolTester.newPeer("peer2", 2, 6) // peer3 := blockPoolTester.newPeer("peer3", 3, 11) // peer4 := blockPoolTester.newPeer("peer4", 1, 9) // peer2.blocksRequestsMap = peer1.blocksRequestsMap // var expected []int // var err error // expected = []int{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} // err = checkStatus(t, blockPool, false, expected) // if err != nil { // return // } // peer1.AddPeer() // expected = []int{0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0} // err = checkStatus(t, blockPool, true, expected) // if err != nil { // return // } // peer1.serveBlocks(8, 9) // expected = []int{0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0} // err = checkStatus(t, blockPool, true, expected) // if err != nil { // return // } // peer1.serveBlockHashes(9, 8, 7, 3, 2) // expected = []int{5, 5, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0} // err = checkStatus(t, blockPool, true, expected) // if err != nil { // return // } // peer1.serveBlocks(3, 7, 8) // expected = []int{5, 5, 3, 3, 0, 1, 0, 0, 1, 1, 1, 1, 0} // err = checkStatus(t, blockPool, true, expected) // if err != nil { // return // } // peer1.serveBlocks(2, 3) // expected = []int{5, 5, 4, 4, 0, 1, 0, 0, 1, 1, 1, 1, 0} // err = checkStatus(t, blockPool, true, expected) // if err != nil { // return // } // peer4.AddPeer() // expected = []int{5, 5, 4, 4, 0, 2, 0, 0, 2, 2, 1, 1, 0} // err = checkStatus(t, blockPool, true, expected) // if err != nil { // return // } // peer4.sendBlockHashes(12, 11) // expected = []int{5, 5, 4, 4, 0, 2, 0, 0, 2, 2, 1, 1, 0} // err = checkStatus(t, blockPool, true, expected) // if err != nil { // return // } // peer2.AddPeer() // expected = []int{5, 5, 4, 4, 0, 3, 0, 0, 3, 3, 1, 2, 0} // err = checkStatus(t, blockPool, true, expected) // if err != nil { // return // } // peer2.serveBlocks(5, 6) // peer2.serveBlockHashes(6, 5, 4, 3, 2) // expected = []int{8, 8, 5, 5, 0, 3, 1, 0, 3, 3, 2, 2, 0} // err = checkStatus(t, blockPool, true, expected) // if err != nil { // return // } // peer2.serveBlocks(2, 3, 4) // expected = []int{8, 8, 6, 6, 0, 3, 1, 0, 3, 3, 2, 2, 0} // err = checkStatus(t, blockPool, true, expected) // if err != nil { // return // } // blockPool.RemovePeer("peer2") // expected = []int{8, 8, 6, 6, 0, 3, 1, 0, 3, 2, 2, 2, 0} // err = checkStatus(t, blockPool, true, expected) // if err != nil { // return // } // peer1.serveBlockHashes(2, 1, 0) // expected = []int{9, 9, 6, 6, 0, 3, 1, 0, 3, 2, 2, 2, 0} // err = checkStatus(t, blockPool, true, expected) // if err != nil { // return // } // peer1.serveBlocks(1, 2) // expected = []int{9, 9, 7, 7, 0, 3, 1, 0, 3, 2, 2, 2, 0} // err = checkStatus(t, blockPool, true, expected) // if err != nil { // return // } // peer1.serveBlocks(4, 5) // expected = []int{9, 9, 8, 8, 0, 3, 1, 0, 3, 2, 2, 2, 0} // err = checkStatus(t, blockPool, true, expected) // if err != nil { // return // } // peer3.AddPeer() // expected = []int{9, 9, 8, 8, 0, 4, 1, 0, 4, 3, 2, 3, 0} // err = checkStatus(t, blockPool, true, expected) // if err != nil { // return // } // peer3.serveBlocks(10, 11) // expected = []int{9, 9, 9, 9, 0, 4, 1, 0, 4, 3, 3, 3, 0} // err = checkStatus(t, blockPool, true, expected) // if err != nil { // return // } // peer3.serveBlockHashes(11, 10, 9) // expected = []int{11, 11, 9, 9, 0, 4, 1, 0, 4, 3, 3, 3, 0} // err = checkStatus(t, blockPool, true, expected) // if err != nil { // return // } // peer4.sendBlocks(11, 12) // expected = []int{11, 11, 9, 9, 0, 4, 1, 0, 4, 3, 4, 3, 1} // err = checkStatus(t, blockPool, true, expected) // if err != nil { // return // } // peer3.serveBlocks(9, 10) // expected = []int{11, 11, 10, 10, 0, 4, 1, 0, 4, 3, 4, 3, 1} // err = checkStatus(t, blockPool, true, expected) // if err != nil { // return // } // peer3.serveBlocks(0, 1) // blockPool.Wait(waitTimeout) // time.Sleep(200 * time.Millisecond) // expected = []int{11, 3, 11, 3, 8, 4, 1, 8, 4, 3, 4, 3, 1} // err = checkStatus(t, blockPool, false, expected) // if err != nil { // return // } // blockPool.Stop() // }