113 lines
3.0 KiB
C
113 lines
3.0 KiB
C
#include <netdb.h>
|
|
|
|
#include <thrift/c_glib/thrift.h>
|
|
#include <thrift/c_glib/transport/thrift_server_transport.h>
|
|
#include <thrift/c_glib/transport/thrift_server_socket.h>
|
|
|
|
#include "t_test_thrift_test_types.h"
|
|
#include "thrift_test_handler.h"
|
|
|
|
static const char TEST_ADDRESS[] = "localhost";
|
|
static const int TEST_PORT = 64444;
|
|
|
|
static void
|
|
test_thrift_server (void)
|
|
{
|
|
ThriftServerSocket *tsocket = g_object_new (THRIFT_TYPE_SERVER_SOCKET,
|
|
"port", TEST_PORT, NULL);
|
|
|
|
g_object_unref (tsocket);
|
|
}
|
|
|
|
static void
|
|
set_indicator (gpointer data, GObject *where_the_object_was) {
|
|
THRIFT_UNUSED_VAR(where_the_object_was);
|
|
|
|
*(gboolean *) data = TRUE;
|
|
}
|
|
|
|
static void
|
|
test_thrift_handler (void)
|
|
{
|
|
GError *error;
|
|
GHashTable *_return;
|
|
TTestInsanity *argument;
|
|
gboolean indicator;
|
|
|
|
TTestXtruct *xtruct, *xtruct2;
|
|
TTestNumberz numberz;
|
|
TTestNumberz numberz2;
|
|
TTestUserId user_id, *user_id_ptr, *user_id_ptr2;
|
|
GHashTable *user_map;
|
|
GPtrArray *xtructs;
|
|
|
|
error = NULL;
|
|
indicator = FALSE;
|
|
|
|
user_map = NULL;
|
|
xtructs = NULL;
|
|
|
|
argument = g_object_new (T_TEST_TYPE_INSANITY, NULL);
|
|
g_object_get (argument,
|
|
"userMap", &user_map,
|
|
"xtructs", &xtructs,
|
|
NULL);
|
|
|
|
numberz = T_TEST_NUMBERZ_FIVE;
|
|
numberz2 = T_TEST_NUMBERZ_EIGHT;
|
|
user_id_ptr = g_malloc (sizeof *user_id_ptr);
|
|
*user_id_ptr = 5;
|
|
user_id_ptr2 = g_malloc (sizeof *user_id_ptr);
|
|
*user_id_ptr2 = 8;
|
|
g_hash_table_insert (user_map, (gpointer)numberz, user_id_ptr);
|
|
g_hash_table_insert (user_map, (gpointer)numberz2, user_id_ptr2);
|
|
g_hash_table_unref (user_map);
|
|
|
|
xtruct = g_object_new (T_TEST_TYPE_XTRUCT,
|
|
"string_thing", "Hello2",
|
|
"byte_thing", 2,
|
|
"i32_thing", 2,
|
|
"i64_thing", 2LL,
|
|
NULL);
|
|
xtruct2 = g_object_new (T_TEST_TYPE_XTRUCT,
|
|
"string_thing", "Goodbye4",
|
|
"byte_thing", 4,
|
|
"i32_thing", 4,
|
|
"i64_thing", 4LL,
|
|
NULL);
|
|
g_ptr_array_add (xtructs, xtruct2);
|
|
g_ptr_array_add (xtructs, xtruct);
|
|
g_ptr_array_unref (xtructs);
|
|
|
|
_return = g_hash_table_new_full (g_int64_hash,
|
|
g_int64_equal,
|
|
g_free,
|
|
(GDestroyNotify)g_hash_table_unref);
|
|
|
|
g_object_weak_ref (G_OBJECT (argument), set_indicator, (gpointer) &indicator);
|
|
|
|
g_assert (thrift_test_handler_test_insanity (NULL, &_return, argument, &error));
|
|
g_assert (! indicator);
|
|
|
|
g_hash_table_unref (_return);
|
|
g_assert (! indicator);
|
|
|
|
g_object_unref (argument);
|
|
g_assert (indicator);
|
|
}
|
|
|
|
int
|
|
main(int argc, char *argv[])
|
|
{
|
|
#if (!GLIB_CHECK_VERSION (2, 36, 0))
|
|
g_type_init();
|
|
#endif
|
|
|
|
g_test_init (&argc, &argv, NULL);
|
|
|
|
g_test_add_func ("/testthrift/Server", test_thrift_server);
|
|
g_test_add_func ("/testthrift/Handler", test_thrift_handler);
|
|
|
|
return g_test_run ();
|
|
}
|