Commit aa161551 authored by Tim-Philipp Müller's avatar Tim-Philipp Müller
Browse files

tests: add ogg test file and some proper unit tests for discoverer

Leaks when re-used, so blacklisted for valgrind for now.
parent 4471ee65
...@@ -167,6 +167,7 @@ check_PROGRAMS = \ ...@@ -167,6 +167,7 @@ check_PROGRAMS = \
# ffmpegcolorspace takes too long, so disabled for now # ffmpegcolorspace takes too long, so disabled for now
VALGRIND_TO_FIX = \ VALGRIND_TO_FIX = \
elements/ffmpegcolorspace \ elements/ffmpegcolorspace \
libs/discoverer \
libs/video libs/video
# these tests don't even pass # these tests don't even pass
......
...@@ -52,7 +52,8 @@ GST_START_TEST (test_disco_sync) ...@@ -52,7 +52,8 @@ GST_START_TEST (test_disco_sync)
GstDiscovererResult result; GstDiscovererResult result;
gchar *uri; gchar *uri;
dc = gst_discoverer_new (GST_SECOND, &err); /* high timeout, in case we're running under valgrind */
dc = gst_discoverer_new (5 * GST_SECOND, &err);
fail_unless (dc != NULL); fail_unless (dc != NULL);
fail_unless (err == NULL); fail_unless (err == NULL);
...@@ -78,6 +79,68 @@ GST_START_TEST (test_disco_sync) ...@@ -78,6 +79,68 @@ GST_START_TEST (test_disco_sync)
GST_END_TEST; GST_END_TEST;
static void
test_disco_sync_reuse (const gchar * test_fn, guint num, GstClockTime timeout)
{
GError *err = NULL;
GstDiscoverer *dc;
GstDiscovererInfo *info;
GstDiscovererResult result;
gchar *uri, *path;
int i;
dc = gst_discoverer_new (timeout, &err);
fail_unless (dc != NULL);
fail_unless (err == NULL);
/* GST_TEST_FILE comes from makefile CFLAGS */
path = g_build_filename (GST_TEST_FILES_PATH, test_fn, NULL);
uri = gst_filename_to_uri (path, &err);
g_free (path);
fail_unless (err == NULL);
for (i = 0; i < num; ++i) {
GST_INFO ("[%02d] discovering uri '%s'", i, uri);
info = gst_discoverer_discover_uri (dc, uri, &err);
if (info) {
result = gst_discoverer_info_get_result (info);
GST_INFO ("result: %d", result);
gst_discoverer_info_unref (info);
}
/* in case we don't have some of the elements needed */
if (err) {
g_error_free (err);
err = NULL;
}
}
g_free (uri);
g_object_unref (dc);
}
GST_START_TEST (test_disco_sync_reuse_ogg)
{
test_disco_sync_reuse ("theora-vorbis.ogg", 2, 10 * GST_SECOND);
}
GST_END_TEST;
GST_START_TEST (test_disco_sync_reuse_mp3)
{
/* this will cause errors because -base doesn't do mp3 parsing or decoding */
test_disco_sync_reuse ("test.mp3", 3, 10 * GST_SECOND);
}
GST_END_TEST;
GST_START_TEST (test_disco_sync_reuse_timeout)
{
/* set minimum timeout to test that, esp. leakage under valgrind */
/* FIXME: should really be even shorter */
test_disco_sync_reuse ("theora-vorbis.ogg", 2, GST_SECOND);
}
GST_END_TEST;
static Suite * static Suite *
discoverer_suite (void) discoverer_suite (void)
...@@ -88,6 +151,9 @@ discoverer_suite (void) ...@@ -88,6 +151,9 @@ discoverer_suite (void)
suite_add_tcase (s, tc_chain); suite_add_tcase (s, tc_chain);
tcase_add_test (tc_chain, test_disco_init); tcase_add_test (tc_chain, test_disco_init);
tcase_add_test (tc_chain, test_disco_sync); tcase_add_test (tc_chain, test_disco_sync);
tcase_add_test (tc_chain, test_disco_sync_reuse_ogg);
tcase_add_test (tc_chain, test_disco_sync_reuse_mp3);
tcase_add_test (tc_chain, test_disco_sync_reuse_timeout);
return s; return s;
} }
......
...@@ -3,4 +3,5 @@ EXTRA_DIST = \ ...@@ -3,4 +3,5 @@ EXTRA_DIST = \
hls.m3u8 \ hls.m3u8 \
license-uris \ license-uris \
partialframe.mjpeg \ partialframe.mjpeg \
test.mp3 test.mp3 \
theora-vorbis.ogg
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment