C level unit testing and micro benchmarking framework, including one
example unit test.
This commit is contained in:
William King
2015-07-10 07:07:36 -07:00
parent 7e660ea856
commit f7f5c7587f
5 changed files with 91 additions and 2 deletions
+22
View File
@@ -0,0 +1,22 @@
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
+18
View File
@@ -0,0 +1,18 @@
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
+45
View File
@@ -0,0 +1,45 @@
#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();
}