Loading audio/common/all-versions/test/utility/include/utility/ValidateXml.h +25 −2 Original line number Diff line number Diff line Loading @@ -52,7 +52,30 @@ namespace utility { template <bool atLeastOneRequired = true> ::testing::AssertionResult validateXmlMultipleLocations( const char* xmlFileNameExpr, const char* xmlFileLocationsExpr, const char* xsdFilePathExpr, const char* xmlFileName, std::vector<const char*> xmlFileLocations, const char* xsdFilePath); const char* xmlFileName, const std::vector<std::string>& xmlFileLocations, const char* xsdFilePath); template <bool atLeastOneRequired = true> ::testing::AssertionResult validateXmlMultipleLocations( const char* xmlFileNameExpr, const char* xmlFileLocationsExpr, const char* xsdFilePathExpr, const char* xmlFileName, std::initializer_list<const char*> xmlFileLocations, const char* xsdFilePath) { return validateXmlMultipleLocations<atLeastOneRequired>( xmlFileNameExpr, xmlFileLocationsExpr, xsdFilePathExpr, xmlFileName, std::vector<std::string>(xmlFileLocations.begin(), xmlFileLocations.end()), xsdFilePath); } template <bool atLeastOneRequired = true> ::testing::AssertionResult validateXmlMultipleLocations(const char* xmlFileNameExpr, const char* xmlFileLocationsExpr, const char* xsdFilePathExpr, const char* xmlFileName, std::vector<const char*> xmlFileLocations, const char* xsdFilePath) { return validateXmlMultipleLocations<atLeastOneRequired>( xmlFileNameExpr, xmlFileLocationsExpr, xsdFilePathExpr, xmlFileName, std::vector<std::string>(xmlFileLocations.begin(), xmlFileLocations.end()), xsdFilePath); } /** ASSERT that all found XML are valid according to an xsd. */ #define ASSERT_VALID_XML_MULTIPLE_LOCATIONS(xmlFileName, xmlFileLocations, xsdFilePath) \ Loading audio/common/all-versions/test/utility/src/ValidateXml.cpp +10 −11 Original line number Diff line number Diff line Loading @@ -132,13 +132,14 @@ struct Libxml2Global { template <bool atLeastOneRequired> ::testing::AssertionResult validateXmlMultipleLocations( const char* xmlFileNameExpr, const char* xmlFileLocationsExpr, const char* xsdFilePathExpr, const char* xmlFileName, std::vector<const char*> xmlFileLocations, const char* xsdFilePath) { const char* xmlFileName, const std::vector<std::string>& xmlFileLocations, const char* xsdFilePath) { using namespace std::string_literals; std::vector<std::string> errors; std::vector<std::string> foundFiles; for (const char* location : xmlFileLocations) { for (const auto& location : xmlFileLocations) { std::string xmlFilePath = location + "/"s + xmlFileName; if (access(xmlFilePath.c_str(), F_OK) != 0) { // If the file does not exist ignore this location and fallback on the next one Loading Loading @@ -166,13 +167,11 @@ template <bool atLeastOneRequired> : "\nWhere no file might exist."); } template ::testing::AssertionResult validateXmlMultipleLocations<true>(const char*, const char*, const char*, const char*, std::vector<const char*>, template ::testing::AssertionResult validateXmlMultipleLocations<true>( const char*, const char*, const char*, const char*, const std::vector<std::string>&, const char*); template ::testing::AssertionResult validateXmlMultipleLocations<false>(const char*, const char*, const char*, const char*, std::vector<const char*>, template ::testing::AssertionResult validateXmlMultipleLocations<false>( const char*, const char*, const char*, const char*, const std::vector<std::string>&, const char*); } // namespace utility Loading audio/core/all-versions/vts/functional/AudioPrimaryHidlHalTest.h +6 −5 Original line number Diff line number Diff line Loading @@ -35,6 +35,7 @@ #include <hwbinder/IPCThreadState.h> #include <android-base/logging.h> #include <system/audio_config.h> #include PATH(android/hardware/audio/FILE_VERSION/IDevice.h) #include PATH(android/hardware/audio/FILE_VERSION/IDevicesFactory.h) Loading Loading @@ -135,7 +136,6 @@ class HidlTest : public ::testing::Test { ////////////////////////// Audio policy configuration //////////////////////// ////////////////////////////////////////////////////////////////////////////// static const std::vector<const char*> kConfigLocations = {"/odm/etc", "/vendor/etc", "/system/etc"}; static constexpr char kConfigFileName[] = "audio_policy_configuration.xml"; // Stringify the argument. Loading @@ -154,8 +154,8 @@ class PolicyConfig : private PolicyConfigData, public AudioPolicyConfig { PolicyConfig() : AudioPolicyConfig(hwModules, availableOutputDevices, availableInputDevices, defaultOutputDevice) { for (const char* location : kConfigLocations) { std::string path = std::string(location) + '/' + kConfigFileName; for (const auto& location : android::audio_get_configuration_paths()) { std::string path = location + '/' + kConfigFileName; if (access(path.c_str(), F_OK) == 0) { mFilePath = path; break; Loading Loading @@ -188,7 +188,7 @@ class PolicyConfig : private PolicyConfigData, public AudioPolicyConfig { std::string getError() const { if (mFilePath.empty()) { return std::string{"Could not find "} + kConfigFileName + " file in: " + testing::PrintToString(kConfigLocations); " file in: " + testing::PrintToString(android::audio_get_configuration_paths()); } else { return "Invalid config file: " + mFilePath; } Loading Loading @@ -304,7 +304,8 @@ TEST(CheckConfig, audioPolicyConfigurationValidation) { "is valid according to the schema"); const char* xsd = "/data/local/tmp/audio_policy_configuration_" STRINGIFY(CPP_VERSION) ".xsd"; EXPECT_ONE_VALID_XML_MULTIPLE_LOCATIONS(kConfigFileName, kConfigLocations, xsd); EXPECT_ONE_VALID_XML_MULTIPLE_LOCATIONS(kConfigFileName, android::audio_get_configuration_paths(), xsd); } class AudioPolicyConfigTest : public AudioHidlTestWithDeviceParameter { Loading audio/effect/all-versions/vts/functional/ValidateAudioEffectsConfiguration.cpp +5 −3 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ #include <iterator> #include <media/EffectsConfig.h> #include <system/audio_config.h> // clang-format off #include PATH(android/hardware/audio/effect/FILE_VERSION/IEffectsFactory.h) // clang-format on Loading @@ -41,13 +42,14 @@ TEST(CheckConfig, audioEffectsConfigurationValidation) { GTEST_SKIP() << "No Effects HAL version " STRINGIFY(CPP_VERSION) " on this device"; } std::vector<const char*> locations(std::begin(DEFAULT_LOCATIONS), std::end(DEFAULT_LOCATIONS)); const char* xsd = "/data/local/tmp/audio_effects_conf_" STRINGIFY(CPP_VERSION) ".xsd"; #if MAJOR_VERSION == 2 // In V2, audio effect XML is not required. .conf is still allowed though deprecated EXPECT_VALID_XML_MULTIPLE_LOCATIONS(DEFAULT_NAME, locations, xsd); EXPECT_VALID_XML_MULTIPLE_LOCATIONS(DEFAULT_NAME, android::audio_get_configuration_paths(), xsd); #elif MAJOR_VERSION >= 4 // Starting with V4, audio effect XML is required EXPECT_ONE_VALID_XML_MULTIPLE_LOCATIONS(DEFAULT_NAME, locations, xsd); EXPECT_ONE_VALID_XML_MULTIPLE_LOCATIONS(DEFAULT_NAME, android::audio_get_configuration_paths(), xsd); #endif } audio/policy/1.0/vts/functional/ValidateEngineConfiguration.cpp +8 −4 Original line number Diff line number Diff line Loading @@ -23,7 +23,8 @@ #include <string> #include "utility/ValidateXml.h" static const std::vector<const char*> locations = {"/odm/etc", "/vendor/etc", "/system/etc"}; #include <system/audio_config.h> static const std::string config = "audio_policy_engine_configuration.xml"; static const std::string schema = std::string(XSD_DIR) + "/audio_policy_engine_configuration_V1_0.xsd"; Loading @@ -42,7 +43,8 @@ TEST(ValidateConfiguration, audioPolicyEngineConfiguration) { RecordProperty("description", "Verify that the audio policy engine configuration file " "is valid according to the schemas"); EXPECT_VALID_XML_MULTIPLE_LOCATIONS(config.c_str(), locations, schema.c_str()); EXPECT_VALID_XML_MULTIPLE_LOCATIONS(config.c_str(), android::audio_get_configuration_paths(), schema.c_str()); } /** Loading @@ -52,9 +54,11 @@ TEST(ValidateConfiguration, audioPolicyEngineConfiguration) { */ static bool deviceUsesConfigurableEngine() { return android::hardware::audio::common::test::utility::validateXmlMultipleLocations<true>( "", "", "", config.c_str(), locations, schema.c_str()) && "", "", "", config.c_str(), android::audio_get_configuration_paths(), schema.c_str()) && android::hardware::audio::common::test::utility::validateXmlMultipleLocations<true>( "", "", "", configurableConfig.c_str(), locations, configurableSchemas.c_str()); "", "", "", configurableConfig.c_str(), android::audio_get_configuration_paths(), configurableSchemas.c_str()); } TEST(ValidateConfiguration, audioPolicyEngineConfigurable) { Loading Loading
audio/common/all-versions/test/utility/include/utility/ValidateXml.h +25 −2 Original line number Diff line number Diff line Loading @@ -52,7 +52,30 @@ namespace utility { template <bool atLeastOneRequired = true> ::testing::AssertionResult validateXmlMultipleLocations( const char* xmlFileNameExpr, const char* xmlFileLocationsExpr, const char* xsdFilePathExpr, const char* xmlFileName, std::vector<const char*> xmlFileLocations, const char* xsdFilePath); const char* xmlFileName, const std::vector<std::string>& xmlFileLocations, const char* xsdFilePath); template <bool atLeastOneRequired = true> ::testing::AssertionResult validateXmlMultipleLocations( const char* xmlFileNameExpr, const char* xmlFileLocationsExpr, const char* xsdFilePathExpr, const char* xmlFileName, std::initializer_list<const char*> xmlFileLocations, const char* xsdFilePath) { return validateXmlMultipleLocations<atLeastOneRequired>( xmlFileNameExpr, xmlFileLocationsExpr, xsdFilePathExpr, xmlFileName, std::vector<std::string>(xmlFileLocations.begin(), xmlFileLocations.end()), xsdFilePath); } template <bool atLeastOneRequired = true> ::testing::AssertionResult validateXmlMultipleLocations(const char* xmlFileNameExpr, const char* xmlFileLocationsExpr, const char* xsdFilePathExpr, const char* xmlFileName, std::vector<const char*> xmlFileLocations, const char* xsdFilePath) { return validateXmlMultipleLocations<atLeastOneRequired>( xmlFileNameExpr, xmlFileLocationsExpr, xsdFilePathExpr, xmlFileName, std::vector<std::string>(xmlFileLocations.begin(), xmlFileLocations.end()), xsdFilePath); } /** ASSERT that all found XML are valid according to an xsd. */ #define ASSERT_VALID_XML_MULTIPLE_LOCATIONS(xmlFileName, xmlFileLocations, xsdFilePath) \ Loading
audio/common/all-versions/test/utility/src/ValidateXml.cpp +10 −11 Original line number Diff line number Diff line Loading @@ -132,13 +132,14 @@ struct Libxml2Global { template <bool atLeastOneRequired> ::testing::AssertionResult validateXmlMultipleLocations( const char* xmlFileNameExpr, const char* xmlFileLocationsExpr, const char* xsdFilePathExpr, const char* xmlFileName, std::vector<const char*> xmlFileLocations, const char* xsdFilePath) { const char* xmlFileName, const std::vector<std::string>& xmlFileLocations, const char* xsdFilePath) { using namespace std::string_literals; std::vector<std::string> errors; std::vector<std::string> foundFiles; for (const char* location : xmlFileLocations) { for (const auto& location : xmlFileLocations) { std::string xmlFilePath = location + "/"s + xmlFileName; if (access(xmlFilePath.c_str(), F_OK) != 0) { // If the file does not exist ignore this location and fallback on the next one Loading Loading @@ -166,13 +167,11 @@ template <bool atLeastOneRequired> : "\nWhere no file might exist."); } template ::testing::AssertionResult validateXmlMultipleLocations<true>(const char*, const char*, const char*, const char*, std::vector<const char*>, template ::testing::AssertionResult validateXmlMultipleLocations<true>( const char*, const char*, const char*, const char*, const std::vector<std::string>&, const char*); template ::testing::AssertionResult validateXmlMultipleLocations<false>(const char*, const char*, const char*, const char*, std::vector<const char*>, template ::testing::AssertionResult validateXmlMultipleLocations<false>( const char*, const char*, const char*, const char*, const std::vector<std::string>&, const char*); } // namespace utility Loading
audio/core/all-versions/vts/functional/AudioPrimaryHidlHalTest.h +6 −5 Original line number Diff line number Diff line Loading @@ -35,6 +35,7 @@ #include <hwbinder/IPCThreadState.h> #include <android-base/logging.h> #include <system/audio_config.h> #include PATH(android/hardware/audio/FILE_VERSION/IDevice.h) #include PATH(android/hardware/audio/FILE_VERSION/IDevicesFactory.h) Loading Loading @@ -135,7 +136,6 @@ class HidlTest : public ::testing::Test { ////////////////////////// Audio policy configuration //////////////////////// ////////////////////////////////////////////////////////////////////////////// static const std::vector<const char*> kConfigLocations = {"/odm/etc", "/vendor/etc", "/system/etc"}; static constexpr char kConfigFileName[] = "audio_policy_configuration.xml"; // Stringify the argument. Loading @@ -154,8 +154,8 @@ class PolicyConfig : private PolicyConfigData, public AudioPolicyConfig { PolicyConfig() : AudioPolicyConfig(hwModules, availableOutputDevices, availableInputDevices, defaultOutputDevice) { for (const char* location : kConfigLocations) { std::string path = std::string(location) + '/' + kConfigFileName; for (const auto& location : android::audio_get_configuration_paths()) { std::string path = location + '/' + kConfigFileName; if (access(path.c_str(), F_OK) == 0) { mFilePath = path; break; Loading Loading @@ -188,7 +188,7 @@ class PolicyConfig : private PolicyConfigData, public AudioPolicyConfig { std::string getError() const { if (mFilePath.empty()) { return std::string{"Could not find "} + kConfigFileName + " file in: " + testing::PrintToString(kConfigLocations); " file in: " + testing::PrintToString(android::audio_get_configuration_paths()); } else { return "Invalid config file: " + mFilePath; } Loading Loading @@ -304,7 +304,8 @@ TEST(CheckConfig, audioPolicyConfigurationValidation) { "is valid according to the schema"); const char* xsd = "/data/local/tmp/audio_policy_configuration_" STRINGIFY(CPP_VERSION) ".xsd"; EXPECT_ONE_VALID_XML_MULTIPLE_LOCATIONS(kConfigFileName, kConfigLocations, xsd); EXPECT_ONE_VALID_XML_MULTIPLE_LOCATIONS(kConfigFileName, android::audio_get_configuration_paths(), xsd); } class AudioPolicyConfigTest : public AudioHidlTestWithDeviceParameter { Loading
audio/effect/all-versions/vts/functional/ValidateAudioEffectsConfiguration.cpp +5 −3 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ #include <iterator> #include <media/EffectsConfig.h> #include <system/audio_config.h> // clang-format off #include PATH(android/hardware/audio/effect/FILE_VERSION/IEffectsFactory.h) // clang-format on Loading @@ -41,13 +42,14 @@ TEST(CheckConfig, audioEffectsConfigurationValidation) { GTEST_SKIP() << "No Effects HAL version " STRINGIFY(CPP_VERSION) " on this device"; } std::vector<const char*> locations(std::begin(DEFAULT_LOCATIONS), std::end(DEFAULT_LOCATIONS)); const char* xsd = "/data/local/tmp/audio_effects_conf_" STRINGIFY(CPP_VERSION) ".xsd"; #if MAJOR_VERSION == 2 // In V2, audio effect XML is not required. .conf is still allowed though deprecated EXPECT_VALID_XML_MULTIPLE_LOCATIONS(DEFAULT_NAME, locations, xsd); EXPECT_VALID_XML_MULTIPLE_LOCATIONS(DEFAULT_NAME, android::audio_get_configuration_paths(), xsd); #elif MAJOR_VERSION >= 4 // Starting with V4, audio effect XML is required EXPECT_ONE_VALID_XML_MULTIPLE_LOCATIONS(DEFAULT_NAME, locations, xsd); EXPECT_ONE_VALID_XML_MULTIPLE_LOCATIONS(DEFAULT_NAME, android::audio_get_configuration_paths(), xsd); #endif }
audio/policy/1.0/vts/functional/ValidateEngineConfiguration.cpp +8 −4 Original line number Diff line number Diff line Loading @@ -23,7 +23,8 @@ #include <string> #include "utility/ValidateXml.h" static const std::vector<const char*> locations = {"/odm/etc", "/vendor/etc", "/system/etc"}; #include <system/audio_config.h> static const std::string config = "audio_policy_engine_configuration.xml"; static const std::string schema = std::string(XSD_DIR) + "/audio_policy_engine_configuration_V1_0.xsd"; Loading @@ -42,7 +43,8 @@ TEST(ValidateConfiguration, audioPolicyEngineConfiguration) { RecordProperty("description", "Verify that the audio policy engine configuration file " "is valid according to the schemas"); EXPECT_VALID_XML_MULTIPLE_LOCATIONS(config.c_str(), locations, schema.c_str()); EXPECT_VALID_XML_MULTIPLE_LOCATIONS(config.c_str(), android::audio_get_configuration_paths(), schema.c_str()); } /** Loading @@ -52,9 +54,11 @@ TEST(ValidateConfiguration, audioPolicyEngineConfiguration) { */ static bool deviceUsesConfigurableEngine() { return android::hardware::audio::common::test::utility::validateXmlMultipleLocations<true>( "", "", "", config.c_str(), locations, schema.c_str()) && "", "", "", config.c_str(), android::audio_get_configuration_paths(), schema.c_str()) && android::hardware::audio::common::test::utility::validateXmlMultipleLocations<true>( "", "", "", configurableConfig.c_str(), locations, configurableSchemas.c_str()); "", "", "", configurableConfig.c_str(), android::audio_get_configuration_paths(), configurableSchemas.c_str()); } TEST(ValidateConfiguration, audioPolicyEngineConfigurable) { Loading