mirror of
https://github.com/strongswan/strongswan.git
synced 2025-11-27 00:00:29 -05:00
- Tests more documented
This commit is contained in:
parent
5ea7551195
commit
ef23cd28c1
@ -50,12 +50,8 @@ struct private_tester_s {
|
|||||||
pthread_mutex_t mutex;
|
pthread_mutex_t mutex;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Implementation of function test_all
|
||||||
/**
|
|
||||||
* @brief Testing of all registered tests
|
|
||||||
*
|
|
||||||
* New tests have to be added in this function
|
|
||||||
*/
|
*/
|
||||||
static status_t test_all(tester_t *tester,test_t **tests)
|
static status_t test_all(tester_t *tester,test_t **tests)
|
||||||
{
|
{
|
||||||
@ -76,8 +72,7 @@ static status_t test_all(tester_t *tester,test_t **tests)
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief implements the private run_test-Function
|
* Implementation of function run_test
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
static void run_test(tester_t *tester, void (*test_function) (tester_t * tester), char * test_name)
|
static void run_test(tester_t *tester, void (*test_function) (tester_t * tester), char * test_name)
|
||||||
{
|
{
|
||||||
@ -94,8 +89,7 @@ static void run_test(tester_t *tester, void (*test_function) (tester_t * tester)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief implements the private assert_true-Function
|
* Implementation of function assert_true
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
static void assert_true(tester_t *tester, bool to_be_true,char * assert_name)
|
static void assert_true(tester_t *tester, bool to_be_true,char * assert_name)
|
||||||
{
|
{
|
||||||
@ -120,7 +114,6 @@ static void assert_true(tester_t *tester, bool to_be_true,char * assert_name)
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Implements the destroy function
|
* Implements the destroy function
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
static status_t destroy(tester_t *tester)
|
static status_t destroy(tester_t *tester)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -36,7 +36,7 @@
|
|||||||
typedef struct test_s test_t;
|
typedef struct test_s test_t;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief A tester object to perform tests
|
* @brief A tester object to perform tests with
|
||||||
*/
|
*/
|
||||||
typedef struct tester_s tester_t;
|
typedef struct tester_s tester_t;
|
||||||
|
|
||||||
|
|||||||
@ -33,21 +33,33 @@
|
|||||||
|
|
||||||
typedef struct job_queue_test_s job_queue_test_t;
|
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{
|
struct job_queue_test_s{
|
||||||
tester_t *tester;
|
tester_t *tester;
|
||||||
job_queue_t *job_queue;
|
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
|
* @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)
|
static void test_job_queue_sender(job_queue_test_t * testinfo)
|
||||||
{
|
{
|
||||||
|
|
||||||
int i;
|
int i;
|
||||||
|
for (i = 0; i < testinfo->insert_item_count; i++)
|
||||||
for (i = 0; i < testinfo->max_queue_item_count; i++)
|
|
||||||
{
|
{
|
||||||
int *value = alloc_thing(int,"int");
|
int *value = alloc_thing(int,"int");
|
||||||
*value = i;
|
*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
|
* @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)
|
static void test_job_queue_receiver(job_queue_test_t * testinfo)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
for (i = 0; i < testinfo->remove_item_count; i++)
|
||||||
for (i = 0; i < testinfo->max_queue_item_count; i++)
|
|
||||||
{
|
{
|
||||||
job_t *job;
|
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,(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,(job->type == INCOMING_PACKET), "job type check");
|
||||||
testinfo->tester->assert_true(testinfo->tester,((*((int *) (job->assigned_data))) == i), "job value check");
|
|
||||||
|
|
||||||
pfree(job->assigned_data);
|
pfree(job->assigned_data);
|
||||||
testinfo->tester->assert_true(testinfo->tester,(job->destroy(job) == SUCCESS), "job destroy call check");
|
testinfo->tester->assert_true(testinfo->tester,(job->destroy(job) == SUCCESS), "job destroy call check");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
*
|
|
||||||
* description is in header file
|
* description is in header file
|
||||||
*/
|
*/
|
||||||
void test_job_queue(tester_t *tester)
|
void test_job_queue(tester_t *tester)
|
||||||
{
|
{
|
||||||
int value = 1000;
|
int value, i;
|
||||||
pthread_t sender_thread, receiver_thread;
|
pthread_t sender_thread, receiver_threads[5];
|
||||||
job_queue_t *job_queue = job_queue_create();
|
job_queue_t *job_queue = job_queue_create();
|
||||||
job_queue_test_t test_infos;
|
job_queue_test_t test_infos;
|
||||||
|
|
||||||
test_infos.tester = tester;
|
test_infos.tester = tester;
|
||||||
test_infos.job_queue = job_queue;
|
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_create( &sender_thread, NULL,(void*(*)(void*)) &test_job_queue_sender, (void*) &test_infos);
|
||||||
|
|
||||||
|
/* Wait for all threads */
|
||||||
pthread_join(sender_thread, NULL);
|
pthread_join(sender_thread, NULL);
|
||||||
pthread_join(receiver_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,(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,(value == 0), "get count value check");
|
||||||
tester->assert_true(tester,(job_queue->destroy(job_queue) == SUCCESS), "destroy call check");
|
tester->assert_true(tester,(job_queue->destroy(job_queue) == SUCCESS), "destroy call check");
|
||||||
|
|||||||
@ -26,10 +26,16 @@
|
|||||||
/**
|
/**
|
||||||
* @brief Test function used to test the job_queue functionality
|
* @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
|
* @param tester associated tester object
|
||||||
*/
|
*/
|
||||||
void test_job_queue(tester_t *tester);
|
void test_job_queue(tester_t *tester);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test 1 for linked_list_t
|
||||||
|
*/
|
||||||
test_t job_queue_test1 = {test_job_queue,"Job-Queue Test1"};
|
test_t job_queue_test1 = {test_job_queue,"Job-Queue Test1"};
|
||||||
|
|
||||||
#endif /*JOB_QUEUE_TEST_H_*/
|
#endif /*JOB_QUEUE_TEST_H_*/
|
||||||
|
|||||||
@ -24,13 +24,21 @@
|
|||||||
#define LINKED_LIST_TEST_H_
|
#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
|
* @param tester tester object
|
||||||
*/
|
*/
|
||||||
void test_linked_list(tester_t *tester);
|
void test_linked_list(tester_t *tester);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test for linked_list_t
|
||||||
|
*/
|
||||||
test_t linked_list_test = {test_linked_list,"Linked List"};
|
test_t linked_list_test = {test_linked_list,"Linked List"};
|
||||||
|
|
||||||
#endif /*LINKED_LIST_TEST_H_*/
|
#endif /*LINKED_LIST_TEST_H_*/
|
||||||
|
|||||||
@ -1,9 +1,9 @@
|
|||||||
/**
|
/**
|
||||||
* @file tests.h
|
* @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!
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -31,6 +31,9 @@
|
|||||||
#include "job_queue_test.h"
|
#include "job_queue_test.h"
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief these tests are getting performed by the tester
|
||||||
|
*/
|
||||||
test_t *tests[] ={
|
test_t *tests[] ={
|
||||||
&linked_list_test,
|
&linked_list_test,
|
||||||
&thread_pool_test,
|
&thread_pool_test,
|
||||||
|
|||||||
@ -24,8 +24,8 @@
|
|||||||
#include "../tester.h"
|
#include "../tester.h"
|
||||||
#include "../thread_pool.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)
|
void test_thread_pool(tester_t *tester)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -23,8 +23,16 @@
|
|||||||
#ifndef THREAD_POOL_TEST_H_
|
#ifndef THREAD_POOL_TEST_H_
|
||||||
#define 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);
|
void test_thread_pool(tester_t *tester);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test for thread_pool_t
|
||||||
|
*/
|
||||||
test_t thread_pool_test = {test_thread_pool,"Thread Pool"};
|
test_t thread_pool_test = {test_thread_pool,"Thread Pool"};
|
||||||
|
|
||||||
#endif /*THREAD_POOL_TEST_H_*/
|
#endif /*THREAD_POOL_TEST_H_*/
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user