Page MenuHomeFreeBSD

D30307.id89341.diff
No OneTemporary

D30307.id89341.diff

Index: sys/netinet/libalias/tests/Makefile
===================================================================
--- /dev/null
+++ sys/netinet/libalias/tests/Makefile
@@ -0,0 +1,11 @@
+# $FreeBSD$
+
+.include <bsd.own.mk>
+
+ATF_TESTS_C+= aliasdb_test
+
+SRCS.aliasdb_test= aliasdb_test.c
+
+LIBADD+= alias
+
+.include <bsd.test.mk>
Index: sys/netinet/libalias/tests/aliasdb_test.c
===================================================================
--- /dev/null
+++ sys/netinet/libalias/tests/aliasdb_test.c
@@ -0,0 +1,93 @@
+#include <atf-c.h>
+#include <alias.h>
+#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+static int randcmp(const void *a, const void *b) {
+ int res, r = rand();
+
+ (void)a;
+ (void)b;
+ res = (r/4 < RAND_MAX/9) ? 1
+ : (r/5 < RAND_MAX/9) ? 0
+ : -1;
+ return (res);
+}
+
+ATF_TC(destroynull);
+ATF_TC_HEAD(destroynull, env)
+{
+ atf_tc_set_md_var(env, "descr", "Destroy the NULL instance");
+}
+ATF_TC_BODY(destroynull, dummy)
+{
+ atf_tc_expect_signal(SIGSEGV, "Code expects valid pointer.");
+ LibAliasUninit(NULL);
+}
+
+ATF_TC(singleinit);
+ATF_TC_HEAD(singleinit, env)
+{
+ atf_tc_set_md_var(env, "descr", "Create an instance");
+}
+ATF_TC_BODY(singleinit, dummy)
+{
+ struct libalias *la;
+
+ la = LibAliasInit(NULL);
+ ATF_CHECK_MSG(la != NULL, "Creating an instance failed.");
+ LibAliasUninit(la);
+}
+
+ATF_TC(multiinit);
+ATF_TC_HEAD(multiinit, env)
+{
+ atf_tc_set_md_var(env, "descr", "Recreate an instance multiple times");
+}
+ATF_TC_BODY(multiinit, dummy)
+{
+ struct libalias *la;
+ int i;
+
+ la = LibAliasInit(NULL);
+ for(i = 1; i < 30; i++) {
+ struct libalias *lo = la;
+
+ la = LibAliasInit(la);
+ ATF_CHECK_MSG(la == lo, "Recreating moved the instance around: %d", i);
+ }
+ LibAliasUninit(la);
+}
+
+ATF_TC(multiinstance);
+ATF_TC_HEAD(multiinstance, env)
+{
+ atf_tc_set_md_var(env, "descr", "Create and destoy multiple instances.");
+}
+ATF_TC_BODY(multiinstance, dummy)
+{
+#define MAX_INSTANCES 300
+ struct libalias *la[MAX_INSTANCES];
+ int i;
+
+ for (i = 0; i < MAX_INSTANCES; i++) {
+ la[i] = LibAliasInit(NULL);
+ ATF_CHECK_MSG(la[i] != NULL, "Creating instance %d failed.", i);
+ }
+
+ qsort(la, MAX_INSTANCES, sizeof(*la), randcmp);
+
+ for (i = 0; i < MAX_INSTANCES; i++)
+ LibAliasUninit(la[i]);
+}
+
+ATF_TP_ADD_TCS(aliasdb)
+{
+ ATF_TP_ADD_TC(aliasdb, destroynull);
+ ATF_TP_ADD_TC(aliasdb, singleinit);
+ ATF_TP_ADD_TC(aliasdb, multiinit);
+ ATF_TP_ADD_TC(aliasdb, multiinstance);
+
+ return atf_no_error();
+}

File Metadata

Mime Type
text/plain
Expires
Wed, Feb 5, 1:26 AM (3 h, 18 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
16464439
Default Alt Text
D30307.id89341.diff (2 KB)

Event Timeline