index 9e9461453cff6204611bcd74192e94569d9ec3f0..77828e6a8c4220d482a1eaaf69c6ec03b142fca0 100644 (file)
unlink(tmp_file);
- conn->cmd = CONNECTION_IDLE;
+ conn->cmd = SDB_CONNECTION_IDLE;
conn->cmd_len = 0;
return conn;
} /* mock_conn_create */
static void
mock_conn_truncate(sdb_conn_t *conn)
{
+ int status;
lseek(conn->fd, 0, SEEK_SET);
- ftruncate(conn->fd, 0);
+ status = ftruncate(conn->fd, 0);
+ fail_unless(status == 0,
+ "INTERNAL ERROR: ftruncate(%d, 0) = %d; expected: 0",
+ conn->fd, status);
} /* mock_conn_truncate */
static int
-mock_unixsock_listener(char *sock_path)
+mock_unixsock_listener(char *socket_path)
{
struct sockaddr_un sa;
- char *filename;
int fd, status;
- filename = tmpnam(sock_path);
- fail_unless(filename != NULL,
- "INTERNAL ERROR: tmpnam() = NULL; expected: a string");
-
fd = socket(AF_UNIX, SOCK_STREAM, 0);
fail_unless(fd >= 0,
"INTERNAL ERROR: socket() = %d; expected: >=0", fd);
memset(&sa, 0, sizeof(sa));
sa.sun_family = AF_UNIX;
- strncpy(sa.sun_path, filename, sizeof(sa.sun_path));
+ strncpy(sa.sun_path, socket_path, sizeof(sa.sun_path));
status = bind(fd, (struct sockaddr *)&sa, sizeof(sa));
fail_unless(status == 0,
ssize_t check, expected;
expected = 2 * sizeof(uint32_t) + strlen("fakeuser");
- check = sdb_connection_send(conn, CONNECTION_STARTUP,
+ check = sdb_connection_send(conn, SDB_CONNECTION_STARTUP,
(uint32_t)strlen("fakeuser"), "fakeuser");
fail_unless(check == expected,
"sdb_connection_send(STARTUP, fakeuser) = %zi; expected: %zi",
START_TEST(test_conn_accept)
{
- char socket_path[L_tmpnam];
+ char socket_path[] = "connection_test_socket.XXXXXX";
int fd, check;
sdb_conn_t *conn;
fail_unless(conn == NULL,
"sdb_connection_accept(-1) = %p; expected: NULL", conn);
- memset(&socket_path, 0, sizeof(socket_path));
+ fd = mkstemp(socket_path);
+ unlink(socket_path);
+ close(fd);
+
fd = mock_unixsock_listener(socket_path);
check = pthread_create(&thr, /* attr = */ NULL, mock_client, socket_path);
fail_unless(check == 0,
const char *err;
} golden_data[] = {
/* code == UINT32_MAX => no data will be sent */
- { UINT32_MAX, NULL, NULL },
- { CONNECTION_IDLE, "fakedata", "Authentication required" },
- { CONNECTION_PING, NULL, "Authentication required" },
- { CONNECTION_STARTUP, "fakeuser", NULL },
- { CONNECTION_PING, NULL, NULL },
- { CONNECTION_IDLE, NULL, "Invalid command 0" },
- { CONNECTION_PING, "fakedata", NULL },
- { CONNECTION_IDLE, NULL, "Invalid command 0" },
+ { UINT32_MAX, NULL, NULL },
+ { SDB_CONNECTION_IDLE, "fakedata", "Authentication required" },
+ { SDB_CONNECTION_PING, NULL, "Authentication required" },
+ { SDB_CONNECTION_STARTUP, "fakeuser", NULL },
+ { SDB_CONNECTION_PING, NULL, NULL },
+ { SDB_CONNECTION_IDLE, NULL, "Invalid command 0" },
+ { SDB_CONNECTION_PING, "fakedata", NULL },
+ { SDB_CONNECTION_IDLE, NULL, "Invalid command 0" },
};
size_t i;
const char *err;
} golden_data[] = {
/* code == UINT32_MAX => this is a follow-up package */
- { CONNECTION_PING, 20, "9876543210", 0, "Authentication required" },
- { UINT32_MAX, -1, "9876543210", 0, "Authentication required" },
- { CONNECTION_PING, 10, "9876543210", 0, "Authentication required" },
- { CONNECTION_IDLE, 10, "9876543210", 0, "Authentication required" },
- { CONNECTION_IDLE, 20, "9876543210", 0, "Authentication required" },
- { UINT32_MAX, -1, "9876543210", 0, "Authentication required" },
- { CONNECTION_STARTUP, -1, NULL, 0, NULL },
- { CONNECTION_PING, 20, "9876543210", 10, NULL },
- { UINT32_MAX, -1, "9876543210", 0, NULL },
- { CONNECTION_IDLE, 20, "9876543210", 0, "Invalid command 0" },
- { UINT32_MAX, -1, "9876543210", 0, "Invalid command 0" },
- { CONNECTION_IDLE, 20, "9876543210", 0, "Invalid command 0" },
- { UINT32_MAX, -1, "9876543210", 0, "Invalid command 0" },
- { CONNECTION_PING, 10, "9876543210", 0, NULL },
- { CONNECTION_PING, 20, "9876543210", 10, NULL },
- { UINT32_MAX, -1, "9876543210", 0, NULL },
+ { SDB_CONNECTION_PING, 20, "9876543210", 0, "Authentication required" },
+ { UINT32_MAX, -1, "9876543210", 0, "Authentication required" },
+ { SDB_CONNECTION_PING, 10, "9876543210", 0, "Authentication required" },
+ { SDB_CONNECTION_IDLE, 10, "9876543210", 0, "Authentication required" },
+ { SDB_CONNECTION_IDLE, 20, "9876543210", 0, "Authentication required" },
+ { UINT32_MAX, -1, "9876543210", 0, "Authentication required" },
+ { SDB_CONNECTION_STARTUP, -1, NULL, 0, NULL },
+ { SDB_CONNECTION_PING, 20, "9876543210", 10, NULL },
+ { UINT32_MAX, -1, "9876543210", 0, NULL },
+ { SDB_CONNECTION_IDLE, 20, "9876543210", 0, "Invalid command 0" },
+ { UINT32_MAX, -1, "9876543210", 0, "Invalid command 0" },
+ { SDB_CONNECTION_IDLE, 20, "9876543210", 0, "Invalid command 0" },
+ { UINT32_MAX, -1, "9876543210", 0, "Invalid command 0" },
+ { SDB_CONNECTION_PING, 10, "9876543210", 0, NULL },
+ { SDB_CONNECTION_PING, 20, "9876543210", 10, NULL },
+ { UINT32_MAX, -1, "9876543210", 0, NULL },
};
size_t i;
mock_conn_truncate(conn);
- if (golden_data[i].code == CONNECTION_STARTUP) {
+ if (golden_data[i].code == SDB_CONNECTION_STARTUP) {
connection_startup(conn);
continue;
}
golden_data[i].buf_len);
}
else {
- fail_unless(conn->cmd == CONNECTION_IDLE,
+ fail_unless(conn->cmd == SDB_CONNECTION_IDLE,
"sdb_connection_read() did not reset command; "
- "got %u; expected: %u", conn->cmd, CONNECTION_IDLE);
+ "got %u; expected: %u", conn->cmd, SDB_CONNECTION_IDLE);
fail_unless(conn->cmd_len == 0,
"sdb_connection_read() did not reset command length; "
"got %u; expected: 0", conn->cmd_len);