@@ -37,7 +37,7 @@ def remove_vlan_member(self, vlan, interface):
37
37
time .sleep (1 )
38
38
39
39
def check_syslog (self , dvs , marker , process , err_log , vlan_str , expected_cnt ):
40
- (exitcode , num ) = dvs .runcmd (['sh' , '-c' , "awk \' /%s/,ENDFILE {print;}\' /var/log/syslog | grep %s | grep \" %s\" | grep -i %s | wc -l" % (marker , process , err_log , vlan_str )])
40
+ (exitcode , num ) = dvs .runcmd (['sh' , '-c' , "awk \' /%s/,ENDFILE {print;}\' /var/log/syslog | grep %s | grep \" %s\" | grep -i \" %s \" | wc -l" % (marker , process , err_log , vlan_str )])
41
41
assert num .strip () == str (expected_cnt )
42
42
43
43
def check_app_db_vlan_fields (self , fvs , admin_status = "up" , mtu = "9100" ):
@@ -439,6 +439,74 @@ def test_RemoveNonexistentVlan(self, dvs, testlog):
439
439
# remove vlan
440
440
dvs .remove_vlan (vlan )
441
441
442
+ @pytest .mark .skipif (StrictVersion (platform .linux_distribution ()[1 ]) <= StrictVersion ('8.9' ), reason = "Debian 8.9 or before has no support" )
443
+ @pytest .mark .parametrize ("test_input, expected" , [
444
+ (["tagging_mode" , "untagged" ], [1 , "SAI_VLAN_TAGGING_MODE_UNTAGGED" ]),
445
+ (["tagging_mode" , "tagged" ], [1 , "SAI_VLAN_TAGGING_MODE_TAGGED" ]),
446
+ (["tagging_mode" , "priority_tagged" ], [1 , "SAI_VLAN_TAGGING_MODE_PRIORITY_TAGGED" ]),
447
+ (["tagging_mode" , "unexpected_mode" ], [0 , "" ]),
448
+ (["no_tag_mode" , "" ], [1 , "SAI_VLAN_TAGGING_MODE_UNTAGGED" ]),
449
+ ])
450
+ def test_VlanMemberTaggingMode (self , dvs , testlog , test_input , expected ):
451
+ self .setup_db (dvs )
452
+ tagging_mode_prefix = test_input [0 ]
453
+ tagging_mode = test_input [1 ]
454
+ marker = dvs .add_log_marker ()
455
+ vlan = "2"
456
+
457
+ # create vlan
458
+ self .create_vlan (vlan )
459
+
460
+ # check asic database
461
+ tbl = swsscommon .Table (self .adb , "ASIC_STATE:SAI_OBJECT_TYPE_VLAN" )
462
+ vlan_entries = [k for k in tbl .getKeys () if k != dvs .asicdb .default_vlan_id ]
463
+ assert len (vlan_entries ) == 1
464
+ vlan_oid = vlan_entries [0 ]
465
+
466
+ # add vlan member
467
+ tbl = swsscommon .Table (self .cdb , "VLAN_MEMBER" )
468
+ fvs = swsscommon .FieldValuePairs ([(tagging_mode_prefix , tagging_mode )])
469
+ tbl .set ("Vlan" + vlan + "|" + "Ethernet0" , fvs )
470
+ time .sleep (1 )
471
+
472
+ # check asic database
473
+ bridge_port_map = {}
474
+ tbl = swsscommon .Table (self .adb , "ASIC_STATE:SAI_OBJECT_TYPE_BRIDGE_PORT" )
475
+ bridge_port_entries = tbl .getKeys ()
476
+ for key in bridge_port_entries :
477
+ (status , fvs ) = tbl .get (key )
478
+ assert status == True
479
+ for fv in fvs :
480
+ if fv [0 ] == "SAI_BRIDGE_PORT_ATTR_PORT_ID" :
481
+ bridge_port_map [key ] = fv [1 ]
482
+
483
+ tbl = swsscommon .Table (self .adb , "ASIC_STATE:SAI_OBJECT_TYPE_VLAN_MEMBER" )
484
+ vlan_member_entries = tbl .getKeys ()
485
+ assert len (vlan_member_entries ) == expected [0 ]
486
+
487
+ if len (vlan_member_entries ) == 1 :
488
+ (status , fvs ) = tbl .get (vlan_member_entries [0 ])
489
+ assert status == True
490
+ assert len (fvs ) == 3
491
+ for fv in fvs :
492
+ if fv [0 ] == "SAI_VLAN_MEMBER_ATTR_VLAN_TAGGING_MODE" :
493
+ assert fv [1 ] == expected [1 ]
494
+ elif fv [0 ] == "SAI_VLAN_MEMBER_ATTR_VLAN_ID" :
495
+ assert fv [1 ] == vlan_oid
496
+ elif fv [0 ] == "SAI_VLAN_MEMBER_ATTR_BRIDGE_PORT_ID" :
497
+ assert dvs .asicdb .portoidmap [bridge_port_map [fv [1 ]]] == "Ethernet0"
498
+ else :
499
+ assert False
500
+ else :
501
+ # check error log
502
+ self .check_syslog (dvs , marker , "vlanmgrd" , "Wrong tagging_mode" , test_input , 1 )
503
+
504
+ # remove vlan member
505
+ self .remove_vlan_member (vlan , "Ethernet0" )
506
+
507
+ # remove vlan
508
+ self .remove_vlan (vlan )
509
+
442
510
@pytest .mark .skip (reason = "AddMaxVlan take too long to execute" )
443
511
def test_AddMaxVlan (self , dvs , testlog ):
444
512
dvs .setup_db ()
@@ -562,6 +630,7 @@ def test_VlanDbData(self, dvs, testlog):
562
630
# remove vlan
563
631
self .remove_vlan (vlan )
564
632
633
+ @pytest .mark .skipif (StrictVersion (platform .linux_distribution ()[1 ]) <= StrictVersion ('8.9' ), reason = "Debian 8.9 or before has no support" )
565
634
@pytest .mark .parametrize ("test_input, expected" , [
566
635
(["untagged" ], ["SAI_VLAN_TAGGING_MODE_UNTAGGED" ]),
567
636
(["tagged" ], ["SAI_VLAN_TAGGING_MODE_TAGGED" ]),
0 commit comments