Correct signature and add tests for dds_instance_get_key
Signed-off-by: Firas Sahli <firas.sahli@adlinktech.com>
This commit is contained in:
		
							parent
							
								
									8aa6ceff81
								
							
						
					
					
						commit
						6908e3deea
					
				
					 2 changed files with 98 additions and 2 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:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										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);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue