Add tests to lshal.
Test: lshal_test
Bug: 37725279
Change-Id: I1914e6274974ed5eb0ce2d655f1333d2344b49f5
Merged-In: I1914e6274974ed5eb0ce2d655f1333d2344b49f5
diff --git a/cmds/lshal/Lshal.cpp b/cmds/lshal/Lshal.cpp
index bf4ba2c..9db42f1 100644
--- a/cmds/lshal/Lshal.cpp
+++ b/cmds/lshal/Lshal.cpp
@@ -33,7 +33,19 @@
using ::android::hidl::manager::V1_0::IServiceManager;
-Lshal::Lshal() {
+Lshal::Lshal()
+ : mOut(std::cout), mErr(std::cerr),
+ mServiceManager(::android::hardware::defaultServiceManager()),
+ mPassthroughManager(::android::hardware::getPassthroughServiceManager()) {
+}
+
+Lshal::Lshal(std::ostream &out, std::ostream &err,
+ sp<hidl::manager::V1_0::IServiceManager> serviceManager,
+ sp<hidl::manager::V1_0::IServiceManager> passthroughManager)
+ : mOut(out), mErr(err),
+ mServiceManager(serviceManager),
+ mPassthroughManager(passthroughManager) {
+
}
void Lshal::usage(const std::string &command) const {
@@ -125,8 +137,7 @@
NullableOStream<std::ostream> err) const {
using android::hidl::base::V1_0::IBase;
- hardware::Return<sp<IBase>> retBase =
- ::android::hardware::defaultServiceManager()->get(interfaceName, instanceName);
+ hardware::Return<sp<IBase>> retBase = serviceManager()->get(interfaceName, instanceName);
if (!retBase.isOk()) {
std::string msg = "Cannot get " + interfaceName + "/" + instanceName + ": "
@@ -196,7 +207,17 @@
return USAGE;
}
+void signalHandler(int sig) {
+ if (sig == SIGINT) {
+ int retVal;
+ pthread_exit(&retVal);
+ }
+}
+
Status Lshal::main(const Arg &arg) {
+ // Allow SIGINT to terminate all threads.
+ signal(SIGINT, signalHandler);
+
Status status = parseArgs(arg);
if (status != OK) {
return status;
@@ -223,18 +244,13 @@
return mOut;
}
-void signalHandler(int sig) {
- if (sig == SIGINT) {
- int retVal;
- pthread_exit(&retVal);
- }
+const sp<IServiceManager> &Lshal::serviceManager() const {
+ return mServiceManager;
+}
+
+const sp<IServiceManager> &Lshal::passthroughManager() const {
+ return mPassthroughManager;
}
} // namespace lshal
} // namespace android
-
-int main(int argc, char **argv) {
- using namespace ::android::lshal;
- signal(SIGINT, signalHandler);
- return Lshal{}.main(Arg{argc, argv});
-}