--- /dev/null
+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))
+ }
+}