29
29
#include "ut_support.h"
30
30
#include "private/cfe_sbr.h"
31
31
#include "cfe_sbr_priv.h"
32
- #include "test_cfe_sbr_map.h"
33
32
34
33
/*
35
34
* Defines
@@ -50,60 +49,69 @@ CFE_SB_MsgId_t Test_SBR_Unhash(CFE_SB_MsgId_Atom_t Hash) {
50
49
return CFE_SB_ValueToMsgId (Hash );
51
50
}
52
51
53
- void Test_SBR_Map (void )
52
+ void Test_SBR_Map_Hash (void )
54
53
{
55
54
56
- CFE_SB_MsgId_Atom_t idx ;
57
- CFE_SBR_RouteId_t routeid ;
58
- CFE_SB_MsgId_t msgid ;
59
- uint32 invalidcnt ;
55
+ CFE_SB_MsgId_Atom_t msgidx ;
56
+ CFE_SBR_RouteId_t routeid [3 ];
57
+ CFE_SB_MsgId_t msgid [3 ];
58
+ uint32 count ;
59
+ uint32 collisions ;
60
60
61
61
UtPrintf ("Invalid msg checks" );
62
62
ASSERT_EQ (CFE_SBR_SetRouteId (CFE_SB_ValueToMsgId (0 ), CFE_SBR_ValueToRouteId (0 )), 0 );
63
63
ASSERT_EQ (CFE_SBR_IsValidRouteId (CFE_SBR_GetRouteId (CFE_SB_ValueToMsgId (0 ))), false);
64
64
65
- UtPrintf ("Initialize map" );
66
- CFE_SBR_Init_Map ();
65
+ UtPrintf ("Initialize routing and map" );
66
+ CFE_SBR_Init ();
67
67
68
68
/* Force valid msgid responses */
69
69
UT_SetForceFail (UT_KEY (CFE_SB_IsValidMsgId ), true);
70
70
71
71
UtPrintf ("Check that all entries are set invalid" );
72
- invalidcnt = 0 ;
73
- for (idx = 0 ; idx <= CFE_PLATFORM_SB_HIGHEST_VALID_MSGID ; idx ++ )
72
+ count = 0 ;
73
+ for (msgidx = 0 ; msgidx <= CFE_PLATFORM_SB_HIGHEST_VALID_MSGID ; msgidx ++ )
74
74
{
75
- if (!CFE_SBR_IsValidRouteId (CFE_SBR_GetRouteId (CFE_SB_ValueToMsgId (idx ))))
75
+ if (!CFE_SBR_IsValidRouteId (CFE_SBR_GetRouteId (CFE_SB_ValueToMsgId (msgidx ))))
76
76
{
77
- invalidcnt ++ ;
77
+ count ++ ;
78
78
}
79
79
}
80
- ASSERT_EQ (invalidcnt , CFE_PLATFORM_SB_HIGHEST_VALID_MSGID + 1 );
81
-
82
- UtPrintf ("Set/Get a range of ids " );
83
- routeid = CFE_SBR_ValueToRouteId (CFE_PLATFORM_SB_MAX_MSG_IDS + 1 );
84
- msgid = CFE_SB_ValueToMsgId (0 );
85
- ASSERT_EQ (CFE_SBR_SetRouteId (msgid , routeid ), 0 );
86
- ASSERT_EQ (CFE_SBR_GetRouteId (msgid ).RouteId , routeid .RouteId );
87
-
88
- routeid = CFE_SBR_ValueToRouteId (0 );
89
- msgid = CFE_SB_ValueToMsgId (CFE_PLATFORM_SB_HIGHEST_VALID_MSGID );
90
- ASSERT_EQ (CFE_SBR_SetRouteId (msgid , routeid ), 0 );
91
- ASSERT_EQ (CFE_SBR_GetRouteId (msgid ).RouteId , routeid .RouteId );
92
-
93
- UtPrintf ("Check there is now 1 valid entry in map" );
94
- invalidcnt = 0 ;
95
- for (idx = 0 ; idx <= CFE_PLATFORM_SB_HIGHEST_VALID_MSGID ; idx ++ )
80
+ ASSERT_EQ (count , CFE_PLATFORM_SB_HIGHEST_VALID_MSGID + 1 );
81
+
82
+ /* Note AddRoute required for hash logic to work since it depends on MsgId in routing table */
83
+ UtPrintf ("Add routes and check with a rollover and a skip" );
84
+ msgid [0 ] = CFE_SB_ValueToMsgId (0 );
85
+ msgid [1 ] = Test_SBR_Unhash (0xFFFFFFFF );
86
+ msgid [2 ] = Test_SBR_Unhash (0x7FFFFFFF );
87
+ routeid [0 ] = CFE_SBR_AddRoute (msgid [0 ], & collisions );
88
+ ASSERT_EQ (collisions , 0 );
89
+ routeid [1 ] = CFE_SBR_AddRoute (msgid [1 ], & collisions );
90
+ ASSERT_EQ (collisions , 0 );
91
+ routeid [2 ] = CFE_SBR_AddRoute (msgid [2 ], & collisions );
92
+ ASSERT_EQ (collisions , 2 );
93
+
94
+ ASSERT_EQ (CFE_SBR_RouteIdToValue (CFE_SBR_GetRouteId (msgid [0 ])), CFE_SBR_RouteIdToValue (routeid [0 ]));
95
+ ASSERT_EQ (CFE_SBR_RouteIdToValue (CFE_SBR_GetRouteId (msgid [1 ])), CFE_SBR_RouteIdToValue (routeid [1 ]));
96
+ ASSERT_EQ (CFE_SBR_RouteIdToValue (CFE_SBR_GetRouteId (msgid [2 ])), CFE_SBR_RouteIdToValue (routeid [2 ]));
97
+
98
+ /* Performance check, 0xFFFFFF on 3.2GHz linux box is around 8-9 seconds */
99
+ count = 0 ;
100
+ for (msgidx = 0 ; msgidx <= 0xFFFF ; msgidx ++ )
96
101
{
97
- if (! CFE_SBR_IsValidRouteId (CFE_SBR_GetRouteId (CFE_SB_ValueToMsgId (idx ))))
102
+ if (CFE_SBR_IsValidRouteId (CFE_SBR_GetRouteId (CFE_SB_ValueToMsgId (msgidx ))))
98
103
{
99
- invalidcnt ++ ;
104
+ count ++ ;
100
105
}
101
106
}
102
- ASSERT_EQ (invalidcnt , CFE_PLATFORM_SB_HIGHEST_VALID_MSGID );
107
+ }
108
+
109
+ /* Main unit test routine */
110
+ void UtTest_Setup (void )
111
+ {
112
+ UT_Init ("map_hash" );
113
+ UtPrintf ("Software Bus Routing hash map coverage test..." );
103
114
104
- UtPrintf ("Set back to invalid and check again" );
105
- routeid = CFE_SBR_INVALID_ROUTE_ID ;
106
- ASSERT_EQ (CFE_SBR_SetRouteId (msgid , routeid ), 0 );
107
- ASSERT_EQ (CFE_SBR_GetRouteId (msgid ).RouteId , routeid .RouteId );
108
- ASSERT_EQ (CFE_SBR_IsValidRouteId (CFE_SBR_GetRouteId (msgid )), false);
115
+ UT_ADD_TEST (Test_SBR_Map_Hash );
109
116
}
117
+
0 commit comments