Skip to content

Commit 61e4463

Browse files
mint570divyagayathri-hcl
authored andcommitted
[P4Orch] Add mocks for SAI bridge to p4orch.
1 parent 7f3d8fd commit 61e4463

File tree

5 files changed

+293
-0
lines changed

5 files changed

+293
-0
lines changed

orchagent/p4orch/tests/Makefile.am

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ p4orch_tests_SOURCES = $(ORCHAGENT_DIR)/orch.cpp \
7575
mirror_session_manager_test.cpp \
7676
test_main.cpp \
7777
mock_sai_acl.cpp \
78+
mock_sai_bridge.cpp \
7879
mock_sai_hostif.cpp \
7980
mock_sai_serialize.cpp \
8081
mock_sai_router_interface.cpp \
Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
#include "mock_sai_bridge.h"
2+
3+
MockSaiBridge* mock_sai_bridge;
4+
5+
sai_status_t mock_create_bridge(
6+
_Out_ sai_object_id_t* bridge_id,
7+
_In_ sai_object_id_t switch_id,
8+
_In_ uint32_t attr_count,
9+
_In_ const sai_attribute_t* attr_list) {
10+
return mock_sai_bridge->create_bridge(
11+
bridge_id, switch_id, attr_count, attr_list);
12+
}
13+
14+
sai_status_t mock_remove_bridge(
15+
_In_ sai_object_id_t bridge_id) {
16+
return mock_sai_bridge->remove_bridge(bridge_id);
17+
}
18+
19+
sai_status_t mock_set_bridge_attribute(
20+
_In_ sai_object_id_t bridge_id,
21+
_In_ const sai_attribute_t* attr) {
22+
return mock_sai_bridge->set_bridge_attribute(bridge_id, attr);
23+
}
24+
25+
sai_status_t mock_get_bridge_attribute(
26+
_In_ sai_object_id_t bridge_id,
27+
_In_ uint32_t attr_count,
28+
_Inout_ sai_attribute_t* attr_list) {
29+
return mock_sai_bridge->get_bridge_attribute(
30+
bridge_id, attr_count, attr_list);
31+
}
32+
33+
sai_status_t mock_get_bridge_stats(
34+
_In_ sai_object_id_t bridge_id,
35+
_In_ uint32_t number_of_counters,
36+
_In_ const sai_stat_id_t* counter_ids,
37+
_Out_ uint64_t *counters) {
38+
return mock_sai_bridge->get_bridge_stats(
39+
bridge_id, number_of_counters, counter_ids, counters);
40+
}
41+
42+
sai_status_t mock_get_bridge_stats_ext(
43+
_In_ sai_object_id_t bridge_id,
44+
_In_ uint32_t number_of_counters,
45+
_In_ const sai_stat_id_t* counter_ids,
46+
_In_ sai_stats_mode_t mode,
47+
_Out_ uint64_t *counters) {
48+
return mock_sai_bridge->get_bridge_stats_ext(
49+
bridge_id, number_of_counters, counter_ids, mode, counters);
50+
}
51+
52+
sai_status_t mock_clear_bridge_stats(
53+
_In_ sai_object_id_t bridge_id,
54+
_In_ uint32_t number_of_counters,
55+
_In_ const sai_stat_id_t* counter_ids) {
56+
return mock_sai_bridge->clear_bridge_stats(
57+
bridge_id, number_of_counters, counter_ids);
58+
}
59+
60+
sai_status_t mock_create_bridge_port(
61+
_Out_ sai_object_id_t* bridge_port_id,
62+
_In_ sai_object_id_t switch_id,
63+
_In_ uint32_t attr_count,
64+
_In_ const sai_attribute_t* attr_list) {
65+
return mock_sai_bridge->create_bridge_port(
66+
bridge_port_id, switch_id, attr_count, attr_list);
67+
}
68+
69+
sai_status_t mock_remove_bridge_port(
70+
_In_ sai_object_id_t bridge_port_id) {
71+
return mock_sai_bridge->remove_bridge_port(bridge_port_id);
72+
}
73+
74+
sai_status_t mock_set_bridge_port_attribute(
75+
_In_ sai_object_id_t bridge_port_id,
76+
_In_ const sai_attribute_t* attr) {
77+
return mock_sai_bridge->set_bridge_port_attribute(bridge_port_id, attr);
78+
}
79+
80+
sai_status_t mock_get_bridge_port_attribute(
81+
_In_ sai_object_id_t bridge_port_id,
82+
_In_ uint32_t attr_count,
83+
_Inout_ sai_attribute_t* attr_list) {
84+
return mock_sai_bridge->get_bridge_port_attribute(
85+
bridge_port_id, attr_count, attr_list);
86+
}
87+
88+
sai_status_t mock_get_bridge_port_stats(
89+
_In_ sai_object_id_t bridge_port_id,
90+
_In_ uint32_t number_of_counters,
91+
_In_ const sai_stat_id_t* counter_ids,
92+
_Out_ uint64_t *counters) {
93+
return mock_sai_bridge->get_bridge_port_stats(
94+
bridge_port_id, number_of_counters, counter_ids, counters);
95+
}
96+
97+
sai_status_t mock_get_bridge_port_stats_ext(
98+
_In_ sai_object_id_t bridge_port_id,
99+
_In_ uint32_t number_of_counters,
100+
_In_ const sai_stat_id_t* counter_ids,
101+
_In_ sai_stats_mode_t mode,
102+
_Out_ uint64_t *counters) {
103+
return mock_sai_bridge->get_bridge_port_stats_ext(
104+
bridge_port_id, number_of_counters, counter_ids, mode, counters);
105+
}
106+
107+
sai_status_t mock_clear_bridge_port_stats(
108+
_In_ sai_object_id_t bridge_port_id,
109+
_In_ uint32_t number_of_counters,
110+
_In_ const sai_stat_id_t* counter_ids) {
111+
return mock_sai_bridge->clear_bridge_port_stats(
112+
bridge_port_id, number_of_counters, counter_ids);
113+
}
Lines changed: 157 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,157 @@
1+
#pragma once
2+
3+
#include <gmock/gmock.h>
4+
5+
extern "C" {
6+
#include "sai.h"
7+
}
8+
9+
// Mock Class mapping methods to bridge SAI APIs.
10+
class MockSaiBridge {
11+
public:
12+
MOCK_METHOD4(create_bridge,
13+
sai_status_t(_Out_ sai_object_id_t* bridge_id,
14+
_In_ sai_object_id_t switch_id,
15+
_In_ uint32_t attr_count,
16+
_In_ const sai_attribute_t* attr_list));
17+
18+
MOCK_METHOD1(remove_bridge,
19+
sai_status_t(_In_ sai_object_id_t bridge_id));
20+
21+
MOCK_METHOD2(set_bridge_attribute,
22+
sai_status_t(_In_ sai_object_id_t bridge_id,
23+
_In_ const sai_attribute_t* attr));
24+
25+
MOCK_METHOD3(get_bridge_attribute,
26+
sai_status_t(_In_ sai_object_id_t bridge_id,
27+
_In_ uint32_t attr_count,
28+
_Inout_ sai_attribute_t* attr_list));
29+
30+
MOCK_METHOD4(get_bridge_stats,
31+
sai_status_t(_In_ sai_object_id_t bridge_id,
32+
_In_ uint32_t number_of_counters,
33+
_In_ const sai_stat_id_t* counter_ids,
34+
_Out_ uint64_t *counters));
35+
36+
MOCK_METHOD5(get_bridge_stats_ext,
37+
sai_status_t(_In_ sai_object_id_t bridge_id,
38+
_In_ uint32_t number_of_counters,
39+
_In_ const sai_stat_id_t* counter_ids,
40+
_In_ sai_stats_mode_t mode,
41+
_Out_ uint64_t *counters));
42+
43+
MOCK_METHOD3(clear_bridge_stats,
44+
sai_status_t(_In_ sai_object_id_t bridge_id,
45+
_In_ uint32_t number_of_counters,
46+
_In_ const sai_stat_id_t *counter_ids));
47+
48+
MOCK_METHOD4(create_bridge_port,
49+
sai_status_t(_Out_ sai_object_id_t* bridge_port_id,
50+
_In_ sai_object_id_t switch_id,
51+
_In_ uint32_t attr_count,
52+
_In_ const sai_attribute_t* attr_list));
53+
54+
MOCK_METHOD1(remove_bridge_port,
55+
sai_status_t(_In_ sai_object_id_t bridge_port_id));
56+
57+
MOCK_METHOD2(set_bridge_port_attribute,
58+
sai_status_t(_In_ sai_object_id_t bridge_port_id,
59+
_In_ const sai_attribute_t* attr));
60+
61+
MOCK_METHOD3(get_bridge_port_attribute,
62+
sai_status_t(_In_ sai_object_id_t bridge_port_id,
63+
_In_ uint32_t attr_count,
64+
_Inout_ sai_attribute_t* attr_list));
65+
66+
MOCK_METHOD4(get_bridge_port_stats,
67+
sai_status_t(_In_ sai_object_id_t bridge_port_id,
68+
_In_ uint32_t number_of_counters,
69+
_In_ const sai_stat_id_t* counter_ids,
70+
_Out_ uint64_t *counters));
71+
72+
MOCK_METHOD5(get_bridge_port_stats_ext,
73+
sai_status_t(_In_ sai_object_id_t bridge_port_id,
74+
_In_ uint32_t number_of_counters,
75+
_In_ const sai_stat_id_t* counter_ids,
76+
_In_ sai_stats_mode_t mode,
77+
_Out_ uint64_t *counters));
78+
79+
MOCK_METHOD3(clear_bridge_port_stats,
80+
sai_status_t(_In_ sai_object_id_t bridge_port_id,
81+
_In_ uint32_t number_of_counters,
82+
_In_ const sai_stat_id_t *counter_ids));
83+
};
84+
85+
extern MockSaiBridge* mock_sai_bridge;
86+
87+
sai_status_t mock_create_bridge(
88+
_Out_ sai_object_id_t* bridge_id,
89+
_In_ sai_object_id_t switch_id,
90+
_In_ uint32_t attr_count,
91+
_In_ const sai_attribute_t* attr_list);
92+
93+
sai_status_t mock_remove_bridge(
94+
_In_ sai_object_id_t bridge_id);
95+
96+
sai_status_t mock_set_bridge_attribute(
97+
_In_ sai_object_id_t bridge_id,
98+
_In_ const sai_attribute_t* attr);
99+
100+
sai_status_t mock_get_bridge_attribute(
101+
_In_ sai_object_id_t bridge_id,
102+
_In_ uint32_t attr_count,
103+
_Inout_ sai_attribute_t* attr_list);
104+
105+
sai_status_t mock_get_bridge_stats(
106+
_In_ sai_object_id_t bridge_id,
107+
_In_ uint32_t number_of_counters,
108+
_In_ const sai_stat_id_t* counter_ids,
109+
_Out_ uint64_t *counters);
110+
111+
sai_status_t mock_get_bridge_stats_ext(
112+
_In_ sai_object_id_t bridge_id,
113+
_In_ uint32_t number_of_counters,
114+
_In_ const sai_stat_id_t* counter_ids,
115+
_In_ sai_stats_mode_t mode,
116+
_Out_ uint64_t *counters);
117+
118+
sai_status_t mock_clear_bridge_stats(
119+
_In_ sai_object_id_t bridge_id,
120+
_In_ uint32_t number_of_counters,
121+
_In_ const sai_stat_id_t* counter_ids);
122+
123+
sai_status_t mock_create_bridge_port(
124+
_Out_ sai_object_id_t* bridge_port_id,
125+
_In_ sai_object_id_t switch_id,
126+
_In_ uint32_t attr_count,
127+
_In_ const sai_attribute_t* attr_list);
128+
129+
sai_status_t mock_remove_bridge_port(
130+
_In_ sai_object_id_t bridge_port_id);
131+
132+
sai_status_t mock_set_bridge_port_attribute(
133+
_In_ sai_object_id_t bridge_port_id,
134+
_In_ const sai_attribute_t* attr);
135+
136+
sai_status_t mock_get_bridge_port_attribute(
137+
_In_ sai_object_id_t bridge_port_id,
138+
_In_ uint32_t attr_count,
139+
_Inout_ sai_attribute_t* attr_list);
140+
141+
sai_status_t mock_get_bridge_port_stats(
142+
_In_ sai_object_id_t bridge_port_id,
143+
_In_ uint32_t number_of_counters,
144+
_In_ const sai_stat_id_t* counter_ids,
145+
_Out_ uint64_t *counters);
146+
147+
sai_status_t mock_get_bridge_port_stats_ext(
148+
_In_ sai_object_id_t bridge_port_id,
149+
_In_ uint32_t number_of_counters,
150+
_In_ const sai_stat_id_t* counter_ids,
151+
_In_ sai_stats_mode_t mode,
152+
_Out_ uint64_t *counters);
153+
154+
sai_status_t mock_clear_bridge_port_stats(
155+
_In_ sai_object_id_t bridge_port_id,
156+
_In_ uint32_t number_of_counters,
157+
_In_ const sai_stat_id_t* counter_ids);

orchagent/p4orch/tests/p4orch_test.cpp

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
#include <string>
77

88
#include "mock_response_publisher.h"
9+
#include "mock_sai_bridge.h"
910
#include "mock_sai_hostif.h"
1011
#include "mock_sai_neighbor.h"
1112
#include "mock_sai_next_hop.h"
@@ -22,6 +23,7 @@ extern VRFOrch* gVrfOrch;
2223
extern swss::DBConnector* gAppDb;
2324
extern sai_hostif_api_t* sai_hostif_api;
2425
extern sai_switch_api_t* sai_switch_api;
26+
extern sai_bridge_api_t* sai_bridge_api;
2527
extern sai_router_interface_api_t* sai_router_intfs_api;
2628
extern sai_neighbor_api_t* sai_neighbor_api;
2729
extern sai_next_hop_api_t* sai_next_hop_api;
@@ -74,6 +76,22 @@ class P4OrchTest : public ::testing::Test {
7476
sai_route_api->remove_route_entries = remove_route_entries;
7577
sai_route_api->set_route_entries_attribute = set_route_entries_attribute;
7678
sai_route_api->get_route_entries_attribute = get_route_entries_attribute;
79+
mock_sai_bridge = &mock_sai_bridge_;
80+
sai_bridge_api->create_bridge = mock_create_bridge;
81+
sai_bridge_api->remove_bridge = mock_remove_bridge;
82+
sai_bridge_api->set_bridge_attribute = mock_set_bridge_attribute;
83+
sai_bridge_api->get_bridge_attribute = mock_get_bridge_attribute;
84+
sai_bridge_api->get_bridge_stats = mock_get_bridge_stats;
85+
sai_bridge_api->get_bridge_stats_ext = mock_get_bridge_stats_ext;
86+
sai_bridge_api->clear_bridge_stats = mock_clear_bridge_stats;
87+
sai_bridge_api->create_bridge_port = mock_create_bridge_port;
88+
sai_bridge_api->remove_bridge_port = mock_remove_bridge_port;
89+
sai_bridge_api->set_bridge_port_attribute = mock_set_bridge_port_attribute;
90+
sai_bridge_api->get_bridge_port_attribute = mock_get_bridge_port_attribute;
91+
sai_bridge_api->get_bridge_port_stats = mock_get_bridge_port_stats;
92+
sai_bridge_api->get_bridge_port_stats_ext = mock_get_bridge_port_stats_ext;
93+
sai_bridge_api->clear_bridge_port_stats = mock_clear_bridge_port_stats;
94+
7795
copp_orch_ = new CoppOrch(gAppDb, APP_COPP_TABLE_NAME);
7896
std::vector<std::string> p4_tables{APP_P4RT_TABLE_NAME};
7997
gP4Orch = new P4Orch(gAppDb, p4_tables, gVrfOrch, copp_orch_);
@@ -97,6 +115,7 @@ class P4OrchTest : public ::testing::Test {
97115
NiceMock<MockSaiNeighbor> mock_sai_neighbor_;
98116
NiceMock<MockSaiNextHop> mock_sai_next_hop_;
99117
NiceMock<MockSaiRoute> mock_sai_route_;
118+
NiceMock<MockSaiBridge> mock_sai_bridge_;
100119
CoppOrch* copp_orch_;
101120
};
102121

orchagent/p4orch/tests/test_main.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ sai_udf_api_t *sai_udf_api;
7676
sai_tunnel_api_t *sai_tunnel_api;
7777
sai_my_mac_api_t *sai_my_mac_api;
7878
sai_counter_api_t *sai_counter_api;
79+
sai_bridge_api_t* sai_bridge_api;
7980
sai_generic_programmable_api_t *sai_generic_programmable_api;
8081

8182
task_process_status handleSaiCreateStatus(sai_api_t api, sai_status_t status, void *context)
@@ -196,6 +197,7 @@ int main(int argc, char *argv[])
196197
sai_my_mac_api_t my_mac_api;
197198
sai_tunnel_api_t tunnel_api;
198199
sai_counter_api_t counter_api;
200+
sai_bridge_api_t bridge_api;
199201
sai_generic_programmable_api_t generic_programmable_api;
200202
sai_router_intfs_api = &router_intfs_api;
201203
sai_neighbor_api = &neighbor_api;
@@ -213,6 +215,7 @@ int main(int argc, char *argv[])
213215
sai_my_mac_api = &my_mac_api;
214216
sai_tunnel_api = &tunnel_api;
215217
sai_counter_api = &counter_api;
218+
sai_bridge_api = &bridge_api;
216219
sai_generic_programmable_api = &generic_programmable_api;
217220

218221
swss::DBConnector appl_db("APPL_DB", 0);

0 commit comments

Comments
 (0)