Skip to content

Commit

Permalink
Update all helpers to support Mirror/Generic testbed variant. (#962)
Browse files Browse the repository at this point in the history
Co-authored-by: kishanps <[email protected]>
  • Loading branch information
VSuryaprasad-HCL and kishanps authored Jan 27, 2025
1 parent 26e761f commit a463975
Show file tree
Hide file tree
Showing 21 changed files with 383 additions and 291 deletions.
3 changes: 2 additions & 1 deletion tests/integration/system/nsf/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ cc_library(
"//lib/utils:generic_testbed_utils",
"//lib/validator:validator_lib",
"//tests/integration/system/nsf/interfaces:component_validator",
"//tests/integration/system/nsf/interfaces:testbed",
"//thinkit:generic_testbed",
"//thinkit:generic_testbed_fixture",
"//thinkit:mirror_testbed",
Expand Down Expand Up @@ -61,8 +62,8 @@ cc_library(
"//tests/integration/system/nsf/interfaces:component_validator",
"//tests/integration/system/nsf/interfaces:flow_programmer",
"//tests/integration/system/nsf/interfaces:test_params",
"//tests/integration/system/nsf/interfaces:testbed",
"//tests/integration/system/nsf/interfaces:traffic_helper",
"//thinkit:generic_testbed",
"//thinkit:ssh_client",
"//thinkit/proto:generic_testbed_cc_proto",
"@com_github_google_glog//:glog",
Expand Down
6 changes: 3 additions & 3 deletions tests/integration/system/nsf/component_validators/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ cc_library(
hdrs = ["sai_validator.h"],
deps = [
"//tests/integration/system/nsf/interfaces:component_validator",
"//thinkit:generic_testbed",
"//tests/integration/system/nsf/interfaces:testbed",
"@com_github_google_glog//:glog",
"@com_google_absl//absl/status",
"@com_google_absl//absl/strings:string_view",
Expand All @@ -42,7 +42,7 @@ cc_library(
hdrs = ["swss_validator.h"],
deps = [
"//tests/integration/system/nsf/interfaces:component_validator",
"//thinkit:generic_testbed",
"//tests/integration/system/nsf/interfaces:testbed",
"@com_github_google_glog//:glog",
"@com_google_absl//absl/status",
"@com_google_absl//absl/strings:string_view",
Expand All @@ -55,7 +55,7 @@ cc_library(
hdrs = ["syncd_validator.h"],
deps = [
"//tests/integration/system/nsf/interfaces:component_validator",
"//thinkit:generic_testbed",
"//tests/integration/system/nsf/interfaces:testbed",
"@com_github_google_glog//:glog",
"@com_google_absl//absl/status",
"@com_google_absl//absl/strings:string_view",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,21 +19,20 @@
#include "absl/strings/string_view.h"
#include "glog/logging.h"
#include "tests/integration/system/nsf/interfaces/component_validator.h"
#include "thinkit/generic_testbed.h"
#include "tests/integration/system/nsf/interfaces/testbed.h"

namespace pins_test {

// Dummy validators added as example of ComponentValidators implementation.
// Component owners need to have their own implementations and register to be
// used by the NSF Upgrade tests.
class SaiValidator : public ComponentValidator {
absl::Status OnInit(absl::string_view version,
thinkit::GenericTestbed& testbed) override {
absl::Status OnInit(absl::string_view version, Testbed& testbed) override {
LOG(INFO) << "Sai Init";
return absl::OkStatus();
}
absl::Status OnFlowCleanup(absl::string_view version,
thinkit::GenericTestbed& testbed) override {
Testbed& testbed) override {
LOG(INFO) << "Sai Flow Cleanup";
return absl::OkStatus();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,21 +19,20 @@
#include "absl/strings/string_view.h"
#include "glog/logging.h"
#include "tests/integration/system/nsf/interfaces/component_validator.h"
#include "thinkit/generic_testbed.h"
#include "tests/integration/system/nsf/interfaces/testbed.h"

namespace pins_test {

// Dummy validators added as example of ComponentValidators implementation.
// Component owners need to have their own implementations and register to be
// used by the NSF Upgrade tests.
class SwssValidator : public ComponentValidator {
absl::Status OnInit(absl::string_view version,
thinkit::GenericTestbed& testbed) override {
absl::Status OnInit(absl::string_view version, Testbed& testbed) override {
LOG(INFO) << "Swss Init";
return absl::OkStatus();
}
absl::Status OnFlowProgram(absl::string_view version,
thinkit::GenericTestbed& testbed) override {
Testbed& testbed) override {
LOG(INFO) << "Swss Flow Program";
return absl::OkStatus();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,26 +19,25 @@
#include "absl/strings/string_view.h"
#include "glog/logging.h"
#include "tests/integration/system/nsf/interfaces/component_validator.h"
#include "thinkit/generic_testbed.h"
#include "tests/integration/system/nsf/interfaces/testbed.h"

namespace pins_test {

// Dummy validators added as example of ComponentValidators implementation.
// Component owners need to have their own implementations and register to be
// used by the NSF Upgrade tests.
class SyncdValidator : public ComponentValidator {
absl::Status OnInit(absl::string_view version,
thinkit::GenericTestbed& testbed) override {
absl::Status OnInit(absl::string_view version, Testbed& testbed) override {
LOG(INFO) << "Syncd Init";
return absl::OkStatus();
}
absl::Status OnFlowProgram(absl::string_view version,
thinkit::GenericTestbed& testbed) override {
Testbed& testbed) override {
LOG(INFO) << "Syncd Flow Program";
return absl::OkStatus();
}
absl::Status OnFlowCleanup(absl::string_view version,
thinkit::GenericTestbed& testbed) override {
Testbed& testbed) override {
LOG(INFO) << "Syncd Flow Cleanup";
return absl::OkStatus();
}
Expand Down
4 changes: 2 additions & 2 deletions tests/integration/system/nsf/flow_programmers/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ cc_library(
hdrs = ["static_programmer.h"],
deps = [
"//tests/integration/system/nsf/interfaces:flow_programmer",
"//thinkit:generic_testbed",
"//tests/integration/system/nsf/interfaces:testbed",
"@com_google_absl//absl/status",
],
)
Expand All @@ -36,7 +36,7 @@ cc_library(
hdrs = ["fuzzer_replay_programmer.h"],
deps = [
"//tests/integration/system/nsf/interfaces:flow_programmer",
"//thinkit:generic_testbed",
"//tests/integration/system/nsf/interfaces:testbed",
"@com_google_absl//absl/status",
],
)
Original file line number Diff line number Diff line change
Expand Up @@ -17,16 +17,16 @@

#include "absl/status/status.h"
#include "tests/integration/system/nsf/interfaces/flow_programmer.h"
#include "thinkit/generic_testbed.h"
#include "tests/integration/system/nsf/interfaces/testbed.h"

namespace pins_test {

class FuzzerReplayProgrammer : public FlowProgrammer {
public:
absl::Status ProgramFlows(thinkit::GenericTestbed& testbed) override {
absl::Status ProgramFlows(Testbed& testbed) override {
return absl::OkStatus();
};
absl::Status ClearFlows(thinkit::GenericTestbed& testbed) override {
absl::Status ClearFlows(Testbed& testbed) override {
return absl::OkStatus();
};
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,16 +17,16 @@

#include "absl/status/status.h"
#include "tests/integration/system/nsf/interfaces/flow_programmer.h"
#include "thinkit/generic_testbed.h"
#include "tests/integration/system/nsf/interfaces/testbed.h"

namespace pins_test {

class StaticProgrammer : public FlowProgrammer {
public:
absl::Status ProgramFlows(thinkit::GenericTestbed& testbed) override {
absl::Status ProgramFlows(Testbed& testbed) override {
return absl::OkStatus();
};
absl::Status ClearFlows(thinkit::GenericTestbed& testbed) override {
absl::Status ClearFlows(Testbed& testbed) override {
return absl::OkStatus();
};
};
Expand Down
21 changes: 17 additions & 4 deletions tests/integration/system/nsf/interfaces/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -19,21 +19,34 @@ package(
licenses = ["notice"],
)

cc_library(
name = "testbed",
testonly = True,
hdrs = ["testbed.h"],
deps = [
"//thinkit:generic_testbed",
"//thinkit:generic_testbed_fixture",
"//thinkit:mirror_testbed",
"//thinkit:mirror_testbed_fixture",
],
)

cc_library(
name = "flow_programmer",
testonly = True,
hdrs = ["flow_programmer.h"],
deps = [
"//thinkit:generic_testbed",
":testbed",
"@com_google_absl//absl/status",
],
)

cc_library(
name = "traffic_helper",
testonly = True,
hdrs = ["traffic_helper.h"],
deps = [
"//thinkit:generic_testbed",
":testbed",
"@com_google_absl//absl/status",
],
)
Expand All @@ -43,7 +56,7 @@ cc_library(
testonly = True,
hdrs = ["component_validator.h"],
deps = [
"//thinkit:generic_testbed",
":testbed",
"@com_google_absl//absl/status",
"@com_google_absl//absl/strings:string_view",
],
Expand All @@ -56,8 +69,8 @@ cc_library(
deps = [
":component_validator",
":flow_programmer",
":testbed",
":traffic_helper",
"//tests/integration/system/nsf:util",
"//thinkit:ssh_client",
],
)
20 changes: 9 additions & 11 deletions tests/integration/system/nsf/interfaces/component_validator.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@

#include "absl/status/status.h"
#include "absl/strings/string_view.h"
#include "thinkit/generic_testbed.h"
#include "tests/integration/system/nsf/interfaces/testbed.h"

namespace pins_test {

Expand Down Expand Up @@ -50,52 +50,50 @@ class ComponentValidator {
virtual ~ComponentValidator() = default;

// Called before starting every NSF test.
virtual absl::Status OnInit(absl::string_view version,
thinkit::GenericTestbed& testbed) {
virtual absl::Status OnInit(absl::string_view version, Testbed& testbed) {
return absl::OkStatus();
}

// Called after programming flows on SUT.
virtual absl::Status OnFlowProgram(absl::string_view version,
thinkit::GenericTestbed& testbed) {
Testbed& testbed) {
return absl::OkStatus();
}

// Called after starting traffic from the Control Device or the Traffic
// Generator in the testbed.
virtual absl::Status OnStartTraffic(absl::string_view version,
thinkit::GenericTestbed& testbed) {
Testbed& testbed) {
return absl::OkStatus();
}

// Called after an upgrade is performed on the SUT.
virtual absl::Status OnUpgrade(absl::string_view version,
thinkit::GenericTestbed& testbed) {
virtual absl::Status OnUpgrade(absl::string_view version, Testbed& testbed) {
return absl::OkStatus();
}

// Called after a successful NSF reboot of the SUT.
virtual absl::Status OnNsfReboot(absl::string_view version,
thinkit::GenericTestbed& testbed) {
Testbed& testbed) {
return absl::OkStatus();
}

// Called after pushing config on the SUT.
virtual absl::Status OnConfigPush(absl::string_view version,
thinkit::GenericTestbed& testbed) {
Testbed& testbed) {
return absl::OkStatus();
}

// Called after stopping traffic from the Control Device or the Traffic
// Generator in the testbed.
virtual absl::Status OnStopTraffic(absl::string_view version,
thinkit::GenericTestbed& testbed) {
Testbed& testbed) {
return absl::OkStatus();
}

// Called after clearing up flows from the SUT.
virtual absl::Status OnFlowCleanup(absl::string_view version,
thinkit::GenericTestbed& testbed) {
Testbed& testbed) {
return absl::OkStatus();
}
};
Expand Down
9 changes: 5 additions & 4 deletions tests/integration/system/nsf/interfaces/flow_programmer.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
#define PINS_TESTS_INTEGRATION_SYSTEM_NSF_INTERFACES_FLOW_PROGRAMMER_H_

#include "absl/status/status.h"
#include "thinkit/generic_testbed.h"
#include "tests/integration/system/nsf/interfaces/testbed.h"

namespace pins_test {

Expand All @@ -26,11 +26,12 @@ class FlowProgrammer {
public:
virtual ~FlowProgrammer() = default;

// Programs a predefined flow on the SUT.
virtual absl::Status ProgramFlows(thinkit::GenericTestbed& testbed) = 0;
// Programs a predefined flow on the SUT based on the given IP version and
// protocol.
virtual absl::Status ProgramFlows(Testbed& testbed) = 0;

// Clears all flows on the SUT.
virtual absl::Status ClearFlows(thinkit::GenericTestbed& testbed) = 0;
virtual absl::Status ClearFlows(Testbed& testbed) = 0;
};

} // namespace pins_test
Expand Down
2 changes: 1 addition & 1 deletion tests/integration/system/nsf/interfaces/test_params.h
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@

#include "tests/integration/system/nsf/interfaces/component_validator.h"
#include "tests/integration/system/nsf/interfaces/flow_programmer.h"
#include "tests/integration/system/nsf/interfaces/testbed.h"
#include "tests/integration/system/nsf/interfaces/traffic_helper.h"
#include "tests/integration/system/nsf/util.h"
#include "thinkit/ssh_client.h"

namespace pins_test {
Expand Down
22 changes: 22 additions & 0 deletions tests/integration/system/nsf/interfaces/testbed.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
#ifndef PINS_TESTS_INTEGRATION_SYSTEM_NSF_INTERFACES_TESTBED_H_
#define PINS_TESTS_INTEGRATION_SYSTEM_NSF_INTERFACES_TESTBED_H_

#include <memory>
#include <variant>

#include "thinkit/generic_testbed.h"
#include "thinkit/generic_testbed_fixture.h"
#include "thinkit/mirror_testbed.h"
#include "thinkit/mirror_testbed_fixture.h"

namespace pins_test {

using Testbed = std::variant<std::unique_ptr<thinkit::GenericTestbed>,
std::unique_ptr<thinkit::MirrorTestbed>>;
using TestbedInterface =
std::variant<std::unique_ptr<thinkit::GenericTestbedInterface>,
std::unique_ptr<thinkit::MirrorTestbedInterface>>;

} // namespace pins_test

#endif // PINS_TESTS_INTEGRATION_SYSTEM_NSF_INTERFACES_TESTBED_H_
8 changes: 4 additions & 4 deletions tests/integration/system/nsf/interfaces/traffic_helper.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
#define PINS_TESTS_INTEGRATION_SYSTEM_NSF_INTERFACES_TRAFFIC_HELPER_H_

#include "absl/status/status.h"
#include "thinkit/generic_testbed.h"
#include "tests/integration/system/nsf/interfaces/testbed.h"

namespace pins_test {

Expand All @@ -28,15 +28,15 @@ class TrafficHelper {

// Starts traffic with a predefined traffic configuration from a Control
// Device or Traffic Generator in the testbed.
virtual absl::Status StartTraffic(thinkit::GenericTestbed& testbed) = 0;
virtual absl::Status StartTraffic(Testbed& testbed) = 0;

// Stops traffic in the testbed.
virtual absl::Status StopTraffic(thinkit::GenericTestbed& testbed) = 0;
virtual absl::Status StopTraffic(Testbed& testbed) = 0;

// Validates traffic in the testbed.
// Needs to be called *after* `StopTraffic()` is called.
virtual absl::Status ValidateTraffic(int error_percentage,
thinkit::GenericTestbed& testbed) = 0;
Testbed& testbed) = 0;
};

} // namespace pins_test
Expand Down
Loading

0 comments on commit a463975

Please sign in to comment.