From dd72e57c83c66a350176bacea7065a561c45ef88 Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Wed, 16 Nov 2005 18:16:51 +0000 Subject: [PATCH] check/net/gstnettimeprovider.c: Check to see that the time provider actually provides times. Works, yo! Original commit message from CVS: 2005-11-16 Andy Wingo * check/net/gstnettimeprovider.c: Check to see that the time provider actually provides times. Works, yo! --- ChangeLog | 5 ++++ check/net/gstnettimeprovider.c | 49 +++++++++++++++++++++++++++++++---- common | 2 +- tests/check/libs/gstnettimeprovider.c | 49 +++++++++++++++++++++++++++++++---- 4 files changed, 94 insertions(+), 11 deletions(-) diff --git a/ChangeLog b/ChangeLog index 6b3b691..420d720 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2005-11-16 Andy Wingo + + * check/net/gstnettimeprovider.c: Check to see that the time + provider actually provides times. Works, yo! + 2005-11-16 Wim Taymans * check/Makefile.am: diff --git a/check/net/gstnettimeprovider.c b/check/net/gstnettimeprovider.c index 5269513..da1e93a 100644 --- a/check/net/gstnettimeprovider.c +++ b/check/net/gstnettimeprovider.c @@ -22,6 +22,8 @@ #include #include +#include + GST_START_TEST (test_refcounts) { GstNetTimeProvider *ntp; @@ -49,25 +51,63 @@ GST_START_TEST (test_refcounts) GST_END_TEST; -#if 0 GST_START_TEST (test_functioning) { GstNetTimeProvider *ntp; + GstNetTimePacket *packet; GstClock *clock; + GstClockTime local; + struct sockaddr_in servaddr; + gint port = -1, sockfd, ret; + socklen_t len; clock = gst_system_clock_obtain (); fail_unless (clock != NULL, "failed to get system clock"); - ntp = gst_net_time_provider_new (clock, NULL, -1); + ntp = gst_net_time_provider_new (clock, "127.0.0.1", -1); fail_unless (ntp != NULL, "failed to create net time provider"); + g_object_get (ntp, "port", &port, NULL); + fail_unless (port > 0); + + sockfd = socket (AF_INET, SOCK_DGRAM, 0); + fail_if (sockfd < 0, "socket failed"); + + memset (&servaddr, 0, sizeof (servaddr)); + servaddr.sin_family = AF_INET; + servaddr.sin_port = port; + inet_aton ("127.0.0.1", &servaddr.sin_addr); + + packet = gst_net_time_packet_new (NULL); + fail_unless (packet != NULL, "failed to create packet"); + + packet->local_time = local = gst_clock_get_time (clock); + + len = sizeof (servaddr); + ret = gst_net_time_packet_send (packet, sockfd, + (struct sockaddr *) &servaddr, len); + fail_unless (ret == GST_NET_TIME_PACKET_SIZE, "failed to send packet"); + + g_free (packet); + + packet = gst_net_time_packet_receive (sockfd, (struct sockaddr *) &servaddr, + &len); + + fail_unless (packet != NULL, "failed to receive packet"); + fail_unless (packet->local_time == local, "local time is not the same"); + fail_unless (packet->remote_time > local, "remote time not after local time"); + fail_unless (packet->remote_time < gst_clock_get_time (clock), + "remote time in the future"); + + g_free (packet); + + close (sockfd); gst_object_unref (ntp); gst_object_unref (clock); } GST_END_TEST; -#endif Suite * gst_net_time_provider_suite (void) @@ -75,10 +115,9 @@ gst_net_time_provider_suite (void) Suite *s = suite_create ("GstNetTimeProvider"); TCase *tc_chain = tcase_create ("generic tests"); - tcase_set_timeout (tc_chain, 0); - suite_add_tcase (s, tc_chain); tcase_add_test (tc_chain, test_refcounts); + tcase_add_test (tc_chain, test_functioning); return s; } diff --git a/common b/common index 3aa0adc..ea14091 160000 --- a/common +++ b/common @@ -1 +1 @@ -Subproject commit 3aa0adc0cc4539ec9bb62ccf6d535240dad19e58 +Subproject commit ea1409191cc1e71273b2dbdd94e7ab5fc5a60a51 diff --git a/tests/check/libs/gstnettimeprovider.c b/tests/check/libs/gstnettimeprovider.c index 5269513..da1e93a 100644 --- a/tests/check/libs/gstnettimeprovider.c +++ b/tests/check/libs/gstnettimeprovider.c @@ -22,6 +22,8 @@ #include #include +#include + GST_START_TEST (test_refcounts) { GstNetTimeProvider *ntp; @@ -49,25 +51,63 @@ GST_START_TEST (test_refcounts) GST_END_TEST; -#if 0 GST_START_TEST (test_functioning) { GstNetTimeProvider *ntp; + GstNetTimePacket *packet; GstClock *clock; + GstClockTime local; + struct sockaddr_in servaddr; + gint port = -1, sockfd, ret; + socklen_t len; clock = gst_system_clock_obtain (); fail_unless (clock != NULL, "failed to get system clock"); - ntp = gst_net_time_provider_new (clock, NULL, -1); + ntp = gst_net_time_provider_new (clock, "127.0.0.1", -1); fail_unless (ntp != NULL, "failed to create net time provider"); + g_object_get (ntp, "port", &port, NULL); + fail_unless (port > 0); + + sockfd = socket (AF_INET, SOCK_DGRAM, 0); + fail_if (sockfd < 0, "socket failed"); + + memset (&servaddr, 0, sizeof (servaddr)); + servaddr.sin_family = AF_INET; + servaddr.sin_port = port; + inet_aton ("127.0.0.1", &servaddr.sin_addr); + + packet = gst_net_time_packet_new (NULL); + fail_unless (packet != NULL, "failed to create packet"); + + packet->local_time = local = gst_clock_get_time (clock); + + len = sizeof (servaddr); + ret = gst_net_time_packet_send (packet, sockfd, + (struct sockaddr *) &servaddr, len); + fail_unless (ret == GST_NET_TIME_PACKET_SIZE, "failed to send packet"); + + g_free (packet); + + packet = gst_net_time_packet_receive (sockfd, (struct sockaddr *) &servaddr, + &len); + + fail_unless (packet != NULL, "failed to receive packet"); + fail_unless (packet->local_time == local, "local time is not the same"); + fail_unless (packet->remote_time > local, "remote time not after local time"); + fail_unless (packet->remote_time < gst_clock_get_time (clock), + "remote time in the future"); + + g_free (packet); + + close (sockfd); gst_object_unref (ntp); gst_object_unref (clock); } GST_END_TEST; -#endif Suite * gst_net_time_provider_suite (void) @@ -75,10 +115,9 @@ gst_net_time_provider_suite (void) Suite *s = suite_create ("GstNetTimeProvider"); TCase *tc_chain = tcase_create ("generic tests"); - tcase_set_timeout (tc_chain, 0); - suite_add_tcase (s, tc_chain); tcase_add_test (tc_chain, test_refcounts); + tcase_add_test (tc_chain, test_functioning); return s; } -- 2.7.4