X-Git-Url: http://git.osdn.net/view?p=bytom%2Fvapor.git;a=blobdiff_plain;f=netsync%2Fchainmgr%2Fpeers_test.go;fp=netsync%2Fchainmgr%2Fpeers_test.go;h=cc159fa440cd90a4da8f6bc3ca73dc577a4f6c38;hp=0000000000000000000000000000000000000000;hb=4adf3b94c3cf38f3ff3d77e95f6a4830f516d2d9;hpb=df9deca26ab5e99b48bae28fb8282ec3fa47d516 diff --git a/netsync/chainmgr/peers_test.go b/netsync/chainmgr/peers_test.go new file mode 100644 index 00000000..cc159fa4 --- /dev/null +++ b/netsync/chainmgr/peers_test.go @@ -0,0 +1,116 @@ +package chainmgr + +import ( + "testing" +) + +func TestAddDel(t *testing.T) { + syncPeers := newFastSyncPeers() + peers := make(map[string]bool) + peers["Peer1"] = true + peers["Peer2"] = true + for k := range peers { + syncPeers.add(k) + syncPeers.add(k) + } + if syncPeers.size() != len(peers) { + t.Errorf("add peer test err: got %d\nwant %d", syncPeers.size(), len(peers)) + } + + syncPeers.delete("Peer1") + if syncPeers.size() != 1 { + t.Errorf("add peer test err: got %d\nwant %d", syncPeers.size(), 1) + } + + syncPeers.delete("Peer1") + if syncPeers.size() != 1 { + t.Errorf("add peer test err: got %d\nwant %d", syncPeers.size(), 1) + } +} + +func TestIdlePeers(t *testing.T) { + syncPeers := newFastSyncPeers() + peers := make(map[string]bool) + peers["Peer1"] = true + peers["Peer2"] = true + for k := range peers { + syncPeers.add(k) + syncPeers.add(k) + } + + idlePeers := syncPeers.selectIdlePeers() + if len(idlePeers) != len(peers) { + t.Errorf("selcet idle peers test err: got %d\nwant %d", len(idlePeers), len(peers)) + } + + for _, peer := range idlePeers { + if ok := peers[peer]; !ok { + t.Errorf("selcet idle peers test err: want peers %v got %v", peers, idlePeers) + } + } + + idlePeers = syncPeers.selectIdlePeers() + if len(idlePeers) != 0 { + t.Errorf("selcet idle peers test err: got %d\nwant %d", len(idlePeers), 0) + } + +} + +func TestIdlePeer(t *testing.T) { + syncPeers := newFastSyncPeers() + peers := make(map[string]bool) + peers["Peer1"] = true + peers["Peer2"] = true + for k := range peers { + syncPeers.add(k) + syncPeers.add(k) + } + idlePeer, err := syncPeers.selectIdlePeer() + if err != nil { + t.Errorf("selcet idle peers test err: got %v\nwant %v", err, nil) + } + + if ok := peers[idlePeer]; !ok { + t.Error("selcet idle peers test err.") + } + idlePeer, err = syncPeers.selectIdlePeer() + if err != nil { + t.Errorf("selcet idle peers test err: got %v\nwant %v", err, nil) + } + + if ok := peers[idlePeer]; !ok { + t.Error("selcet idle peers test err.") + } + idlePeer, err = syncPeers.selectIdlePeer() + if err != errNoValidFastSyncPeer { + t.Errorf("selcet idle peers test err: got %v\nwant %v", err, errNoValidFastSyncPeer) + } +} + +func TestSetIdle(t *testing.T) { + syncPeers := newFastSyncPeers() + peers := make(map[string]bool) + peers["Peer2"] = true + for k := range peers { + syncPeers.add(k) + } + if syncPeers.size() != len(peers) { + t.Errorf("add peer test err: got %d\nwant %d", syncPeers.size(), len(peers)) + } + idlePeers := syncPeers.selectIdlePeers() + if len(idlePeers) != len(peers) { + t.Errorf("selcet idle peers test err: got %d\nwant %d", len(idlePeers), len(peers)) + } + + syncPeers.setIdle("Peer1") + idlePeers = syncPeers.selectIdlePeers() + if len(idlePeers) != 0 { + t.Errorf("selcet idle peers test err: got %d\nwant %d", len(idlePeers), 0) + } + + syncPeers.setIdle("Peer2") + idlePeers = syncPeers.selectIdlePeers() + if len(idlePeers) != len(peers) { + t.Errorf("selcet idle peers test err: got %d\nwant %d", len(idlePeers), len(peers)) + } +}