summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/tests/Makefile.am2
-rw-r--r--lib/tests/README27
-rw-r--r--lib/tests/test-udp.c106
-rw-r--r--lib/tests/test.conf2
-rw-r--r--lib/tests/udp-server.c3
-rw-r--r--lib/tests/udp.c6
-rw-r--r--lib/tests/udp.h3
7 files changed, 71 insertions, 78 deletions
diff --git a/lib/tests/Makefile.am b/lib/tests/Makefile.am
index 33ddb51..045991a 100644
--- a/lib/tests/Makefile.am
+++ b/lib/tests/Makefile.am
@@ -7,6 +7,6 @@ TESTS = test-udp
check_PROGRAMS = test-udp udp-server
test_udp_SOURCES = test-udp.c udp.c
-test_udp_LDADD = ../libradsec.la -lcgreen -lm
+test_udp_LDADD = ../libradsec.la -lcunit -lm
udp_server_SOURCES = udp-server.c udp.c
diff --git a/lib/tests/README b/lib/tests/README
index 4d68bde..33bddc1 100644
--- a/lib/tests/README
+++ b/lib/tests/README
@@ -1,8 +1,14 @@
+This is the README file for the test directory of libradsec.
+
Build
-----
-In order to build and run the tests, you'll need to have libcgreen
-installed (http://www.lastcraft.com/cgreen.php).
+In order to build and run the tests, you'll need to have CUnit
+installed.
+
+Source code: http://cunit.sourceforge.net/
+Debian package: libcunit1-dev
+FreeBSD port: devel/cunit
Run
@@ -23,12 +29,11 @@ Run the tests by typing
The output should read something like
- Completed "main": 32 passes, 0 failures, 0 exceptions.
-
-
-When trying to debug the test programs under GDB you might run into
-trouble with multiple threads being executed by the test framework.
-If so, make sure to run a single test rather than the full test suite.
-For example:
-
- libtool --mode execute gdb --args test-udp test_auth
+ --Run Summary: Type Total Ran Passed Failed
+ suites 2 2 n/a 0
+ tests 2 2 2 0
+ asserts 23 23 23 0
+ PASS: test-udp
+ =============
+ 1 test passed
+ =============
diff --git a/lib/tests/test-udp.c b/lib/tests/test-udp.c
index ccad607..7c2e73c 100644
--- a/lib/tests/test-udp.c
+++ b/lib/tests/test-udp.c
@@ -1,24 +1,26 @@
+/* Copyright 2011,2013, NORDUnet A/S. All rights reserved. */
+/* See LICENSE for licensing information. */
+
#include <stdlib.h>
-#include <cgreen/cgreen.h>
+#include <assert.h>
+#include <CUnit/Basic.h>
+#include "radius/client.h"
#include "radsec/radsec.h"
#include "radsec/request.h"
#include "udp.h"
-#define true 1 /* FIXME: Bug report cgreen. */
-#define false 0
-
static void
authenticate (struct rs_connection *conn, const char *user, const char *pw)
{
struct rs_request *req;
struct rs_packet *msg, *resp;
- assert_true (rs_request_create (conn, &req) == 0);
- assert_true (rs_packet_create_authn_request (conn, &msg, user, pw) == 0);
+ CU_ASSERT (rs_request_create (conn, &req) == 0);
+ CU_ASSERT (!rs_packet_create_authn_request (conn, &msg, user, pw, "sikrit"));
rs_request_add_reqpkt (req, msg);
- assert_true (rs_request_send (req, &resp) == 0);
+ CU_ASSERT (rs_request_send (req, &resp) == 0);
//printf ("%s\n", rs_err_msg (rs_err_conn_pop (conn), 1));
- assert_true (rs_packet_code(resp) == PW_ACCESS_ACCEPT);
+ CU_ASSERT (rs_packet_code(resp) == PW_ACCESS_ACCEPT);
rs_request_destroy (req);
}
@@ -28,10 +30,12 @@ send_more_than_one_msg_in_one_packet (struct rs_connection *conn)
{
struct rs_packet *msg0, *msg1;
- assert_true (rs_packet_create_authn_request (conn, &msg0, NULL, NULL) == 0);
- assert_true (rs_packet_create_authn_request (conn, &msg1, NULL, NULL) == 0);
- assert_true (rs_packet_send (msg0, NULL) == 0);
- assert_true (rs_packet_send (msg1, NULL) == 0);
+ CU_ASSERT (rs_packet_create_authn_request (conn, &msg0, NULL, NULL, "sikrit")
+ == 0);
+ CU_ASSERT (rs_packet_create_authn_request (conn, &msg1, NULL, NULL, "sikrit")
+ == 0);
+ CU_ASSERT (rs_packet_send (msg0, NULL) == 0);
+ CU_ASSERT (rs_packet_send (msg1, NULL) == 0);
}
#if 0
@@ -44,18 +48,18 @@ send_large_packet (struct rs_connection *conn)
int f;
buf = malloc (RS_MAX_PACKET_LEN);
- assert_true (buf != NULL);
+ CU_ASSERT (buf != NULL);
memset (buf, 0, RS_MAX_PACKET_LEN);
- assert_true (rs_packet_create (conn, &msg0) == 0);
+ CU_ASSERT (rs_packet_create (conn, &msg0) == 0);
/* 16 chunks --> heap corruption in evbuffer_drain detected by free() */
for (f = 0; f < 15; f++)
{
memset (buf, 'a' + f, 252);
//vp = pairmake ("EAP-Message", buf, T_OP_EQ);
- assert_true (rs_packet_append_avp (msg0, fixme...) == RSE_OK);
+ CU_ASSERT (rs_packet_append_avp (msg0, fixme...) == RSE_OK);
}
- assert_true (rs_packet_send (msg0, NULL) == 0);
+ CU_ASSERT (rs_packet_send (msg0, NULL) == 0);
}
#endif /* 0 */
@@ -78,10 +82,9 @@ test_auth ()
setup.username = "molgan@PROJECT-MOONSHOT.ORG";
setup.pw = "password";
- assert_true (rs_context_create (&ctx) == 0);
- assert_true (rs_context_read_config (ctx, setup.config_file) == 0);
- assert_true (rs_context_init_freeradius_dict (ctx, NULL) == 0);
- assert_true (rs_conn_create (ctx, &conn, setup.config_name) == 0);
+ CU_ASSERT (rs_context_create (&ctx) == 0);
+ CU_ASSERT (rs_context_read_config (ctx, setup.config_file) == 0);
+ CU_ASSERT (rs_conn_create (ctx, &conn, setup.config_name) == 0);
authenticate (conn, setup.username, setup.pw);
@@ -97,9 +100,9 @@ test_buffering_cb (const uint8_t *buf, ssize_t len)
#if 0
hd (buf, len);
#endif
- assert_true (len >= 20);
- assert_true (len <= RS_MAX_PACKET_LEN);
- assert_true ((buf[2] << 8) + buf[3] == len);
+ CU_ASSERT (len >= 20);
+ CU_ASSERT (len <= RS_MAX_PACKET_LEN);
+ CU_ASSERT ((buf[2] << 8) + buf[3] == len);
return len;
}
@@ -111,34 +114,19 @@ test_buffering ()
struct timeval timeout;
struct polldata *polldata;
- assert_true (rs_context_create (&ctx) == 0);
- assert_true (rs_context_read_config (ctx, "test.conf") == 0);
- assert_true (rs_conn_create (ctx, &conn, "test-udp-buffering") == 0);
+ CU_ASSERT (rs_context_create (&ctx) == 0);
+ CU_ASSERT (rs_context_read_config (ctx, "test.conf") == 0);
+ CU_ASSERT (rs_conn_create (ctx, &conn, "test-udp-buffering") == 0);
timeout.tv_sec = 0;
timeout.tv_usec = 150000;
polldata = udp_server ("11820", &timeout, test_buffering_cb);
- assert_true (polldata != NULL);
+ CU_ASSERT (polldata != NULL);
send_more_than_one_msg_in_one_packet (conn);
- assert_true (udp_poll (polldata) > 0);
- assert_true (udp_poll (polldata) > 0);
+ CU_ASSERT (udp_poll (polldata) > 0);
+ CU_ASSERT (udp_poll (polldata) > 0);
-#if 0
-"
-send_large_packet() disabled, it's hanging after
-
-Sending Access-Request of id 1 to (null) port 0
- Message-Authenticator = 0x00000000000000000000000000000000
-packet_do_send: about to send this to localhost:11820:
- Code: 1, Identifier: 1, Lenght: 38
-rs_packet_send: entering event loop
-_evcb: fd=5 what = WRITE
-rs_packet_send: event loop done
-"
- send_large_packet (conn);
- assert_true (udp_poll (polldata) > 0);
-#endif /* 0 */
udp_free_polldata (polldata);
rs_conn_destroy (conn);
@@ -146,28 +134,20 @@ rs_packet_send: event loop done
}
/* ************************************************************ */
-static void
-setup_auth (TestSuite *ts)
-{
- add_test (ts, test_auth);
-}
-
-static void
-setup_buffering (TestSuite *ts)
-{
- add_test (ts, test_buffering);
-}
-
int
main (int argc, char *argv[])
{
- TestSuite *ts = create_test_suite ();
+ CU_pSuite s = NULL;
+ CU_pTest t = NULL;
+
+ assert (CU_initialize_registry () == CUE_SUCCESS);
+ s = CU_add_suite ("auth", NULL, NULL); assert (s);
+ t = CU_ADD_TEST (s, test_auth); assert (t);
+ s = CU_add_suite ("buffering", NULL, NULL); assert (s);
+ t = CU_ADD_TEST (s, test_buffering); assert (t);
- setup_auth (ts);
- setup_buffering (ts);
+ return !(CU_basic_run_tests () == CUE_SUCCESS);
- if (argc > 1)
- return run_single_test (ts, argv[1], create_text_reporter ());
- else
- return run_test_suite (ts, create_text_reporter ());
+ CU_cleanup_registry ();
+ return 0;
}
diff --git a/lib/tests/test.conf b/lib/tests/test.conf
index 839fd75..98d0330 100644
--- a/lib/tests/test.conf
+++ b/lib/tests/test.conf
@@ -1,5 +1,3 @@
-dictionary = "/home/linus/usr/moonshot/share/freeradius/dictionary"
-
realm test-udp-auth {
type = "UDP"
server {
diff --git a/lib/tests/udp-server.c b/lib/tests/udp-server.c
index ce0136a..77a35df 100644
--- a/lib/tests/udp-server.c
+++ b/lib/tests/udp-server.c
@@ -1,3 +1,6 @@
+/* Copyright 2011, NORDUnet A/S. All rights reserved. */
+/* See LICENSE for licensing information. */
+
#include <stdlib.h>
#include <stdio.h>
#include "udp.h"
diff --git a/lib/tests/udp.c b/lib/tests/udp.c
index 47ea595..2c580da 100644
--- a/lib/tests/udp.c
+++ b/lib/tests/udp.c
@@ -1,3 +1,6 @@
+/* Copyright 2011,2013, NORDUnet A/S. All rights reserved. */
+/* See LICENSE for licensing information. */
+
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
@@ -10,6 +13,7 @@
#include <netdb.h>
#include <sys/select.h>
#include <sys/time.h>
+#include "radius/client.h"
#include "udp.h"
static struct addrinfo *
@@ -57,7 +61,7 @@ ssize_t
udp_poll (struct polldata *data)
{
int r;
- long timeout;
+ long timeout = 0;
fd_set rfds;
ssize_t len;
uint8_t buf[RS_MAX_PACKET_LEN];
diff --git a/lib/tests/udp.h b/lib/tests/udp.h
index 004b7ca..a8d5f23 100644
--- a/lib/tests/udp.h
+++ b/lib/tests/udp.h
@@ -1,3 +1,6 @@
+/* Copyright 2011, NORDUnet A/S. All rights reserved. */
+/* See LICENSE for licensing information. */
+
#include <stdint.h>
#include <unistd.h>
#include <sys/time.h>