mirror of
https://github.com/nasa/trick.git
synced 2024-12-18 20:57:55 +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. */
|
/** @brief Removes all data recording groups. */
|
||||||
void remove_all_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) ;
|
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. */
|
/** @brief Signal the write thread to execute. */
|
||||||
virtual int signal_thread() ;
|
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 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 ) ;
|
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( std::string in_name ) ;
|
||||||
|
Trick::DataRecordGroup * get_data_record_group_by_idx( int idx ) ;
|
||||||
|
int get_num_data_record_groups() ;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -1,10 +1,59 @@
|
|||||||
exec(open("Modified_data/dr_typesASCII.dr").read())
|
from trick.unit_test import *
|
||||||
exec(open("Modified_data/dr_typesBINARY.dr").read())
|
|
||||||
exec(open("Modified_data/dr_bitfASCII.dr").read())
|
|
||||||
exec(open("Modified_data/dr_bitfBINARY.dr").read())
|
|
||||||
|
|
||||||
trick_utest.unit_tests.enable() ;
|
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_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)
|
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) {
|
Trick::DataRecordGroup * Trick::DataRecordDispatcher::get_group(std::string in_name) {
|
||||||
std::vector <Trick::DataRecordGroup *>::iterator it ;
|
std::vector <Trick::DataRecordGroup *>::iterator it ;
|
||||||
for ( it = groups.begin() ; it != groups.end() ; ++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 ;
|
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
|
@details
|
||||||
-# If the writer thread condition variable is unlocked
|
-# 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 ;
|
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 ) {
|
extern "C" int set_max_size_record_group (const char * in_name, uint64_t bytes ) {
|
||||||
if ( the_drd != NULL ) {
|
if ( the_drd != NULL ) {
|
||||||
return the_drd->set_group_max_file_size(in_name, bytes ) ;
|
return the_drd->set_group_max_file_size(in_name, bytes ) ;
|
||||||
|
Loading…
Reference in New Issue
Block a user