@@ -606,3 +606,79 @@ func TestBucketFirstStat(t *testing.T) {
606
606
re .Equal (data .expect , bs .bucketFirstStat ())
607
607
}
608
608
}
609
+
610
+ func TestSortHotPeers (t * testing.T ) {
611
+ re := require .New (t )
612
+
613
+ type testPeer struct {
614
+ id int
615
+ }
616
+
617
+ peer1 := & testPeer {id : 1 }
618
+ peer2 := & testPeer {id : 2 }
619
+ peer3 := & testPeer {id : 3 }
620
+ peer4 := & testPeer {id : 4 }
621
+
622
+ tests := []struct {
623
+ name string
624
+ firstSort []* testPeer
625
+ secondSort []* testPeer
626
+ maxPeerNum int
627
+ expected []* testPeer
628
+ }{
629
+ {
630
+ name : "No duplicates, maxPeerNum greater than total peers" ,
631
+ firstSort : []* testPeer {peer1 , peer2 },
632
+ secondSort : []* testPeer {peer3 , peer4 },
633
+ maxPeerNum : 5 ,
634
+ expected : []* testPeer {peer1 , peer3 , peer2 , peer4 },
635
+ },
636
+ {
637
+ name : "No duplicates, maxPeerNum less than total peers" ,
638
+ firstSort : []* testPeer {peer1 , peer2 },
639
+ secondSort : []* testPeer {peer3 , peer4 },
640
+ maxPeerNum : 3 ,
641
+ expected : []* testPeer {peer1 , peer3 , peer2 },
642
+ },
643
+ {
644
+ name : "Duplicates in both lists" ,
645
+ firstSort : []* testPeer {peer1 , peer2 },
646
+ secondSort : []* testPeer {peer2 , peer3 },
647
+ maxPeerNum : 3 ,
648
+ expected : []* testPeer {peer1 , peer2 , peer3 },
649
+ },
650
+ {
651
+ name : "Empty firstSort" ,
652
+ firstSort : []* testPeer {},
653
+ secondSort : []* testPeer {peer3 , peer4 },
654
+ maxPeerNum : 2 ,
655
+ expected : []* testPeer {peer3 , peer4 },
656
+ },
657
+ {
658
+ name : "Empty secondSort" ,
659
+ firstSort : []* testPeer {peer1 , peer2 },
660
+ secondSort : []* testPeer {},
661
+ maxPeerNum : 2 ,
662
+ expected : []* testPeer {peer1 , peer2 },
663
+ },
664
+ {
665
+ name : "Both lists empty" ,
666
+ firstSort : []* testPeer {},
667
+ secondSort : []* testPeer {},
668
+ maxPeerNum : 2 ,
669
+ expected : []* testPeer {},
670
+ },
671
+ }
672
+
673
+ for _ , tt := range tests {
674
+ t .Run (tt .name , func (* testing.T ) {
675
+ result := sortHotPeers (tt .firstSort , tt .secondSort , tt .maxPeerNum )
676
+ re .Len (result , len (tt .expected ))
677
+
678
+ for _ , expectedPeer := range tt .expected {
679
+ _ , exists := result [expectedPeer ]
680
+ re .True (exists , "Expected peer not found in result" )
681
+ }
682
+ })
683
+ }
684
+ }
0 commit comments