diff options
9 files changed, 170 insertions, 0 deletions
diff --git a/omapi/aidl/vts/functional/config/Android.bp b/omapi/aidl/vts/functional/config/Android.bp new file mode 100644 index 000000000000..7c08257bf828 --- /dev/null +++ b/omapi/aidl/vts/functional/config/Android.bp @@ -0,0 +1,26 @@ +// +// Copyright (C) 2022 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. +// + +package { +    default_applicable_licenses: ["Android-Apache-2.0"], +} + +xsd_config { +    name: "omapi_uuid_map_config", +    srcs: ["omapi_uuid_map_config.xsd"], +    api_dir: "schema", +    package_name: "omapi.uuid.map.config", +} diff --git a/omapi/aidl/vts/functional/config/omapi_uuid_map_config.xsd b/omapi/aidl/vts/functional/config/omapi_uuid_map_config.xsd new file mode 100644 index 000000000000..ffeb7a032c38 --- /dev/null +++ b/omapi/aidl/vts/functional/config/omapi_uuid_map_config.xsd @@ -0,0 +1,40 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- Copyright (C) 2022 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. +--> +<xs:schema version="2.0" +           attributeFormDefault="unqualified" +           elementFormDefault="qualified" +           xmlns:xs="http://www.w3.org/2001/XMLSchema"> +  <xs:element name="ref_do"> +    <xs:complexType> +      <xs:sequence> +        <xs:element name="uuid_ref_do" maxOccurs="unbounded" minOccurs="0"> +          <xs:complexType> +            <xs:sequence> +              <xs:element name="uids"> +                <xs:complexType> +                  <xs:sequence> +                    <xs:element type="xs:short" name="uid" maxOccurs="unbounded" minOccurs="0"/> +                  </xs:sequence> +                </xs:complexType> +              </xs:element> +              <xs:element type="xs:string" name="uuid"/> +            </xs:sequence> +          </xs:complexType> +        </xs:element> +      </xs:sequence> +    </xs:complexType> +  </xs:element> +</xs:schema> diff --git a/omapi/aidl/vts/functional/config/schema/current.txt b/omapi/aidl/vts/functional/config/schema/current.txt new file mode 100644 index 000000000000..c2e930b949d9 --- /dev/null +++ b/omapi/aidl/vts/functional/config/schema/current.txt @@ -0,0 +1,30 @@ +// Signature format: 2.0 +package omapi.uuid.map.config { + +  public class RefDo { +    ctor public RefDo(); +    method public java.util.List<omapi.uuid.map.config.RefDo.UuidRefDo> getUuid_ref_do(); +  } + +  public static class RefDo.UuidRefDo { +    ctor public RefDo.UuidRefDo(); +    method public omapi.uuid.map.config.RefDo.UuidRefDo.Uids getUids(); +    method public String getUuid(); +    method public void setUids(omapi.uuid.map.config.RefDo.UuidRefDo.Uids); +    method public void setUuid(String); +  } + +  public static class RefDo.UuidRefDo.Uids { +    ctor public RefDo.UuidRefDo.Uids(); +    method public java.util.List<java.lang.Short> getUid(); +  } + +  public class XmlParser { +    ctor public XmlParser(); +    method public static omapi.uuid.map.config.RefDo read(java.io.InputStream) throws javax.xml.datatype.DatatypeConfigurationException, java.io.IOException, org.xmlpull.v1.XmlPullParserException; +    method public static String readText(org.xmlpull.v1.XmlPullParser) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException; +    method public static void skip(org.xmlpull.v1.XmlPullParser) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException; +  } + +} + diff --git a/omapi/aidl/vts/functional/config/schema/last_current.txt b/omapi/aidl/vts/functional/config/schema/last_current.txt new file mode 100644 index 000000000000..e69de29bb2d1 --- /dev/null +++ b/omapi/aidl/vts/functional/config/schema/last_current.txt diff --git a/omapi/aidl/vts/functional/config/schema/last_removed.txt b/omapi/aidl/vts/functional/config/schema/last_removed.txt new file mode 100644 index 000000000000..e69de29bb2d1 --- /dev/null +++ b/omapi/aidl/vts/functional/config/schema/last_removed.txt diff --git a/omapi/aidl/vts/functional/config/schema/removed.txt b/omapi/aidl/vts/functional/config/schema/removed.txt new file mode 100644 index 000000000000..d802177e249b --- /dev/null +++ b/omapi/aidl/vts/functional/config/schema/removed.txt @@ -0,0 +1 @@ +// Signature format: 2.0 diff --git a/omapi/aidl/vts/functional/omapi/Android.bp b/omapi/aidl/vts/functional/omapi/Android.bp index c3ab8d13920c..c41479f9e9cf 100644 --- a/omapi/aidl/vts/functional/omapi/Android.bp +++ b/omapi/aidl/vts/functional/omapi/Android.bp @@ -39,6 +39,11 @@ cc_test {      static_libs: [          "VtsHalHidlTargetTestBase",          "android.se.omapi-V1-ndk", +        "android.hardware.audio.common.test.utility", +        "libxml2", +    ], +    data: [ +        ":omapi_uuid_map_config",      ],      cflags: [          "-O0", @@ -51,4 +56,5 @@ cc_test {          "general-tests",          "vts",      ], +    test_config: "VtsHalOmapiSeServiceV1_TargetTest.xml",  } diff --git a/omapi/aidl/vts/functional/omapi/VtsHalOmapiSeServiceV1_TargetTest.cpp b/omapi/aidl/vts/functional/omapi/VtsHalOmapiSeServiceV1_TargetTest.cpp index 319cb7e70884..5303651b4b22 100644 --- a/omapi/aidl/vts/functional/omapi/VtsHalOmapiSeServiceV1_TargetTest.cpp +++ b/omapi/aidl/vts/functional/omapi/VtsHalOmapiSeServiceV1_TargetTest.cpp @@ -32,6 +32,7 @@  #include <hidl/GtestPrinter.h>  #include <hidl/ServiceManagement.h>  #include <utils/String16.h> +#include "utility/ValidateXml.h"  using namespace std;  using namespace ::testing; @@ -176,6 +177,25 @@ class OMAPISEServiceHalTest : public TestWithParam<std::string> {          return (deviceSupportsFeature(FEATURE_SE_OMAPI_ESE.c_str()));      } +    std::optional<std::string> getUuidMappingFile() { +        char value[PROPERTY_VALUE_MAX] = {0}; +        int len = property_get("ro.boot.product.hardware.sku", value, "config"); +        std::string uuidMappingConfigFile = UUID_MAPPING_CONFIG_PREFIX +                + std::string(value, len) +                + UUID_MAPPING_CONFIG_EXT; +        std::string uuidMapConfigPath; +        // Search in predefined folders +        for (auto path : UUID_MAPPING_CONFIG_PATHS) { +            uuidMapConfigPath = path + uuidMappingConfigFile; +            auto confFile = fopen(uuidMapConfigPath.c_str(), "r"); +            if (confFile) { +                fclose(confFile); +                return uuidMapConfigPath; +            } +        } +        return std::optional<std::string>(); +    } +      void SetUp() override {          LOG(INFO) << "get OMAPI service with name:" << GetParam();          ::ndk::SpAIBinder ks2Binder(AServiceManager_getService(GetParam().c_str())); @@ -300,6 +320,10 @@ class OMAPISEServiceHalTest : public TestWithParam<std::string> {      std::map<std::string, std::shared_ptr<aidl::android::se::omapi::ISecureElementReader>>          mVSReaders = {}; + +    std::string UUID_MAPPING_CONFIG_PREFIX = "hal_uuid_map_"; +    std::string UUID_MAPPING_CONFIG_EXT = ".xml"; +    std::string UUID_MAPPING_CONFIG_PATHS[3] = {"/odm/etc/", "/vendor/etc/", "/etc/"};  };  /** Tests getReaders API */ @@ -600,6 +624,14 @@ TEST_P(OMAPISEServiceHalTest, TestP2Value) {      }  } +TEST_P(OMAPISEServiceHalTest, TestUuidMappingConfig) { +    constexpr const char* xsd = "/data/local/tmp/omapi_uuid_map_config.xsd"; +    auto uuidMappingFile = getUuidMappingFile(); +    ASSERT_TRUE(uuidMappingFile.has_value()) << "Unable to determine UUID mapping config file path"; +    LOG(INFO) << "UUID Mapping config file: " << uuidMappingFile.value(); +    EXPECT_VALID_XML(uuidMappingFile->c_str(), xsd); +} +  INSTANTIATE_TEST_SUITE_P(PerInstance, OMAPISEServiceHalTest,                           testing::ValuesIn(::android::getAidlHalInstanceNames(                               aidl::android::se::omapi::ISecureElementService::descriptor)), diff --git a/omapi/aidl/vts/functional/omapi/VtsHalOmapiSeServiceV1_TargetTest.xml b/omapi/aidl/vts/functional/omapi/VtsHalOmapiSeServiceV1_TargetTest.xml new file mode 100644 index 000000000000..3ee0414711f3 --- /dev/null +++ b/omapi/aidl/vts/functional/omapi/VtsHalOmapiSeServiceV1_TargetTest.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2022 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. +--> +<configuration description="Runs VtsHalOmapiSeServiceV1_TargetTest."> +    <option name="test-suite-tag" value="apct" /> +    <option name="test-suite-tag" value="apct-native" /> + +    <target_preparer class="com.android.tradefed.targetprep.RootTargetPreparer"> +    </target_preparer> + +    <target_preparer class="com.android.tradefed.targetprep.PushFilePreparer"> +        <option name="cleanup" value="true" /> +        <option name="push" +         value="omapi_uuid_map_config.xsd->/data/local/tmp/omapi_uuid_map_config.xsd" /> +        <option name="push" +         value="VtsHalOmapiSeServiceV1_TargetTest->/data/local/tmp/VtsHalOmapiSeServiceV1_TargetTest" /> +    </target_preparer> + +    <test class="com.android.tradefed.testtype.GTest" > +        <option name="native-test-device-path" value="/data/local/tmp" /> +        <option name="module-name" value="VtsHalOmapiSeServiceV1_TargetTest" /> +    </test> +</configuration>  |