Merge pull request #60 from FirasSahliADLinktech/multiple_tests
Some missing unit tests and correct signature
This commit is contained in:
		
						commit
						69f563be5b
					
				
					 5 changed files with 159 additions and 8 deletions
				
			
		| 
						 | 
				
			
			@ -431,7 +431,7 @@ err:
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
_Pre_satisfies_(entity & DDS_ENTITY_KIND_MASK)
 | 
			
		||||
int
 | 
			
		||||
dds_return_t
 | 
			
		||||
dds_instance_get_key(
 | 
			
		||||
        dds_entity_t entity,
 | 
			
		||||
        dds_instance_handle_t inst,
 | 
			
		||||
| 
						 | 
				
			
			@ -458,7 +458,7 @@ dds_instance_get_key(
 | 
			
		|||
    if (dds_tkmap_get_key (map, topic->m_stopic, inst, data)) {
 | 
			
		||||
        ret = DDS_RETCODE_OK;
 | 
			
		||||
    } else{
 | 
			
		||||
        ret = DDS_ERRNO(DDS_RETCODE_PRECONDITION_NOT_MET, "No instance related with the provided entity is found");
 | 
			
		||||
        ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER, "No instance related with the provided entity is found");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
err:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -528,11 +528,11 @@ void dds_qset_partition
 | 
			
		|||
    }
 | 
			
		||||
 | 
			
		||||
    if (qos->partition.strs != NULL){
 | 
			
		||||
      for (i = 0; i < qos->partition.n; i++) {
 | 
			
		||||
          dds_free(qos->partition.strs[i]);
 | 
			
		||||
      }
 | 
			
		||||
      dds_free(qos->partition.strs);
 | 
			
		||||
      qos->partition.strs = NULL;
 | 
			
		||||
        for (i = 0; i < qos->partition.n; i++) {
 | 
			
		||||
            dds_free(qos->partition.strs[i]);
 | 
			
		||||
        }
 | 
			
		||||
        dds_free(qos->partition.strs);
 | 
			
		||||
        qos->partition.strs = NULL;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    qos->partition.n = n;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										96
									
								
								src/core/ddsc/tests/instance_get_key.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										96
									
								
								src/core/ddsc/tests/instance_get_key.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,96 @@
 | 
			
		|||
#include <assert.h>
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include <string.h>
 | 
			
		||||
#include <criterion/criterion.h>
 | 
			
		||||
#include <criterion/logging.h>
 | 
			
		||||
 | 
			
		||||
#include "os/os.h"
 | 
			
		||||
#include "ddsc/dds.h"
 | 
			
		||||
#include "RoundTrip.h"
 | 
			
		||||
 | 
			
		||||
static dds_entity_t participant = DDS_ENTITY_NIL;
 | 
			
		||||
static dds_entity_t topic = DDS_ENTITY_NIL;
 | 
			
		||||
static dds_entity_t publisher = DDS_ENTITY_NIL;
 | 
			
		||||
static dds_entity_t writer = DDS_ENTITY_NIL;
 | 
			
		||||
 | 
			
		||||
static dds_instance_handle_t handle = DDS_HANDLE_NIL;
 | 
			
		||||
 | 
			
		||||
static RoundTripModule_Address data;
 | 
			
		||||
 | 
			
		||||
/* Fixture to create prerequisite entity */
 | 
			
		||||
static void setup(void)
 | 
			
		||||
{
 | 
			
		||||
    participant = dds_create_participant(DDS_DOMAIN_DEFAULT, NULL, NULL);
 | 
			
		||||
    cr_assert_gt(participant, 0);
 | 
			
		||||
    topic = dds_create_topic(participant, &RoundTripModule_Address_desc, "ddsc_instance_get_key", NULL, NULL);
 | 
			
		||||
    cr_assert_gt(topic, 0);
 | 
			
		||||
 | 
			
		||||
    publisher = dds_create_publisher(participant, NULL, NULL);
 | 
			
		||||
    cr_assert_gt(publisher, 0);
 | 
			
		||||
 | 
			
		||||
    writer = dds_create_writer(publisher, topic, NULL, NULL);
 | 
			
		||||
    cr_assert_gt(writer, 0);
 | 
			
		||||
 | 
			
		||||
    memset(&data, 0, sizeof(data));
 | 
			
		||||
    data.ip = os_strdup("some data");
 | 
			
		||||
    cr_assert_not_null(data.ip);
 | 
			
		||||
    data.port = 1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Fixture to delete prerequisite entity */
 | 
			
		||||
static void teardown(void)
 | 
			
		||||
{
 | 
			
		||||
    RoundTripModule_Address_free(&data, DDS_FREE_CONTENTS);
 | 
			
		||||
 | 
			
		||||
    dds_delete(writer);
 | 
			
		||||
    dds_delete(publisher);
 | 
			
		||||
    dds_delete(topic);
 | 
			
		||||
    dds_delete(participant);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
Test(ddsc_instance_get_key, bad_entity, .init=setup, .fini=teardown)
 | 
			
		||||
{
 | 
			
		||||
    dds_return_t ret;
 | 
			
		||||
 | 
			
		||||
    ret = dds_instance_get_key(participant, handle, &data);
 | 
			
		||||
    cr_assert_eq(dds_err_nr(ret), DDS_RETCODE_BAD_PARAMETER, "returned %d", dds_err_nr(ret));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
Test(ddsc_instance_get_key, null_data, .init=setup, .fini=teardown)
 | 
			
		||||
{
 | 
			
		||||
    dds_return_t ret;
 | 
			
		||||
 | 
			
		||||
    ret = dds_register_instance(writer, &handle, NULL);
 | 
			
		||||
    cr_assert_eq(dds_err_nr(ret), DDS_RETCODE_BAD_PARAMETER, "Argument data is NULL");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
Test(ddsc_instance_get_key, null_handle, .init=setup, .fini=teardown)
 | 
			
		||||
{
 | 
			
		||||
    dds_return_t ret;
 | 
			
		||||
    ret = dds_register_instance(writer, &handle, &data);
 | 
			
		||||
    cr_assert_eq(ret, DDS_RETCODE_OK, "dds_register_instance succeeded (ret: %d)", dds_err_nr(ret));
 | 
			
		||||
 | 
			
		||||
    ret = dds_instance_get_key(writer, DDS_HANDLE_NIL, &data);
 | 
			
		||||
    cr_assert_eq(dds_err_nr(ret), DDS_RETCODE_BAD_PARAMETER, "Argument data is not null, but handle is null");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
Test(ddsc_instance_get_key, registered_instance, .init=setup, .fini=teardown)
 | 
			
		||||
{
 | 
			
		||||
    dds_return_t ret;
 | 
			
		||||
    RoundTripModule_Address key_data;
 | 
			
		||||
 | 
			
		||||
    ret = dds_register_instance(writer, &handle, &data);
 | 
			
		||||
    cr_assert_eq(ret, DDS_RETCODE_OK, "dds_register_instance succeeded (ret: %d)", dds_err_nr(ret));
 | 
			
		||||
 | 
			
		||||
    memset(&key_data, 0, sizeof(key_data));
 | 
			
		||||
 | 
			
		||||
    ret = dds_instance_get_key(writer, handle, &key_data);
 | 
			
		||||
 | 
			
		||||
    cr_assert_not_null(key_data.ip);
 | 
			
		||||
    cr_assert_eq(strcmp(key_data.ip, data.ip) , 0);
 | 
			
		||||
    cr_assert_eq(key_data.port, data.port);
 | 
			
		||||
    cr_assert_eq(dds_err_nr(ret), DDS_RETCODE_OK);
 | 
			
		||||
 | 
			
		||||
    RoundTripModule_Address_free(&key_data, DDS_FREE_CONTENTS);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -14,7 +14,6 @@
 | 
			
		|||
#include <criterion/criterion.h>
 | 
			
		||||
#include <criterion/logging.h>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* We are deliberately testing some bad arguments that SAL will complain about.
 | 
			
		||||
 * So, silence SAL regarding these issues. */
 | 
			
		||||
#ifdef _MSC_VER
 | 
			
		||||
| 
						 | 
				
			
			@ -240,6 +239,45 @@ qos_fini(void)
 | 
			
		|||
/****************************************************************************
 | 
			
		||||
 * API tests
 | 
			
		||||
 ****************************************************************************/
 | 
			
		||||
Test(ddsc_qos, copy_bad_source, .init=qos_init, .fini=qos_fini)
 | 
			
		||||
{
 | 
			
		||||
    dds_return_t result;
 | 
			
		||||
 | 
			
		||||
	result = dds_qos_copy(g_qos, NULL);
 | 
			
		||||
	cr_assert_eq(dds_err_nr(result), DDS_RETCODE_BAD_PARAMETER, "returned %d", dds_err_nr(result));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
Test(ddsc_qos, copy_bad_destination, .init=qos_init, .fini=qos_fini)
 | 
			
		||||
{
 | 
			
		||||
	dds_return_t result;
 | 
			
		||||
 | 
			
		||||
	result = dds_qos_copy(NULL, g_qos);
 | 
			
		||||
	cr_assert_eq(dds_err_nr(result), DDS_RETCODE_BAD_PARAMETER, "returned %d", dds_err_nr(result));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
Test(ddsc_qos, copy_with_partition, .init=qos_init, .fini=qos_fini)
 | 
			
		||||
{
 | 
			
		||||
	dds_return_t result;
 | 
			
		||||
	dds_qos_t *qos;
 | 
			
		||||
	struct pol_partition p = { 0, NULL };
 | 
			
		||||
 | 
			
		||||
	qos = dds_qos_create();
 | 
			
		||||
	cr_assert_not_null(qos);
 | 
			
		||||
 | 
			
		||||
	dds_qset_partition(g_qos, g_pol_partition.n, g_pol_partition.ps);
 | 
			
		||||
	result = dds_qos_copy(qos, g_qos);
 | 
			
		||||
 | 
			
		||||
	cr_assert_eq(result, DDS_RETCODE_OK);
 | 
			
		||||
	dds_qget_partition(qos, &p.n, &p.ps);
 | 
			
		||||
	cr_assert_eq(p.n, g_pol_partition.n);
 | 
			
		||||
 | 
			
		||||
	for (uint32_t cnt = 0; cnt < p.n; cnt++) {
 | 
			
		||||
	    cr_assert_str_eq(p.ps[cnt], g_pol_partition.ps[cnt]);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	dds_qos_delete(qos);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
Test(ddsc_qos, userdata, .init=qos_init, .fini=qos_fini)
 | 
			
		||||
{
 | 
			
		||||
    struct pol_userdata p = { NULL, 0 };
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										17
									
								
								src/core/ddsc/tests/time.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								src/core/ddsc/tests/time.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,17 @@
 | 
			
		|||
#include <criterion/criterion.h>
 | 
			
		||||
#include <criterion/logging.h>
 | 
			
		||||
 | 
			
		||||
#include "ddsc/dds.h"
 | 
			
		||||
 | 
			
		||||
Test(ddsc_time, request_time)
 | 
			
		||||
{
 | 
			
		||||
    dds_time_t now, then;
 | 
			
		||||
    dds_duration_t pause = 1 * DDS_NSECS_IN_SEC;
 | 
			
		||||
 | 
			
		||||
    now = dds_time();
 | 
			
		||||
    cr_assert_gt(now, 0);
 | 
			
		||||
    /* Sleep for 1 second, every platform should (hopefully) support that */
 | 
			
		||||
    dds_sleepfor(pause);
 | 
			
		||||
    then = dds_time();
 | 
			
		||||
    cr_assert_geq(then, now + pause);
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue