Tests services provide all declared interfaces.
Bug: 138114550
Test: /data/nativetest64/vts_ibase_test/vts_ibase_test
Change-Id: I513c7eaf12cd302c7d0e6b5fc1d4bc974ad208ec
diff --git a/transport/base/1.0/vts/functional/vts_ibase_test.cpp b/transport/base/1.0/vts/functional/vts_ibase_test.cpp
index 38acf8a..a0b4e71 100644
--- a/transport/base/1.0/vts/functional/vts_ibase_test.cpp
+++ b/transport/base/1.0/vts/functional/vts_ibase_test.cpp
@@ -13,11 +13,14 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+#define LOG_TAG "vts_ibase_test"
+
#include <algorithm>
#include <functional>
#include <map>
#include <string>
+#include <android-base/logging.h>
#include <android-base/properties.h>
#include <android-base/strings.h>
#include <android/hidl/base/1.0/IBase.h>
@@ -63,7 +66,7 @@
for (const FqInstance& instance : instances) {
instance_strings.insert(instance.string());
}
- return android::base::Join(instance_strings, " ");
+ return android::base::Join(instance_strings, "\n");
}
pid_t GetServiceDebugPid(const std::string& service) {
@@ -212,19 +215,25 @@
});
}
-// TODO(b/138114550): Also test that services serve all declared interfaces.
-TEST_F(VtsHalBaseV1_0TargetTest, ServiceDeclaresAllServedInterfaces) {
+TEST_F(VtsHalBaseV1_0TargetTest, ServiceProvidesAndDeclaresTheSameInterfaces) {
Result<ServiceInterfacesMap> service_interfaces_map =
android::init::GetOnDeviceServiceInterfacesMap();
ASSERT_TRUE(service_interfaces_map) << service_interfaces_map.error();
PidInterfacesMap pid_interfaces_map = GetPidInterfacesMap();
- for (const auto& [service, declared_interfaces] : *service_interfaces_map) {
+ for (auto [service, declared_interfaces] : *service_interfaces_map) {
if (declared_interfaces.empty()) {
- std::cout << "[WARNING] Service '" << service << "' does not declare any interfaces"
+ LOG(INFO) << "Service '" << service << "' does not declare any interfaces."
<< std::endl;
continue;
}
+ for (auto it = declared_interfaces.begin(); it != declared_interfaces.end();) {
+ if (it->getFqName() == android::gIBaseFqName) {
+ it = declared_interfaces.erase(it);
+ } else {
+ ++it;
+ }
+ }
pid_t pid = GetServiceDebugPid(service);
// TODO(b/138114550): Check lazy services that are not currently running
// (when pid == 0).
@@ -234,10 +243,22 @@
EXPECT_TRUE(diff.empty())
<< "Service '" << service << "' serves interfaces that it does not declare."
<< std::endl
- << " Served: '" << FqInstancesToString(served_interfaces) << "'" << std::endl
- << " Declared: '" << FqInstancesToString(declared_interfaces) << "'"
+ << " Served:" << std::endl
+ << FqInstancesToString(served_interfaces) << std::endl
+ << " Declared: " << std::endl
+ << FqInstancesToString(declared_interfaces) << std::endl
+ << " Difference: " << std::endl
+ << FqInstancesToString(diff);
+ diff = SetDifference(declared_interfaces, served_interfaces);
+ EXPECT_TRUE(diff.empty())
+ << "Service '" << service << "' declares interfaces that it does not serve."
<< std::endl
- << " Difference: '" << FqInstancesToString(diff) << "'";
+ << " Declared: " << std::endl
+ << FqInstancesToString(declared_interfaces) << std::endl
+ << " Served:" << std::endl
+ << FqInstancesToString(served_interfaces) << std::endl
+ << " Difference: " << std::endl
+ << FqInstancesToString(diff);
}
}
}