riemann_client_t * SYMVER(riemann_client_create) (riemann_client_type_t type, const char *hostname, int port, ...) { riemann_client_t *client; int e; va_list ap; client = riemann_client_new (); va_start (ap, port); e = riemann_client_connect_va (client, type, hostname, port, ap); if (e != 0) { riemann_client_free (client); va_end (ap); errno = -e; return NULL; } va_end (ap); return client; }
END_TEST START_TEST (test_riemann_simple_communicate) { riemann_client_t *client, *dummy_client; riemann_message_t *message, *response; client = riemann_client_create (RIEMANN_CLIENT_TCP, "127.0.0.1", 5555); message = riemann_message_create_with_events (riemann_event_create (RIEMANN_EVENT_FIELD_HOST, "localhost", RIEMANN_EVENT_FIELD_SERVICE, "test_riemann_simple_communicate", RIEMANN_EVENT_FIELD_STATE, "ok", RIEMANN_EVENT_FIELD_NONE), NULL); ck_assert (riemann_communicate (NULL, NULL) == NULL); ck_assert_errno (-errno, ENOTCONN); ck_assert (riemann_communicate (client, NULL) == NULL); ck_assert_errno (-errno, EINVAL); ck_assert (riemann_communicate (NULL, message) == NULL); ck_assert_errno (-errno, ENOTCONN); message = riemann_message_create_with_events (riemann_event_create (RIEMANN_EVENT_FIELD_HOST, "localhost", RIEMANN_EVENT_FIELD_SERVICE, "test_riemann_simple_communicate", RIEMANN_EVENT_FIELD_STATE, "ok", RIEMANN_EVENT_FIELD_NONE), NULL); dummy_client = riemann_client_new (); ck_assert (riemann_communicate (dummy_client, message) == NULL); ck_assert_errno (-errno, ENOTCONN); riemann_client_free (dummy_client); message = riemann_message_create_with_events (riemann_event_create (RIEMANN_EVENT_FIELD_HOST, "localhost", RIEMANN_EVENT_FIELD_SERVICE, "test_riemann_simple_communicate", RIEMANN_EVENT_FIELD_STATE, "ok", RIEMANN_EVENT_FIELD_NONE), NULL); response = riemann_communicate (client, message); ck_assert (response != NULL); ck_assert_int_eq (response->ok, 1); riemann_message_free (response); response = riemann_communicate (client, riemann_message_create_with_query (riemann_query_new ("true"))); ck_assert (response != NULL); ck_assert_int_eq (response->ok, 1); ck_assert (response->n_events > 0); riemann_message_free (response); riemann_client_disconnect (client); riemann_client_connect (client, RIEMANN_CLIENT_UDP, "127.0.0.1", 5555); message = riemann_message_create_with_events (riemann_event_create (RIEMANN_EVENT_FIELD_HOST, "localhost", RIEMANN_EVENT_FIELD_SERVICE, "test_riemann_simple_communicate", RIEMANN_EVENT_FIELD_STATE, "ok", RIEMANN_EVENT_FIELD_NONE), NULL); response = riemann_communicate (client, message); ck_assert (response != NULL); ck_assert_int_eq (response->ok, 1); riemann_message_free (response); riemann_client_disconnect (client); riemann_client_connect (client, RIEMANN_CLIENT_TCP, "127.0.0.1", 5555); message = riemann_message_create_with_events (riemann_event_create (RIEMANN_EVENT_FIELD_HOST, "localhost", RIEMANN_EVENT_FIELD_SERVICE, "test_riemann_simple_communicate #2", RIEMANN_EVENT_FIELD_STATE, "ok", RIEMANN_EVENT_FIELD_NONE), NULL); riemann_message_set_query (message, riemann_query_new ("true")); response = riemann_communicate (client, message); ck_assert (response != NULL); ck_assert_int_eq (response->ok, 1); ck_assert (response->n_events > 0); riemann_message_free (response); riemann_client_disconnect (client); riemann_client_connect (client, RIEMANN_CLIENT_UDP, "127.0.0.1", 5555); message = riemann_message_create_with_events (riemann_event_create (RIEMANN_EVENT_FIELD_HOST, "localhost", RIEMANN_EVENT_FIELD_SERVICE, "test_riemann_simple_communicate #2", RIEMANN_EVENT_FIELD_STATE, "ok", RIEMANN_EVENT_FIELD_NONE), NULL); riemann_message_set_query (message, riemann_query_new ("true")); response = riemann_communicate (client, message); ck_assert (response != NULL); ck_assert_int_eq (response->ok, 1); ck_assert (response->n_events == 0); riemann_message_free (response); riemann_client_disconnect (client); riemann_client_free (client); }
END_TEST START_TEST (test_riemann_client_connect) { riemann_client_t *client; client = riemann_client_new (); ck_assert_errno (riemann_client_connect (NULL, RIEMANN_CLIENT_TCP, "127.0.0.1", 5555), EINVAL); ck_assert_errno (riemann_client_connect (client, RIEMANN_CLIENT_NONE, "127.0.0.1", 5555), EINVAL); ck_assert_errno (riemann_client_connect (client, RIEMANN_CLIENT_TCP, NULL, 5555), EINVAL); ck_assert_errno (riemann_client_connect (client, RIEMANN_CLIENT_TCP, "127.0.0.1", -1), ERANGE); if (network_tests_enabled ()) { ck_assert_errno (riemann_client_connect (client, RIEMANN_CLIENT_TCP, "127.0.0.1", 5559), ECONNREFUSED); ck_assert (riemann_client_connect (client, RIEMANN_CLIENT_TCP, "127.0.0.1", 5555) == 0); ck_assert_errno (riemann_client_disconnect (client), 0); ck_assert (riemann_client_connect (client, RIEMANN_CLIENT_TCP, "127.0.0.1", 5555, RIEMANN_CLIENT_OPTION_NONE) == 0); ck_assert_errno (riemann_client_disconnect (client), 0); ck_assert_errno (riemann_client_connect (client, RIEMANN_CLIENT_TCP, "non-existent.example.com", 5555), EADDRNOTAVAIL); mock (socket, mock_enosys_int_always_fail); ck_assert_errno (riemann_client_connect (client, RIEMANN_CLIENT_TCP, "127.0.0.1", 5555), ENOSYS); restore (socket); /** TLS tests **/ #if HAVE_GNUTLS ck_assert_errno (riemann_client_connect (client, RIEMANN_CLIENT_TLS, "127.0.0.1", 5554, RIEMANN_CLIENT_OPTION_NONE), EINVAL); ck_assert_errno (riemann_client_connect (client, RIEMANN_CLIENT_TLS, "127.0.0.1", 5554, 256, RIEMANN_CLIENT_OPTION_NONE), EINVAL); ck_assert_errno (riemann_client_connect (client, RIEMANN_CLIENT_TLS, "127.0.0.1", 5554, RIEMANN_CLIENT_OPTION_TLS_CA_FILE, "tests/data/cacert.pem", RIEMANN_CLIENT_OPTION_TLS_CERT_FILE, "tests/data/client.crt", RIEMANN_CLIENT_OPTION_TLS_KEY_FILE, "tests/data/client.key", RIEMANN_CLIENT_OPTION_NONE), 0); riemann_client_disconnect (client); ck_assert_errno (riemann_client_connect (client, RIEMANN_CLIENT_TLS, "127.0.0.1", 5554, RIEMANN_CLIENT_OPTION_TLS_CA_FILE, "tests/data/cacert-invalid.pem", RIEMANN_CLIENT_OPTION_TLS_CERT_FILE, "tests/data/client.crt", RIEMANN_CLIENT_OPTION_TLS_KEY_FILE, "tests/data/client.key", RIEMANN_CLIENT_OPTION_NONE), EPROTO); ck_assert_errno (riemann_client_connect (client, RIEMANN_CLIENT_TLS, "127.0.0.1", 5555, RIEMANN_CLIENT_OPTION_TLS_CA_FILE, "tests/data/cacert.pem", RIEMANN_CLIENT_OPTION_TLS_CERT_FILE, "tests/data/client.crt", RIEMANN_CLIENT_OPTION_TLS_KEY_FILE, "tests/data/client.key", RIEMANN_CLIENT_OPTION_TLS_HANDSHAKE_TIMEOUT, 1000, RIEMANN_CLIENT_OPTION_NONE), EPROTO); #endif } ck_assert (client != NULL); riemann_client_free (client); }