Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Check for NULL APIs returned by sai_api_query() and handle gracefully instead of crashing. #1558

Conversation

chrispsommers
Copy link
Contributor

Fixes #1535. I modified the code-generator template to check for null SAI function pointers before calling, and throwing an exception with helpful message on the console.

Replaces #1536 which had some rebasing conflicts.

The changed file of interest is actually just meta/templates/sai_rpc_server_functions.tt.

Example console trace when calling switch_api->get_switch_attribute() which isn't implemented and has a null pointer. The process does not crash anymore.

Starting SAI RPC server on port 9092
NULL ptr: switch_api->get_switch_attribute
To understand how this works, the template inserts the following code (as an example) automatically:

if (switch_api->get_switch_stats == (void *)0) {
    std::cerr << "NULL ptr: switch_api->get_switch_stats" << std::endl;

  sai_thrift_exception e;
  e.status = SAI_STATUS_NOT_IMPLEMENTED;
  throw e;
}

right before making any API call such as:

status = switch_api->get_switch_stats(switch_id, number_of_counters, sai_counter_ids, sai_counters);

Signed-off-by: Chris Sommers <chrispsommers@gmail.com>
@richardyu-ms richardyu-ms merged commit 47a9876 into opencomputeproject:master Aug 7, 2022
richardyu-ms pushed a commit to richardyu-ms/SAI that referenced this pull request Aug 7, 2022
…computeproject#1558)

Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

Co-authored-by: Chris Sommers <chrispsommers@gmail.com>
@chrispsommers chrispsommers deleted the saithriftv2-check-null-sai-apis2 branch August 7, 2022 20:09
richardyu-ms added a commit that referenced this pull request Aug 11, 2022
…#1552) (#1533) (#1514) (#1492) (#1558) (#1557)

* Added missing dependencies required to run gensairpc.pl (#1492)

Fixes #1490

Co-authored-by: Chris Sommers <chrispsommers@gmail.com>

* Add GEN_SAIRPC_OPTS to pass flags to gensairpc.pl from top-level Make… (#1514)

* [doc] Add SAI metadata introduction presentation (#1487)

Small presentation about SAI metadata features added in last time.

Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* Add GEN_SAIRPC_OPTS to pass flags to gensairpc.pl from top-level Makefile or meta/Makefile

Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

Co-authored-by: Kamil Cudnik <kcudnik@gmail.com>
Co-authored-by: Chris Sommers <chrispsommers@gmail.com>

* Saithriftv2 fixes for extensions (#1533)

* [doc] Add SAI metadata introduction presentation (#1487)

Small presentation about SAI metadata features added in last time.

Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* Add GEN_SAIRPC_OPTS to pass flags to gensairpc.pl from top-level Makefile or meta/Makefile

Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* Add static_cast<> to sairpcgen templates to avoid type mismatches for SAI extensions.

Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* Add new env variable SAIRPC_EXTRA_LIBS which gets passed to final linkage of saiserver, so user can pass in additional libraries.

Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* Add experimental to include path.

Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* Add experimental headers to CPPFLAGS passed to ctypesgen.

Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* Add VLAN and PortChannel test plan (#1480)

* Add VLAN and PortChannel test plan

For vlan, it includes:
1. Vlan functionalities
   - Flooding
   - Forwarding
   - Trunk/Access
   - Tagging/Untagging(802.1Q)
   - VLAN interface (RIF/SVI)
2. SAI APIs operations
   - Vlan Counters
   - Vlan and member list operations

For PortChannel, it includes:
1. Lag functionalities
    - Loadbalance
2. Lag SAI APIs
    - create/check/remove lag and lag member

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>

* Update lag_test_plan.md

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>

* Update lag_test_plan.md

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>

* remove cases not related to T0

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>

* Update lag_test_plan.md

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>

* Add VLAN and Lag test plan and put topo config in seperated files

Signed-off-by: richardyu <richardyu@contoso.com>

* fix typo and more description more clear

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>

* fix lag test typo (#29)

Signed-off-by: zhoudongxu <Dongxu.Zhou@microsoft.com>

* refactor vlan test plan and config

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>

* refactor lag test plan (#33)

Signed-off-by: zhoudongxu <Dongxu.Zhou@microsoft.com>

* refactor pc and vlan test

Signed-off-by: zhoudongxu <Dongxu.Zhou@microsoft.com>

* Improve pc and vlan test Doc (#35)

* fix typo

Signed-off-by: zhoudongxu <Dongxu.Zhou@microsoft.com>

* remove some unnecessary comments

Signed-off-by: zhoudongxu <Dongxu.Zhou@microsoft.com>

* reformat and adjust the description of the tests

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>

* set hash algorithm (#36)

Signed-off-by: zhoudongxu <Dongxu.Zhou@microsoft.com>

* refine lag test (#37)

Signed-off-by: zhoudongxu <Dongxu.Zhou@microsoft.com>

* correct vlan interface test (#38)

Signed-off-by: zhoudongxu <Dongxu.Zhou@microsoft.com>

* workaround for the sequence number issue in github and correct typo
standardise the ip and mac naming in config

add lag test for ingress port indifferenate in lag hash
redesign the mac and ip namin convention and reformat
Signed-off-by: richardyu-ms <richard.yu@microsoft.com>

* adjust the case numbers and vlan id

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>

Co-authored-by: zhoudongxu <1315364814@qq.com>
Co-authored-by: richardyu <richardyu@contoso.com>
Co-authored-by: zhoudongxu <Dongxu.Zhou@microsoft.com>
Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* [SAI-PTF] SAI PTF test structure for T0 test and VLAN,FDB sample cases (#1499)

* [SAI-PTF] Add SAI ptf test structure for T0 test

Create SAI PTF test structure for T0
1. Create configuration structure for different components configu
2. Add FDB, PORT, switch, vlan configurations
3. Create Test structure base on PTF
4. Add T0 test case samples for FDB

Test Done:
Checked the ports functionality with port flooding
Checked port forwarding base on FDB configurations

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>

* add vlan config and vlan test sample case

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>

* add dx010 config

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>
Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* [meta] Add sai_status_t to ancestry check (#1501)

Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* reset sleep time during turning up ports (#1502)

Signed-off-by: Yang Wang <yangwang1@microsoft.com>
Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* [saineighbor] Bulk API support for Neighbor entries (#1504)

* Bulk support for Neighbor entries

Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* add vlan testcases from Group6 to Group10 (#1506)

Signed-off-by: Yang Wang <yangwang1@microsoft.com>
Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* Support counters on IP MC route entries. This is similar to the support added earlier for Route counters. (#1497)

Support counters on IP MC route entries. This is similar to the support added earlier for Route counters.

API sequence:

sai_attribute_t counter_attr;
attr.id = SAI_COUNTER_ATTR_TYPE;
attr.value.s32 = SAI_COUNTER_TYPE_REGULAR;
sai_object_id_t counter_id;
sai_status_t rc = sai_counter_api->create_counter(&counter_id, g_switch_id, 1, &attr);
sai_attribute_t ipmc_attr;
attr.id = SAI_IPMC_ENTRY_ATTR_COUNTER_ID;
attr.value.oid = counter_id;
rc = sai_ipmc_api->set_ipmc_entry_attribute(route_entry, ipmc_attr);
sai_stat_id_t stat_ids[] = { SAI_COUNTER_STAT_PACKETS, SAI_COUNTER_STAT_BYTES };
uint64_t stats[2];
rc = sai_counter_api->sai_get_counter_stats_ext(counter_id, 2, stat_ids, stats);

Signed-off-by: rck-innovium <rck@innovium.com>
Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* Add thr missing API into saithriftv2 missing for syncd (#1484)

saithriftv1 offers start_sai_thrift_rpc_server API to start the saithrift server and syncd is currently using that API https://github.com/Azure/sonic-sairedis/blob/master/syncd/syncd_main.cpp#L60

But this API is missing from the for saithriftv2.

Made the relevant changes to provide a similar API for saithriftv2 library

The start_sai_thrift_rpc_server API currently resides in saiserver.cpp which is not included in librpcserver.a and is not available for the users of the static library. Thus moved the function definition into sai_rpc_frontend.cpp for including it in the static library.

Signed-off-by: Vivek Reddy Karri <vkarri@nvidia.com>
Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* add vlan test case (#1510)

Signed-off-by: ms-junyi <t-junyixiao@microsoft.com>

add vlan test case

edit FilteringTest

Signed-off-by: ms-junyi <t-junyixiao@microsoft.com>

edit vlan test case

Signed-off-by: ms-junyi <t-junyixiao@microsoft.com>
Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* add more waiting time for test (#1511)

* add more waiting time for test

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>

* Update fdb_configer.py

increase the waiting time for fdb entries update

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>

* remove useless change

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>
Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* add read config_db.json (#1519)

Signed-off-by: ms-junyi <t-junyixiao@microsoft.com>

format

Signed-off-by: ms-junyi <t-junyixiao@microsoft.com>

addomment for each function

Signed-off-by: ms-junyi <t-junyixiao@microsoft.com>

add comment for each function

Signed-off-by: ms-junyi <t-junyixiao@microsoft.com>
Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* [Fix]Add necessary test data file for sai test (#1520)

In order to set up the port on different platforms, need to read the data for port configuration when turning on the admin state

This PR is a bug fix for adding the config_db into test resources folder.

Test Done:
Test within SONiC mgmt container

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>
Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* Zitingguo/add lag test (#1522)

* add lag config

Signed-off-by: Ziting Guo <zitingguo@microsoft.com>
Signed-off-by: zitingguo <736034564@qq.com>

* enable lag config in test base

Signed-off-by: Ziting Guo <zitingguo@microsoft.com>
Signed-off-by: zitingguo <736034564@qq.com>

* fix lag config

Signed-off-by: Ziting Guo <zitingguo@microsoft.com>
Signed-off-by: zitingguo <736034564@qq.com>

* add remove_lag_member in lag_configer

Signed-off-by: Ziting Guo <zitingguo@microsoft.com>
Signed-off-by: zitingguo <736034564@qq.com>

* add sai_ipprefix() in utils

Signed-off-by: Ziting Guo <zitingguo@microsoft.com>
Signed-off-by: zitingguo <736034564@qq.com>

* fix typo

Signed-off-by: zitingguo <736034564@qq.com>

* import LagConfiger in sai_test_base

Signed-off-by: Ziting Guo <zitingguo@microsoft.com>
Signed-off-by: zitingguo <736034564@qq.com>

* add a simple lag test

Signed-off-by: Ziting Guo <zitingguo@microsoft.com>
Signed-off-by: zitingguo <736034564@qq.com>

* fix typo

Signed-off-by: zitingguo <736034564@qq.com>

* fix a config error in lag

Signed-off-by: Ziting Guo <zitingguo@microsoft.com>
Signed-off-by: zitingguo <736034564@qq.com>

* add lag lb test based on scr port

Signed-off-by: Ziting Guo <zitingguo@microsoft.com>
Signed-off-by: zitingguo <736034564@qq.com>

* fix

Signed-off-by: zitingguo <736034564@qq.com>

* set lag v4 hash

Signed-off-by: Ziting Guo <zitingguo@microsoft.com>
Signed-off-by: zitingguo <736034564@qq.com>

* add lag disable egress test case

Signed-off-by: Ziting Guo <zitingguo@microsoft.com>
Signed-off-by: zitingguo <736034564@qq.com>

* add IndifferenceIngressPortTest

Signed-off-by: Ziting Guo <zitingguo@microsoft.com>
Signed-off-by: zitingguo <736034564@qq.com>

* fix set hash function

Signed-off-by: Ziting Guo <zitingguo@microsoft.com>
Signed-off-by: zitingguo <736034564@qq.com>

* separate route configuration from lag

Signed-off-by: Ziting Guo <zitingguo@microsoft.com>
Signed-off-by: zitingguo <736034564@qq.com>

* disable setting lag hash

Signed-off-by: Ziting Guo <zitingguo@microsoft.com>
Signed-off-by: zitingguo <736034564@qq.com>

* add virtual interface

Signed-off-by: Ziting Guo <zitingguo@microsoft.com>
Signed-off-by: zitingguo <736034564@qq.com>

* Config default v4&v6 route

Signed-off-by: zitingguo <736034564@qq.com>
Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* add teardown for testing multiple cases at a time (#1521)

* add read config_db.json

Signed-off-by: ms-junyi <t-junyixiao@microsoft.com>

format

Signed-off-by: ms-junyi <t-junyixiao@microsoft.com>

addomment for each function

Signed-off-by: ms-junyi <t-junyixiao@microsoft.com>

add comment for each function

Signed-off-by: ms-junyi <t-junyixiao@microsoft.com>

* tear down

Signed-off-by: ms-junyi <t-junyixiao@microsoft.com>
Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* Added missing dependencies required to run gensairpc.pl (#1492)

Fixes #1490

Co-authored-by: Chris Sommers <chrispsommers@gmail.com>
Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* Update saitam.h (#1496)

Attribute is introduced to configure IPFIX template reporting interval as per the RFC7011.

https://datatracker.ietf.org/doc/html/rfc7011#section-8.4

Signed-off-by: Jai Kumar <jai.kumar@broadcom.com>
Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* Pass SAIRPC_EXTRA_LIBS flag in Makefile

Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* Removed changes to include paths for SAI extension headers;
as it turns out these changes were not required as originally reported in #1531.

Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

Co-authored-by: Kamil Cudnik <kcudnik@gmail.com>
Co-authored-by: Chris Sommers <chrispsommers@gmail.com>
Co-authored-by: Richard.Yu <richard.yu@microsoft.com>
Co-authored-by: zhoudongxu <1315364814@qq.com>
Co-authored-by: richardyu <richardyu@contoso.com>
Co-authored-by: zhoudongxu <Dongxu.Zhou@microsoft.com>
Co-authored-by: Yang Wang <yangwang1@microsoft.com>
Co-authored-by: Prince Sunny <prince.sunny@microsoft.com>
Co-authored-by: Ravindranath C K <rck@innovium.com>
Co-authored-by: Vivek R <vivekreddykarri98@gmail.com>
Co-authored-by: ms-junyi <106718431+ms-junyi@users.noreply.github.com>
Co-authored-by: zitingguo-ms <736034564@qq.com>
Co-authored-by: Jai Kumar <jai.kumar@broadcom.com>

* [SAI-PTF]Align the sai rpc front name with swss and syncd (#1552)

In Syncd starting process, it will try to start the switch and assign the gSwtichId to the sai implementation.
In the syncd rpc container, in order to get the swtich id after syncd initalization, we need to get and check the switch id.

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>

* Check for NULL APIs returned by sai_api_query() before calling. (#1558)

Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

Co-authored-by: Chris Sommers <chrispsommers@gmail.com>

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>
Co-authored-by: Chris Sommers <31145757+chrispsommers@users.noreply.github.com>
Co-authored-by: Chris Sommers <chrispsommers@gmail.com>
Co-authored-by: Kamil Cudnik <kcudnik@gmail.com>
Co-authored-by: zhoudongxu <1315364814@qq.com>
Co-authored-by: richardyu <richardyu@contoso.com>
Co-authored-by: zhoudongxu <Dongxu.Zhou@microsoft.com>
Co-authored-by: Yang Wang <yangwang1@microsoft.com>
Co-authored-by: Prince Sunny <prince.sunny@microsoft.com>
Co-authored-by: Ravindranath C K <rck@innovium.com>
Co-authored-by: Vivek R <vivekreddykarri98@gmail.com>
Co-authored-by: ms-junyi <106718431+ms-junyi@users.noreply.github.com>
Co-authored-by: zitingguo-ms <736034564@qq.com>
Co-authored-by: Jai Kumar <jai.kumar@broadcom.com>
richardyu-ms added a commit to richardyu-ms/SAI that referenced this pull request Aug 27, 2022
…opencomputeproject#1552) (opencomputeproject#1533) (opencomputeproject#1514) (opencomputeproject#1492) (opencomputeproject#1558) (opencomputeproject#1557)

* Added missing dependencies required to run gensairpc.pl (opencomputeproject#1492)

Fixes opencomputeproject#1490

Co-authored-by: Chris Sommers <chrispsommers@gmail.com>

* Add GEN_SAIRPC_OPTS to pass flags to gensairpc.pl from top-level Make… (opencomputeproject#1514)

* [doc] Add SAI metadata introduction presentation (opencomputeproject#1487)

Small presentation about SAI metadata features added in last time.

Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* Add GEN_SAIRPC_OPTS to pass flags to gensairpc.pl from top-level Makefile or meta/Makefile

Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

Co-authored-by: Kamil Cudnik <kcudnik@gmail.com>
Co-authored-by: Chris Sommers <chrispsommers@gmail.com>

* Saithriftv2 fixes for extensions (opencomputeproject#1533)

* [doc] Add SAI metadata introduction presentation (opencomputeproject#1487)

Small presentation about SAI metadata features added in last time.

Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* Add GEN_SAIRPC_OPTS to pass flags to gensairpc.pl from top-level Makefile or meta/Makefile

Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* Add static_cast<> to sairpcgen templates to avoid type mismatches for SAI extensions.

Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* Add new env variable SAIRPC_EXTRA_LIBS which gets passed to final linkage of saiserver, so user can pass in additional libraries.

Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* Add experimental to include path.

Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* Add experimental headers to CPPFLAGS passed to ctypesgen.

Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* Add VLAN and PortChannel test plan (opencomputeproject#1480)

* Add VLAN and PortChannel test plan

For vlan, it includes:
1. Vlan functionalities
   - Flooding
   - Forwarding
   - Trunk/Access
   - Tagging/Untagging(802.1Q)
   - VLAN interface (RIF/SVI)
2. SAI APIs operations
   - Vlan Counters
   - Vlan and member list operations

For PortChannel, it includes:
1. Lag functionalities
    - Loadbalance
2. Lag SAI APIs
    - create/check/remove lag and lag member

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>

* Update lag_test_plan.md

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>

* Update lag_test_plan.md

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>

* remove cases not related to T0

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>

* Update lag_test_plan.md

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>

* Add VLAN and Lag test plan and put topo config in seperated files

Signed-off-by: richardyu <richardyu@contoso.com>

* fix typo and more description more clear

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>

* fix lag test typo (#29)

Signed-off-by: zhoudongxu <Dongxu.Zhou@microsoft.com>

* refactor vlan test plan and config

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>

* refactor lag test plan (#33)

Signed-off-by: zhoudongxu <Dongxu.Zhou@microsoft.com>

* refactor pc and vlan test

Signed-off-by: zhoudongxu <Dongxu.Zhou@microsoft.com>

* Improve pc and vlan test Doc (#35)

* fix typo

Signed-off-by: zhoudongxu <Dongxu.Zhou@microsoft.com>

* remove some unnecessary comments

Signed-off-by: zhoudongxu <Dongxu.Zhou@microsoft.com>

* reformat and adjust the description of the tests

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>

* set hash algorithm (#36)

Signed-off-by: zhoudongxu <Dongxu.Zhou@microsoft.com>

* refine lag test (#37)

Signed-off-by: zhoudongxu <Dongxu.Zhou@microsoft.com>

* correct vlan interface test (#38)

Signed-off-by: zhoudongxu <Dongxu.Zhou@microsoft.com>

* workaround for the sequence number issue in github and correct typo
standardise the ip and mac naming in config

add lag test for ingress port indifferenate in lag hash
redesign the mac and ip namin convention and reformat
Signed-off-by: richardyu-ms <richard.yu@microsoft.com>

* adjust the case numbers and vlan id

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>

Co-authored-by: zhoudongxu <1315364814@qq.com>
Co-authored-by: richardyu <richardyu@contoso.com>
Co-authored-by: zhoudongxu <Dongxu.Zhou@microsoft.com>
Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* [SAI-PTF] SAI PTF test structure for T0 test and VLAN,FDB sample cases (opencomputeproject#1499)

* [SAI-PTF] Add SAI ptf test structure for T0 test

Create SAI PTF test structure for T0
1. Create configuration structure for different components configu
2. Add FDB, PORT, switch, vlan configurations
3. Create Test structure base on PTF
4. Add T0 test case samples for FDB

Test Done:
Checked the ports functionality with port flooding
Checked port forwarding base on FDB configurations

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>

* add vlan config and vlan test sample case

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>

* add dx010 config

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>
Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* [meta] Add sai_status_t to ancestry check (opencomputeproject#1501)

Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* reset sleep time during turning up ports (opencomputeproject#1502)

Signed-off-by: Yang Wang <yangwang1@microsoft.com>
Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* [saineighbor] Bulk API support for Neighbor entries (opencomputeproject#1504)

* Bulk support for Neighbor entries

Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* add vlan testcases from Group6 to Group10 (opencomputeproject#1506)

Signed-off-by: Yang Wang <yangwang1@microsoft.com>
Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* Support counters on IP MC route entries. This is similar to the support added earlier for Route counters. (opencomputeproject#1497)

Support counters on IP MC route entries. This is similar to the support added earlier for Route counters.

API sequence:

sai_attribute_t counter_attr;
attr.id = SAI_COUNTER_ATTR_TYPE;
attr.value.s32 = SAI_COUNTER_TYPE_REGULAR;
sai_object_id_t counter_id;
sai_status_t rc = sai_counter_api->create_counter(&counter_id, g_switch_id, 1, &attr);
sai_attribute_t ipmc_attr;
attr.id = SAI_IPMC_ENTRY_ATTR_COUNTER_ID;
attr.value.oid = counter_id;
rc = sai_ipmc_api->set_ipmc_entry_attribute(route_entry, ipmc_attr);
sai_stat_id_t stat_ids[] = { SAI_COUNTER_STAT_PACKETS, SAI_COUNTER_STAT_BYTES };
uint64_t stats[2];
rc = sai_counter_api->sai_get_counter_stats_ext(counter_id, 2, stat_ids, stats);

Signed-off-by: rck-innovium <rck@innovium.com>
Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* Add thr missing API into saithriftv2 missing for syncd (opencomputeproject#1484)

saithriftv1 offers start_sai_thrift_rpc_server API to start the saithrift server and syncd is currently using that API https://github.com/Azure/sonic-sairedis/blob/master/syncd/syncd_main.cpp#L60

But this API is missing from the for saithriftv2.

Made the relevant changes to provide a similar API for saithriftv2 library

The start_sai_thrift_rpc_server API currently resides in saiserver.cpp which is not included in librpcserver.a and is not available for the users of the static library. Thus moved the function definition into sai_rpc_frontend.cpp for including it in the static library.

Signed-off-by: Vivek Reddy Karri <vkarri@nvidia.com>
Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* add vlan test case (opencomputeproject#1510)

Signed-off-by: ms-junyi <t-junyixiao@microsoft.com>

add vlan test case

edit FilteringTest

Signed-off-by: ms-junyi <t-junyixiao@microsoft.com>

edit vlan test case

Signed-off-by: ms-junyi <t-junyixiao@microsoft.com>
Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* add more waiting time for test (opencomputeproject#1511)

* add more waiting time for test

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>

* Update fdb_configer.py

increase the waiting time for fdb entries update

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>

* remove useless change

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>
Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* add read config_db.json (opencomputeproject#1519)

Signed-off-by: ms-junyi <t-junyixiao@microsoft.com>

format

Signed-off-by: ms-junyi <t-junyixiao@microsoft.com>

addomment for each function

Signed-off-by: ms-junyi <t-junyixiao@microsoft.com>

add comment for each function

Signed-off-by: ms-junyi <t-junyixiao@microsoft.com>
Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* [Fix]Add necessary test data file for sai test (opencomputeproject#1520)

In order to set up the port on different platforms, need to read the data for port configuration when turning on the admin state

This PR is a bug fix for adding the config_db into test resources folder.

Test Done:
Test within SONiC mgmt container

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>
Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* Zitingguo/add lag test (opencomputeproject#1522)

* add lag config

Signed-off-by: Ziting Guo <zitingguo@microsoft.com>
Signed-off-by: zitingguo <736034564@qq.com>

* enable lag config in test base

Signed-off-by: Ziting Guo <zitingguo@microsoft.com>
Signed-off-by: zitingguo <736034564@qq.com>

* fix lag config

Signed-off-by: Ziting Guo <zitingguo@microsoft.com>
Signed-off-by: zitingguo <736034564@qq.com>

* add remove_lag_member in lag_configer

Signed-off-by: Ziting Guo <zitingguo@microsoft.com>
Signed-off-by: zitingguo <736034564@qq.com>

* add sai_ipprefix() in utils

Signed-off-by: Ziting Guo <zitingguo@microsoft.com>
Signed-off-by: zitingguo <736034564@qq.com>

* fix typo

Signed-off-by: zitingguo <736034564@qq.com>

* import LagConfiger in sai_test_base

Signed-off-by: Ziting Guo <zitingguo@microsoft.com>
Signed-off-by: zitingguo <736034564@qq.com>

* add a simple lag test

Signed-off-by: Ziting Guo <zitingguo@microsoft.com>
Signed-off-by: zitingguo <736034564@qq.com>

* fix typo

Signed-off-by: zitingguo <736034564@qq.com>

* fix a config error in lag

Signed-off-by: Ziting Guo <zitingguo@microsoft.com>
Signed-off-by: zitingguo <736034564@qq.com>

* add lag lb test based on scr port

Signed-off-by: Ziting Guo <zitingguo@microsoft.com>
Signed-off-by: zitingguo <736034564@qq.com>

* fix

Signed-off-by: zitingguo <736034564@qq.com>

* set lag v4 hash

Signed-off-by: Ziting Guo <zitingguo@microsoft.com>
Signed-off-by: zitingguo <736034564@qq.com>

* add lag disable egress test case

Signed-off-by: Ziting Guo <zitingguo@microsoft.com>
Signed-off-by: zitingguo <736034564@qq.com>

* add IndifferenceIngressPortTest

Signed-off-by: Ziting Guo <zitingguo@microsoft.com>
Signed-off-by: zitingguo <736034564@qq.com>

* fix set hash function

Signed-off-by: Ziting Guo <zitingguo@microsoft.com>
Signed-off-by: zitingguo <736034564@qq.com>

* separate route configuration from lag

Signed-off-by: Ziting Guo <zitingguo@microsoft.com>
Signed-off-by: zitingguo <736034564@qq.com>

* disable setting lag hash

Signed-off-by: Ziting Guo <zitingguo@microsoft.com>
Signed-off-by: zitingguo <736034564@qq.com>

* add virtual interface

Signed-off-by: Ziting Guo <zitingguo@microsoft.com>
Signed-off-by: zitingguo <736034564@qq.com>

* Config default v4&v6 route

Signed-off-by: zitingguo <736034564@qq.com>
Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* add teardown for testing multiple cases at a time (opencomputeproject#1521)

* add read config_db.json

Signed-off-by: ms-junyi <t-junyixiao@microsoft.com>

format

Signed-off-by: ms-junyi <t-junyixiao@microsoft.com>

addomment for each function

Signed-off-by: ms-junyi <t-junyixiao@microsoft.com>

add comment for each function

Signed-off-by: ms-junyi <t-junyixiao@microsoft.com>

* tear down

Signed-off-by: ms-junyi <t-junyixiao@microsoft.com>
Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* Added missing dependencies required to run gensairpc.pl (opencomputeproject#1492)

Fixes opencomputeproject#1490

Co-authored-by: Chris Sommers <chrispsommers@gmail.com>
Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* Update saitam.h (opencomputeproject#1496)

Attribute is introduced to configure IPFIX template reporting interval as per the RFC7011.

https://datatracker.ietf.org/doc/html/rfc7011#section-8.4

Signed-off-by: Jai Kumar <jai.kumar@broadcom.com>
Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* Pass SAIRPC_EXTRA_LIBS flag in Makefile

Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* Removed changes to include paths for SAI extension headers;
as it turns out these changes were not required as originally reported in opencomputeproject#1531.

Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

Co-authored-by: Kamil Cudnik <kcudnik@gmail.com>
Co-authored-by: Chris Sommers <chrispsommers@gmail.com>
Co-authored-by: Richard.Yu <richard.yu@microsoft.com>
Co-authored-by: zhoudongxu <1315364814@qq.com>
Co-authored-by: richardyu <richardyu@contoso.com>
Co-authored-by: zhoudongxu <Dongxu.Zhou@microsoft.com>
Co-authored-by: Yang Wang <yangwang1@microsoft.com>
Co-authored-by: Prince Sunny <prince.sunny@microsoft.com>
Co-authored-by: Ravindranath C K <rck@innovium.com>
Co-authored-by: Vivek R <vivekreddykarri98@gmail.com>
Co-authored-by: ms-junyi <106718431+ms-junyi@users.noreply.github.com>
Co-authored-by: zitingguo-ms <736034564@qq.com>
Co-authored-by: Jai Kumar <jai.kumar@broadcom.com>

* [SAI-PTF]Align the sai rpc front name with swss and syncd (opencomputeproject#1552)

In Syncd starting process, it will try to start the switch and assign the gSwtichId to the sai implementation.
In the syncd rpc container, in order to get the swtich id after syncd initalization, we need to get and check the switch id.

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>

* Check for NULL APIs returned by sai_api_query() before calling. (opencomputeproject#1558)

Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

Co-authored-by: Chris Sommers <chrispsommers@gmail.com>

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>
Co-authored-by: Chris Sommers <31145757+chrispsommers@users.noreply.github.com>
Co-authored-by: Chris Sommers <chrispsommers@gmail.com>
Co-authored-by: Kamil Cudnik <kcudnik@gmail.com>
Co-authored-by: zhoudongxu <1315364814@qq.com>
Co-authored-by: richardyu <richardyu@contoso.com>
Co-authored-by: zhoudongxu <Dongxu.Zhou@microsoft.com>
Co-authored-by: Yang Wang <yangwang1@microsoft.com>
Co-authored-by: Prince Sunny <prince.sunny@microsoft.com>
Co-authored-by: Ravindranath C K <rck@innovium.com>
Co-authored-by: Vivek R <vivekreddykarri98@gmail.com>
Co-authored-by: ms-junyi <106718431+ms-junyi@users.noreply.github.com>
Co-authored-by: zitingguo-ms <736034564@qq.com>
Co-authored-by: Jai Kumar <jai.kumar@broadcom.com>
richardyu-ms added a commit to richardyu-ms/SAI that referenced this pull request Aug 27, 2022
…opencomputeproject#1552) (opencomputeproject#1533) (opencomputeproject#1514) (opencomputeproject#1492) (opencomputeproject#1558) (opencomputeproject#1557)

* Added missing dependencies required to run gensairpc.pl (opencomputeproject#1492)

Fixes opencomputeproject#1490

Co-authored-by: Chris Sommers <chrispsommers@gmail.com>

* Add GEN_SAIRPC_OPTS to pass flags to gensairpc.pl from top-level Make… (opencomputeproject#1514)

* [doc] Add SAI metadata introduction presentation (opencomputeproject#1487)

Small presentation about SAI metadata features added in last time.

Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* Add GEN_SAIRPC_OPTS to pass flags to gensairpc.pl from top-level Makefile or meta/Makefile

Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

Co-authored-by: Kamil Cudnik <kcudnik@gmail.com>
Co-authored-by: Chris Sommers <chrispsommers@gmail.com>

* Saithriftv2 fixes for extensions (opencomputeproject#1533)

* [doc] Add SAI metadata introduction presentation (opencomputeproject#1487)

Small presentation about SAI metadata features added in last time.

Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* Add GEN_SAIRPC_OPTS to pass flags to gensairpc.pl from top-level Makefile or meta/Makefile

Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* Add static_cast<> to sairpcgen templates to avoid type mismatches for SAI extensions.

Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* Add new env variable SAIRPC_EXTRA_LIBS which gets passed to final linkage of saiserver, so user can pass in additional libraries.

Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* Add experimental to include path.

Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* Add experimental headers to CPPFLAGS passed to ctypesgen.

Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* Add VLAN and PortChannel test plan (opencomputeproject#1480)

* Add VLAN and PortChannel test plan

For vlan, it includes:
1. Vlan functionalities
   - Flooding
   - Forwarding
   - Trunk/Access
   - Tagging/Untagging(802.1Q)
   - VLAN interface (RIF/SVI)
2. SAI APIs operations
   - Vlan Counters
   - Vlan and member list operations

For PortChannel, it includes:
1. Lag functionalities
    - Loadbalance
2. Lag SAI APIs
    - create/check/remove lag and lag member

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>

* Update lag_test_plan.md

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>

* Update lag_test_plan.md

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>

* remove cases not related to T0

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>

* Update lag_test_plan.md

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>

* Add VLAN and Lag test plan and put topo config in seperated files

Signed-off-by: richardyu <richardyu@contoso.com>

* fix typo and more description more clear

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>

* fix lag test typo (#29)

Signed-off-by: zhoudongxu <Dongxu.Zhou@microsoft.com>

* refactor vlan test plan and config

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>

* refactor lag test plan (#33)

Signed-off-by: zhoudongxu <Dongxu.Zhou@microsoft.com>

* refactor pc and vlan test

Signed-off-by: zhoudongxu <Dongxu.Zhou@microsoft.com>

* Improve pc and vlan test Doc (#35)

* fix typo

Signed-off-by: zhoudongxu <Dongxu.Zhou@microsoft.com>

* remove some unnecessary comments

Signed-off-by: zhoudongxu <Dongxu.Zhou@microsoft.com>

* reformat and adjust the description of the tests

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>

* set hash algorithm (#36)

Signed-off-by: zhoudongxu <Dongxu.Zhou@microsoft.com>

* refine lag test (#37)

Signed-off-by: zhoudongxu <Dongxu.Zhou@microsoft.com>

* correct vlan interface test (#38)

Signed-off-by: zhoudongxu <Dongxu.Zhou@microsoft.com>

* workaround for the sequence number issue in github and correct typo
standardise the ip and mac naming in config

add lag test for ingress port indifferenate in lag hash
redesign the mac and ip namin convention and reformat
Signed-off-by: richardyu-ms <richard.yu@microsoft.com>

* adjust the case numbers and vlan id

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>

Co-authored-by: zhoudongxu <1315364814@qq.com>
Co-authored-by: richardyu <richardyu@contoso.com>
Co-authored-by: zhoudongxu <Dongxu.Zhou@microsoft.com>
Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* [SAI-PTF] SAI PTF test structure for T0 test and VLAN,FDB sample cases (opencomputeproject#1499)

* [SAI-PTF] Add SAI ptf test structure for T0 test

Create SAI PTF test structure for T0
1. Create configuration structure for different components configu
2. Add FDB, PORT, switch, vlan configurations
3. Create Test structure base on PTF
4. Add T0 test case samples for FDB

Test Done:
Checked the ports functionality with port flooding
Checked port forwarding base on FDB configurations

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>

* add vlan config and vlan test sample case

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>

* add dx010 config

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>
Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* [meta] Add sai_status_t to ancestry check (opencomputeproject#1501)

Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* reset sleep time during turning up ports (opencomputeproject#1502)

Signed-off-by: Yang Wang <yangwang1@microsoft.com>
Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* [saineighbor] Bulk API support for Neighbor entries (opencomputeproject#1504)

* Bulk support for Neighbor entries

Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* add vlan testcases from Group6 to Group10 (opencomputeproject#1506)

Signed-off-by: Yang Wang <yangwang1@microsoft.com>
Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* Support counters on IP MC route entries. This is similar to the support added earlier for Route counters. (opencomputeproject#1497)

Support counters on IP MC route entries. This is similar to the support added earlier for Route counters.

API sequence:

sai_attribute_t counter_attr;
attr.id = SAI_COUNTER_ATTR_TYPE;
attr.value.s32 = SAI_COUNTER_TYPE_REGULAR;
sai_object_id_t counter_id;
sai_status_t rc = sai_counter_api->create_counter(&counter_id, g_switch_id, 1, &attr);
sai_attribute_t ipmc_attr;
attr.id = SAI_IPMC_ENTRY_ATTR_COUNTER_ID;
attr.value.oid = counter_id;
rc = sai_ipmc_api->set_ipmc_entry_attribute(route_entry, ipmc_attr);
sai_stat_id_t stat_ids[] = { SAI_COUNTER_STAT_PACKETS, SAI_COUNTER_STAT_BYTES };
uint64_t stats[2];
rc = sai_counter_api->sai_get_counter_stats_ext(counter_id, 2, stat_ids, stats);

Signed-off-by: rck-innovium <rck@innovium.com>
Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* Add thr missing API into saithriftv2 missing for syncd (opencomputeproject#1484)

saithriftv1 offers start_sai_thrift_rpc_server API to start the saithrift server and syncd is currently using that API https://github.com/Azure/sonic-sairedis/blob/master/syncd/syncd_main.cpp#L60

But this API is missing from the for saithriftv2.

Made the relevant changes to provide a similar API for saithriftv2 library

The start_sai_thrift_rpc_server API currently resides in saiserver.cpp which is not included in librpcserver.a and is not available for the users of the static library. Thus moved the function definition into sai_rpc_frontend.cpp for including it in the static library.

Signed-off-by: Vivek Reddy Karri <vkarri@nvidia.com>
Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* add vlan test case (opencomputeproject#1510)

Signed-off-by: ms-junyi <t-junyixiao@microsoft.com>

add vlan test case

edit FilteringTest

Signed-off-by: ms-junyi <t-junyixiao@microsoft.com>

edit vlan test case

Signed-off-by: ms-junyi <t-junyixiao@microsoft.com>
Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* add more waiting time for test (opencomputeproject#1511)

* add more waiting time for test

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>

* Update fdb_configer.py

increase the waiting time for fdb entries update

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>

* remove useless change

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>
Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* add read config_db.json (opencomputeproject#1519)

Signed-off-by: ms-junyi <t-junyixiao@microsoft.com>

format

Signed-off-by: ms-junyi <t-junyixiao@microsoft.com>

addomment for each function

Signed-off-by: ms-junyi <t-junyixiao@microsoft.com>

add comment for each function

Signed-off-by: ms-junyi <t-junyixiao@microsoft.com>
Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* [Fix]Add necessary test data file for sai test (opencomputeproject#1520)

In order to set up the port on different platforms, need to read the data for port configuration when turning on the admin state

This PR is a bug fix for adding the config_db into test resources folder.

Test Done:
Test within SONiC mgmt container

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>
Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* Zitingguo/add lag test (opencomputeproject#1522)

* add lag config

Signed-off-by: Ziting Guo <zitingguo@microsoft.com>
Signed-off-by: zitingguo <736034564@qq.com>

* enable lag config in test base

Signed-off-by: Ziting Guo <zitingguo@microsoft.com>
Signed-off-by: zitingguo <736034564@qq.com>

* fix lag config

Signed-off-by: Ziting Guo <zitingguo@microsoft.com>
Signed-off-by: zitingguo <736034564@qq.com>

* add remove_lag_member in lag_configer

Signed-off-by: Ziting Guo <zitingguo@microsoft.com>
Signed-off-by: zitingguo <736034564@qq.com>

* add sai_ipprefix() in utils

Signed-off-by: Ziting Guo <zitingguo@microsoft.com>
Signed-off-by: zitingguo <736034564@qq.com>

* fix typo

Signed-off-by: zitingguo <736034564@qq.com>

* import LagConfiger in sai_test_base

Signed-off-by: Ziting Guo <zitingguo@microsoft.com>
Signed-off-by: zitingguo <736034564@qq.com>

* add a simple lag test

Signed-off-by: Ziting Guo <zitingguo@microsoft.com>
Signed-off-by: zitingguo <736034564@qq.com>

* fix typo

Signed-off-by: zitingguo <736034564@qq.com>

* fix a config error in lag

Signed-off-by: Ziting Guo <zitingguo@microsoft.com>
Signed-off-by: zitingguo <736034564@qq.com>

* add lag lb test based on scr port

Signed-off-by: Ziting Guo <zitingguo@microsoft.com>
Signed-off-by: zitingguo <736034564@qq.com>

* fix

Signed-off-by: zitingguo <736034564@qq.com>

* set lag v4 hash

Signed-off-by: Ziting Guo <zitingguo@microsoft.com>
Signed-off-by: zitingguo <736034564@qq.com>

* add lag disable egress test case

Signed-off-by: Ziting Guo <zitingguo@microsoft.com>
Signed-off-by: zitingguo <736034564@qq.com>

* add IndifferenceIngressPortTest

Signed-off-by: Ziting Guo <zitingguo@microsoft.com>
Signed-off-by: zitingguo <736034564@qq.com>

* fix set hash function

Signed-off-by: Ziting Guo <zitingguo@microsoft.com>
Signed-off-by: zitingguo <736034564@qq.com>

* separate route configuration from lag

Signed-off-by: Ziting Guo <zitingguo@microsoft.com>
Signed-off-by: zitingguo <736034564@qq.com>

* disable setting lag hash

Signed-off-by: Ziting Guo <zitingguo@microsoft.com>
Signed-off-by: zitingguo <736034564@qq.com>

* add virtual interface

Signed-off-by: Ziting Guo <zitingguo@microsoft.com>
Signed-off-by: zitingguo <736034564@qq.com>

* Config default v4&v6 route

Signed-off-by: zitingguo <736034564@qq.com>
Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* add teardown for testing multiple cases at a time (opencomputeproject#1521)

* add read config_db.json

Signed-off-by: ms-junyi <t-junyixiao@microsoft.com>

format

Signed-off-by: ms-junyi <t-junyixiao@microsoft.com>

addomment for each function

Signed-off-by: ms-junyi <t-junyixiao@microsoft.com>

add comment for each function

Signed-off-by: ms-junyi <t-junyixiao@microsoft.com>

* tear down

Signed-off-by: ms-junyi <t-junyixiao@microsoft.com>
Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* Added missing dependencies required to run gensairpc.pl (opencomputeproject#1492)

Fixes opencomputeproject#1490

Co-authored-by: Chris Sommers <chrispsommers@gmail.com>
Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* Update saitam.h (opencomputeproject#1496)

Attribute is introduced to configure IPFIX template reporting interval as per the RFC7011.

https://datatracker.ietf.org/doc/html/rfc7011#section-8.4

Signed-off-by: Jai Kumar <jai.kumar@broadcom.com>
Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* Pass SAIRPC_EXTRA_LIBS flag in Makefile

Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* Removed changes to include paths for SAI extension headers;
as it turns out these changes were not required as originally reported in opencomputeproject#1531.

Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

Co-authored-by: Kamil Cudnik <kcudnik@gmail.com>
Co-authored-by: Chris Sommers <chrispsommers@gmail.com>
Co-authored-by: Richard.Yu <richard.yu@microsoft.com>
Co-authored-by: zhoudongxu <1315364814@qq.com>
Co-authored-by: richardyu <richardyu@contoso.com>
Co-authored-by: zhoudongxu <Dongxu.Zhou@microsoft.com>
Co-authored-by: Yang Wang <yangwang1@microsoft.com>
Co-authored-by: Prince Sunny <prince.sunny@microsoft.com>
Co-authored-by: Ravindranath C K <rck@innovium.com>
Co-authored-by: Vivek R <vivekreddykarri98@gmail.com>
Co-authored-by: ms-junyi <106718431+ms-junyi@users.noreply.github.com>
Co-authored-by: zitingguo-ms <736034564@qq.com>
Co-authored-by: Jai Kumar <jai.kumar@broadcom.com>

* [SAI-PTF]Align the sai rpc front name with swss and syncd (opencomputeproject#1552)

In Syncd starting process, it will try to start the switch and assign the gSwtichId to the sai implementation.
In the syncd rpc container, in order to get the swtich id after syncd initalization, we need to get and check the switch id.

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>

* Check for NULL APIs returned by sai_api_query() before calling. (opencomputeproject#1558)

Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

Co-authored-by: Chris Sommers <chrispsommers@gmail.com>

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>
Co-authored-by: Chris Sommers <31145757+chrispsommers@users.noreply.github.com>
Co-authored-by: Chris Sommers <chrispsommers@gmail.com>
Co-authored-by: Kamil Cudnik <kcudnik@gmail.com>
Co-authored-by: zhoudongxu <1315364814@qq.com>
Co-authored-by: richardyu <richardyu@contoso.com>
Co-authored-by: zhoudongxu <Dongxu.Zhou@microsoft.com>
Co-authored-by: Yang Wang <yangwang1@microsoft.com>
Co-authored-by: Prince Sunny <prince.sunny@microsoft.com>
Co-authored-by: Ravindranath C K <rck@innovium.com>
Co-authored-by: Vivek R <vivekreddykarri98@gmail.com>
Co-authored-by: ms-junyi <106718431+ms-junyi@users.noreply.github.com>
Co-authored-by: zitingguo-ms <736034564@qq.com>
Co-authored-by: Jai Kumar <jai.kumar@broadcom.com>
richardyu-ms added a commit to richardyu-ms/SAI that referenced this pull request Aug 28, 2022
…opencomputeproject#1552) (opencomputeproject#1533) (opencomputeproject#1514) (opencomputeproject#1492) (opencomputeproject#1558) (opencomputeproject#1557)

* Added missing dependencies required to run gensairpc.pl (opencomputeproject#1492)

Fixes opencomputeproject#1490

Co-authored-by: Chris Sommers <chrispsommers@gmail.com>

* Add GEN_SAIRPC_OPTS to pass flags to gensairpc.pl from top-level Make… (opencomputeproject#1514)

* [doc] Add SAI metadata introduction presentation (opencomputeproject#1487)

Small presentation about SAI metadata features added in last time.

Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* Add GEN_SAIRPC_OPTS to pass flags to gensairpc.pl from top-level Makefile or meta/Makefile

Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

Co-authored-by: Kamil Cudnik <kcudnik@gmail.com>
Co-authored-by: Chris Sommers <chrispsommers@gmail.com>

* Saithriftv2 fixes for extensions (opencomputeproject#1533)

* [doc] Add SAI metadata introduction presentation (opencomputeproject#1487)

Small presentation about SAI metadata features added in last time.

Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* Add GEN_SAIRPC_OPTS to pass flags to gensairpc.pl from top-level Makefile or meta/Makefile

Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* Add static_cast<> to sairpcgen templates to avoid type mismatches for SAI extensions.

Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* Add new env variable SAIRPC_EXTRA_LIBS which gets passed to final linkage of saiserver, so user can pass in additional libraries.

Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* Add experimental to include path.

Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* Add experimental headers to CPPFLAGS passed to ctypesgen.

Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* Add VLAN and PortChannel test plan (opencomputeproject#1480)

* Add VLAN and PortChannel test plan

For vlan, it includes:
1. Vlan functionalities
   - Flooding
   - Forwarding
   - Trunk/Access
   - Tagging/Untagging(802.1Q)
   - VLAN interface (RIF/SVI)
2. SAI APIs operations
   - Vlan Counters
   - Vlan and member list operations

For PortChannel, it includes:
1. Lag functionalities
    - Loadbalance
2. Lag SAI APIs
    - create/check/remove lag and lag member

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>

* Update lag_test_plan.md

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>

* Update lag_test_plan.md

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>

* remove cases not related to T0

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>

* Update lag_test_plan.md

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>

* Add VLAN and Lag test plan and put topo config in seperated files

Signed-off-by: richardyu <richardyu@contoso.com>

* fix typo and more description more clear

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>

* fix lag test typo (#29)

Signed-off-by: zhoudongxu <Dongxu.Zhou@microsoft.com>

* refactor vlan test plan and config

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>

* refactor lag test plan (#33)

Signed-off-by: zhoudongxu <Dongxu.Zhou@microsoft.com>

* refactor pc and vlan test

Signed-off-by: zhoudongxu <Dongxu.Zhou@microsoft.com>

* Improve pc and vlan test Doc (#35)

* fix typo

Signed-off-by: zhoudongxu <Dongxu.Zhou@microsoft.com>

* remove some unnecessary comments

Signed-off-by: zhoudongxu <Dongxu.Zhou@microsoft.com>

* reformat and adjust the description of the tests

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>

* set hash algorithm (#36)

Signed-off-by: zhoudongxu <Dongxu.Zhou@microsoft.com>

* refine lag test (#37)

Signed-off-by: zhoudongxu <Dongxu.Zhou@microsoft.com>

* correct vlan interface test (#38)

Signed-off-by: zhoudongxu <Dongxu.Zhou@microsoft.com>

* workaround for the sequence number issue in github and correct typo
standardise the ip and mac naming in config

add lag test for ingress port indifferenate in lag hash
redesign the mac and ip namin convention and reformat
Signed-off-by: richardyu-ms <richard.yu@microsoft.com>

* adjust the case numbers and vlan id

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>

Co-authored-by: zhoudongxu <1315364814@qq.com>
Co-authored-by: richardyu <richardyu@contoso.com>
Co-authored-by: zhoudongxu <Dongxu.Zhou@microsoft.com>
Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* [SAI-PTF] SAI PTF test structure for T0 test and VLAN,FDB sample cases (opencomputeproject#1499)

* [SAI-PTF] Add SAI ptf test structure for T0 test

Create SAI PTF test structure for T0
1. Create configuration structure for different components configu
2. Add FDB, PORT, switch, vlan configurations
3. Create Test structure base on PTF
4. Add T0 test case samples for FDB

Test Done:
Checked the ports functionality with port flooding
Checked port forwarding base on FDB configurations

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>

* add vlan config and vlan test sample case

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>

* add dx010 config

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>
Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* [meta] Add sai_status_t to ancestry check (opencomputeproject#1501)

Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* reset sleep time during turning up ports (opencomputeproject#1502)

Signed-off-by: Yang Wang <yangwang1@microsoft.com>
Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* [saineighbor] Bulk API support for Neighbor entries (opencomputeproject#1504)

* Bulk support for Neighbor entries

Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* add vlan testcases from Group6 to Group10 (opencomputeproject#1506)

Signed-off-by: Yang Wang <yangwang1@microsoft.com>
Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* Support counters on IP MC route entries. This is similar to the support added earlier for Route counters. (opencomputeproject#1497)

Support counters on IP MC route entries. This is similar to the support added earlier for Route counters.

API sequence:

sai_attribute_t counter_attr;
attr.id = SAI_COUNTER_ATTR_TYPE;
attr.value.s32 = SAI_COUNTER_TYPE_REGULAR;
sai_object_id_t counter_id;
sai_status_t rc = sai_counter_api->create_counter(&counter_id, g_switch_id, 1, &attr);
sai_attribute_t ipmc_attr;
attr.id = SAI_IPMC_ENTRY_ATTR_COUNTER_ID;
attr.value.oid = counter_id;
rc = sai_ipmc_api->set_ipmc_entry_attribute(route_entry, ipmc_attr);
sai_stat_id_t stat_ids[] = { SAI_COUNTER_STAT_PACKETS, SAI_COUNTER_STAT_BYTES };
uint64_t stats[2];
rc = sai_counter_api->sai_get_counter_stats_ext(counter_id, 2, stat_ids, stats);

Signed-off-by: rck-innovium <rck@innovium.com>
Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* Add thr missing API into saithriftv2 missing for syncd (opencomputeproject#1484)

saithriftv1 offers start_sai_thrift_rpc_server API to start the saithrift server and syncd is currently using that API https://github.com/Azure/sonic-sairedis/blob/master/syncd/syncd_main.cpp#L60

But this API is missing from the for saithriftv2.

Made the relevant changes to provide a similar API for saithriftv2 library

The start_sai_thrift_rpc_server API currently resides in saiserver.cpp which is not included in librpcserver.a and is not available for the users of the static library. Thus moved the function definition into sai_rpc_frontend.cpp for including it in the static library.

Signed-off-by: Vivek Reddy Karri <vkarri@nvidia.com>
Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* add vlan test case (opencomputeproject#1510)

Signed-off-by: ms-junyi <t-junyixiao@microsoft.com>

add vlan test case

edit FilteringTest

Signed-off-by: ms-junyi <t-junyixiao@microsoft.com>

edit vlan test case

Signed-off-by: ms-junyi <t-junyixiao@microsoft.com>
Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* add more waiting time for test (opencomputeproject#1511)

* add more waiting time for test

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>

* Update fdb_configer.py

increase the waiting time for fdb entries update

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>

* remove useless change

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>
Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* add read config_db.json (opencomputeproject#1519)

Signed-off-by: ms-junyi <t-junyixiao@microsoft.com>

format

Signed-off-by: ms-junyi <t-junyixiao@microsoft.com>

addomment for each function

Signed-off-by: ms-junyi <t-junyixiao@microsoft.com>

add comment for each function

Signed-off-by: ms-junyi <t-junyixiao@microsoft.com>
Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* [Fix]Add necessary test data file for sai test (opencomputeproject#1520)

In order to set up the port on different platforms, need to read the data for port configuration when turning on the admin state

This PR is a bug fix for adding the config_db into test resources folder.

Test Done:
Test within SONiC mgmt container

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>
Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* Zitingguo/add lag test (opencomputeproject#1522)

* add lag config

Signed-off-by: Ziting Guo <zitingguo@microsoft.com>
Signed-off-by: zitingguo <736034564@qq.com>

* enable lag config in test base

Signed-off-by: Ziting Guo <zitingguo@microsoft.com>
Signed-off-by: zitingguo <736034564@qq.com>

* fix lag config

Signed-off-by: Ziting Guo <zitingguo@microsoft.com>
Signed-off-by: zitingguo <736034564@qq.com>

* add remove_lag_member in lag_configer

Signed-off-by: Ziting Guo <zitingguo@microsoft.com>
Signed-off-by: zitingguo <736034564@qq.com>

* add sai_ipprefix() in utils

Signed-off-by: Ziting Guo <zitingguo@microsoft.com>
Signed-off-by: zitingguo <736034564@qq.com>

* fix typo

Signed-off-by: zitingguo <736034564@qq.com>

* import LagConfiger in sai_test_base

Signed-off-by: Ziting Guo <zitingguo@microsoft.com>
Signed-off-by: zitingguo <736034564@qq.com>

* add a simple lag test

Signed-off-by: Ziting Guo <zitingguo@microsoft.com>
Signed-off-by: zitingguo <736034564@qq.com>

* fix typo

Signed-off-by: zitingguo <736034564@qq.com>

* fix a config error in lag

Signed-off-by: Ziting Guo <zitingguo@microsoft.com>
Signed-off-by: zitingguo <736034564@qq.com>

* add lag lb test based on scr port

Signed-off-by: Ziting Guo <zitingguo@microsoft.com>
Signed-off-by: zitingguo <736034564@qq.com>

* fix

Signed-off-by: zitingguo <736034564@qq.com>

* set lag v4 hash

Signed-off-by: Ziting Guo <zitingguo@microsoft.com>
Signed-off-by: zitingguo <736034564@qq.com>

* add lag disable egress test case

Signed-off-by: Ziting Guo <zitingguo@microsoft.com>
Signed-off-by: zitingguo <736034564@qq.com>

* add IndifferenceIngressPortTest

Signed-off-by: Ziting Guo <zitingguo@microsoft.com>
Signed-off-by: zitingguo <736034564@qq.com>

* fix set hash function

Signed-off-by: Ziting Guo <zitingguo@microsoft.com>
Signed-off-by: zitingguo <736034564@qq.com>

* separate route configuration from lag

Signed-off-by: Ziting Guo <zitingguo@microsoft.com>
Signed-off-by: zitingguo <736034564@qq.com>

* disable setting lag hash

Signed-off-by: Ziting Guo <zitingguo@microsoft.com>
Signed-off-by: zitingguo <736034564@qq.com>

* add virtual interface

Signed-off-by: Ziting Guo <zitingguo@microsoft.com>
Signed-off-by: zitingguo <736034564@qq.com>

* Config default v4&v6 route

Signed-off-by: zitingguo <736034564@qq.com>
Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* add teardown for testing multiple cases at a time (opencomputeproject#1521)

* add read config_db.json

Signed-off-by: ms-junyi <t-junyixiao@microsoft.com>

format

Signed-off-by: ms-junyi <t-junyixiao@microsoft.com>

addomment for each function

Signed-off-by: ms-junyi <t-junyixiao@microsoft.com>

add comment for each function

Signed-off-by: ms-junyi <t-junyixiao@microsoft.com>

* tear down

Signed-off-by: ms-junyi <t-junyixiao@microsoft.com>
Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* Added missing dependencies required to run gensairpc.pl (opencomputeproject#1492)

Fixes opencomputeproject#1490

Co-authored-by: Chris Sommers <chrispsommers@gmail.com>
Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* Update saitam.h (opencomputeproject#1496)

Attribute is introduced to configure IPFIX template reporting interval as per the RFC7011.

https://datatracker.ietf.org/doc/html/rfc7011#section-8.4

Signed-off-by: Jai Kumar <jai.kumar@broadcom.com>
Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* Pass SAIRPC_EXTRA_LIBS flag in Makefile

Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* Removed changes to include paths for SAI extension headers;
as it turns out these changes were not required as originally reported in opencomputeproject#1531.

Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

Co-authored-by: Kamil Cudnik <kcudnik@gmail.com>
Co-authored-by: Chris Sommers <chrispsommers@gmail.com>
Co-authored-by: Richard.Yu <richard.yu@microsoft.com>
Co-authored-by: zhoudongxu <1315364814@qq.com>
Co-authored-by: richardyu <richardyu@contoso.com>
Co-authored-by: zhoudongxu <Dongxu.Zhou@microsoft.com>
Co-authored-by: Yang Wang <yangwang1@microsoft.com>
Co-authored-by: Prince Sunny <prince.sunny@microsoft.com>
Co-authored-by: Ravindranath C K <rck@innovium.com>
Co-authored-by: Vivek R <vivekreddykarri98@gmail.com>
Co-authored-by: ms-junyi <106718431+ms-junyi@users.noreply.github.com>
Co-authored-by: zitingguo-ms <736034564@qq.com>
Co-authored-by: Jai Kumar <jai.kumar@broadcom.com>

* [SAI-PTF]Align the sai rpc front name with swss and syncd (opencomputeproject#1552)

In Syncd starting process, it will try to start the switch and assign the gSwtichId to the sai implementation.
In the syncd rpc container, in order to get the swtich id after syncd initalization, we need to get and check the switch id.

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>

* Check for NULL APIs returned by sai_api_query() before calling. (opencomputeproject#1558)

Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

Co-authored-by: Chris Sommers <chrispsommers@gmail.com>

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>
Co-authored-by: Chris Sommers <31145757+chrispsommers@users.noreply.github.com>
Co-authored-by: Chris Sommers <chrispsommers@gmail.com>
Co-authored-by: Kamil Cudnik <kcudnik@gmail.com>
Co-authored-by: zhoudongxu <1315364814@qq.com>
Co-authored-by: richardyu <richardyu@contoso.com>
Co-authored-by: zhoudongxu <Dongxu.Zhou@microsoft.com>
Co-authored-by: Yang Wang <yangwang1@microsoft.com>
Co-authored-by: Prince Sunny <prince.sunny@microsoft.com>
Co-authored-by: Ravindranath C K <rck@innovium.com>
Co-authored-by: Vivek R <vivekreddykarri98@gmail.com>
Co-authored-by: ms-junyi <106718431+ms-junyi@users.noreply.github.com>
Co-authored-by: zitingguo-ms <736034564@qq.com>
Co-authored-by: Jai Kumar <jai.kumar@broadcom.com>
richardyu-ms added a commit that referenced this pull request Aug 29, 2022
…#1552) (#1533) (#1514) (#1492) (#1558) (#1557) (#1589)

* Added missing dependencies required to run gensairpc.pl (#1492)

Fixes #1490

Co-authored-by: Chris Sommers <chrispsommers@gmail.com>

* Add GEN_SAIRPC_OPTS to pass flags to gensairpc.pl from top-level Make… (#1514)

* [doc] Add SAI metadata introduction presentation (#1487)

Small presentation about SAI metadata features added in last time.

Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* Add GEN_SAIRPC_OPTS to pass flags to gensairpc.pl from top-level Makefile or meta/Makefile

Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

Co-authored-by: Kamil Cudnik <kcudnik@gmail.com>
Co-authored-by: Chris Sommers <chrispsommers@gmail.com>

* Saithriftv2 fixes for extensions (#1533)

* [doc] Add SAI metadata introduction presentation (#1487)

Small presentation about SAI metadata features added in last time.

Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* Add GEN_SAIRPC_OPTS to pass flags to gensairpc.pl from top-level Makefile or meta/Makefile

Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* Add static_cast<> to sairpcgen templates to avoid type mismatches for SAI extensions.

Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* Add new env variable SAIRPC_EXTRA_LIBS which gets passed to final linkage of saiserver, so user can pass in additional libraries.

Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* Add experimental to include path.

Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* Add experimental headers to CPPFLAGS passed to ctypesgen.

Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* Add VLAN and PortChannel test plan (#1480)

* Add VLAN and PortChannel test plan

For vlan, it includes:
1. Vlan functionalities
   - Flooding
   - Forwarding
   - Trunk/Access
   - Tagging/Untagging(802.1Q)
   - VLAN interface (RIF/SVI)
2. SAI APIs operations
   - Vlan Counters
   - Vlan and member list operations

For PortChannel, it includes:
1. Lag functionalities
    - Loadbalance
2. Lag SAI APIs
    - create/check/remove lag and lag member

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>

* Update lag_test_plan.md

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>

* Update lag_test_plan.md

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>

* remove cases not related to T0

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>

* Update lag_test_plan.md

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>

* Add VLAN and Lag test plan and put topo config in seperated files

Signed-off-by: richardyu <richardyu@contoso.com>

* fix typo and more description more clear

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>

* fix lag test typo (#29)

Signed-off-by: zhoudongxu <Dongxu.Zhou@microsoft.com>

* refactor vlan test plan and config

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>

* refactor lag test plan (#33)

Signed-off-by: zhoudongxu <Dongxu.Zhou@microsoft.com>

* refactor pc and vlan test

Signed-off-by: zhoudongxu <Dongxu.Zhou@microsoft.com>

* Improve pc and vlan test Doc (#35)

* fix typo

Signed-off-by: zhoudongxu <Dongxu.Zhou@microsoft.com>

* remove some unnecessary comments

Signed-off-by: zhoudongxu <Dongxu.Zhou@microsoft.com>

* reformat and adjust the description of the tests

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>

* set hash algorithm (#36)

Signed-off-by: zhoudongxu <Dongxu.Zhou@microsoft.com>

* refine lag test (#37)

Signed-off-by: zhoudongxu <Dongxu.Zhou@microsoft.com>

* correct vlan interface test (#38)

Signed-off-by: zhoudongxu <Dongxu.Zhou@microsoft.com>

* workaround for the sequence number issue in github and correct typo
standardise the ip and mac naming in config

add lag test for ingress port indifferenate in lag hash
redesign the mac and ip namin convention and reformat
Signed-off-by: richardyu-ms <richard.yu@microsoft.com>

* adjust the case numbers and vlan id

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>

Co-authored-by: zhoudongxu <1315364814@qq.com>
Co-authored-by: richardyu <richardyu@contoso.com>
Co-authored-by: zhoudongxu <Dongxu.Zhou@microsoft.com>
Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* [SAI-PTF] SAI PTF test structure for T0 test and VLAN,FDB sample cases (#1499)

* [SAI-PTF] Add SAI ptf test structure for T0 test

Create SAI PTF test structure for T0
1. Create configuration structure for different components configu
2. Add FDB, PORT, switch, vlan configurations
3. Create Test structure base on PTF
4. Add T0 test case samples for FDB

Test Done:
Checked the ports functionality with port flooding
Checked port forwarding base on FDB configurations

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>

* add vlan config and vlan test sample case

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>

* add dx010 config

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>
Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* [meta] Add sai_status_t to ancestry check (#1501)

Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* reset sleep time during turning up ports (#1502)

Signed-off-by: Yang Wang <yangwang1@microsoft.com>
Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* [saineighbor] Bulk API support for Neighbor entries (#1504)

* Bulk support for Neighbor entries

Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* add vlan testcases from Group6 to Group10 (#1506)

Signed-off-by: Yang Wang <yangwang1@microsoft.com>
Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* Support counters on IP MC route entries. This is similar to the support added earlier for Route counters. (#1497)

Support counters on IP MC route entries. This is similar to the support added earlier for Route counters.

API sequence:

sai_attribute_t counter_attr;
attr.id = SAI_COUNTER_ATTR_TYPE;
attr.value.s32 = SAI_COUNTER_TYPE_REGULAR;
sai_object_id_t counter_id;
sai_status_t rc = sai_counter_api->create_counter(&counter_id, g_switch_id, 1, &attr);
sai_attribute_t ipmc_attr;
attr.id = SAI_IPMC_ENTRY_ATTR_COUNTER_ID;
attr.value.oid = counter_id;
rc = sai_ipmc_api->set_ipmc_entry_attribute(route_entry, ipmc_attr);
sai_stat_id_t stat_ids[] = { SAI_COUNTER_STAT_PACKETS, SAI_COUNTER_STAT_BYTES };
uint64_t stats[2];
rc = sai_counter_api->sai_get_counter_stats_ext(counter_id, 2, stat_ids, stats);

Signed-off-by: rck-innovium <rck@innovium.com>
Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* Add thr missing API into saithriftv2 missing for syncd (#1484)

saithriftv1 offers start_sai_thrift_rpc_server API to start the saithrift server and syncd is currently using that API https://github.com/Azure/sonic-sairedis/blob/master/syncd/syncd_main.cpp#L60

But this API is missing from the for saithriftv2.

Made the relevant changes to provide a similar API for saithriftv2 library

The start_sai_thrift_rpc_server API currently resides in saiserver.cpp which is not included in librpcserver.a and is not available for the users of the static library. Thus moved the function definition into sai_rpc_frontend.cpp for including it in the static library.

Signed-off-by: Vivek Reddy Karri <vkarri@nvidia.com>
Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* add vlan test case (#1510)

Signed-off-by: ms-junyi <t-junyixiao@microsoft.com>

add vlan test case

edit FilteringTest

Signed-off-by: ms-junyi <t-junyixiao@microsoft.com>

edit vlan test case

Signed-off-by: ms-junyi <t-junyixiao@microsoft.com>
Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* add more waiting time for test (#1511)

* add more waiting time for test

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>

* Update fdb_configer.py

increase the waiting time for fdb entries update

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>

* remove useless change

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>
Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* add read config_db.json (#1519)

Signed-off-by: ms-junyi <t-junyixiao@microsoft.com>

format

Signed-off-by: ms-junyi <t-junyixiao@microsoft.com>

addomment for each function

Signed-off-by: ms-junyi <t-junyixiao@microsoft.com>

add comment for each function

Signed-off-by: ms-junyi <t-junyixiao@microsoft.com>
Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* [Fix]Add necessary test data file for sai test (#1520)

In order to set up the port on different platforms, need to read the data for port configuration when turning on the admin state

This PR is a bug fix for adding the config_db into test resources folder.

Test Done:
Test within SONiC mgmt container

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>
Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* Zitingguo/add lag test (#1522)

* add lag config

Signed-off-by: Ziting Guo <zitingguo@microsoft.com>
Signed-off-by: zitingguo <736034564@qq.com>

* enable lag config in test base

Signed-off-by: Ziting Guo <zitingguo@microsoft.com>
Signed-off-by: zitingguo <736034564@qq.com>

* fix lag config

Signed-off-by: Ziting Guo <zitingguo@microsoft.com>
Signed-off-by: zitingguo <736034564@qq.com>

* add remove_lag_member in lag_configer

Signed-off-by: Ziting Guo <zitingguo@microsoft.com>
Signed-off-by: zitingguo <736034564@qq.com>

* add sai_ipprefix() in utils

Signed-off-by: Ziting Guo <zitingguo@microsoft.com>
Signed-off-by: zitingguo <736034564@qq.com>

* fix typo

Signed-off-by: zitingguo <736034564@qq.com>

* import LagConfiger in sai_test_base

Signed-off-by: Ziting Guo <zitingguo@microsoft.com>
Signed-off-by: zitingguo <736034564@qq.com>

* add a simple lag test

Signed-off-by: Ziting Guo <zitingguo@microsoft.com>
Signed-off-by: zitingguo <736034564@qq.com>

* fix typo

Signed-off-by: zitingguo <736034564@qq.com>

* fix a config error in lag

Signed-off-by: Ziting Guo <zitingguo@microsoft.com>
Signed-off-by: zitingguo <736034564@qq.com>

* add lag lb test based on scr port

Signed-off-by: Ziting Guo <zitingguo@microsoft.com>
Signed-off-by: zitingguo <736034564@qq.com>

* fix

Signed-off-by: zitingguo <736034564@qq.com>

* set lag v4 hash

Signed-off-by: Ziting Guo <zitingguo@microsoft.com>
Signed-off-by: zitingguo <736034564@qq.com>

* add lag disable egress test case

Signed-off-by: Ziting Guo <zitingguo@microsoft.com>
Signed-off-by: zitingguo <736034564@qq.com>

* add IndifferenceIngressPortTest

Signed-off-by: Ziting Guo <zitingguo@microsoft.com>
Signed-off-by: zitingguo <736034564@qq.com>

* fix set hash function

Signed-off-by: Ziting Guo <zitingguo@microsoft.com>
Signed-off-by: zitingguo <736034564@qq.com>

* separate route configuration from lag

Signed-off-by: Ziting Guo <zitingguo@microsoft.com>
Signed-off-by: zitingguo <736034564@qq.com>

* disable setting lag hash

Signed-off-by: Ziting Guo <zitingguo@microsoft.com>
Signed-off-by: zitingguo <736034564@qq.com>

* add virtual interface

Signed-off-by: Ziting Guo <zitingguo@microsoft.com>
Signed-off-by: zitingguo <736034564@qq.com>

* Config default v4&v6 route

Signed-off-by: zitingguo <736034564@qq.com>
Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* add teardown for testing multiple cases at a time (#1521)

* add read config_db.json

Signed-off-by: ms-junyi <t-junyixiao@microsoft.com>

format

Signed-off-by: ms-junyi <t-junyixiao@microsoft.com>

addomment for each function

Signed-off-by: ms-junyi <t-junyixiao@microsoft.com>

add comment for each function

Signed-off-by: ms-junyi <t-junyixiao@microsoft.com>

* tear down

Signed-off-by: ms-junyi <t-junyixiao@microsoft.com>
Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* Added missing dependencies required to run gensairpc.pl (#1492)

Fixes #1490

Co-authored-by: Chris Sommers <chrispsommers@gmail.com>
Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* Update saitam.h (#1496)

Attribute is introduced to configure IPFIX template reporting interval as per the RFC7011.

https://datatracker.ietf.org/doc/html/rfc7011#section-8.4

Signed-off-by: Jai Kumar <jai.kumar@broadcom.com>
Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* Pass SAIRPC_EXTRA_LIBS flag in Makefile

Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

* Removed changes to include paths for SAI extension headers;
as it turns out these changes were not required as originally reported in #1531.

Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

Co-authored-by: Kamil Cudnik <kcudnik@gmail.com>
Co-authored-by: Chris Sommers <chrispsommers@gmail.com>
Co-authored-by: Richard.Yu <richard.yu@microsoft.com>
Co-authored-by: zhoudongxu <1315364814@qq.com>
Co-authored-by: richardyu <richardyu@contoso.com>
Co-authored-by: zhoudongxu <Dongxu.Zhou@microsoft.com>
Co-authored-by: Yang Wang <yangwang1@microsoft.com>
Co-authored-by: Prince Sunny <prince.sunny@microsoft.com>
Co-authored-by: Ravindranath C K <rck@innovium.com>
Co-authored-by: Vivek R <vivekreddykarri98@gmail.com>
Co-authored-by: ms-junyi <106718431+ms-junyi@users.noreply.github.com>
Co-authored-by: zitingguo-ms <736034564@qq.com>
Co-authored-by: Jai Kumar <jai.kumar@broadcom.com>

* [SAI-PTF]Align the sai rpc front name with swss and syncd (#1552)

In Syncd starting process, it will try to start the switch and assign the gSwtichId to the sai implementation.
In the syncd rpc container, in order to get the swtich id after syncd initalization, we need to get and check the switch id.

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>

* Check for NULL APIs returned by sai_api_query() before calling. (#1558)

Signed-off-by: Chris Sommers <chrispsommers@gmail.com>

Co-authored-by: Chris Sommers <chrispsommers@gmail.com>

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>
Co-authored-by: Chris Sommers <31145757+chrispsommers@users.noreply.github.com>
Co-authored-by: Chris Sommers <chrispsommers@gmail.com>
Co-authored-by: Kamil Cudnik <kcudnik@gmail.com>
Co-authored-by: zhoudongxu <1315364814@qq.com>
Co-authored-by: richardyu <richardyu@contoso.com>
Co-authored-by: zhoudongxu <Dongxu.Zhou@microsoft.com>
Co-authored-by: Yang Wang <yangwang1@microsoft.com>
Co-authored-by: Prince Sunny <prince.sunny@microsoft.com>
Co-authored-by: Ravindranath C K <rck@innovium.com>
Co-authored-by: Vivek R <vivekreddykarri98@gmail.com>
Co-authored-by: ms-junyi <106718431+ms-junyi@users.noreply.github.com>
Co-authored-by: zitingguo-ms <736034564@qq.com>
Co-authored-by: Jai Kumar <jai.kumar@broadcom.com>

Signed-off-by: richardyu-ms <richard.yu@microsoft.com>
Co-authored-by: Chris Sommers <31145757+chrispsommers@users.noreply.github.com>
Co-authored-by: Chris Sommers <chrispsommers@gmail.com>
Co-authored-by: Kamil Cudnik <kcudnik@gmail.com>
Co-authored-by: zhoudongxu <1315364814@qq.com>
Co-authored-by: richardyu <richardyu@contoso.com>
Co-authored-by: zhoudongxu <Dongxu.Zhou@microsoft.com>
Co-authored-by: Yang Wang <yangwang1@microsoft.com>
Co-authored-by: Prince Sunny <prince.sunny@microsoft.com>
Co-authored-by: Ravindranath C K <rck@innovium.com>
Co-authored-by: Vivek R <vivekreddykarri98@gmail.com>
Co-authored-by: ms-junyi <106718431+ms-junyi@users.noreply.github.com>
Co-authored-by: zitingguo-ms <736034564@qq.com>
Co-authored-by: Jai Kumar <jai.kumar@broadcom.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[sairpcgen][ENH] Avoid crashing sairpcserver due to null SAI func ptrs
2 participants