lshal: add test for large debug string.

lshal_test uses passthrough HAL, which consistently reproduce
the error because the file descriptor is always closed upon
return.

Test: lshal_test
Fixes: 200623090

Change-Id: I35c2dbd39d5f573a889ab19df1f0a2ffd88a5e4a
This commit is contained in:
Yifan Hong 2021-09-21 17:47:48 -07:00
parent aa677d973e
commit 44b6387e6a

View file

@ -22,9 +22,10 @@
#include <thread>
#include <vector>
#include <gtest/gtest.h>
#include <gmock/gmock.h>
#include <android-base/parseint.h>
#include <android/hardware/tests/inheritance/1.0/IChild.h>
#include <gmock/gmock.h>
#include <gtest/gtest.h>
#include <hidl/HidlTransportSupport.h>
#include <vintf/parse_xml.h>
@ -77,6 +78,13 @@ struct Child : android::hardware::tests::inheritance::V1_0::IChild {
content += "\n";
content += option.c_str();
}
if (options.size() > 0) {
uint64_t len;
if (android::base::ParseUint(options[0], &len)) {
content += "\n";
content += std::string(len, 'X');
}
}
ssize_t written = write(fd, content.c_str(), content.size());
if (written != (ssize_t)content.size()) {
LOG(WARNING) << "SERVER(Child) debug writes " << written << " bytes < "
@ -189,6 +197,16 @@ TEST_F(DebugTest, Debug3) {
EXPECT_THAT(err.str(), HasSubstr("does not exist"));
}
TEST_F(DebugTest, DebugLarge) {
EXPECT_EQ(0u, callMain(lshal, {
"lshal", "debug", "android.hardware.tests.inheritance@1.0::IChild/default", "10000"
}));
EXPECT_THAT(out.str(),
StrEq("android.hardware.tests.inheritance@1.0::IChild\n10000\n" +
std::string(10000, 'X')));
EXPECT_THAT(err.str(), IsEmpty());
}
TEST_F(DebugTest, DebugParent) {
EXPECT_EQ(0u, callMain(lshal, {
"lshal", "debug", "android.hardware.tests.inheritance@1.0::IParent", "calling parent"