Loading automotive/can/1.0/vts/functional/Android.bp +5 −2 Original line number Diff line number Diff line Loading @@ -16,13 +16,16 @@ cc_defaults { name: "android.hardware.automotive.can@vts-defaults", defaults: ["VtsHalTargetTestDefaults", "android.hardware.automotive.can@defaults"], defaults: [ "VtsHalTargetTestDefaults", "android.hardware.automotive.can@defaults", ], header_libs: [ "android.hardware.automotive.can@hidl-utils-lib", "android.hardware.automotive.can@vts-utils-lib", ], static_libs: [ "android.hardware.automotive.can@1.0", "android.hardware.automotive.can@vts-utils-lib", "libgmock", ], test_suites: ["general-tests"], Loading automotive/can/1.0/vts/functional/VtsHalCanBusVirtualV1_0TargetTest.cpp +20 −2 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ #include <android/hardware/automotive/can/1.0/ICanController.h> #include <android/hardware/automotive/can/1.0/types.h> #include <android/hidl/manager/1.2/IServiceManager.h> #include <can-vts-utils/bus-enumerator.h> #include <can-vts-utils/can-hal-printers.h> #include <can-vts-utils/environment-utils.h> #include <gmock/gmock.h> Loading Loading @@ -139,14 +140,20 @@ class CanBusVirtualHalTest : public ::testing::VtsHalHidlTargetTestBase { Bus makeBus(); protected: static hidl_vec<hidl_string> mBusNames; private: unsigned mLastIface = 0; static sp<ICanController> mCanController; static bool mVirtualSupported; static bool mTestCaseInitialized; }; sp<ICanController> CanBusVirtualHalTest::mCanController = nullptr; bool CanBusVirtualHalTest::mVirtualSupported; hidl_vec<hidl_string> CanBusVirtualHalTest::mBusNames; bool CanBusVirtualHalTest::mTestCaseInitialized = false; static CanMessage makeMessage(CanMessageId id) { CanMessage msg = {}; Loading @@ -160,6 +167,7 @@ static void clearTimestamps(std::vector<CanMessage>& messages) { void CanBusVirtualHalTest::SetUp() { if (!mVirtualSupported) GTEST_SKIP(); ASSERT_TRUE(mTestCaseInitialized); } void CanBusVirtualHalTest::SetUpTestCase() { Loading @@ -170,6 +178,11 @@ void CanBusVirtualHalTest::SetUpTestCase() { hidl_vec<InterfaceType> supported; mCanController->getSupportedInterfaceTypes(hidl_utils::fill(&supported)).assertOk(); mVirtualSupported = supported.contains(InterfaceType::VIRTUAL); mBusNames = utils::getBusNames(); ASSERT_NE(0u, mBusNames.size()) << "No ICanBus HALs defined in device manifest"; mTestCaseInitialized = true; } void CanBusVirtualHalTest::TearDownTestCase() { Loading @@ -177,10 +190,11 @@ void CanBusVirtualHalTest::TearDownTestCase() { } Bus CanBusVirtualHalTest::makeBus() { const auto idx = ++mLastIface; const auto idx = mLastIface++; EXPECT_LT(idx, mBusNames.size()); ICanController::BusConfiguration config = {}; config.name = "test" + std::to_string(idx); config.name = mBusNames[idx]; config.iftype = InterfaceType::VIRTUAL; config.interfaceId.address("vcan50"); Loading @@ -207,6 +221,7 @@ TEST_F(CanBusVirtualHalTest, SendAfterClose) { } TEST_F(CanBusVirtualHalTest, SendAndRecv) { if (mBusNames.size() < 2u) GTEST_SKIP() << "Not testable with less than two CAN buses."; auto bus1 = makeBus(); auto bus2 = makeBus(); Loading @@ -226,6 +241,8 @@ TEST_F(CanBusVirtualHalTest, SendAndRecv) { } TEST_F(CanBusVirtualHalTest, DownOneOfTwo) { if (mBusNames.size() < 2u) GTEST_SKIP() << "Not testable with less than two CAN buses."; auto bus1 = makeBus(); auto bus2 = makeBus(); Loading @@ -235,6 +252,7 @@ TEST_F(CanBusVirtualHalTest, DownOneOfTwo) { } TEST_F(CanBusVirtualHalTest, Filter) { if (mBusNames.size() < 2u) GTEST_SKIP() << "Not testable with less than two CAN buses."; auto bus1 = makeBus(); auto bus2 = makeBus(); Loading automotive/can/1.0/vts/functional/VtsHalCanControllerV1_0TargetTest.cpp +22 −4 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ #include <android/hardware/automotive/can/1.0/ICanController.h> #include <android/hardware/automotive/can/1.0/types.h> #include <android/hidl/manager/1.2/IServiceManager.h> #include <can-vts-utils/bus-enumerator.h> #include <can-vts-utils/can-hal-printers.h> #include <can-vts-utils/environment-utils.h> #include <gmock/gmock.h> Loading @@ -37,6 +38,7 @@ class CanControllerHalTest : public ::testing::VtsHalHidlTargetTestBase { protected: virtual void SetUp() override; virtual void TearDown() override; static void SetUpTestCase(); hidl_vec<InterfaceType> getSupportedInterfaceTypes(); bool isSupported(InterfaceType iftype); Loading @@ -46,9 +48,18 @@ class CanControllerHalTest : public ::testing::VtsHalHidlTargetTestBase { void assertRegistered(const std::string srvname, bool expectRegistered); sp<ICanController> mCanController; static hidl_vec<hidl_string> mBusNames; private: static bool mTestCaseInitialized; }; hidl_vec<hidl_string> CanControllerHalTest::mBusNames; bool CanControllerHalTest::mTestCaseInitialized = false; void CanControllerHalTest::SetUp() { ASSERT_TRUE(mTestCaseInitialized); const auto serviceName = gEnv->getServiceName<ICanController>(); mCanController = getService<ICanController>(serviceName); ASSERT_TRUE(mCanController) << "Couldn't open CAN Controller: " << serviceName; Loading @@ -58,6 +69,13 @@ void CanControllerHalTest::TearDown() { mCanController.clear(); } void CanControllerHalTest::SetUpTestCase() { mBusNames = utils::getBusNames(); ASSERT_NE(0u, mBusNames.size()) << "No ICanBus HALs defined in device manifest"; mTestCaseInitialized = true; } hidl_vec<InterfaceType> CanControllerHalTest::getSupportedInterfaceTypes() { hidl_vec<InterfaceType> iftypesResult; mCanController->getSupportedInterfaceTypes(hidl_utils::fill(&iftypesResult)).assertOk(); Loading Loading @@ -104,7 +122,7 @@ TEST_F(CanControllerHalTest, SupportsSomething) { } TEST_F(CanControllerHalTest, BringUpDown) { const std::string name = "dummy"; const std::string name = mBusNames[0]; assertRegistered(name, false); if (!up(InterfaceType::VIRTUAL, name, "vcan57", ICanController::Result::OK)) GTEST_SKIP(); Loading @@ -122,7 +140,7 @@ TEST_F(CanControllerHalTest, DownDummy) { } TEST_F(CanControllerHalTest, UpTwice) { const std::string name = "dummy"; const std::string name = mBusNames[0]; assertRegistered(name, false); if (!up(InterfaceType::VIRTUAL, name, "vcan72", ICanController::Result::OK)) GTEST_SKIP(); Loading Loading @@ -211,7 +229,7 @@ TEST_F(CanControllerHalTest, FailBadName) { } TEST_F(CanControllerHalTest, FailBadVirtualAddress) { const std::string name = "dummy"; const std::string name = mBusNames[0]; assertRegistered(name, false); if (!up(InterfaceType::VIRTUAL, name, "", ICanController::Result::BAD_ADDRESS)) GTEST_SKIP(); Loading @@ -219,7 +237,7 @@ TEST_F(CanControllerHalTest, FailBadVirtualAddress) { } TEST_F(CanControllerHalTest, FailBadSocketcanAddress) { const std::string name = "dummy"; const std::string name = mBusNames[0]; assertRegistered(name, false); if (!up(InterfaceType::SOCKETCAN, name, "can87", ICanController::Result::BAD_ADDRESS)) { Loading automotive/can/1.0/vts/utils/Android.bp +11 −1 Original line number Diff line number Diff line Loading @@ -14,7 +14,17 @@ // limitations under the License. // cc_library_headers { cc_library_static { name: "android.hardware.automotive.can@vts-utils-lib", defaults: ["android.hardware.automotive.can@defaults"], srcs: [ "bus-enumerator.cpp", ], export_include_dirs: ["include"], header_libs: [ "android.hardware.automotive.can@hidl-utils-lib", ], static_libs: [ "android.hardware.automotive.can@1.0", ], } automotive/can/1.0/vts/utils/bus-enumerator.cpp 0 → 100644 +30 −0 Original line number Diff line number Diff line /* * Copyright (C) 2019 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include <android/hidl/manager/1.2/IServiceManager.h> #include <can-vts-utils/bus-enumerator.h> #include <hidl-utils/hidl-utils.h> namespace android::hardware::automotive::can::V1_0::vts::utils { hidl_vec<hidl_string> getBusNames() { auto manager = hidl::manager::V1_2::IServiceManager::getService(); hidl_vec<hidl_string> services; manager->listManifestByInterface(ICanBus::descriptor, hidl_utils::fill(&services)); return services; } } // namespace android::hardware::automotive::can::V1_0::vts::utils Loading
automotive/can/1.0/vts/functional/Android.bp +5 −2 Original line number Diff line number Diff line Loading @@ -16,13 +16,16 @@ cc_defaults { name: "android.hardware.automotive.can@vts-defaults", defaults: ["VtsHalTargetTestDefaults", "android.hardware.automotive.can@defaults"], defaults: [ "VtsHalTargetTestDefaults", "android.hardware.automotive.can@defaults", ], header_libs: [ "android.hardware.automotive.can@hidl-utils-lib", "android.hardware.automotive.can@vts-utils-lib", ], static_libs: [ "android.hardware.automotive.can@1.0", "android.hardware.automotive.can@vts-utils-lib", "libgmock", ], test_suites: ["general-tests"], Loading
automotive/can/1.0/vts/functional/VtsHalCanBusVirtualV1_0TargetTest.cpp +20 −2 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ #include <android/hardware/automotive/can/1.0/ICanController.h> #include <android/hardware/automotive/can/1.0/types.h> #include <android/hidl/manager/1.2/IServiceManager.h> #include <can-vts-utils/bus-enumerator.h> #include <can-vts-utils/can-hal-printers.h> #include <can-vts-utils/environment-utils.h> #include <gmock/gmock.h> Loading Loading @@ -139,14 +140,20 @@ class CanBusVirtualHalTest : public ::testing::VtsHalHidlTargetTestBase { Bus makeBus(); protected: static hidl_vec<hidl_string> mBusNames; private: unsigned mLastIface = 0; static sp<ICanController> mCanController; static bool mVirtualSupported; static bool mTestCaseInitialized; }; sp<ICanController> CanBusVirtualHalTest::mCanController = nullptr; bool CanBusVirtualHalTest::mVirtualSupported; hidl_vec<hidl_string> CanBusVirtualHalTest::mBusNames; bool CanBusVirtualHalTest::mTestCaseInitialized = false; static CanMessage makeMessage(CanMessageId id) { CanMessage msg = {}; Loading @@ -160,6 +167,7 @@ static void clearTimestamps(std::vector<CanMessage>& messages) { void CanBusVirtualHalTest::SetUp() { if (!mVirtualSupported) GTEST_SKIP(); ASSERT_TRUE(mTestCaseInitialized); } void CanBusVirtualHalTest::SetUpTestCase() { Loading @@ -170,6 +178,11 @@ void CanBusVirtualHalTest::SetUpTestCase() { hidl_vec<InterfaceType> supported; mCanController->getSupportedInterfaceTypes(hidl_utils::fill(&supported)).assertOk(); mVirtualSupported = supported.contains(InterfaceType::VIRTUAL); mBusNames = utils::getBusNames(); ASSERT_NE(0u, mBusNames.size()) << "No ICanBus HALs defined in device manifest"; mTestCaseInitialized = true; } void CanBusVirtualHalTest::TearDownTestCase() { Loading @@ -177,10 +190,11 @@ void CanBusVirtualHalTest::TearDownTestCase() { } Bus CanBusVirtualHalTest::makeBus() { const auto idx = ++mLastIface; const auto idx = mLastIface++; EXPECT_LT(idx, mBusNames.size()); ICanController::BusConfiguration config = {}; config.name = "test" + std::to_string(idx); config.name = mBusNames[idx]; config.iftype = InterfaceType::VIRTUAL; config.interfaceId.address("vcan50"); Loading @@ -207,6 +221,7 @@ TEST_F(CanBusVirtualHalTest, SendAfterClose) { } TEST_F(CanBusVirtualHalTest, SendAndRecv) { if (mBusNames.size() < 2u) GTEST_SKIP() << "Not testable with less than two CAN buses."; auto bus1 = makeBus(); auto bus2 = makeBus(); Loading @@ -226,6 +241,8 @@ TEST_F(CanBusVirtualHalTest, SendAndRecv) { } TEST_F(CanBusVirtualHalTest, DownOneOfTwo) { if (mBusNames.size() < 2u) GTEST_SKIP() << "Not testable with less than two CAN buses."; auto bus1 = makeBus(); auto bus2 = makeBus(); Loading @@ -235,6 +252,7 @@ TEST_F(CanBusVirtualHalTest, DownOneOfTwo) { } TEST_F(CanBusVirtualHalTest, Filter) { if (mBusNames.size() < 2u) GTEST_SKIP() << "Not testable with less than two CAN buses."; auto bus1 = makeBus(); auto bus2 = makeBus(); Loading
automotive/can/1.0/vts/functional/VtsHalCanControllerV1_0TargetTest.cpp +22 −4 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ #include <android/hardware/automotive/can/1.0/ICanController.h> #include <android/hardware/automotive/can/1.0/types.h> #include <android/hidl/manager/1.2/IServiceManager.h> #include <can-vts-utils/bus-enumerator.h> #include <can-vts-utils/can-hal-printers.h> #include <can-vts-utils/environment-utils.h> #include <gmock/gmock.h> Loading @@ -37,6 +38,7 @@ class CanControllerHalTest : public ::testing::VtsHalHidlTargetTestBase { protected: virtual void SetUp() override; virtual void TearDown() override; static void SetUpTestCase(); hidl_vec<InterfaceType> getSupportedInterfaceTypes(); bool isSupported(InterfaceType iftype); Loading @@ -46,9 +48,18 @@ class CanControllerHalTest : public ::testing::VtsHalHidlTargetTestBase { void assertRegistered(const std::string srvname, bool expectRegistered); sp<ICanController> mCanController; static hidl_vec<hidl_string> mBusNames; private: static bool mTestCaseInitialized; }; hidl_vec<hidl_string> CanControllerHalTest::mBusNames; bool CanControllerHalTest::mTestCaseInitialized = false; void CanControllerHalTest::SetUp() { ASSERT_TRUE(mTestCaseInitialized); const auto serviceName = gEnv->getServiceName<ICanController>(); mCanController = getService<ICanController>(serviceName); ASSERT_TRUE(mCanController) << "Couldn't open CAN Controller: " << serviceName; Loading @@ -58,6 +69,13 @@ void CanControllerHalTest::TearDown() { mCanController.clear(); } void CanControllerHalTest::SetUpTestCase() { mBusNames = utils::getBusNames(); ASSERT_NE(0u, mBusNames.size()) << "No ICanBus HALs defined in device manifest"; mTestCaseInitialized = true; } hidl_vec<InterfaceType> CanControllerHalTest::getSupportedInterfaceTypes() { hidl_vec<InterfaceType> iftypesResult; mCanController->getSupportedInterfaceTypes(hidl_utils::fill(&iftypesResult)).assertOk(); Loading Loading @@ -104,7 +122,7 @@ TEST_F(CanControllerHalTest, SupportsSomething) { } TEST_F(CanControllerHalTest, BringUpDown) { const std::string name = "dummy"; const std::string name = mBusNames[0]; assertRegistered(name, false); if (!up(InterfaceType::VIRTUAL, name, "vcan57", ICanController::Result::OK)) GTEST_SKIP(); Loading @@ -122,7 +140,7 @@ TEST_F(CanControllerHalTest, DownDummy) { } TEST_F(CanControllerHalTest, UpTwice) { const std::string name = "dummy"; const std::string name = mBusNames[0]; assertRegistered(name, false); if (!up(InterfaceType::VIRTUAL, name, "vcan72", ICanController::Result::OK)) GTEST_SKIP(); Loading Loading @@ -211,7 +229,7 @@ TEST_F(CanControllerHalTest, FailBadName) { } TEST_F(CanControllerHalTest, FailBadVirtualAddress) { const std::string name = "dummy"; const std::string name = mBusNames[0]; assertRegistered(name, false); if (!up(InterfaceType::VIRTUAL, name, "", ICanController::Result::BAD_ADDRESS)) GTEST_SKIP(); Loading @@ -219,7 +237,7 @@ TEST_F(CanControllerHalTest, FailBadVirtualAddress) { } TEST_F(CanControllerHalTest, FailBadSocketcanAddress) { const std::string name = "dummy"; const std::string name = mBusNames[0]; assertRegistered(name, false); if (!up(InterfaceType::SOCKETCAN, name, "can87", ICanController::Result::BAD_ADDRESS)) { Loading
automotive/can/1.0/vts/utils/Android.bp +11 −1 Original line number Diff line number Diff line Loading @@ -14,7 +14,17 @@ // limitations under the License. // cc_library_headers { cc_library_static { name: "android.hardware.automotive.can@vts-utils-lib", defaults: ["android.hardware.automotive.can@defaults"], srcs: [ "bus-enumerator.cpp", ], export_include_dirs: ["include"], header_libs: [ "android.hardware.automotive.can@hidl-utils-lib", ], static_libs: [ "android.hardware.automotive.can@1.0", ], }
automotive/can/1.0/vts/utils/bus-enumerator.cpp 0 → 100644 +30 −0 Original line number Diff line number Diff line /* * Copyright (C) 2019 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include <android/hidl/manager/1.2/IServiceManager.h> #include <can-vts-utils/bus-enumerator.h> #include <hidl-utils/hidl-utils.h> namespace android::hardware::automotive::can::V1_0::vts::utils { hidl_vec<hidl_string> getBusNames() { auto manager = hidl::manager::V1_2::IServiceManager::getService(); hidl_vec<hidl_string> services; manager->listManifestByInterface(ICanBus::descriptor, hidl_utils::fill(&services)); return services; } } // namespace android::hardware::automotive::can::V1_0::vts::utils