mirror of
https://github.com/nasa/trick.git
synced 2024-12-18 12:56:26 +00:00
Add calls for getting the total number of data recording groups and the data recording group pointer by its id number (#1799)
* Added new function calls to data_record_utilities for getting the total number of data recording groups and the data recording group pointer by its id number per customer request. * Deleted unnecessary variable. * Added a couple of more unit tests and fixed the return number to 0 instead of NULL for getting total number of drgs.
This commit is contained in:
parent
937712daa4
commit
e8508ea575
@ -75,9 +75,15 @@ namespace Trick {
|
||||
/** @brief Removes all data recording groups. */
|
||||
void remove_all_groups() ;
|
||||
|
||||
/** @brief Gets a data recording group. */
|
||||
/** @brief Gets a data recording group by its name. */
|
||||
Trick::DataRecordGroup * get_group(std::string group_name) ;
|
||||
|
||||
/** @brief Gets a data recording group by its id number */
|
||||
Trick::DataRecordGroup * get_group(int idx) ;
|
||||
|
||||
/** @brief Gets the size of all added data recroding groups */
|
||||
int get_groups_size() ;
|
||||
|
||||
/** @brief Signal the write thread to execute. */
|
||||
virtual int signal_thread() ;
|
||||
|
||||
|
@ -23,6 +23,8 @@ int set_max_size_record_group (const char * in_name, uint64_t bytes ) ;
|
||||
int add_data_record_group( Trick::DataRecordGroup * in_group, Trick::DR_Buffering buffering = Trick::DR_Not_Specified ) ;
|
||||
int remove_data_record_group( Trick::DataRecordGroup * in_group ) ;
|
||||
Trick::DataRecordGroup * get_data_record_group( std::string in_name ) ;
|
||||
Trick::DataRecordGroup * get_data_record_group_by_idx( int idx ) ;
|
||||
int get_num_data_record_groups() ;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -1,10 +1,59 @@
|
||||
exec(open("Modified_data/dr_typesASCII.dr").read())
|
||||
exec(open("Modified_data/dr_typesBINARY.dr").read())
|
||||
exec(open("Modified_data/dr_bitfASCII.dr").read())
|
||||
exec(open("Modified_data/dr_bitfBINARY.dr").read())
|
||||
from trick.unit_test import *
|
||||
|
||||
trick_utest.unit_tests.enable() ;
|
||||
trick_utest.unit_tests.set_file_name( os.getenv("TRICK_HOME") + "/trick_test/SIM_test_dr.xml" ) ;
|
||||
trick_utest.unit_tests.enable()
|
||||
trick_utest.unit_tests.set_file_name( os.getenv("TRICK_HOME") + "/trick_test/SIM_test_dr.xml" )
|
||||
|
||||
trick_utest.unit_tests.set_test_name( "DRTest" )
|
||||
|
||||
######################################################################################################################
|
||||
|
||||
test_suite = "drg api"
|
||||
|
||||
# Get the number of data recording groups before any drg is created
|
||||
num_drgs = trick.get_num_data_record_groups()
|
||||
|
||||
# Check the result of trick.get_num_data_record_groups()
|
||||
TRICK_EXPECT_EQ( num_drgs , 0 , test_suite , "0 drgs before any created" )
|
||||
|
||||
# The first item of each pair is the .dr file name and the second item of each pair is the drg name
|
||||
dr_file_name_drg_name_tuple = (('Modified_data/dr_typesASCII.dr', 'DR_typesASCII'),
|
||||
('Modified_data/dr_typesBINARY.dr', 'DR_typesBINARY'),
|
||||
('Modified_data/dr_bitfASCII.dr', 'DR_bitfieldsASCII'),
|
||||
('Modified_data/dr_bitfBINARY.dr', 'DR_bitfieldsBINARY'))
|
||||
|
||||
num_files = len(dr_file_name_drg_name_tuple)
|
||||
for i in range(num_files):
|
||||
exec(open(dr_file_name_drg_name_tuple[i][0]).read())
|
||||
|
||||
# Get the number of data recording groups created
|
||||
num_drgs = trick.get_num_data_record_groups()
|
||||
|
||||
# Check the result of trick.get_num_data_record_groups()
|
||||
TRICK_EXPECT_EQ( num_drgs , 4 , test_suite , "num of dr groups = 4" )
|
||||
|
||||
# Test trick.get_data_record_group(<drg_name>) for getting the drg pointer by its name
|
||||
# Check the name of the obtained drg instead of the drg pointer
|
||||
for i in range(num_drgs):
|
||||
TRICK_EXPECT_EQ( trick.get_data_record_group(dr_file_name_drg_name_tuple[i][1]).get_group_name(), dr_file_name_drg_name_tuple[i][1], test_suite , "get drg by name " + dr_file_name_drg_name_tuple[i][1] )
|
||||
|
||||
# Test trick.get_data_record_group_by_idx(<drg_idx) for getting the drg pointer by its id number
|
||||
# Check the name of the obtained drg instead of the drg pointer
|
||||
for i in range(num_drgs):
|
||||
TRICK_EXPECT_EQ( trick.get_data_record_group_by_idx(i).get_group_name(), dr_file_name_drg_name_tuple[i][1], test_suite , "get drg by drg id " + str(i) )
|
||||
|
||||
is_null = False
|
||||
if trick.get_data_record_group(dr_file_name_drg_name_tuple[0][1]+'test') is None :
|
||||
is_null = True
|
||||
TRICK_EXPECT_TRUE( is_null, test_suite , "null drg by nonexistent drg name" )
|
||||
|
||||
is_null = False
|
||||
if trick.get_data_record_group_by_idx(num_drgs+1) is None :
|
||||
is_null = True
|
||||
TRICK_EXPECT_TRUE( is_null, test_suite , "null drg by drg id 5" )
|
||||
|
||||
is_null = False
|
||||
if trick.get_data_record_group_by_idx(-1) is None :
|
||||
is_null = True
|
||||
TRICK_EXPECT_TRUE( is_null, test_suite , "null drg by drg id -1" )
|
||||
|
||||
trick.stop(1.0)
|
||||
|
@ -180,6 +180,10 @@ void Trick::DataRecordDispatcher::remove_all_groups() {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@details
|
||||
-# Gets the data recording group by its name
|
||||
*/
|
||||
Trick::DataRecordGroup * Trick::DataRecordDispatcher::get_group(std::string in_name) {
|
||||
std::vector <Trick::DataRecordGroup *>::iterator it ;
|
||||
for ( it = groups.begin() ; it != groups.end() ; ++it ) {
|
||||
@ -189,6 +193,25 @@ Trick::DataRecordGroup * Trick::DataRecordDispatcher::get_group(std::string in_n
|
||||
return NULL ;
|
||||
}
|
||||
|
||||
/**
|
||||
@details
|
||||
-# Gets the data recording group by its id number
|
||||
*/
|
||||
Trick::DataRecordGroup * Trick::DataRecordDispatcher::get_group(int in_idx) {
|
||||
if (!groups.empty() && in_idx > -1 && in_idx < groups.size()) {
|
||||
return groups[in_idx];
|
||||
}
|
||||
return NULL ;
|
||||
}
|
||||
|
||||
/**
|
||||
@details
|
||||
-# Gets the size of all added data recroding groups
|
||||
*/
|
||||
int Trick::DataRecordDispatcher::get_groups_size() {
|
||||
return groups.size();
|
||||
}
|
||||
|
||||
/**
|
||||
@details
|
||||
-# If the writer thread condition variable is unlocked
|
||||
|
@ -79,6 +79,20 @@ extern "C" Trick::DataRecordGroup * get_data_record_group( std::string in_name )
|
||||
return NULL ;
|
||||
}
|
||||
|
||||
extern "C" Trick::DataRecordGroup * get_data_record_group_by_idx( int in_idx ) {
|
||||
if ( the_drd != NULL ) {
|
||||
return the_drd->get_group(in_idx) ;
|
||||
}
|
||||
return NULL ;
|
||||
}
|
||||
|
||||
extern "C" int get_num_data_record_groups() {
|
||||
if ( the_drd != NULL ) {
|
||||
return the_drd->get_groups_size() ;
|
||||
}
|
||||
return 0 ;
|
||||
}
|
||||
|
||||
extern "C" int set_max_size_record_group (const char * in_name, uint64_t bytes ) {
|
||||
if ( the_drd != NULL ) {
|
||||
return the_drd->set_group_max_file_size(in_name, bytes ) ;
|
||||
|
Loading…
Reference in New Issue
Block a user