22
33#include <assert.h>
44#include <unistd.h>
5+ #include <poll.h>
56#include <sys/types.h>
67#include <sys/socket.h>
78
@@ -21,6 +22,14 @@ const char *store_socket_name = "/tmp/store12345";
2122const char * manager_socket_name = "/tmp/manager12345" ;
2223object_id oid ;
2324
25+ void wait_for_pollin (int fd ) {
26+ struct pollfd poll_list [1 ];
27+ poll_list [0 ].fd = fd ;
28+ poll_list [0 ].events = POLLIN ;
29+ int retval = poll (poll_list , (unsigned long ) 1 , -1 );
30+ CHECK (retval > 0 );
31+ }
32+
2433int test_done_handler (event_loop * loop , timer_id id , void * context ) {
2534 event_loop_stop (loop );
2635 return AE_NOMORE ;
@@ -59,6 +68,7 @@ plasma_mock *init_plasma_mock(int port, plasma_mock *remote_mock) {
5968 if (remote_mock != NULL ) {
6069 mock -> write_conn =
6170 get_manager_connection (remote_mock -> state , manager_addr , port );
71+ wait_for_pollin (mock -> manager_remote_fd );
6272 mock -> read_conn = new_client_connection (mock -> loop , mock -> manager_remote_fd ,
6373 mock -> state , 0 );
6474 } else {
@@ -68,6 +78,7 @@ plasma_mock *init_plasma_mock(int port, plasma_mock *remote_mock) {
6878 /* Connect a new client to the local plasma manager and mock a request to an
6979 * object. */
7080 mock -> plasma_conn = plasma_connect (store_socket_name , manager_socket_name );
81+ wait_for_pollin (mock -> manager_local_fd );
7182 mock -> client_conn =
7283 new_client_connection (mock -> loop , mock -> manager_local_fd , mock -> state , 0 );
7384 return mock ;
@@ -229,6 +240,9 @@ TEST read_write_object_chunk_test(void) {
229240 * - Check that the data matches.
230241 */
231242 write_object_chunk (remote_mock -> write_conn , & remote_buf );
243+ /* Wait until the data is ready to be read. */
244+ wait_for_pollin (get_client_sock (remote_mock -> read_conn ));
245+ /* Read the data. */
232246 int done = read_object_chunk (remote_mock -> read_conn , & local_buf );
233247 ASSERT (done );
234248 ASSERT_EQ (memcmp (remote_buf .data , local_buf .data , data_size ), 0 );
0 commit comments