Loading radio/1.0/vts/functional/Android.bp +24 −0 Original line number Diff line number Diff line Loading @@ -44,3 +44,27 @@ cc_test { "-g", ], } cc_test { name: "VtsHalSapV1_0TargetTest", defaults: ["hidl_defaults"], srcs: ["sap_callback.cpp", "sap_hidl_hal_api.cpp", "sap_hidl_hal_test.cpp", "VtsHalSapV1_0TargetTest.cpp"], shared_libs: [ "libbase", "liblog", "libcutils", "libhidlbase", "libhidltransport", "libnativehelper", "libutils", "android.hardware.radio@1.0", ], static_libs: ["VtsHalHidlTargetTestBase"], cflags: [ "-O0", "-g", ], } radio/1.0/vts/functional/VtsHalSapV1_0TargetTest.cpp 0 → 100644 +28 −0 Original line number Diff line number Diff line /* * Copyright (C) 2017 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<sap_hidl_hal_utils.h> int main(int argc, char** argv) { // Add Sim-access Profile Hidl Environment ::testing::AddGlobalTestEnvironment(new SapHidlEnvironment); ::testing::InitGoogleTest(&argc, argv); int status = RUN_ALL_TESTS(); LOG(INFO) << "Test result = " << status; return status; } radio/1.0/vts/functional/sap_callback.cpp 0 → 100644 +92 −0 Original line number Diff line number Diff line /* * Copyright (C) 2017 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<sap_hidl_hal_utils.h> SapCallback::SapCallback(SapHidlTest& parent) : parent(parent) { } Return<void> SapCallback::connectResponse(int32_t token, SapConnectRsp /*sapConnectRsp*/, int32_t /*maxMsgSize*/) { sapResponseToken = token; parent.notify(); return Void(); } Return<void> SapCallback::disconnectResponse(int32_t token) { sapResponseToken = token; parent.notify(); return Void(); } Return<void> SapCallback::disconnectIndication(int32_t /*token*/, SapDisconnectType /*disconnectType*/) { return Void(); } Return<void> SapCallback::apduResponse(int32_t token, SapResultCode resultCode, const ::android::hardware::hidl_vec<uint8_t>& /*apduRsp*/) { sapResponseToken = token; sapResultCode = resultCode; parent.notify(); return Void(); } Return<void> SapCallback::transferAtrResponse(int32_t token, SapResultCode resultCode, const ::android::hardware::hidl_vec<uint8_t>& /*atr*/) { sapResponseToken = token; sapResultCode = resultCode; parent.notify(); return Void(); } Return<void> SapCallback::powerResponse(int32_t token, SapResultCode resultCode) { sapResponseToken = token; sapResultCode = resultCode; parent.notify(); return Void(); } Return<void> SapCallback::resetSimResponse(int32_t token, SapResultCode resultCode) { sapResponseToken = token; sapResultCode = resultCode; parent.notify(); return Void(); } Return<void> SapCallback::statusIndication(int32_t /*token*/, SapStatus /*status*/) { return Void(); } Return<void> SapCallback::transferCardReaderStatusResponse(int32_t token, SapResultCode resultCode, int32_t /*cardReaderStatus*/) { sapResponseToken = token; sapResultCode = resultCode; parent.notify(); return Void(); } Return<void> SapCallback::errorResponse(int32_t /*token*/) { return Void(); } Return<void> SapCallback::transferProtocolResponse(int32_t token, SapResultCode resultCode) { sapResponseToken = token; sapResultCode = resultCode; parent.notify(); return Void(); } radio/1.0/vts/functional/sap_hidl_hal_api.cpp 0 → 100644 +131 −0 Original line number Diff line number Diff line /* * Copyright (C) 2017 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<sap_hidl_hal_utils.h> /* * Test ISap.connectReq() for the response returned. */ TEST_F(SapHidlTest, connectReq) { int32_t token = 0; int32_t maxMsgSize = 100; sap->connectReq(++token, maxMsgSize); EXPECT_EQ(std::cv_status::no_timeout, wait()); EXPECT_EQ(sapCb->sapResponseToken, token); } /* * Test IRadio.disconnectReq() for the response returned */ TEST_F(SapHidlTest, disconnectReq) { int32_t token = 0; sap->disconnectReq(++token); EXPECT_EQ(std::cv_status::no_timeout, wait()); EXPECT_EQ(sapCb->sapResponseToken, token); } /* * Test IRadio.apduReq() for the response returned. */ TEST_F(SapHidlTest, apduReq) { int32_t token = 0; SapApduType sapApduType = SapApduType::APDU; android::hardware::hidl_vec<uint8_t> command = {}; sap->apduReq(++token, sapApduType, command); EXPECT_EQ(std::cv_status::no_timeout, wait()); EXPECT_EQ(sapCb->sapResponseToken, token); ASSERT_TRUE(SapResultCode::CARD_NOT_ACCESSSIBLE == sapCb->sapResultCode || SapResultCode::CARD_ALREADY_POWERED_OFF == sapCb->sapResultCode || SapResultCode::CARD_REMOVED == sapCb->sapResultCode); } /* * Test IRadio.transferAtrReq() for the response returned. */ TEST_F(SapHidlTest, transferAtrReq) { int32_t token = 0; sap->transferAtrReq(++token); EXPECT_EQ(std::cv_status::no_timeout, wait()); EXPECT_EQ(sapCb->sapResponseToken, token); ASSERT_TRUE(SapResultCode::DATA_NOT_AVAILABLE == sapCb->sapResultCode || SapResultCode::CARD_ALREADY_POWERED_OFF == sapCb->sapResultCode || SapResultCode::CARD_REMOVED == sapCb->sapResultCode); } /* * Test IRadio.powerReq() for the response returned. */ TEST_F(SapHidlTest, powerReq) { int32_t token = 0; bool state = true; sap->powerReq(++token, state); EXPECT_EQ(std::cv_status::no_timeout, wait()); EXPECT_EQ(sapCb->sapResponseToken, token); ASSERT_TRUE(SapResultCode::CARD_NOT_ACCESSSIBLE == sapCb->sapResultCode || SapResultCode::CARD_ALREADY_POWERED_OFF == sapCb->sapResultCode || SapResultCode::CARD_REMOVED == sapCb->sapResultCode || SapResultCode::CARD_ALREADY_POWERED_ON == sapCb->sapResultCode); } /* * Test IRadio.resetSimReq() for the response returned. */ TEST_F(SapHidlTest, resetSimReq) { int32_t token = 0; sap->resetSimReq(++token); EXPECT_EQ(std::cv_status::no_timeout, wait()); EXPECT_EQ(sapCb->sapResponseToken, token); ASSERT_TRUE(SapResultCode::CARD_NOT_ACCESSSIBLE == sapCb->sapResultCode || SapResultCode::CARD_ALREADY_POWERED_OFF == sapCb->sapResultCode || SapResultCode::CARD_REMOVED == sapCb->sapResultCode); } /* * Test IRadio.transferCardReaderStatusReq() for the response returned. */ TEST_F(SapHidlTest, transferCardReaderStatusReq) { int32_t token = 0; sap->transferCardReaderStatusReq(++token); EXPECT_EQ(std::cv_status::no_timeout, wait()); EXPECT_EQ(sapCb->sapResponseToken, token); EXPECT_EQ(SapResultCode::DATA_NOT_AVAILABLE, sapCb->sapResultCode); } /* * Test IRadio.setTransferProtocolReq() for the response returned. */ TEST_F(SapHidlTest, setTransferProtocolReq) { int32_t token = 0; SapTransferProtocol sapTransferProtocol = SapTransferProtocol::T0; sap->setTransferProtocolReq(++token, sapTransferProtocol); EXPECT_EQ(std::cv_status::no_timeout, wait()); EXPECT_EQ(sapCb->sapResponseToken, token); EXPECT_EQ(SapResultCode::NOT_SUPPORTED, sapCb->sapResultCode); } radio/1.0/vts/functional/sap_hidl_hal_test.cpp 0 → 100644 +54 −0 Original line number Diff line number Diff line /* * Copyright (C) 2017 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<sap_hidl_hal_utils.h> void SapHidlTest::SetUp() { sap = ::testing::VtsHalHidlTargetTestBase::getService<ISap>(hidl_string("sap_uim_socket1")); ASSERT_NE(sap, nullptr); sapCb = new SapCallback(*this); ASSERT_NE(sapCb, nullptr); count = 0; sap->setCallback(sapCb); } void SapHidlTest::TearDown() { } void SapHidlTest::notify() { std::unique_lock<std::mutex> lock(mtx); count++; cv.notify_one(); } std::cv_status SapHidlTest::wait() { std::unique_lock<std::mutex> lock(mtx); std::cv_status status = std::cv_status::no_timeout; auto now = std::chrono::system_clock::now(); while (count == 0) { status = cv.wait_until(lock, now + std::chrono::seconds(TIMEOUT_PERIOD)); if (status == std::cv_status::timeout) { return status; } } count--; return status; } Loading
radio/1.0/vts/functional/Android.bp +24 −0 Original line number Diff line number Diff line Loading @@ -44,3 +44,27 @@ cc_test { "-g", ], } cc_test { name: "VtsHalSapV1_0TargetTest", defaults: ["hidl_defaults"], srcs: ["sap_callback.cpp", "sap_hidl_hal_api.cpp", "sap_hidl_hal_test.cpp", "VtsHalSapV1_0TargetTest.cpp"], shared_libs: [ "libbase", "liblog", "libcutils", "libhidlbase", "libhidltransport", "libnativehelper", "libutils", "android.hardware.radio@1.0", ], static_libs: ["VtsHalHidlTargetTestBase"], cflags: [ "-O0", "-g", ], }
radio/1.0/vts/functional/VtsHalSapV1_0TargetTest.cpp 0 → 100644 +28 −0 Original line number Diff line number Diff line /* * Copyright (C) 2017 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<sap_hidl_hal_utils.h> int main(int argc, char** argv) { // Add Sim-access Profile Hidl Environment ::testing::AddGlobalTestEnvironment(new SapHidlEnvironment); ::testing::InitGoogleTest(&argc, argv); int status = RUN_ALL_TESTS(); LOG(INFO) << "Test result = " << status; return status; }
radio/1.0/vts/functional/sap_callback.cpp 0 → 100644 +92 −0 Original line number Diff line number Diff line /* * Copyright (C) 2017 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<sap_hidl_hal_utils.h> SapCallback::SapCallback(SapHidlTest& parent) : parent(parent) { } Return<void> SapCallback::connectResponse(int32_t token, SapConnectRsp /*sapConnectRsp*/, int32_t /*maxMsgSize*/) { sapResponseToken = token; parent.notify(); return Void(); } Return<void> SapCallback::disconnectResponse(int32_t token) { sapResponseToken = token; parent.notify(); return Void(); } Return<void> SapCallback::disconnectIndication(int32_t /*token*/, SapDisconnectType /*disconnectType*/) { return Void(); } Return<void> SapCallback::apduResponse(int32_t token, SapResultCode resultCode, const ::android::hardware::hidl_vec<uint8_t>& /*apduRsp*/) { sapResponseToken = token; sapResultCode = resultCode; parent.notify(); return Void(); } Return<void> SapCallback::transferAtrResponse(int32_t token, SapResultCode resultCode, const ::android::hardware::hidl_vec<uint8_t>& /*atr*/) { sapResponseToken = token; sapResultCode = resultCode; parent.notify(); return Void(); } Return<void> SapCallback::powerResponse(int32_t token, SapResultCode resultCode) { sapResponseToken = token; sapResultCode = resultCode; parent.notify(); return Void(); } Return<void> SapCallback::resetSimResponse(int32_t token, SapResultCode resultCode) { sapResponseToken = token; sapResultCode = resultCode; parent.notify(); return Void(); } Return<void> SapCallback::statusIndication(int32_t /*token*/, SapStatus /*status*/) { return Void(); } Return<void> SapCallback::transferCardReaderStatusResponse(int32_t token, SapResultCode resultCode, int32_t /*cardReaderStatus*/) { sapResponseToken = token; sapResultCode = resultCode; parent.notify(); return Void(); } Return<void> SapCallback::errorResponse(int32_t /*token*/) { return Void(); } Return<void> SapCallback::transferProtocolResponse(int32_t token, SapResultCode resultCode) { sapResponseToken = token; sapResultCode = resultCode; parent.notify(); return Void(); }
radio/1.0/vts/functional/sap_hidl_hal_api.cpp 0 → 100644 +131 −0 Original line number Diff line number Diff line /* * Copyright (C) 2017 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<sap_hidl_hal_utils.h> /* * Test ISap.connectReq() for the response returned. */ TEST_F(SapHidlTest, connectReq) { int32_t token = 0; int32_t maxMsgSize = 100; sap->connectReq(++token, maxMsgSize); EXPECT_EQ(std::cv_status::no_timeout, wait()); EXPECT_EQ(sapCb->sapResponseToken, token); } /* * Test IRadio.disconnectReq() for the response returned */ TEST_F(SapHidlTest, disconnectReq) { int32_t token = 0; sap->disconnectReq(++token); EXPECT_EQ(std::cv_status::no_timeout, wait()); EXPECT_EQ(sapCb->sapResponseToken, token); } /* * Test IRadio.apduReq() for the response returned. */ TEST_F(SapHidlTest, apduReq) { int32_t token = 0; SapApduType sapApduType = SapApduType::APDU; android::hardware::hidl_vec<uint8_t> command = {}; sap->apduReq(++token, sapApduType, command); EXPECT_EQ(std::cv_status::no_timeout, wait()); EXPECT_EQ(sapCb->sapResponseToken, token); ASSERT_TRUE(SapResultCode::CARD_NOT_ACCESSSIBLE == sapCb->sapResultCode || SapResultCode::CARD_ALREADY_POWERED_OFF == sapCb->sapResultCode || SapResultCode::CARD_REMOVED == sapCb->sapResultCode); } /* * Test IRadio.transferAtrReq() for the response returned. */ TEST_F(SapHidlTest, transferAtrReq) { int32_t token = 0; sap->transferAtrReq(++token); EXPECT_EQ(std::cv_status::no_timeout, wait()); EXPECT_EQ(sapCb->sapResponseToken, token); ASSERT_TRUE(SapResultCode::DATA_NOT_AVAILABLE == sapCb->sapResultCode || SapResultCode::CARD_ALREADY_POWERED_OFF == sapCb->sapResultCode || SapResultCode::CARD_REMOVED == sapCb->sapResultCode); } /* * Test IRadio.powerReq() for the response returned. */ TEST_F(SapHidlTest, powerReq) { int32_t token = 0; bool state = true; sap->powerReq(++token, state); EXPECT_EQ(std::cv_status::no_timeout, wait()); EXPECT_EQ(sapCb->sapResponseToken, token); ASSERT_TRUE(SapResultCode::CARD_NOT_ACCESSSIBLE == sapCb->sapResultCode || SapResultCode::CARD_ALREADY_POWERED_OFF == sapCb->sapResultCode || SapResultCode::CARD_REMOVED == sapCb->sapResultCode || SapResultCode::CARD_ALREADY_POWERED_ON == sapCb->sapResultCode); } /* * Test IRadio.resetSimReq() for the response returned. */ TEST_F(SapHidlTest, resetSimReq) { int32_t token = 0; sap->resetSimReq(++token); EXPECT_EQ(std::cv_status::no_timeout, wait()); EXPECT_EQ(sapCb->sapResponseToken, token); ASSERT_TRUE(SapResultCode::CARD_NOT_ACCESSSIBLE == sapCb->sapResultCode || SapResultCode::CARD_ALREADY_POWERED_OFF == sapCb->sapResultCode || SapResultCode::CARD_REMOVED == sapCb->sapResultCode); } /* * Test IRadio.transferCardReaderStatusReq() for the response returned. */ TEST_F(SapHidlTest, transferCardReaderStatusReq) { int32_t token = 0; sap->transferCardReaderStatusReq(++token); EXPECT_EQ(std::cv_status::no_timeout, wait()); EXPECT_EQ(sapCb->sapResponseToken, token); EXPECT_EQ(SapResultCode::DATA_NOT_AVAILABLE, sapCb->sapResultCode); } /* * Test IRadio.setTransferProtocolReq() for the response returned. */ TEST_F(SapHidlTest, setTransferProtocolReq) { int32_t token = 0; SapTransferProtocol sapTransferProtocol = SapTransferProtocol::T0; sap->setTransferProtocolReq(++token, sapTransferProtocol); EXPECT_EQ(std::cv_status::no_timeout, wait()); EXPECT_EQ(sapCb->sapResponseToken, token); EXPECT_EQ(SapResultCode::NOT_SUPPORTED, sapCb->sapResultCode); }
radio/1.0/vts/functional/sap_hidl_hal_test.cpp 0 → 100644 +54 −0 Original line number Diff line number Diff line /* * Copyright (C) 2017 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<sap_hidl_hal_utils.h> void SapHidlTest::SetUp() { sap = ::testing::VtsHalHidlTargetTestBase::getService<ISap>(hidl_string("sap_uim_socket1")); ASSERT_NE(sap, nullptr); sapCb = new SapCallback(*this); ASSERT_NE(sapCb, nullptr); count = 0; sap->setCallback(sapCb); } void SapHidlTest::TearDown() { } void SapHidlTest::notify() { std::unique_lock<std::mutex> lock(mtx); count++; cv.notify_one(); } std::cv_status SapHidlTest::wait() { std::unique_lock<std::mutex> lock(mtx); std::cv_status status = std::cv_status::no_timeout; auto now = std::chrono::system_clock::now(); while (count == 0) { status = cv.wait_until(lock, now + std::chrono::seconds(TIMEOUT_PERIOD)); if (status == std::cv_status::timeout) { return status; } } count--; return status; }