diff --git a/tetheroffload/control/1.0/vts/functional/OffloadControlTestBase.cpp b/tetheroffload/control/1.0/vts/functional/OffloadControlTestBase.cpp index bd0dad7a64..e392e9604f 100644 --- a/tetheroffload/control/1.0/vts/functional/OffloadControlTestBase.cpp +++ b/tetheroffload/control/1.0/vts/functional/OffloadControlTestBase.cpp @@ -53,29 +53,6 @@ void OffloadControlTestBase::setupConfigHal() { ASSERT_TRUE(ret.isOk()); } -void OffloadControlTestBase::prepareControlHal() { - control = createControl(std::get<1>(GetParam())); - ASSERT_NE(nullptr, control.get()) << "Could not get HIDL instance"; - - control_cb = new TetheringOffloadCallback(); - ASSERT_NE(nullptr, control_cb.get()) << "Could not get get offload callback"; -} - -void OffloadControlTestBase::initOffload(const bool expected_result) { - auto init_cb = [&](bool success, std::string errMsg) { - std::string msg = StringPrintf("Unexpectedly %s to init offload: %s", - success ? "succeeded" : "failed", errMsg.c_str()); - ASSERT_EQ(expected_result, success) << msg; - }; - const Return ret = control->initOffload(control_cb, init_cb); - ASSERT_TRUE(ret.isOk()); -} - -void OffloadControlTestBase::setupControlHal() { - prepareControlHal(); - initOffload(true); -} - void OffloadControlTestBase::stopOffload(const ExpectBoolean value) { auto cb = [&](bool success, const hidl_string& errMsg) { switch (value) { diff --git a/tetheroffload/control/1.0/vts/functional/include/OffloadControlTestBase.h b/tetheroffload/control/1.0/vts/functional/include/OffloadControlTestBase.h index d3f655bb0a..994c808930 100644 --- a/tetheroffload/control/1.0/vts/functional/include/OffloadControlTestBase.h +++ b/tetheroffload/control/1.0/vts/functional/include/OffloadControlTestBase.h @@ -70,11 +70,14 @@ class OffloadControlTestBase : public testing::TestWithParam(GetParam())); + ASSERT_NE(nullptr, control.get()) << "Could not get HIDL instance"; + + control_cb = new TetheringOffloadCallback(); + ASSERT_NE(nullptr, control_cb.get()) << "Could not get get offload callback"; + } + + virtual void initOffload(const bool expected_result) override { + auto init_cb = [&](bool success, std::string errMsg) { + std::string msg = StringPrintf("Unexpectedly %s to init offload: %s", + success ? "succeeded" : "failed", errMsg.c_str()); + ASSERT_EQ(expected_result, success) << msg; + }; + const Return ret = control->initOffload(control_cb, init_cb); + ASSERT_TRUE(ret.isOk()); + } }; class OffloadControlTestV1_0_HalStarted : public OffloadControlTestV1_0_HalNotStarted { diff --git a/tetheroffload/control/1.1/vts/functional/include/OffloadControlTestV1_1.h b/tetheroffload/control/1.1/vts/functional/include/OffloadControlTestV1_1.h index 06c9726dc4..a3bc1b41c5 100644 --- a/tetheroffload/control/1.1/vts/functional/include/OffloadControlTestV1_1.h +++ b/tetheroffload/control/1.1/vts/functional/include/OffloadControlTestV1_1.h @@ -18,6 +18,15 @@ #include #include +#include +#include + +constexpr char kCallbackOnEvent_1_1[] = "onEvent_1_1"; + +class TetheringOffloadCallbackArgsV1_1 { + public: + android::hardware::tetheroffload::control::V1_1::OffloadCallbackEvent last_event; +}; class OffloadControlTestV1_1_HalNotStarted : public OffloadControlTestV1_0_HalNotStarted { public: @@ -25,14 +34,60 @@ class OffloadControlTestV1_1_HalNotStarted : public OffloadControlTestV1_0_HalNo const std::string& serviceName) override { return android::hardware::tetheroffload::control::V1_1::IOffloadControl::getService( serviceName); - } + }; + + void prepareControlHal() override { + control = createControl(std::get<1>(GetParam())); + ASSERT_NE(nullptr, control.get()) << "Could not get HIDL instance"; + + control_cb_1_1 = new TetheringOffloadCallbackV1_1(); + ASSERT_NE(nullptr, control_cb_1_1.get()) << "Could not get offload callback"; + }; + + void initOffload(const bool expected_result) override { + auto init_cb = [&](bool success, std::string errMsg) { + std::string msg = StringPrintf("Unexpectedly %s to init offload: %s", + success ? "succeeded" : "failed", errMsg.c_str()); + ASSERT_EQ(expected_result, success) << msg; + }; + auto control = getControlV1_1(); + ASSERT_NE(control, nullptr); + const Return ret = control->initOffload(control_cb_1_1, init_cb); + ASSERT_TRUE(ret.isOk()); + }; sp getControlV1_1() { // The cast is safe since only devices with V1.1+ HAL will be enumerated and pass in to the // test. return android::hardware::tetheroffload::control::V1_1::IOffloadControl::castFrom(control) .withDefault(nullptr); - } + }; + + // Callback class for both new events. + class TetheringOffloadCallbackV1_1 + : public testing::VtsHalHidlTargetCallbackBase, + public android::hardware::tetheroffload::control::V1_1::ITetheringOffloadCallback { + public: + Return onEvent_1_1( + android::hardware::tetheroffload::control::V1_1::OffloadCallbackEvent event) + override { + const TetheringOffloadCallbackArgsV1_1 args{.last_event = event}; + NotifyFromCallback(kCallbackOnEvent_1_1, args); + return Void(); + }; + + Return onEvent([[maybe_unused]] OffloadCallbackEvent event) override { + // Tested only in IOffloadControl 1.0. + return Void(); + }; + + Return updateTimeout([[maybe_unused]] const NatTimeoutUpdate& params) override { + // Tested only in IOffloadControl 1.0. + return Void(); + }; + }; + + sp control_cb_1_1; }; class OffloadControlTestV1_1_HalStarted : public OffloadControlTestV1_1_HalNotStarted {