@@ -2207,6 +2207,42 @@ def create_cbf_nhg_inexistent_map_test():
2207
2207
self .fc_to_nhg_ps ._del (nhg_maps .pop ())
2208
2208
self .asic_db .wait_for_n_keys (self .ASIC_NHG_MAP_STR , self .asic_nhg_maps_count )
2209
2209
2210
+ # Test scenario:
2211
+ # - Create a CBF NHG that has a member which is not yet synced. It shouldn't be synced.
2212
+ # - Add the missing member and assert the CBF NHG is now synced.
2213
+ def test_cbf_sync_before_member (self , dvs , testlog ):
2214
+ self .init_test (dvs , 2 )
2215
+
2216
+ # Create an FC to NH index selection map
2217
+ nhg_map = [(str (i ), '0' if i < 4 else '1' ) for i in range (8 )]
2218
+ fvs = swsscommon .FieldValuePairs (nhg_map )
2219
+ self .fc_to_nhg_ps .set ('cbfnhgmap1' , fvs )
2220
+ self .asic_db .wait_for_n_keys (self .ASIC_NHG_MAP_STR , self .asic_nhg_maps_count + 1 )
2221
+
2222
+ # Create a non-CBF NHG
2223
+ fvs = swsscommon .FieldValuePairs ([('nexthop' , '10.0.0.1,10.0.0.3' ),
2224
+ ('ifname' , 'Ethernet0,Ethernet4' )])
2225
+ self .nhg_ps .set ('group1' , fvs )
2226
+ self .asic_db .wait_for_n_keys (self .ASIC_NHG_STR , self .asic_nhgs_count + 1 )
2227
+
2228
+ # Create a CBF NHG with a member that doesn't currently exist. Nothing should happen
2229
+ fvs = swsscommon .FieldValuePairs ([('members' , 'group1,group2' ),
2230
+ ('selection_map' , 'cbfnhgmap1' )])
2231
+ self .cbf_nhg_ps .set ('cbfgroup1' , fvs )
2232
+ time .sleep (1 )
2233
+ assert (len (self .asic_db .get_keys (self .ASIC_NHG_STR )) == self .asic_nhgs_count + 1 )
2234
+
2235
+ # Create the missing non-CBF NHG. This and the CBF NHG should be created.
2236
+ fvs = swsscommon .FieldValuePairs ([('nexthop' , '10.0.0.1,10.0.0.3' ),
2237
+ ("ifname" , "Ethernet0,Ethernet4" )])
2238
+ self .nhg_ps .set ("group2" , fvs )
2239
+ self .asic_db .wait_for_n_keys (self .ASIC_NHG_STR , self .asic_nhgs_count + 3 )
2240
+
2241
+ # Cleanup
2242
+ self .nhg_ps ._del ('cbfgroup1' )
2243
+ self .nhg_ps ._del ('group1' )
2244
+ self .nhg_ps ._del ('group2' )
2245
+ self .nhg_ps ._del ('cbfnhgmap1' )
2210
2246
2211
2247
# Add Dummy always-pass test at end as workaroud
2212
2248
# for issue when Flaky fail on final test it invokes module tear-down before retrying
0 commit comments