MCPcopy Create free account
hub / github.com/aria2/aria2 / testDoReceivedAction

Method testDoReceivedAction

test/UTMetadataDataExtensionMessageTest.cc:66–115  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

64}
65
66void UTMetadataDataExtensionMessageTest::testDoReceivedAction()
67{
68 auto diskAdaptor = std::make_shared<DirectDiskAdaptor>();
69 ByteArrayDiskWriter* diskWriter;
70 {
71 auto dw = make_unique<ByteArrayDiskWriter>();
72 diskWriter = dw.get();
73 diskAdaptor->setDiskWriter(std::move(dw));
74 }
75 auto pieceStorage = make_unique<MockPieceStorage>();
76 pieceStorage->setDiskAdaptor(diskAdaptor);
77 auto tracker = make_unique<UTMetadataRequestTracker>();
78 auto dctx = make_unique<DownloadContext>();
79
80 std::string piece0 = std::string(METADATA_PIECE_SIZE, '0');
81 std::string piece1 = std::string(METADATA_PIECE_SIZE, '1');
82 std::string metadata = piece0 + piece1;
83
84 unsigned char infoHash[INFO_HASH_LENGTH];
85 message_digest::digest(infoHash, INFO_HASH_LENGTH,
86 MessageDigest::sha1().get(), metadata.data(),
87 metadata.size());
88 {
89 auto attrs = make_unique<TorrentAttribute>();
90 attrs->infoHash = std::string(&infoHash[0], &infoHash[20]);
91 dctx->setAttribute(CTX_ATTR_BT, std::move(attrs));
92 }
93 UTMetadataDataExtensionMessage m(1);
94 m.setPieceStorage(pieceStorage.get());
95 m.setUTMetadataRequestTracker(tracker.get());
96 m.setDownloadContext(dctx.get());
97
98 m.setIndex(1);
99 m.setData(piece1);
100
101 tracker->add(1);
102 m.doReceivedAction();
103 CPPUNIT_ASSERT(!tracker->tracks(1));
104
105 pieceStorage->setDownloadFinished(true);
106 // If piece is not tracked, it is ignored.
107 m.setIndex(0);
108 m.setData(piece0);
109 m.doReceivedAction();
110
111 tracker->add(0);
112 m.doReceivedAction();
113
114 CPPUNIT_ASSERT_EQUAL(metadata, diskWriter->getString());
115}
116
117} // namespace aria2

Callers

nothing calls this directly

Calls 15

digestFunction · 0.85
setDiskAdaptorMethod · 0.80
dataMethod · 0.80
setAttributeMethod · 0.80
tracksMethod · 0.80
setDownloadFinishedMethod · 0.80
getStringMethod · 0.80
sha1Function · 0.50
getMethod · 0.45
setDiskWriterMethod · 0.45
sizeMethod · 0.45
setPieceStorageMethod · 0.45

Tested by

no test coverage detected