Skip to content

Commit abb6857

Browse files
authored
Merge pull request #37 from JoyStream/development
v0.3.2
2 parents 63837e3 + 9e317f7 commit abb6857

File tree

5 files changed

+23
-10
lines changed

5 files changed

+23
-10
lines changed

conan_package/base.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
class ProtocolSessionBase(ConanFile):
55
name = "ProtocolSession"
6-
version = "0.3.1"
6+
version = "0.3.2"
77
license = "(c) JoyStream Inc. 2016-2017"
88
url = "https://github.com/JoyStream/protocol_session-cpp.git"
99
repo_ssh_url = "git@github.com:JoyStream/protocol_session-cpp.git"

sources/include/protocol_session/Status.hpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ namespace status {
3131
const protocol_statemachine::AnnouncedModeAndTerms & announcedModeAndTermsFromPeer,
3232
const paymentchannel::Payor & payor,
3333
const paymentchannel::Payee & payee,
34-
const int32_t latency)
34+
const boost::optional<std::chrono::milliseconds> latency)
3535
: innerStateTypeIndex(innerStateTypeIndex)
3636
, announcedModeAndTermsFromPeer(announcedModeAndTermsFromPeer)
3737
, payor(payor)
@@ -56,8 +56,8 @@ namespace status {
5656
// Payee side of payment channel interaction
5757
paymentchannel::Payee payee;
5858

59-
// Number of ticks from underlying clock used to measure how long it took to send test payload
60-
int32_t latency;
59+
// Time it took to successfully deliver test payload
60+
boost::optional<std::chrono::milliseconds> latency;
6161

6262
};
6363

sources/include/protocol_session/detail/Connection.cpp

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -155,12 +155,11 @@ namespace detail {
155155
}
156156

157157
template <class ConnectionIdType>
158-
int32_t Connection<ConnectionIdType>::timeToDeliverTestPayload() const {
159-
if (!hasCompletedSpeedTest()) return -1;
158+
boost::optional<std::chrono::milliseconds>
159+
Connection<ConnectionIdType>::timeToDeliverTestPayload() const {
160+
if (!hasCompletedSpeedTest()) return boost::none;
160161

161-
auto deliveryTime = (*_completedSpeedTestAt - *_startedSpeedTestAt);
162-
163-
return deliveryTime.count();
162+
return std::chrono::duration_cast<std::chrono::milliseconds>(*_completedSpeedTestAt - *_startedSpeedTestAt);
164163
}
165164

166165
template <class ConnectionIdType>

sources/include/protocol_session/detail/Connection.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ namespace detail {
9292
bool hasStartedSpeedTest() const;
9393
bool hasCompletedSpeedTest() const;
9494
bool speedTestCompletedInLessThan(std::chrono::seconds);
95-
int32_t timeToDeliverTestPayload() const;
95+
boost::optional<std::chrono::milliseconds> timeToDeliverTestPayload() const;
9696
void abandonSpeedTest();
9797

9898
private:

sources/test/test_main.cpp

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -714,9 +714,11 @@ TEST_F(SessionTest, seller_slow_to_respond_to_test_payload)
714714

715715
SellerPeer first(0, protocol_wire::SellerTerms(22, 134, 10, 88, 32),5634, session->network());
716716
SellerPeer second(1, protocol_wire::SellerTerms(22, 134, 10, 88, 32),5634, session->network());
717+
SellerPeer third(2, protocol_wire::SellerTerms(22, 134, 10, 88, 32),5634, session->network());
717718

718719
assert(buyerTerms.satisfiedBy(first.terms));
719720
assert(buyerTerms.satisfiedBy(second.terms));
721+
assert(buyerTerms.satisfiedBy(third.terms));
720722

721723
toBuyMode(buyerTerms, TorrentPieceInformation());
722724

@@ -729,6 +731,9 @@ TEST_F(SessionTest, seller_slow_to_respond_to_test_payload)
729731
// seller responds in time
730732
timePassed+= std::chrono::seconds(5);
731733
respondToSpeedTestRequest(first, expectedPayloadSize);
734+
auto pFirstConnectionStatus = session->connectionStatus(first.id);
735+
auto latencyFirst = *pFirstConnectionStatus.machine.latency;
736+
EXPECT_EQ(latencyFirst.count(), 5 * 1000);
732737

733738
assertSellerInvited(first);
734739

@@ -741,6 +746,15 @@ TEST_F(SessionTest, seller_slow_to_respond_to_test_payload)
741746
// The seller should have been removed for being slow
742747
assertConnectionRemoved(second.id, DisconnectCause::seller_failed_speed_test);
743748

749+
spy->reset();
750+
751+
// Peer doesn't respond to speed test payload
752+
add(third);
753+
754+
auto pThirdConnectionStatus = session->connectionStatus(third.id);
755+
756+
EXPECT_EQ(pThirdConnectionStatus.machine.latency, boost::none);
757+
744758
cleanup();
745759
}
746760

0 commit comments

Comments
 (0)