Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Making lossy tests deterministic [5073] #481

Merged
merged 2 commits into from
Apr 12, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion include/fastrtps/transport/TCPTransportInterface.h
Original file line number Diff line number Diff line change
Expand Up @@ -180,7 +180,6 @@ class TCPTransportInterface : public TransportInterface

public:
friend class RTCPMessageManager;
friend class test_RTCPMessageManager;

virtual ~TCPTransportInterface();

Expand Down
61 changes: 0 additions & 61 deletions include/fastrtps/transport/tcp/test_RTCPMessageManager.h

This file was deleted.

24 changes: 19 additions & 5 deletions include/fastrtps/transport/test_UDPv4Transport.h
Original file line number Diff line number Diff line change
Expand Up @@ -48,19 +48,33 @@ class test_UDPv4Transport : public UDPv4Transport
RTPS_DllAPI static uint32_t test_UDPv4Transport_DropLogLength;

private:
uint8_t drop_data_messages_percentage_;

struct PercentageData
{
PercentageData(uint8_t percent)
: percentage(percent)
, accumulator(0)
{
}

uint8_t percentage;
uint8_t accumulator;
};

PercentageData drop_data_messages_percentage_;
bool drop_participant_builtin_topic_data_;
bool drop_publication_builtin_topic_data_;
bool drop_subscription_builtin_topic_data_;
uint8_t drop_data_frag_messages_percentage_;
uint8_t drop_heartbeat_messages_percentage_;
uint8_t drop_ack_nack_messages_percentage_;
PercentageData drop_data_frag_messages_percentage_;
PercentageData drop_heartbeat_messages_percentage_;
PercentageData drop_ack_nack_messages_percentage_;
std::vector<SequenceNumber_t> sequence_number_data_messages_to_drop_;
uint8_t percentage_of_messages_to_drop_;
PercentageData percentage_of_messages_to_drop_;

bool log_drop(const octet* buffer, uint32_t size);
bool packet_should_drop(const octet* send_buffer, uint32_t send_buffer_size);
bool random_chance_drop();
bool should_be_dropped(PercentageData* percentage);
};

} // namespace rtps
Expand Down
1 change: 0 additions & 1 deletion src/cpp/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,6 @@ set(${PROJECT_NAME}_source_files
transport/tcp/TCPControlMessage.cpp
transport/tcp/RTCPMessageManager.cpp
transport/timedevent/TCPKeepAliveEvent.cpp
#transport/tcp/test_RTCPMessageManager.cpp

types/AnnotationDescriptor.cpp
types/AnnotationParameterValue.cpp
Expand Down
80 changes: 0 additions & 80 deletions src/cpp/transport/tcp/test_RTCPMessageManager.cpp

This file was deleted.

23 changes: 17 additions & 6 deletions src/cpp/transport/test_UDPv4Transport.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,6 @@ test_UDPv4Transport::test_UDPv4Transport(const test_UDPv4TransportDescriptor& de
UDPv4Transport::mReceiveBufferSize = descriptor.receiveBufferSize;
test_UDPv4Transport_DropLog.clear();
test_UDPv4Transport_DropLogLength = descriptor.dropLogLength;
srand(static_cast<unsigned>(time(NULL)));
}

test_UDPv4TransportDescriptor::test_UDPv4TransportDescriptor():
Expand Down Expand Up @@ -161,13 +160,13 @@ bool test_UDPv4Transport::packet_should_drop(const octet* send_buffer, uint32_t
(!drop_subscription_builtin_topic_data_ && writer_id == c_EntityId_SEDPSubWriter))
return false;

if(drop_data_messages_percentage_ > (rand()%100))
if(should_be_dropped(&drop_data_messages_percentage_))
return true;

break;

case ACKNACK:
if(drop_ack_nack_messages_percentage_ > (rand()%100))
if(should_be_dropped(&drop_ack_nack_messages_percentage_))
return true;

break;
Expand All @@ -177,13 +176,13 @@ bool test_UDPv4Transport::packet_should_drop(const octet* send_buffer, uint32_t
CDRMessage::readInt32(&cdrMessage, &sequence_number.high);
CDRMessage::readUInt32(&cdrMessage, &sequence_number.low);
cdrMessage.pos = old_pos;
if(drop_heartbeat_messages_percentage_ > (rand()%100))
if(should_be_dropped(&drop_heartbeat_messages_percentage_))
return true;

break;

case DATA_FRAG:
if(drop_data_frag_messages_percentage_ > (rand()%100))
if(should_be_dropped(&drop_data_frag_messages_percentage_))
return true;

break;
Expand Down Expand Up @@ -227,7 +226,19 @@ bool test_UDPv4Transport::log_drop(const octet* buffer, uint32_t size)

bool test_UDPv4Transport::random_chance_drop()
{
return percentage_of_messages_to_drop_ > (rand()%100);
return should_be_dropped(&percentage_of_messages_to_drop_);
}

bool test_UDPv4Transport::should_be_dropped(PercentageData* percent)
{
percent->accumulator += percent->percentage;
if (percent->accumulator >= 100u)
{
percent->accumulator -= 100u;
return true;
}

return false;
}

} // namespace rtps
Expand Down