Browse Source

Fix TCPServer "Should disconnect client" test

"Should disconnect client" test was failing randomly on Mac CI tests, so
this PR is making it more reliable reading on the closed client instead of
writing to it
Pablo Andres Fuente 9 months ago
parent
commit
df2c2ca3c3
1 changed files with 6 additions and 3 deletions
  1. 6 3
      tests/core/io/test_tcp_server.h

+ 6 - 3
tests/core/io/test_tcp_server.h

@@ -85,8 +85,8 @@ Error poll(Ref<StreamPeerTCP> p_client) {
 	const uint64_t time = OS::get_singleton()->get_ticks_usec();
 	const uint64_t time = OS::get_singleton()->get_ticks_usec();
 	Error err = p_client->poll();
 	Error err = p_client->poll();
 	while (err != Error::OK && (OS::get_singleton()->get_ticks_usec() - time) < MAX_WAIT_USEC) {
 	while (err != Error::OK && (OS::get_singleton()->get_ticks_usec() - time) < MAX_WAIT_USEC) {
-		err = p_client->poll();
 		OS::get_singleton()->delay_usec(SLEEP_DURATION);
 		OS::get_singleton()->delay_usec(SLEEP_DURATION);
+		err = p_client->poll();
 	}
 	}
 	return err;
 	return err;
 }
 }
@@ -183,8 +183,8 @@ TEST_CASE("[TCPServer] When stopped shouldn't accept new connections") {
 	time = OS::get_singleton()->get_ticks_usec();
 	time = OS::get_singleton()->get_ticks_usec();
 	Error err = new_client->poll();
 	Error err = new_client->poll();
 	while (err != Error::OK && err != Error::ERR_CONNECTION_ERROR && (OS::get_singleton()->get_ticks_usec() - time) < MAX_WAIT_USEC) {
 	while (err != Error::OK && err != Error::ERR_CONNECTION_ERROR && (OS::get_singleton()->get_ticks_usec() - time) < MAX_WAIT_USEC) {
-		err = new_client->poll();
 		OS::get_singleton()->delay_usec(SLEEP_DURATION);
 		OS::get_singleton()->delay_usec(SLEEP_DURATION);
+		err = new_client->poll();
 	}
 	}
 	REQUIRE((err == Error::OK || err == Error::ERR_CONNECTION_ERROR));
 	REQUIRE((err == Error::OK || err == Error::ERR_CONNECTION_ERROR));
 	StreamPeerTCP::Status status = new_client->get_status();
 	StreamPeerTCP::Status status = new_client->get_status();
@@ -210,7 +210,10 @@ TEST_CASE("[TCPServer] Should disconnect client") {
 	server->stop();
 	server->stop();
 	CHECK_FALSE(server->is_listening());
 	CHECK_FALSE(server->is_listening());
 
 
-	client->put_string(hello_world);
+	// Reading for a closed connection will print an error.
+	ERR_PRINT_OFF;
+	CHECK_EQ(client->get_string(), String());
+	ERR_PRINT_ON;
 	REQUIRE_EQ(poll(client), Error::OK);
 	REQUIRE_EQ(poll(client), Error::OK);
 	CHECK_EQ(client->get_status(), StreamPeerTCP::STATUS_NONE);
 	CHECK_EQ(client->get_status(), StreamPeerTCP::STATUS_NONE);
 }
 }