Example #1
0
static void
test_open_and_close(void)
{
  ThriftSocket *tsocket = NULL;
  ThriftTransport *transport = NULL;
  GError *err = NULL;
  pid_t pid;
  int port = 51199;
  int status;

  pid = fork ();
  g_assert ( pid >= 0 );

  if ( pid == 0 )
    {
      /* child listens */
      thrift_socket_server_open (port,1);
      exit (0);
    } else {
	/* parent connects, wait a bit for the socket to be created */
	sleep (1);
	/* create a ThriftSocket */
	tsocket = g_object_new (THRIFT_TYPE_SOCKET, "hostname", "localhost",
				"port", port, NULL);

	/* create a BufferedTransport wrapper of the Socket */
	transport = g_object_new (THRIFT_TYPE_FRAMED_TRANSPORT,
				  "transport", THRIFT_TRANSPORT (tsocket), NULL);

	/* this shouldn't work */
	g_assert (thrift_framed_transport_open (transport, NULL) == TRUE);
	g_assert (thrift_framed_transport_is_open (transport) == TRUE);
	g_assert (thrift_framed_transport_close (transport, NULL) == TRUE);
	g_object_unref (transport);
	g_object_unref (tsocket);

	/* try and underlying socket failure */
	tsocket = g_object_new (THRIFT_TYPE_SOCKET, "hostname", "localhost.broken",
				NULL);

	/* create a BufferedTransport wrapper of the Socket */
	transport = g_object_new (THRIFT_TYPE_FRAMED_TRANSPORT,
				  "transport", THRIFT_TRANSPORT (tsocket), NULL);

	g_assert (thrift_framed_transport_open (transport, &err) == FALSE);
	g_object_unref (transport);
	g_object_unref (tsocket);
	g_error_free (err);
	err = NULL;

	g_assert ( wait (&status) == pid );
	g_assert ( status == 0 );
    }
}
Example #2
0
static void
test_read_and_write(void)
{
  int status;
  pid_t pid;
  ThriftSocket *tsocket = NULL;
  ThriftTransport *transport = NULL;
  int port = 51199;
  guchar buf[10] = TEST_DATA; /* a buffer */

  pid = fork ();
  g_assert ( pid >= 0 );

  if ( pid == 0 )
    {
      /* child listens */
      thrift_server (port);
      exit (0);
    } else {
	/* parent connects, wait a bit for the socket to be created */
	sleep (1);

	tsocket = g_object_new (THRIFT_TYPE_SOCKET, "hostname", "localhost",
				"port", port, NULL);
	transport = g_object_new (THRIFT_TYPE_FRAMED_TRANSPORT,
				  "transport", THRIFT_TRANSPORT (tsocket),
				  "w_buf_size", 4, NULL);

	g_assert (thrift_framed_transport_open (transport, NULL) == TRUE);
	g_assert (thrift_framed_transport_is_open (transport));

	/* write 10 bytes */
	thrift_framed_transport_write (transport, buf, 10, NULL);
	thrift_framed_transport_flush (transport, NULL);

	thrift_framed_transport_write (transport, buf, 1, NULL);
	thrift_framed_transport_flush (transport, NULL);

	thrift_framed_transport_write (transport, buf, 10, NULL);
	thrift_framed_transport_flush (transport, NULL);

	thrift_framed_transport_write (transport, buf, 10, NULL);
	thrift_framed_transport_flush (transport, NULL);

	thrift_framed_transport_write_end (transport, NULL);
	thrift_framed_transport_flush (transport, NULL);
	thrift_framed_transport_close (transport, NULL);

	g_object_unref (transport);
	g_object_unref (tsocket);

	g_assert ( wait (&status) == pid );
	g_assert ( status == 0 );
    }
}
Example #3
0
static void
test_open_and_close(void)
{
  ThriftSocket *tsocket = NULL;
  ThriftTransport *transport = NULL;
  GError *err = NULL;

  /* create a ThriftSocket */
  tsocket = g_object_new (THRIFT_TYPE_SOCKET, "hostname", "localhost",
                          "port", 51188, NULL); 

  /* create a BufferedTransport wrapper of the Socket */
  transport = g_object_new (THRIFT_TYPE_FRAMED_TRANSPORT,
                            "transport", THRIFT_TRANSPORT (tsocket), NULL);

  /* this shouldn't work */
  assert (thrift_framed_transport_open (transport, NULL) == FALSE);
  assert (thrift_framed_transport_is_open (transport) == TRUE);
  assert (thrift_framed_transport_close (transport, NULL) == TRUE);
  g_object_unref (transport);
  g_object_unref (tsocket);

  /* try and underlying socket failure */
  tsocket = g_object_new (THRIFT_TYPE_SOCKET, "hostname", "localhost.broken",
                          NULL);

  /* create a BufferedTransport wrapper of the Socket */
  transport = g_object_new (THRIFT_TYPE_FRAMED_TRANSPORT,
                            "transport", THRIFT_TRANSPORT (tsocket), NULL);

  assert (thrift_framed_transport_open (transport, &err) == FALSE);
  g_object_unref (transport);
  g_object_unref (tsocket);
  g_error_free (err);
  err = NULL;
}