diff --git a/internal/stage_helpers.go b/internal/stage_helpers.go index 3916d0d..837f08e 100644 --- a/internal/stage_helpers.go +++ b/internal/stage_helpers.go @@ -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", diff --git a/internal/stage_magnet_helpers.go b/internal/stage_magnet_helpers.go index 386b9be..c5d3af2 100644 --- a/internal/stage_magnet_helpers.go +++ b/internal/stage_magnet_helpers.go @@ -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 { @@ -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{} @@ -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" diff --git a/internal/test_helpers/fixtures/handshake/with_peer_check b/internal/test_helpers/fixtures/handshake/with_peer_check index d49c93b..0b7e8a4 100644 --- a/internal/test_helpers/fixtures/handshake/with_peer_check +++ b/internal/test_helpers/fixtures/handshake/with_peer_check @@ -1,10 +1,10 @@ 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 @@ -12,8 +12,8 @@ Debug = true [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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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