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

Wait until data is ready to read in manager_tests. #13

Merged
merged 2 commits into from
Oct 30, 2016
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
24 changes: 11 additions & 13 deletions src/common/common.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
#include <string.h>
#include <errno.h>
#include <inttypes.h>
#include <execinfo.h>

#ifndef RAY_COMMON_DEBUG
#define LOG_DEBUG(M, ...)
Expand All @@ -21,21 +22,18 @@
#define LOG_INFO(M, ...) \
fprintf(stderr, "[INFO] (%s:%d) " M "\n", __FILE__, __LINE__, ##__VA_ARGS__)

#define CHECK(COND) \
do { \
if (!(COND)) { \
LOG_ERR("Check failure: %s", #COND); \
exit(-1); \
} \
#define CHECKM(COND, M, ...) \
do { \
if (!(COND)) { \
LOG_ERR("Check failure: %s \n" M, #COND, ##__VA_ARGS__); \
void *buffer[255]; \
const int calls = backtrace(buffer, sizeof(buffer) / sizeof(void *)); \
backtrace_symbols_fd(buffer, calls, 1); \
exit(-1); \
} \
} while (0);

#define CHECKM(COND, M, ...) \
do { \
if (!(COND)) { \
LOG_ERR("Check failure: %s \n" M, #COND, ##__VA_ARGS__); \
exit(-1); \
} \
} while (0);
#define CHECK(COND) CHECKM(COND, "")

/** This macro indicates that this pointer owns the data it is pointing to
* and is responsible for freeing it. */
Expand Down
14 changes: 14 additions & 0 deletions src/plasma/test/manager_tests.c
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

#include <assert.h>
#include <unistd.h>
#include <poll.h>
#include <sys/types.h>
#include <sys/socket.h>

Expand All @@ -21,6 +22,14 @@ const char *store_socket_name = "/tmp/store12345";
const char *manager_socket_name = "/tmp/manager12345";
object_id oid;

void wait_for_pollin(int fd) {
struct pollfd poll_list[1];
poll_list[0].fd = fd;
poll_list[0].events = POLLIN;
int retval = poll(poll_list, (unsigned long) 1, -1);
CHECK(retval > 0);
}

int test_done_handler(event_loop *loop, timer_id id, void *context) {
event_loop_stop(loop);
return AE_NOMORE;
Expand Down Expand Up @@ -59,6 +68,7 @@ plasma_mock *init_plasma_mock(int port, plasma_mock *remote_mock) {
if (remote_mock != NULL) {
mock->write_conn =
get_manager_connection(remote_mock->state, manager_addr, port);
wait_for_pollin(mock->manager_remote_fd);
mock->read_conn = new_client_connection(mock->loop, mock->manager_remote_fd,
mock->state, 0);
} else {
Expand All @@ -68,6 +78,7 @@ plasma_mock *init_plasma_mock(int port, plasma_mock *remote_mock) {
/* Connect a new client to the local plasma manager and mock a request to an
* object. */
mock->plasma_conn = plasma_connect(store_socket_name, manager_socket_name);
wait_for_pollin(mock->manager_local_fd);
mock->client_conn =
new_client_connection(mock->loop, mock->manager_local_fd, mock->state, 0);
return mock;
Expand Down Expand Up @@ -228,6 +239,9 @@ TEST read_write_object_chunk_test(void) {
* - Check that the data matches.
*/
write_object_chunk(remote_mock->write_conn, &remote_buf);
/* Wait until the data is ready to be read. */
wait_for_pollin(get_client_sock(remote_mock->read_conn));
/* Read the data. */
int done = read_object_chunk(remote_mock->read_conn, &local_buf);
ASSERT(done);
ASSERT_EQ(memcmp(remote_buf.data, local_buf.data, data_size), 0);
Expand Down