OSDN Git Service

improve net sync test cases (#375)
[bytom/vapor.git] / netsync / chainmgr / peers_test.go
diff --git a/netsync/chainmgr/peers_test.go b/netsync/chainmgr/peers_test.go
new file mode 100644 (file)
index 0000000..cc159fa
--- /dev/null
@@ -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))
+       }
+}