aboutsummaryrefslogtreecommitdiffstats
path: root/Source/charon/tests
diff options
context:
space:
mode:
authorJan Hutter <jhutter@hsr.ch>2005-11-03 18:22:07 +0000
committerJan Hutter <jhutter@hsr.ch>2005-11-03 18:22:07 +0000
commitef23cd28c1dcc851e44dc632f36476d6310f0870 (patch)
tree461099e3d91b1d5e3fd6a8921d71c9a106376eac /Source/charon/tests
parent5ea755119547a93daed2b2a5447d470c0339a367 (diff)
downloadstrongswan-ef23cd28c1dcc851e44dc632f36476d6310f0870.tar.bz2
strongswan-ef23cd28c1dcc851e44dc632f36476d6310f0870.tar.xz
- Tests more documented
Diffstat (limited to 'Source/charon/tests')
-rw-r--r--Source/charon/tests/job_queue_test.c57
-rw-r--r--Source/charon/tests/job_queue_test.h6
-rw-r--r--Source/charon/tests/linked_list_test.h12
-rw-r--r--Source/charon/tests/tests.h9
-rw-r--r--Source/charon/tests/thread_pool_test.c4
-rw-r--r--Source/charon/tests/thread_pool_test.h8
6 files changed, 71 insertions, 25 deletions
diff --git a/Source/charon/tests/job_queue_test.c b/Source/charon/tests/job_queue_test.c
index df110c0cf..302bd6043 100644
--- a/Source/charon/tests/job_queue_test.c
+++ b/Source/charon/tests/job_queue_test.c
@@ -33,21 +33,33 @@
typedef struct job_queue_test_s job_queue_test_t;
+/**
+ * @brief Informations for the involved test-thread used in this test
+ *
+ */
struct job_queue_test_s{
tester_t *tester;
job_queue_t *job_queue;
- int max_queue_item_count;
+ /**
+ * number of items to be inserted in the job-queue
+ */
+ int insert_item_count;
+ /**
+ * number of items to be removed by each
+ * receiver thread from the job-queue
+ */
+ int remove_item_count;
};
/**
* @brief sender thread used in the the job_queue test function
+ *
+ * @param testinfo informations for the specific thread.
*/
static void test_job_queue_sender(job_queue_test_t * testinfo)
{
-
- int i;
-
- for (i = 0; i < testinfo->max_queue_item_count; i++)
+ int i;
+ for (i = 0; i < testinfo->insert_item_count; i++)
{
int *value = alloc_thing(int,"int");
*value = i;
@@ -58,43 +70,52 @@ static void test_job_queue_sender(job_queue_test_t * testinfo)
/**
* @brief receiver thread used in the the job_queue test function
+ *
+ * @param testinfo informations for the specific thread.
*/
static void test_job_queue_receiver(job_queue_test_t * testinfo)
{
int i;
-
- for (i = 0; i < testinfo->max_queue_item_count; i++)
+ for (i = 0; i < testinfo->remove_item_count; i++)
{
job_t *job;
testinfo->tester->assert_true(testinfo->tester,(testinfo->job_queue->get(testinfo->job_queue,&job) == SUCCESS), "get job call check");
- testinfo->tester->assert_true(testinfo->tester,(job->type == INCOMING_PACKET), "job type check");
- testinfo->tester->assert_true(testinfo->tester,((*((int *) (job->assigned_data))) == i), "job value check");
-
+ testinfo->tester->assert_true(testinfo->tester,(job->type == INCOMING_PACKET), "job type check");
pfree(job->assigned_data);
testinfo->tester->assert_true(testinfo->tester,(job->destroy(job) == SUCCESS), "job destroy call check");
}
}
/*
- *
* description is in header file
*/
void test_job_queue(tester_t *tester)
{
- int value = 1000;
- pthread_t sender_thread, receiver_thread;
+ int value, i;
+ pthread_t sender_thread, receiver_threads[5];
job_queue_t *job_queue = job_queue_create();
job_queue_test_t test_infos;
+
test_infos.tester = tester;
test_infos.job_queue = job_queue;
- test_infos.max_queue_item_count = 100000;
+ test_infos.insert_item_count = 50000;
+ test_infos.remove_item_count = 10000;
+
- pthread_create( &receiver_thread, NULL,(void*(*)(void*)) &test_job_queue_receiver, (void*) &test_infos);
+ for (i = 0; i < 5;i++)
+ {
+ pthread_create( &receiver_threads[i], NULL,(void*(*)(void*)) &test_job_queue_receiver, (void*) &test_infos);
+ }
pthread_create( &sender_thread, NULL,(void*(*)(void*)) &test_job_queue_sender, (void*) &test_infos);
-
- pthread_join(sender_thread, NULL);
- pthread_join(receiver_thread, NULL);
+ /* Wait for all threads */
+ pthread_join(sender_thread, NULL);
+ for (i = 0; i < 5;i++)
+ {
+ pthread_join(receiver_threads[i], NULL);
+ }
+
+ /* the job-queue has to be empty now! */
tester->assert_true(tester,(job_queue->get_count(job_queue,&value) == SUCCESS), "get count call check");
tester->assert_true(tester,(value == 0), "get count value check");
tester->assert_true(tester,(job_queue->destroy(job_queue) == SUCCESS), "destroy call check");
diff --git a/Source/charon/tests/job_queue_test.h b/Source/charon/tests/job_queue_test.h
index b2076eff3..ba8fd02bb 100644
--- a/Source/charon/tests/job_queue_test.h
+++ b/Source/charon/tests/job_queue_test.h
@@ -25,11 +25,17 @@
/**
* @brief Test function used to test the job_queue functionality
+ *
+ * Tests are performed using different threads to test the multi-threaded
+ * features of the job_queue_t.
*
* @param tester associated tester object
*/
void test_job_queue(tester_t *tester);
+/**
+ * Test 1 for linked_list_t
+ */
test_t job_queue_test1 = {test_job_queue,"Job-Queue Test1"};
#endif /*JOB_QUEUE_TEST_H_*/
diff --git a/Source/charon/tests/linked_list_test.h b/Source/charon/tests/linked_list_test.h
index c1b162e70..b78158822 100644
--- a/Source/charon/tests/linked_list_test.h
+++ b/Source/charon/tests/linked_list_test.h
@@ -24,13 +24,21 @@
#define LINKED_LIST_TEST_H_
/**
- * @brief Tes function for the type linked_list_t
+ * @brief Test function for the type linked_list_t
+ *
+ * Performs different kinds of assertions to check the functionality
+ * of the linked_list_t in a Single-Threaded environment.
*
+ * @warning To be usable in multi-threaded software
+ * this list has to get protected with locks.
+ *
* @param tester tester object
*/
void test_linked_list(tester_t *tester);
-
+/**
+ * Test for linked_list_t
+ */
test_t linked_list_test = {test_linked_list,"Linked List"};
#endif /*LINKED_LIST_TEST_H_*/
diff --git a/Source/charon/tests/tests.h b/Source/charon/tests/tests.h
index 0a6eadc37..326b4772d 100644
--- a/Source/charon/tests/tests.h
+++ b/Source/charon/tests/tests.h
@@ -1,9 +1,9 @@
/**
* @file tests.h
*
- * @brief Lists all the tests to get performed by the tester
+ * @brief Lists all the tests to be processed by the tester object
*
- * New tests have to be added here
+ * New tests have to be added here!
*
*/
@@ -30,7 +30,10 @@
#include "thread_pool_test.h"
#include "job_queue_test.h"
-
+
+/**
+ * @brief these tests are getting performed by the tester
+ */
test_t *tests[] ={
&linked_list_test,
&thread_pool_test,
diff --git a/Source/charon/tests/thread_pool_test.c b/Source/charon/tests/thread_pool_test.c
index efa000ca7..bc481af9b 100644
--- a/Source/charon/tests/thread_pool_test.c
+++ b/Source/charon/tests/thread_pool_test.c
@@ -24,8 +24,8 @@
#include "../tester.h"
#include "../thread_pool.h"
-/**
- * @brief Test function to test the thread pool class
+/*
+ * Description in header file
*/
void test_thread_pool(tester_t *tester)
{
diff --git a/Source/charon/tests/thread_pool_test.h b/Source/charon/tests/thread_pool_test.h
index feafa2897..42d6d0635 100644
--- a/Source/charon/tests/thread_pool_test.h
+++ b/Source/charon/tests/thread_pool_test.h
@@ -23,8 +23,16 @@
#ifndef THREAD_POOL_TEST_H_
#define THREAD_POOL_TEST_H_
+/**
+ * @brief Test function for the type thread_pool_t
+ *
+ * @param tester tester object
+ */
void test_thread_pool(tester_t *tester);
+/**
+ * Test for thread_pool_t
+ */
test_t thread_pool_test = {test_thread_pool,"Thread Pool"};
#endif /*THREAD_POOL_TEST_H_*/