@@ -21,6 +21,8 @@ class TestMuxTunnelBase(object):
21
21
ASIC_NEXTHOP_TABLE = "ASIC_STATE:SAI_OBJECT_TYPE_NEXT_HOP"
22
22
ASIC_ROUTE_TABLE = "ASIC_STATE:SAI_OBJECT_TYPE_ROUTE_ENTRY"
23
23
CONFIG_MUX_CABLE = "MUX_CABLE"
24
+ CONFIG_TUNNEL_TABLE_NAME = "TUNNEL"
25
+ ASIC_QOS_MAP_TABLE_KEY = "ASIC_STATE:SAI_OBJECT_TYPE_QOS_MAP"
24
26
TUNNEL_QOS_MAP_NAME = "AZURE_TUNNEL"
25
27
26
28
SERV1_IPV4 = "192.168.0.100"
@@ -31,7 +33,7 @@ class TestMuxTunnelBase(object):
31
33
IPV6_MASK = "/128"
32
34
TUNNEL_NH_ID = 0
33
35
ACL_PRIORITY = "999"
34
-
36
+
35
37
ecn_modes_map = {
36
38
"standard" : "SAI_TUNNEL_DECAP_ECN_MODE_STANDARD" ,
37
39
"copy_from_outer" : "SAI_TUNNEL_DECAP_ECN_MODE_COPY_FROM_OUTER"
@@ -47,7 +49,7 @@ class TestMuxTunnelBase(object):
47
49
"uniform" : "SAI_TUNNEL_TTL_MODE_UNIFORM_MODEL"
48
50
}
49
51
50
- TC_TO_DSCP_MAP = {str (i ):str { i } for i in range (0 , 8 )}
52
+ TC_TO_DSCP_MAP = {str (i ):str ( i ) for i in range (0 , 8 )}
51
53
TC_TO_QUEUE_MAP = {str (i ):str (i ) for i in range (0 , 8 )}
52
54
53
55
def create_vlan_interface (self , confdb , asicdb , dvs ):
@@ -147,7 +149,7 @@ def check_nexthop_group_in_asic_db(self, asicdb, key, num_tnl_nh=0):
147
149
for k in keys :
148
150
fvs = asicdb .get_entry ("ASIC_STATE:SAI_OBJECT_TYPE_NEXT_HOP_GROUP_MEMBER" , k )
149
151
assert fvs ["SAI_NEXT_HOP_GROUP_MEMBER_ATTR_NEXT_HOP_GROUP_ID" ] == nhg_id
150
-
152
+
151
153
# Count the number of Nexthop member pointing to tunnel
152
154
if fvs ["SAI_NEXT_HOP_GROUP_MEMBER_ATTR_NEXT_HOP_ID" ] == tunnel_nh_id :
153
155
count += 1
@@ -191,7 +193,7 @@ def create_and_test_neighbor(self, confdb, appdb, asicdb, dvs, dvs_route):
191
193
self .set_mux_state (appdb , "Ethernet4" , "standby" )
192
194
193
195
self .add_neighbor (dvs , self .SERV1_IPV4 , "00:00:00:00:00:01" )
194
- # Broadcast neigh 192.168.0.255 is default added. Hence +1 for expected number
196
+ # Broadcast neigh 192.168.0.255 is default added. Hence +1 for expected number
195
197
srv1_v4 = self .check_neigh_in_asic_db (asicdb , self .SERV1_IPV4 , 2 )
196
198
197
199
self .add_neighbor (dvs , self .SERV1_IPV6 , "00:00:00:00:00:01" , True )
@@ -334,9 +336,9 @@ def create_and_test_route(self, appdb, asicdb, dvs, dvs_route):
334
336
dvs_route .check_asicdb_deleted_route_entries ([rtprefix ])
335
337
336
338
ps = swsscommon .ProducerStateTable (pdb .db_connection , "ROUTE_TABLE" )
337
-
339
+
338
340
fvs = swsscommon .FieldValuePairs ([("nexthop" , self .SERV1_IPV4 + "," + self .SERV2_IPV4 ), ("ifname" , "Vlan1000,Vlan1000" )])
339
-
341
+
340
342
ps .set (rtprefix , fvs )
341
343
342
344
# Check if route was propagated to ASIC DB
@@ -544,7 +546,7 @@ def create_and_test_peer(self, db, asicdb, peer_name, peer_ip, src_ip, tc_to_dsc
544
546
assert p2p_obj != None
545
547
546
548
fvs = asicdb .wait_for_entry (self .ASIC_TUNNEL_TABLE , p2p_obj )
547
-
549
+
548
550
if tc_to_dscp_map_oid :
549
551
assert "SAI_TUNNEL_ATTR_ENCAP_QOS_TC_AND_COLOR_TO_DSCP_MAP" in fvs
550
552
if tc_to_queue_map_oid :
@@ -571,18 +573,20 @@ def create_and_test_peer(self, db, asicdb, peer_name, peer_ip, src_ip, tc_to_dsc
571
573
assert value == tc_to_dscp_map_oid
572
574
elif field == "SAI_TUNNEL_ATTR_ENCAP_QOS_TC_TO_QUEUE_MAP" :
573
575
assert value == tc_to_queue_map_oid
576
+ elif field == "SAI_TUNNEL_ATTR_ENCAP_DSCP_MODE" :
577
+ assert value == "SAI_TUNNEL_DSCP_MODE_PIPE_MODEL"
574
578
else :
575
579
assert False , "Field %s is not tested" % field
576
580
577
581
578
582
def check_tunnel_termination_entry_exists_in_asicdb (self , asicdb , tunnel_sai_oid , dst_ips , src_ip = None ):
579
583
tunnel_term_entries = asicdb .wait_for_n_keys (self .ASIC_TUNNEL_TERM_ENTRIES , len (dst_ips ))
580
584
expected_term_type = "SAI_TUNNEL_TERM_TABLE_ENTRY_TYPE_P2P" if src_ip else "SAI_TUNNEL_TERM_TABLE_ENTRY_TYPE_P2MP"
581
-
585
+ expected_len = 6 if src_ip else 5
582
586
for term_entry in tunnel_term_entries :
583
587
fvs = asicdb .get_entry (self .ASIC_TUNNEL_TERM_ENTRIES , term_entry )
584
588
585
- assert len (fvs ) == 5
589
+ assert len (fvs ) == expected_len
586
590
587
591
for field , value in fvs .items ():
588
592
if field == "SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_VR_ID" :
@@ -601,17 +605,14 @@ def check_tunnel_termination_entry_exists_in_asicdb(self, asicdb, tunnel_sai_oid
601
605
assert False , "Field %s is not tested" % field
602
606
603
607
604
- def create_and_test_tunnel (self , db , asicdb , tunnel_name , ** kwargs ):
608
+ def create_and_test_tunnel (self , configdb , asicdb , tunnel_name , ** kwargs ):
605
609
""" Create tunnel and verify all needed enties in ASIC DB exists """
606
610
607
- is_symmetric_tunnel = "src_ip" in kwargs ;
608
-
609
- # create tunnel entry in DB
610
- ps = swsscommon .ProducerStateTable (db , self .APP_TUNNEL_DECAP_TABLE_NAME )
611
-
611
+ is_symmetric_tunnel = "src_ip" in kwargs
612
612
fvs = create_fvs (** kwargs )
613
-
614
- ps .set (tunnel_name , fvs )
613
+ # Write into config db for muxorch, tunnelmgrd will write to APP_DB
614
+ configdb_ps = swsscommon .Table (configdb , self .CONFIG_TUNNEL_TABLE_NAME )
615
+ configdb_ps .set (tunnel_name , fvs )
615
616
616
617
# wait till config will be applied
617
618
time .sleep (1 )
@@ -681,21 +682,19 @@ def remove_and_test_tunnel(self, db, asicdb, tunnel_name):
681
682
def add_qos_map (self , configdb , asicdb , qos_map_type_name , qos_map_name , qos_map ):
682
683
current_oids = asicdb .get_keys (self .ASIC_QOS_MAP_TABLE_KEY )
683
684
# Apply QoS map to config db
684
- table = swsscommon .Table (configdb , qos_map_type_name )
685
+ table = swsscommon .Table (configdb . db_connection , qos_map_type_name )
685
686
fvs = swsscommon .FieldValuePairs (list (qos_map .items ()))
686
687
table .set (qos_map_name , fvs )
687
688
time .sleep (1 )
688
689
689
690
diff = set (asicdb .get_keys (self .ASIC_QOS_MAP_TABLE_KEY )) - set (current_oids )
690
691
assert len (diff ) == 1
691
692
oid = diff .pop ()
692
- fvs_in_asicdb = asicdb .get_entry (self .ASIC_QOS_MAP_TABLE_KEY , oid )
693
- assert (fvs_in_asicdb ["SAI_QOS_MAP_ATTR_TYPE" ] == qos_map_type_name )
694
693
return oid
695
694
696
- def remove_qos_map (self , configdb , qos_map_oid ):
695
+ def remove_qos_map (self , configdb , qos_map_type_name , qos_map_oid ):
697
696
""" Remove the testing qos map"""
698
- table = swsscommon .Table (configdb , qos_map_type_name )
697
+ table = swsscommon .Table (configdb . db_connection , qos_map_type_name )
699
698
table ._del (qos_map_oid )
700
699
701
700
def cleanup_left_over (self , db , asicdb ):
@@ -720,32 +719,32 @@ class TestMuxTunnel(TestMuxTunnelBase):
720
719
def test_Tunnel (self , dvs , testlog ):
721
720
""" test IPv4 Mux tunnel creation """
722
721
723
- db = swsscommon .DBConnector (swsscommon .APPL_DB , dvs .redis_sock , 0 )
722
+ configdb = swsscommon .DBConnector (swsscommon .CONFIG_DB , dvs .redis_sock , 0 )
724
723
asicdb = dvs .get_asic_db ()
725
724
726
725
#self.cleanup_left_over(db, asicdb)
727
726
728
727
# create tunnel IPv4 tunnel
729
- self .create_and_test_tunnel (db , asicdb , tunnel_name = "MuxTunnel0" , tunnel_type = "IPINIP" ,
730
- dst_ip = "10.1.0.32" , dscp_mode = "pipe" ,
728
+ self .create_and_test_tunnel (configdb , asicdb , tunnel_name = "MuxTunnel0" , tunnel_type = "IPINIP" ,
729
+ src_ip = "10.1.0.33" , dst_ip = "10.1.0.32" , dscp_mode = "pipe" ,
731
730
ecn_mode = "standard" , ttl_mode = "pipe" ,
732
731
encap_tc_to_queue_map = self .TUNNEL_QOS_MAP_NAME ,
733
- encap_tc_color_to_dscp_map = self .TUNNEL_QOS_MAP_NAME )
732
+ encap_tc_to_dscp_map = self .TUNNEL_QOS_MAP_NAME )
734
733
735
734
736
735
def test_Peer (self , dvs , testlog ):
737
736
""" test IPv4 Mux tunnel creation """
738
737
739
738
db = dvs .get_config_db ()
740
739
asicdb = dvs .get_asic_db ()
741
-
742
- tc_to_dscp_map_oid = self .add_qos_map (configdb , asicdb , swsscommon .CFG_TC_TO_DSCP_MAP_TABLE_NAME , self .TUNNEL_QOS_MAP_NAME , self .TC_TO_DSCP_MAP )
743
- tc_to_queue_map_oid = self .add_qos_map (configdb , asicdb , swsscommon .CFG_TC_TO_QUEUE_MAP_TABLE_NAME , self .TUNNEL_QOS_MAP_NAME , self .TC_TO_QUEUE_MAP )
740
+
741
+ tc_to_dscp_map_oid = self .add_qos_map (db , asicdb , swsscommon .CFG_TC_TO_DSCP_MAP_TABLE_NAME , self .TUNNEL_QOS_MAP_NAME , self .TC_TO_DSCP_MAP )
742
+ tc_to_queue_map_oid = self .add_qos_map (db , asicdb , swsscommon .CFG_TC_TO_QUEUE_MAP_TABLE_NAME , self .TUNNEL_QOS_MAP_NAME , self .TC_TO_QUEUE_MAP )
744
743
745
744
self .create_and_test_peer (db , asicdb , "peer" , "1.1.1.1" , "10.1.0.32" , tc_to_dscp_map_oid , tc_to_queue_map_oid )
746
745
747
- self .remove_qos_map (configdb , tc_to_dscp_map_oid )
748
- self .remove_qos_map (tc_to_queue_map_oid )
746
+ self .remove_qos_map (db , swsscommon . CFG_TC_TO_DSCP_MAP_TABLE_NAME , tc_to_dscp_map_oid )
747
+ self .remove_qos_map (db , swsscommon . CFG_TC_TO_QUEUE_MAP_TABLE_NAME , tc_to_queue_map_oid )
749
748
750
749
751
750
def test_Neighbor (self , dvs , dvs_route , testlog ):
0 commit comments