|
3 | 3 | import re
|
4 | 4 | import json
|
5 | 5 |
|
6 |
| -def test_DirectedBroadcast(dvs, testlog): |
| 6 | +class TestDirectedBroadcast(object): |
| 7 | + def test_DirectedBroadcast(self, dvs, testlog): |
7 | 8 |
|
8 |
| - db = swsscommon.DBConnector(4, dvs.redis_sock, 0) |
9 |
| - adb = swsscommon.DBConnector(1, dvs.redis_sock, 0) |
| 9 | + db = swsscommon.DBConnector(4, dvs.redis_sock, 0) |
| 10 | + adb = swsscommon.DBConnector(1, dvs.redis_sock, 0) |
10 | 11 |
|
11 |
| - # create vlan in config db |
12 |
| - tbl = swsscommon.Table(db, "VLAN") |
13 |
| - fvs = swsscommon.FieldValuePairs([("vlanid", "100")]) |
14 |
| - tbl.set("Vlan100", fvs) |
| 12 | + # create vlan in config db |
| 13 | + tbl = swsscommon.Table(db, "VLAN") |
| 14 | + fvs = swsscommon.FieldValuePairs([("vlanid", "100")]) |
| 15 | + tbl.set("Vlan100", fvs) |
15 | 16 |
|
16 |
| - # create a vlan member in config db |
17 |
| - tbl = swsscommon.Table(db, "VLAN_MEMBER") |
18 |
| - fvs = swsscommon.FieldValuePairs([("tagging_mode", "tagged")]) |
19 |
| - tbl.set("Vlan100|Ethernet24", fvs) |
| 17 | + # create a vlan member in config db |
| 18 | + tbl = swsscommon.Table(db, "VLAN_MEMBER") |
| 19 | + fvs = swsscommon.FieldValuePairs([("tagging_mode", "tagged")]) |
| 20 | + tbl.set("Vlan100|Ethernet24", fvs) |
20 | 21 |
|
21 |
| - time.sleep(1) |
| 22 | + time.sleep(1) |
22 | 23 |
|
23 |
| - # create vlan interface in config db |
24 |
| - tbl = swsscommon.Table(db, "VLAN_INTERFACE") |
25 |
| - fvs = swsscommon.FieldValuePairs([("family", "IPv4")]) |
26 |
| - tbl.set("Vlan100", fvs) |
27 |
| - tbl.set("Vlan100|192.169.0.1/27", fvs) |
| 24 | + # create vlan interface in config db |
| 25 | + tbl = swsscommon.Table(db, "VLAN_INTERFACE") |
| 26 | + fvs = swsscommon.FieldValuePairs([("family", "IPv4")]) |
| 27 | + tbl.set("Vlan100", fvs) |
| 28 | + tbl.set("Vlan100|192.169.0.1/27", fvs) |
28 | 29 |
|
29 |
| - time.sleep(1) |
| 30 | + time.sleep(1) |
30 | 31 |
|
31 |
| - # check vlan in asic db |
32 |
| - atbl = swsscommon.Table(adb, "ASIC_STATE:SAI_OBJECT_TYPE_VLAN") |
33 |
| - keys = atbl.getKeys() |
34 |
| - vlan_oid = None |
| 32 | + # check vlan in asic db |
| 33 | + atbl = swsscommon.Table(adb, "ASIC_STATE:SAI_OBJECT_TYPE_VLAN") |
| 34 | + keys = atbl.getKeys() |
| 35 | + vlan_oid = None |
35 | 36 |
|
36 |
| - for key in keys: |
37 |
| - if key == dvs.asicdb.default_vlan_id: |
38 |
| - continue |
| 37 | + for key in keys: |
| 38 | + if key == dvs.asicdb.default_vlan_id: |
| 39 | + continue |
39 | 40 |
|
40 |
| - (status, fvs) = atbl.get(key) |
41 |
| - assert status == True |
| 41 | + (status, fvs) = atbl.get(key) |
| 42 | + assert status == True |
42 | 43 |
|
43 |
| - if fvs[0][0] == "SAI_VLAN_ATTR_VLAN_ID": |
44 |
| - assert fvs[0][1] == '100' |
45 |
| - vlan_oid = key |
| 44 | + if fvs[0][0] == "SAI_VLAN_ATTR_VLAN_ID": |
| 45 | + assert fvs[0][1] == '100' |
| 46 | + vlan_oid = key |
46 | 47 |
|
47 |
| - assert vlan_oid != None |
| 48 | + assert vlan_oid != None |
48 | 49 |
|
49 |
| - # check router interface in asic db |
50 |
| - atbl = swsscommon.Table(adb, "ASIC_STATE:SAI_OBJECT_TYPE_ROUTER_INTERFACE") |
51 |
| - keys = atbl.getKeys() |
52 |
| - rif_oid = None |
| 50 | + # check router interface in asic db |
| 51 | + atbl = swsscommon.Table(adb, "ASIC_STATE:SAI_OBJECT_TYPE_ROUTER_INTERFACE") |
| 52 | + keys = atbl.getKeys() |
| 53 | + rif_oid = None |
53 | 54 |
|
54 |
| - for key in keys: |
55 |
| - (status, fvs) = atbl.get(key) |
56 |
| - assert status == True |
57 |
| - for fv in fvs: |
58 |
| - if fv[0] == "SAI_ROUTER_INTERFACE_ATTR_VLAN_ID": |
59 |
| - assert vlan_oid == fv[1] |
60 |
| - rif_oid = key |
| 55 | + for key in keys: |
| 56 | + (status, fvs) = atbl.get(key) |
| 57 | + assert status == True |
| 58 | + for fv in fvs: |
| 59 | + if fv[0] == "SAI_ROUTER_INTERFACE_ATTR_VLAN_ID": |
| 60 | + assert vlan_oid == fv[1] |
| 61 | + rif_oid = key |
61 | 62 |
|
62 |
| - assert rif_oid != None |
| 63 | + assert rif_oid != None |
63 | 64 |
|
64 |
| - # check neighbor entry in asic db |
65 |
| - atbl = swsscommon.Table(adb, "ASIC_STATE:SAI_OBJECT_TYPE_NEIGHBOR_ENTRY") |
66 |
| - keys = atbl.getKeys() |
67 |
| - dir_bcast = False |
| 65 | + # check neighbor entry in asic db |
| 66 | + atbl = swsscommon.Table(adb, "ASIC_STATE:SAI_OBJECT_TYPE_NEIGHBOR_ENTRY") |
| 67 | + keys = atbl.getKeys() |
| 68 | + dir_bcast = False |
68 | 69 |
|
69 |
| - for key in keys: |
70 |
| - neigh = json.loads(key) |
| 70 | + for key in keys: |
| 71 | + neigh = json.loads(key) |
71 | 72 |
|
72 |
| - if neigh['ip'] == "192.169.0.31": |
73 |
| - dir_bcast = True |
74 |
| - assert neigh['rif'] == rif_oid |
75 |
| - (status, fvs) = atbl.get(key) |
76 |
| - assert status == True |
77 |
| - if fvs[0][0] == "SAI_NEIGHBOR_ENTRY_ATTR_DST_MAC_ADDRESS": |
78 |
| - assert fvs[0][1] == "FF:FF:FF:FF:FF:FF" |
| 73 | + if neigh['ip'] == "192.169.0.31": |
| 74 | + dir_bcast = True |
| 75 | + assert neigh['rif'] == rif_oid |
| 76 | + (status, fvs) = atbl.get(key) |
| 77 | + assert status == True |
| 78 | + if fvs[0][0] == "SAI_NEIGHBOR_ENTRY_ATTR_DST_MAC_ADDRESS": |
| 79 | + assert fvs[0][1] == "FF:FF:FF:FF:FF:FF" |
79 | 80 |
|
80 |
| - assert dir_bcast |
| 81 | + assert dir_bcast |
81 | 82 |
|
82 |
| - # Explicitly add a neighbor entry with BCAST MAC and check if its in ASIC_DB |
83 |
| - dvs.runcmd("ip neigh replace 192.169.0.30 lladdr FF:FF:FF:FF:FF:FF dev Vlan100") |
| 83 | + # Explicitly add a neighbor entry with BCAST MAC and check if its in ASIC_DB |
| 84 | + dvs.runcmd("ip neigh replace 192.169.0.30 lladdr FF:FF:FF:FF:FF:FF dev Vlan100") |
84 | 85 |
|
85 |
| - time.sleep(1) |
| 86 | + time.sleep(1) |
86 | 87 |
|
87 |
| - keys = atbl.getKeys() |
88 |
| - for key in keys: |
89 |
| - neigh = json.loads(key) |
| 88 | + keys = atbl.getKeys() |
| 89 | + for key in keys: |
| 90 | + neigh = json.loads(key) |
90 | 91 |
|
91 |
| - if neigh['ip'] == "192.169.0.30": |
92 |
| - assert False |
| 92 | + if neigh['ip'] == "192.169.0.30": |
| 93 | + assert False |
0 commit comments