diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2016-01-19 11:24:57 +0900 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2016-01-19 11:24:57 +0900 |
| commit | 8b93b12488d12820470e14f0ebbb656728f7df83 (patch) | |
| tree | 0d1f76f36d1606ea94b623e222430b7d7fe862e7 /test | |
| parent | 7b2e797fdfa27794b0f4a96bba0c42b5e67a6050 (diff) | |
Reduce delay in tracker request
We eliminated 1 second delay between completion of name resolution for
tracker request and time when it is actually issued. We also elimited
1 second delay after last torrent download exists and it is told to
DHTInteractionCommand.
Diffstat (limited to 'test')
| -rw-r--r-- | test/UDPTrackerClientTest.cc | 39 |
1 files changed, 32 insertions, 7 deletions
diff --git a/test/UDPTrackerClientTest.cc b/test/UDPTrackerClientTest.cc index 948ed2d4..fc2f34e6 100644 --- a/test/UDPTrackerClientTest.cc +++ b/test/UDPTrackerClientTest.cc @@ -156,6 +156,7 @@ void UDPTrackerClientTest::testConnectFollowedByAnnounce() std::string remoteAddr; uint16_t remotePort; Timer now; + std::shared_ptr<UDPTrackerRequest> recvReq; std::shared_ptr<UDPTrackerRequest> req1( createAnnounce("192.168.0.1", 6991, 0)); @@ -190,8 +191,12 @@ void UDPTrackerClientTest::testConnectFollowedByAnnounce() uint64_t connectionId = 12345; rv = createConnectReply(data, sizeof(data), connectionId, transactionId); - rv = tr.receiveReply(data, rv, req1->remoteAddr, req1->remotePort, now); + rv = tr.receiveReply(recvReq, data, rv, req1->remoteAddr, req1->remotePort, + now); CPPUNIT_ASSERT_EQUAL(0, (int)rv); + if (rv == 0) { + CPPUNIT_ASSERT_EQUAL((int32_t)UDPT_ACT_CONNECT, recvReq->action); + } // Now 2 requests get back to pending CPPUNIT_ASSERT_EQUAL((size_t)2, tr.getPendingRequests().size()); @@ -229,15 +234,23 @@ void UDPTrackerClientTest::testConnectFollowedByAnnounce() // Reply for req2 rv = createAnnounceReply(data, sizeof(data), transactionId2); - rv = tr.receiveReply(data, rv, req2->remoteAddr, req2->remotePort, now); + rv = tr.receiveReply(recvReq, data, rv, req2->remoteAddr, req2->remotePort, + now); CPPUNIT_ASSERT_EQUAL(0, (int)rv); + if (rv == 0) { + CPPUNIT_ASSERT_EQUAL((int32_t)UDPT_ACT_ANNOUNCE, recvReq->action); + } CPPUNIT_ASSERT_EQUAL((int)UDPT_STA_COMPLETE, req2->state); CPPUNIT_ASSERT_EQUAL((int)UDPT_ERR_SUCCESS, req2->error); // Reply for req1 rv = createAnnounceReply(data, sizeof(data), transactionId1, 2); - rv = tr.receiveReply(data, rv, req1->remoteAddr, req1->remotePort, now); + rv = tr.receiveReply(recvReq, data, rv, req1->remoteAddr, req1->remotePort, + now); CPPUNIT_ASSERT_EQUAL(0, (int)rv); + if (rv == 0) { + CPPUNIT_ASSERT_EQUAL((int32_t)UDPT_ACT_ANNOUNCE, recvReq->action); + } CPPUNIT_ASSERT_EQUAL((int)UDPT_STA_COMPLETE, req1->state); CPPUNIT_ASSERT_EQUAL((int)UDPT_ERR_SUCCESS, req1->error); CPPUNIT_ASSERT_EQUAL((size_t)2, req1->reply->peers.size()); @@ -280,6 +293,8 @@ void UDPTrackerClientTest::testRequestFailure() std::string remoteAddr; uint16_t remotePort; Timer now; + std::shared_ptr<UDPTrackerRequest> recvReq; + { std::shared_ptr<UDPTrackerRequest> req1( createAnnounce("192.168.0.1", 6991, 0)); @@ -315,7 +330,12 @@ void UDPTrackerClientTest::testRequestFailure() tr.requestSent(now); rv = createErrorReply(data, sizeof(data), transactionId, "error"); - rv = tr.receiveReply(data, rv, req1->remoteAddr, req1->remotePort, now); + rv = tr.receiveReply(recvReq, data, rv, req1->remoteAddr, req1->remotePort, + now); + CPPUNIT_ASSERT_EQUAL((ssize_t)0, rv); + if (rv == 0) { + CPPUNIT_ASSERT_EQUAL((int32_t)UDPT_ACT_CONNECT, recvReq->action); + } CPPUNIT_ASSERT_EQUAL((int)UDPT_STA_COMPLETE, req1->state); CPPUNIT_ASSERT_EQUAL((int)UDPT_ERR_TRACKER, req1->error); CPPUNIT_ASSERT_EQUAL((int)UDPT_STA_COMPLETE, req2->state); @@ -338,7 +358,8 @@ void UDPTrackerClientTest::testRequestFailure() uint64_t connectionId = 12345; rv = createConnectReply(data, sizeof(data), connectionId, transactionId); - rv = tr.receiveReply(data, rv, req1->remoteAddr, req1->remotePort, now); + rv = tr.receiveReply(recvReq, data, rv, req1->remoteAddr, req1->remotePort, + now); CPPUNIT_ASSERT_EQUAL(0, (int)rv); rv = tr.createRequest(data, sizeof(data), remoteAddr, remotePort, now); @@ -348,7 +369,8 @@ void UDPTrackerClientTest::testRequestFailure() tr.requestSent(now); rv = createErrorReply(data, sizeof(data), transactionId, "announce error"); - rv = tr.receiveReply(data, rv, req1->remoteAddr, req1->remotePort, now); + rv = tr.receiveReply(recvReq, data, rv, req1->remoteAddr, req1->remotePort, + now); CPPUNIT_ASSERT_EQUAL((int)UDPT_STA_COMPLETE, req1->state); CPPUNIT_ASSERT_EQUAL((int)UDPT_ERR_TRACKER, req1->error); CPPUNIT_ASSERT(tr.getConnectRequests().empty()); @@ -365,6 +387,8 @@ void UDPTrackerClientTest::testTimeout() uint16_t remotePort; Timer now; UDPTrackerClient tr; + std::shared_ptr<UDPTrackerRequest> recvReq; + { std::shared_ptr<UDPTrackerRequest> req1( createAnnounce("192.168.0.1", 6991, 0)); @@ -414,7 +438,8 @@ void UDPTrackerClientTest::testTimeout() uint64_t connectionId = 12345; rv = createConnectReply(data, sizeof(data), connectionId, transactionId); - rv = tr.receiveReply(data, rv, req1->remoteAddr, req1->remotePort, now); + rv = tr.receiveReply(recvReq, data, rv, req1->remoteAddr, req1->remotePort, + now); CPPUNIT_ASSERT_EQUAL(0, (int)rv); rv = tr.createRequest(data, sizeof(data), remoteAddr, remotePort, now); |
