Skip to content

Commit 834181b

Browse files
committed
Use a condition variable instead of a sleep
1 parent cfa38ca commit 834181b

File tree

1 file changed

+36
-6
lines changed

1 file changed

+36
-6
lines changed

tests/test_reverse_interface.cpp

Lines changed: 36 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,36 @@
3232
#include <ur_client_library/control/reverse_interface.h>
3333
#include <ur_client_library/comm/tcp_socket.h>
3434
#include <ur_client_library/exceptions.h>
35+
#include "ur_client_library/log.h"
3536

3637
using namespace urcl;
38+
std::mutex g_connection_mutex;
39+
std::condition_variable g_connection_condition;
40+
41+
class TestableReverseInterface : public control::ReverseInterface
42+
{
43+
public:
44+
TestableReverseInterface(const control::ReverseInterfaceConfig& config) : control::ReverseInterface(config)
45+
{
46+
}
47+
48+
virtual void connectionCallback(const socket_t filedescriptor)
49+
{
50+
control::ReverseInterface::connectionCallback(filedescriptor);
51+
connected = true;
52+
}
53+
54+
virtual void disconnectionCallback(const socket_t filedescriptor)
55+
{
56+
URCL_LOG_DEBUG("There are %zu disconnection callbacks registered.", disconnect_callbacks_.size());
57+
control::ReverseInterface::disconnectionCallback(filedescriptor);
58+
connected = false;
59+
std::lock_guard<std::mutex> lk(g_connection_mutex);
60+
g_connection_condition.notify_one();
61+
}
62+
63+
std::atomic<bool> connected = false;
64+
};
3765

3866
class ReverseIntefaceTest : public ::testing::Test
3967
{
@@ -153,7 +181,7 @@ class ReverseIntefaceTest : public ::testing::Test
153181
control::ReverseInterfaceConfig config;
154182
config.port = 50001;
155183
config.handle_program_state = std::bind(&ReverseIntefaceTest::handleProgramState, this, std::placeholders::_1);
156-
reverse_interface_.reset(new control::ReverseInterface(config));
184+
reverse_interface_.reset(new TestableReverseInterface(config));
157185
client_.reset(new Client(50001));
158186
}
159187

@@ -187,7 +215,7 @@ class ReverseIntefaceTest : public ::testing::Test
187215
return false;
188216
}
189217

190-
std::unique_ptr<control::ReverseInterface> reverse_interface_;
218+
std::unique_ptr<TestableReverseInterface> reverse_interface_;
191219
std::unique_ptr<Client> client_;
192220

193221
private:
@@ -473,7 +501,8 @@ TEST_F(ReverseIntefaceTest, disconnected_callbacks_are_called)
473501
// Close the client connection
474502
client_->close();
475503
EXPECT_TRUE(waitForProgramState(1000, false));
476-
sleep(1);
504+
std::unique_lock<std::mutex> lk(g_connection_mutex);
505+
g_connection_condition.wait_for(lk, std::chrono::seconds(1), [&]() { return !reverse_interface_->connected.load(); });
477506
EXPECT_TRUE(disconnect_called_1);
478507
EXPECT_TRUE(disconnect_called_2);
479508

@@ -484,7 +513,7 @@ TEST_F(ReverseIntefaceTest, disconnected_callbacks_are_called)
484513
EXPECT_TRUE(waitForProgramState(1000, true));
485514
reverse_interface_->unregisterDisconnectionCallback(disconnection_callback_id_1);
486515
client_->close();
487-
sleep(1);
516+
g_connection_condition.wait_for(lk, std::chrono::seconds(1), [&]() { return !reverse_interface_->connected.load(); });
488517
EXPECT_TRUE(waitForProgramState(1000, false));
489518
EXPECT_FALSE(disconnect_called_1);
490519
EXPECT_TRUE(disconnect_called_2);
@@ -496,7 +525,7 @@ TEST_F(ReverseIntefaceTest, disconnected_callbacks_are_called)
496525
EXPECT_TRUE(waitForProgramState(1000, true));
497526
reverse_interface_->unregisterDisconnectionCallback(disconnection_callback_id_2);
498527
client_->close();
499-
sleep(1);
528+
g_connection_condition.wait_for(lk, std::chrono::seconds(1), [&]() { return !reverse_interface_->connected.load(); });
500529
EXPECT_TRUE(waitForProgramState(1000, false));
501530
EXPECT_FALSE(disconnect_called_1);
502531
EXPECT_FALSE(disconnect_called_2);
@@ -505,6 +534,7 @@ TEST_F(ReverseIntefaceTest, disconnected_callbacks_are_called)
505534
int main(int argc, char* argv[])
506535
{
507536
::testing::InitGoogleTest(&argc, argv);
537+
urcl::setLogLevel(LogLevel::INFO);
508538

509539
return RUN_ALL_TESTS();
510-
}
540+
}

0 commit comments

Comments
 (0)