EXTRA_DIST =
-SUBDIRS = . src build
+SUBDIRS = . src build tests/unit
AUTOMAKE_OPTIONS = foreign subdir-objects
NAME = freeswitch
AC_SUBST(localstatedir)
AC_DEFINE_UNQUOTED([SWITCH_LOCALSTATE_DIR],"${localstatedir}",[directory for local state files])
-
AC_SUBST(bindir)
AC_SUBST(includedir)
AM_CONDITIONAL([HAVE_AMQP],[true])],[
AC_MSG_RESULT([no]); AM_CONDITIONAL([HAVE_AMQP],[false])])
+PKG_CHECK_MODULES([TAP], [tap >= 0.1.0],[
+ AM_CONDITIONAL([HAVE_TAP],[true])],[
+ AC_MSG_RESULT([no]); AM_CONDITIONAL([HAVE_TAP],[false])])
+
PKG_CHECK_MODULES([SMPP34], [libsmpp34 >= 1.10],[
AM_CONDITIONAL([HAVE_SMPP34],[true])],[
AC_MSG_RESULT([no]); AM_CONDITIONAL([HAVE_SMPP34],[false])])
AC_CONFIG_FILES([Makefile
build/Makefile
src/Makefile
+ tests/unit/Makefile
src/mod/Makefile
src/mod/applications/mod_abstraction/Makefile
src/mod/applications/mod_avmd/Makefile
--- /dev/null
+FSLD = $(top_builddir)/libfreeswitch.la $(top_builddir)/libs/apr/libapr-1.la $(top_builddir)/libs/apr-util/libaprutil-1.la
+
+TESTS = event_create
+
+if HAVE_TAP
+
+check_PROGRAMS = event_create
+
+
+event_create_SOURCES = event_create.c
+event_create_CFLAGS = $(SWITCH_AM_CFLAGS)
+event_create_LDADD = $(FSLD)
+event_create_LDFLAGS = $(SWITCH_AM_LDFLAGS) -ltap
+
+
+else
+install: error
+all: error
+error:
+ $(error You must install libtap-dev to build these unit tests)
+endif
+
--- /dev/null
+FreeSWITCH unit tests should be kept as shallow unit tests and micro
+benchmarks testing functionality exposed through libfreeswitch.
+
+Requirements for a new unit tests:
+
+1. Tests must use TAP(Test Anything Protocol) output format, and must
+print to stderr the summary statistics of the test before exiting.
+
+2. Each test must return 0 on successful completion, or a non-zero
+result in case of a failure.
+
+3. Benchmarking stats should be output as a TAP note at the end of the
+test in a human and machine(regex) parsable format
+
+Use libtap from https://github.com/zorgnax/libtap
+cd /usr/local/src/
+git clone https://github.com/zorgnax/libtap.git
+make PREFIX=/usr install
\ No newline at end of file
--- /dev/null
+#include <stdio.h>
+#include <switch.h>
+#include <tap.h>
+
+int main () {
+
+ switch_event_t *event = NULL;
+ switch_bool_t verbose = SWITCH_TRUE;
+ const char *err = NULL;
+ switch_time_t start_ts, end_ts;
+ int rc = 0, loops = 1000;
+ switch_status_t status = SWITCH_STATUS_SUCCESS;
+
+ plan(1 + ( 3 * loops));
+
+
+ status = switch_core_init(SCF_MINIMAL, verbose, &err);
+
+ if ( !ok( status == SWITCH_STATUS_SUCCESS, "Initialize FreeSWITCH core\n")) {
+ bail_out(0, "Bail due to failure to initialize FreeSWITCH[%s]", err);
+ }
+
+ /* START LOOPS */
+ start_ts = switch_time_now();
+
+ for ( int x = 0; x < loops; x++) {
+ status = switch_event_create(&event, SWITCH_EVENT_MESSAGE);
+ ok( status == SWITCH_STATUS_SUCCESS,"Create Event");
+
+ status = switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "testing", "event_create");
+ ok( status == SWITCH_STATUS_SUCCESS,"Add header to event");
+
+ is(switch_event_get_header(event, "testing"), "event_create", "correct header value returned");
+
+ switch_event_destroy(&event);
+ } /* END LOOPS */
+
+ end_ts = switch_time_now();
+
+ note("Total %ldus, %ldus per loop, %ld loops per second\n", end_ts - start_ts,(end_ts - start_ts) / loops, 1000000/ ((end_ts - start_ts) / loops));
+
+ switch_core_destroy();
+
+ done_testing();
+}