From 05a7d639e011fad0fedc5fc71c67ebf06cb496ba Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Fri, 11 May 2001 18:44:18 +0000 Subject: [PATCH] Added a testsuite for refcounting. Original commit message from CVS: Added a testsuite for refcounting. --- tests/old/testsuite/refcounting/Makefile.am | 14 +++ tests/old/testsuite/refcounting/element.c | 122 ++++++++++++++++++++ tests/old/testsuite/refcounting/mem.c | 22 ++++ tests/old/testsuite/refcounting/mem.h | 1 + tests/old/testsuite/refcounting/object.c | 122 ++++++++++++++++++++ testsuite/refcounting/Makefile.am | 14 +++ testsuite/refcounting/element.c | 122 ++++++++++++++++++++ testsuite/refcounting/mem.c | 22 ++++ testsuite/refcounting/mem.h | 1 + testsuite/refcounting/object.c | 122 ++++++++++++++++++++ 10 files changed, 562 insertions(+) create mode 100644 tests/old/testsuite/refcounting/Makefile.am create mode 100644 tests/old/testsuite/refcounting/element.c create mode 100644 tests/old/testsuite/refcounting/mem.c create mode 100644 tests/old/testsuite/refcounting/mem.h create mode 100644 tests/old/testsuite/refcounting/object.c create mode 100644 testsuite/refcounting/Makefile.am create mode 100644 testsuite/refcounting/element.c create mode 100644 testsuite/refcounting/mem.c create mode 100644 testsuite/refcounting/mem.h create mode 100644 testsuite/refcounting/object.c diff --git a/tests/old/testsuite/refcounting/Makefile.am b/tests/old/testsuite/refcounting/Makefile.am new file mode 100644 index 0000000000..7efde99364 --- /dev/null +++ b/tests/old/testsuite/refcounting/Makefile.am @@ -0,0 +1,14 @@ +SUBDIRS = + +testprogs = object element + +object_SOURCES = object.c mem.c +element_SOURCES = element.c mem.c + +TESTS = $(testprogs) + +check_PROGRAMS = $(testprogs) + +# we have nothing but apps here, we can do this safely +LIBS += $(GST_LIBS) +CFLAGS += $(GST_CFLAGS) diff --git a/tests/old/testsuite/refcounting/element.c b/tests/old/testsuite/refcounting/element.c new file mode 100644 index 0000000000..338e8bcd0b --- /dev/null +++ b/tests/old/testsuite/refcounting/element.c @@ -0,0 +1,122 @@ +#include + +#define ITERS 100000 +#include "mem.h" + +static void +print_element_props (GstElement *element) +{ + g_print ("name %s\n", gst_element_get_name (element)); + g_print ("flags 0x%08x\n", GST_FLAGS (element)); +} + +int +main (int argc, gchar *argv[]) +{ + GstElement *element; + long usage1, usage2; + gint i; + + gst_init (&argc, &argv); + + g_print ("creating new element\n"); + element = gst_element_new (); + usage1 = vmsize(); + print_element_props (element); + g_print ("unref new element %ld\n", vmsize()-usage1); + gst_object_unref (GST_OBJECT (element)); + + g_print ("creating new element\n"); + element = gst_element_new (); + g_assert (GST_OBJECT_FLOATING (element)); + print_element_props (element); + g_print ("sink new element %ld\n", vmsize()-usage1); + gst_object_ref (GST_OBJECT (element)); + gst_object_sink (GST_OBJECT (element)); + g_assert (!GST_OBJECT_FLOATING (element)); + print_element_props (element); + g_print ("unref new element %ld\n", vmsize()-usage1); + gst_object_unref (GST_OBJECT (element)); + + for (i=0; i +#include +#include +#include + +int vmsize() { + int pid,fd,size,i,mem; + char filename[17], buf[256], *ptr, *end; + + pid = getpid(); + snprintf(filename,17,"/proc/%d/stat",pid); + fd = open(filename,O_RDONLY); + size = read(fd,buf,240); + ptr = buf; + for (i=0;i<22;i++) + ptr = (char *)strchr(ptr,' ') + 1; + end = (char *)strchr(ptr,' '); + *end = 0; + sscanf(ptr,"%d",&mem); + close(fd); + return mem; +} diff --git a/tests/old/testsuite/refcounting/mem.h b/tests/old/testsuite/refcounting/mem.h new file mode 100644 index 0000000000..28999db2c3 --- /dev/null +++ b/tests/old/testsuite/refcounting/mem.h @@ -0,0 +1 @@ +int vmsize(); diff --git a/tests/old/testsuite/refcounting/object.c b/tests/old/testsuite/refcounting/object.c new file mode 100644 index 0000000000..bd0a36584e --- /dev/null +++ b/tests/old/testsuite/refcounting/object.c @@ -0,0 +1,122 @@ +#include + +#define ITERS 100000 +#include "mem.h" + +static void +print_object_props (GstObject *object) +{ + g_print ("name %s\n", gst_object_get_name (object)); + g_print ("flags 0x%08lx\n", GST_FLAGS (object)); +} + +int +main (int argc, gchar *argv[]) +{ + GstObject *object; + long usage1, usage2; + gint i; + + gst_init (&argc, &argv); + + g_print ("creating new object\n"); + object = gst_object_new (); + usage1 = vmsize(); + print_object_props (object); + g_print ("unref new object %ld\n", vmsize()-usage1); + gst_object_unref (object); + + g_print ("creating new object\n"); + object = gst_object_new (); + g_assert (GST_OBJECT_FLOATING (object)); + print_object_props (object); + g_print ("sink new object %ld\n", vmsize()-usage1); + gst_object_ref (object); + gst_object_sink (object); + g_assert (!GST_OBJECT_FLOATING (object)); + print_object_props (object); + g_print ("unref new object %ld\n", vmsize()-usage1); + gst_object_unref (object); + + for (i=0; i + +#define ITERS 100000 +#include "mem.h" + +static void +print_element_props (GstElement *element) +{ + g_print ("name %s\n", gst_element_get_name (element)); + g_print ("flags 0x%08x\n", GST_FLAGS (element)); +} + +int +main (int argc, gchar *argv[]) +{ + GstElement *element; + long usage1, usage2; + gint i; + + gst_init (&argc, &argv); + + g_print ("creating new element\n"); + element = gst_element_new (); + usage1 = vmsize(); + print_element_props (element); + g_print ("unref new element %ld\n", vmsize()-usage1); + gst_object_unref (GST_OBJECT (element)); + + g_print ("creating new element\n"); + element = gst_element_new (); + g_assert (GST_OBJECT_FLOATING (element)); + print_element_props (element); + g_print ("sink new element %ld\n", vmsize()-usage1); + gst_object_ref (GST_OBJECT (element)); + gst_object_sink (GST_OBJECT (element)); + g_assert (!GST_OBJECT_FLOATING (element)); + print_element_props (element); + g_print ("unref new element %ld\n", vmsize()-usage1); + gst_object_unref (GST_OBJECT (element)); + + for (i=0; i +#include +#include +#include + +int vmsize() { + int pid,fd,size,i,mem; + char filename[17], buf[256], *ptr, *end; + + pid = getpid(); + snprintf(filename,17,"/proc/%d/stat",pid); + fd = open(filename,O_RDONLY); + size = read(fd,buf,240); + ptr = buf; + for (i=0;i<22;i++) + ptr = (char *)strchr(ptr,' ') + 1; + end = (char *)strchr(ptr,' '); + *end = 0; + sscanf(ptr,"%d",&mem); + close(fd); + return mem; +} diff --git a/testsuite/refcounting/mem.h b/testsuite/refcounting/mem.h new file mode 100644 index 0000000000..28999db2c3 --- /dev/null +++ b/testsuite/refcounting/mem.h @@ -0,0 +1 @@ +int vmsize(); diff --git a/testsuite/refcounting/object.c b/testsuite/refcounting/object.c new file mode 100644 index 0000000000..bd0a36584e --- /dev/null +++ b/testsuite/refcounting/object.c @@ -0,0 +1,122 @@ +#include + +#define ITERS 100000 +#include "mem.h" + +static void +print_object_props (GstObject *object) +{ + g_print ("name %s\n", gst_object_get_name (object)); + g_print ("flags 0x%08lx\n", GST_FLAGS (object)); +} + +int +main (int argc, gchar *argv[]) +{ + GstObject *object; + long usage1, usage2; + gint i; + + gst_init (&argc, &argv); + + g_print ("creating new object\n"); + object = gst_object_new (); + usage1 = vmsize(); + print_object_props (object); + g_print ("unref new object %ld\n", vmsize()-usage1); + gst_object_unref (object); + + g_print ("creating new object\n"); + object = gst_object_new (); + g_assert (GST_OBJECT_FLOATING (object)); + print_object_props (object); + g_print ("sink new object %ld\n", vmsize()-usage1); + gst_object_ref (object); + gst_object_sink (object); + g_assert (!GST_OBJECT_FLOATING (object)); + print_object_props (object); + g_print ("unref new object %ld\n", vmsize()-usage1); + gst_object_unref (object); + + for (i=0; i