mirror of
https://github.com/GopeedLab/gopeed.git
synced 2026-11-04 15:49:49 +00:00
73 lines
2.1 KiB
Go
73 lines
2.1 KiB
Go
package ed2k
|
|
|
|
import (
|
|
"testing"
|
|
|
|
ped2k "github.com/GopeedLab/gopeed/pkg/protocol/ed2k"
|
|
"github.com/monkeyWie/goed2k"
|
|
"github.com/monkeyWie/goed2k/protocol"
|
|
)
|
|
|
|
func TestStatsSeparatesSnapshotAndRuntimeWithoutHandle(t *testing.T) {
|
|
frame := (&Fetcher{}).Stats()
|
|
if frame.Snapshot != nil {
|
|
t.Fatalf("snapshot = %T, want nil without a valid handle", frame.Snapshot)
|
|
}
|
|
runtime, ok := frame.Runtime.(*ped2k.StatsRuntime)
|
|
if !ok {
|
|
t.Fatalf("runtime type = %T", frame.Runtime)
|
|
}
|
|
if runtime.Peers == nil || len(runtime.Peers) != 0 {
|
|
t.Fatalf("unexpected runtime peers: %+v", runtime.Peers)
|
|
}
|
|
}
|
|
|
|
func TestBuildED2KPieceMapPreservesIndexes(t *testing.T) {
|
|
snapshots := []goed2k.PieceSnapshot{
|
|
{Index: 0, State: goed2k.PieceSnapshotFinished},
|
|
{Index: 1, State: goed2k.PieceSnapshotMissing},
|
|
{Index: 2, State: goed2k.PieceSnapshotDownloading},
|
|
{Index: 3, State: goed2k.PieceSnapshotFinished},
|
|
}
|
|
pieceMap := buildED2KPieceMap(snapshots)
|
|
if pieceMap == nil {
|
|
t.Fatal("buildED2KPieceMap returned nil")
|
|
}
|
|
want := []bool{true, false, false, true}
|
|
for index, expected := range want {
|
|
got, err := pieceMap.Get(index)
|
|
if err != nil || got != expected {
|
|
t.Fatalf("piece %d = %v, %v; want %v", index, got, err, expected)
|
|
}
|
|
}
|
|
if pieceMap.CompletedPieces() != 2 {
|
|
t.Fatalf("CompletedPieces() = %d, want 2", pieceMap.CompletedPieces())
|
|
}
|
|
}
|
|
|
|
func TestBuildED2KPeers(t *testing.T) {
|
|
remotePieces := protocol.NewBitField(4)
|
|
remotePieces.SetBit(0)
|
|
remotePieces.SetBit(2)
|
|
endpoint, err := protocol.EndpointFromString("127.0.0.1", 4662)
|
|
if err != nil {
|
|
t.Fatalf("EndpointFromString: %v", err)
|
|
}
|
|
peers := buildED2KPeers([]goed2k.PeerInfo{{
|
|
PayloadDownloadSpeed: 2048,
|
|
PayloadUploadSpeed: 1024,
|
|
RemotePieces: remotePieces,
|
|
Endpoint: endpoint,
|
|
ModName: "aMule",
|
|
StrModVersion: "2.3.3",
|
|
SourceFlag: int(goed2k.PeerServer | goed2k.PeerDHT),
|
|
}})
|
|
if len(peers) != 1 {
|
|
t.Fatalf("len(peers) = %d, want 1", len(peers))
|
|
}
|
|
peer := peers[0]
|
|
if peer.Client != "aMule 2.3.3" || peer.PieceCount != 2 || peer.Source != "server|kad" || peer.Transport != "tcp" {
|
|
t.Fatalf("unexpected peer: %+v", peer)
|
|
}
|
|
}
|