Skip to content

Commit

Permalink
add tests for Advertise Extension Support
Browse files Browse the repository at this point in the history
  • Loading branch information
sarp committed Aug 23, 2024
1 parent 5b2c1f7 commit 67ab4ac
Show file tree
Hide file tree
Showing 3 changed files with 54 additions and 65 deletions.
10 changes: 0 additions & 10 deletions internal/stage_helpers.go
Original file line number Diff line number Diff line change
Expand Up @@ -52,16 +52,6 @@ var samplePieceHashes = []string{
"aec2d7eb1db539c2a9d24d023fb916b79234b769",
}

type TestTorrentInfo struct {
filename string
outputFilename string
tracker string
infohash string
length int64
expectedSha1 string
incorrectSha1 []string
}

var testTorrents = []TestTorrentInfo{
{
filename: "codercat.gif.torrent",
Expand Down
89 changes: 44 additions & 45 deletions internal/stage_magnet_helpers.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,28 +9,53 @@ import (
)

type MagnetTestParams struct {
TrackerAddress string
PeerPort int
PeerAddress string
PeersResponse []byte
ExpectedInfoHash [20]byte
ExpectedReservedBytes []byte
ExpectedPeerID [20]byte
MyMetadataExtensionID uint8
MagnetUrlEncoded string
MagnetLinkInfo MagnetTestTorrentInfo
Logger *logger.Logger
TrackerAddress string
PeerPort int
PeerAddress string
PeersResponse []byte
ExpectedInfoHash [20]byte
ExpectedReservedBytes []byte
ExpectedPeerID [20]byte
MyMetadataExtensionID uint8
MagnetUrlEncoded string
MagnetLinkInfo MagnetTestTorrentInfo
Logger *logger.Logger
}

type MagnetTestTorrentInfo struct {
Filename string
InfoHashStr string
FileLengthBytes int
PieceLengthBytes int
MetadataSizeBytes int
Bitfield []byte
PieceHashes []string
ExpectedSha1 string
Filename string
InfoHashStr string
FileLengthBytes int
PieceLengthBytes int
MetadataSizeBytes int
Bitfield []byte
PieceHashes []string
ExpectedSha1 string
}

func (m *MagnetTestParams) toTrackerParams() TrackerParams {
return TrackerParams {
trackerAddress: m.TrackerAddress,
peersResponse: m.PeersResponse,
expectedInfoHash: m.ExpectedInfoHash,
fileLengthBytes: m.MagnetLinkInfo.FileLengthBytes,
logger: m.Logger,
myMetadataExtensionID: m.MyMetadataExtensionID,
}
}

func (m *MagnetTestParams) toPeerConnectionParams() PeerConnectionParams {
return PeerConnectionParams {
address: m.PeerAddress,
myPeerID: m.ExpectedPeerID,
infoHash: m.ExpectedInfoHash,
expectedReservedBytes: m.ExpectedReservedBytes,
myMetadataExtensionID: m.MyMetadataExtensionID,
metadataSizeBytes: m.MagnetLinkInfo.MetadataSizeBytes,
bitfield: m.MagnetLinkInfo.Bitfield,
magnetLink: m.MagnetLinkInfo,
logger: m.Logger,
}
}

var magnetTestTorrents = []MagnetTestTorrentInfo {
Expand Down Expand Up @@ -76,31 +101,6 @@ var magnetTestTorrents = []MagnetTestTorrentInfo {
},
}

func (m *MagnetTestParams) toTrackerParams() TrackerParams {
return TrackerParams {
trackerAddress: m.TrackerAddress,
peersResponse: m.PeersResponse,
expectedInfoHash: m.ExpectedInfoHash,
fileLengthBytes: m.MagnetLinkInfo.FileLengthBytes,
logger: m.Logger,
myMetadataExtensionID: m.MyMetadataExtensionID,
}
}

func (m *MagnetTestParams) toPeerConnectionParams() PeerConnectionParams {
return PeerConnectionParams {
address: m.PeerAddress,
myPeerID: m.ExpectedPeerID,
infoHash: m.ExpectedInfoHash,
expectedReservedBytes: m.ExpectedReservedBytes,
myMetadataExtensionID: m.MyMetadataExtensionID,
metadataSizeBytes: m.MagnetLinkInfo.MetadataSizeBytes,
bitfield: m.MagnetLinkInfo.Bitfield,
magnetLink: m.MagnetLinkInfo,
logger: m.Logger,
}
}

func NewMagnetTestParams(magnetLink MagnetTestTorrentInfo, logger *logger.Logger) (*MagnetTestParams, error) {
params := MagnetTestParams{}

Expand All @@ -118,7 +118,6 @@ func NewMagnetTestParams(magnetLink MagnetTestTorrentInfo, logger *logger.Logger
}
trackerAddress := fmt.Sprintf("127.0.0.1:%d", trackerPort)
params.TrackerAddress = trackerAddress

infoHashStr := magnetLink.InfoHashStr
params.MagnetUrlEncoded = "magnet:?xt=urn:btih:" + infoHashStr + "&dn=" + magnetLink.Filename + "&tr=http%3A%2F%2F" + trackerAddress + "%2Fannounce"

Expand Down
20 changes: 10 additions & 10 deletions internal/test_helpers/fixtures/handshake/with_peer_check
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
Debug = true

[stage-9] Running tests for Stage #9: ca4
[stage-9] Running ./your_bittorrent.sh handshake /var/folders/08/v_mzt9816270xbqv5t3xgzyr0000gn/T/torrents2160693173/test.torrent 127.0.0.1:51891
[stage-9] Tracker started on address 127.0.0.1:51892...
[stage-9] Running ./your_bittorrent.sh handshake /var/folders/08/v_mzt9816270xbqv5t3xgzyr0000gn/T/torrents3560190140/test.torrent 127.0.0.1:49425
[stage-9] Tracker started on address 127.0.0.1:49426...
[stage-9] 
[stage-9] Peer listening on address: 127.0.0.1:51891
[stage-9] Peer listening on address: 127.0.0.1:49425
[stage-9] Received handshake: [infohash: c7e51462e85d8631c25f8c9b8c5479345a1de26b, peer_id: 3030313132323333343435353636373738383939]
[stage-9] 
[stage-9] Sending back handshake with peer_id: ee8f5140bfc195c36b0567cd055ac9839e682ab0
[your_program] Peer ID: ee8f5140bfc195c36b0567cd055ac9839e682ab0
[stage-9] Test passed.

[stage-8] Running tests for Stage #8: fi9
[stage-8] Running ./your_bittorrent.sh peers /var/folders/08/v_mzt9816270xbqv5t3xgzyr0000gn/T/torrents2154674571/test.torrent
[stage-8] Tracker started on address 127.0.0.1:51895...
[stage-8] Running ./your_bittorrent.sh peers /var/folders/08/v_mzt9816270xbqv5t3xgzyr0000gn/T/torrents2152669296/test.torrent
[stage-8] Tracker started on address 127.0.0.1:49429...
[stage-8] 
[your_program] 188.119.61.177:6881
[your_program] 71.224.0.29:51414
Expand All @@ -27,7 +27,7 @@ Debug = true
[stage-8] Test passed.

[stage-7] Running tests for Stage #7: bf7
[stage-7] Running ./your_bittorrent.sh info /var/folders/08/v_mzt9816270xbqv5t3xgzyr0000gn/T/torrents2329058448/test.torrent
[stage-7] Running ./your_bittorrent.sh info /var/folders/08/v_mzt9816270xbqv5t3xgzyr0000gn/T/torrents3230499649/test.torrent
[your_program] Tracker URL: http://bttracker.debian.org:6969/announce
[your_program] Length: 1835008
[your_program] Info Hash: 1840a71323682db707d1e8c9761049e875c03656
Expand All @@ -43,7 +43,7 @@ Debug = true
[stage-7] Test passed.

[stage-6] Running tests for Stage #6: rb2
[stage-6] Running ./your_bittorrent.sh info /var/folders/08/v_mzt9816270xbqv5t3xgzyr0000gn/T/torrents682922042/itsworking.gif.torrent
[stage-6] Running ./your_bittorrent.sh info /var/folders/08/v_mzt9816270xbqv5t3xgzyr0000gn/T/torrents4096000505/itsworking.gif.torrent
[your_program] Tracker URL: http://bittorrent-test-tracker.codecrafters.io/announce
[your_program] Length: 2549700
[your_program] Info Hash: 70edcac2611a8829ebf467a6849f5d8408d9d8f4
Expand All @@ -59,7 +59,7 @@ Debug = true
[your_program] 272a8ff8fc865b053d974a78681414b38077d7b1
[your_program] b07128d3a6018062bfe779db96d3a93c05fb81d4
[your_program] 7affc94f0985b985eb888a36ec92652821a21be4
[stage-6] Running ./your_bittorrent.sh info /var/folders/08/v_mzt9816270xbqv5t3xgzyr0000gn/T/torrents682922042/congratulations.gif.torrent
[stage-6] Running ./your_bittorrent.sh info /var/folders/08/v_mzt9816270xbqv5t3xgzyr0000gn/T/torrents4096000505/congratulations.gif.torrent
[your_program] Tracker URL: http://bittorrent-test-tracker.codecrafters.io/announce
[your_program] Length: 820892
[your_program] Info Hash: 1cad4a486798d952614c394eb15e75bec587fd08
Expand All @@ -69,7 +69,7 @@ Debug = true
[your_program] 69f885b3988a52ffb03591985402b6d5285940ab
[your_program] 76869e6c9c1f101f94f39de153e468be6a638f4f
[your_program] bded68d02de011a2b687f75b5833f46cce8e3e9c
[stage-6] Running ./your_bittorrent.sh info /var/folders/08/v_mzt9816270xbqv5t3xgzyr0000gn/T/torrents682922042/codercat.gif.torrent
[stage-6] Running ./your_bittorrent.sh info /var/folders/08/v_mzt9816270xbqv5t3xgzyr0000gn/T/torrents4096000505/codercat.gif.torrent
[your_program] Tracker URL: http://bittorrent-test-tracker.codecrafters.io/announce
[your_program] Length: 2994120
[your_program] Info Hash: c77829d2a77d6516f88cd7a3de1a26abcbfab0db
Expand All @@ -90,7 +90,7 @@ Debug = true
[stage-6] Test passed.

[stage-5] Running tests for Stage #5: ow9
[stage-5] Running ./your_bittorrent.sh info /var/folders/08/v_mzt9816270xbqv5t3xgzyr0000gn/T/torrents820544448/codercat.gif.torrent
[stage-5] Running ./your_bittorrent.sh info /var/folders/08/v_mzt9816270xbqv5t3xgzyr0000gn/T/torrents2618363111/codercat.gif.torrent
[your_program] Tracker URL: http://bittorrent-test-tracker.codecrafters.io/announce
[your_program] Length: 2994120
[your_program] Info Hash: c77829d2a77d6516f88cd7a3de1a26abcbfab0db
Expand Down

0 comments on commit 67ab4ac

Please sign in to comment.