Revert "Dumpsys also includes service PIDs."
This reverts commit f5ea44ccc038d29eb953ce504e490528f7d46a30.
Reason for revert: Breaking suite/test-mapping-presubmit-retry_cloud-tf
which is expecting a different format.
Fixes: 141728094
Bug: 141187318
Change-Id: Ie71999d3099ec5bf9017f2a2631fb58249d5ca30
diff --git a/cmds/dumpstate/dumpstate.cpp b/cmds/dumpstate/dumpstate.cpp
index 024a8fd..254e142 100644
--- a/cmds/dumpstate/dumpstate.cpp
+++ b/cmds/dumpstate/dumpstate.cpp
@@ -1057,7 +1057,7 @@
std::string path(title);
path.append(" - ").append(String8(service).c_str());
size_t bytes_written = 0;
- status_t status = dumpsys.startDumpThread(service, /* dumpPid = */ true, args);
+ status_t status = dumpsys.startDumpThread(service, args);
if (status == OK) {
dumpsys.writeDumpHeader(STDOUT_FILENO, service, priority);
std::chrono::duration<double> elapsed_seconds;
@@ -1129,7 +1129,7 @@
path.append("_HIGH");
}
path.append(kProtoExt);
- status_t status = dumpsys.startDumpThread(service, /* dumpPid = */ false, args);
+ status_t status = dumpsys.startDumpThread(service, args);
if (status == OK) {
status = ds.AddZipEntryFromFd(path, dumpsys.getDumpFd(), service_timeout);
bool dumpTerminated = (status == OK);
diff --git a/cmds/dumpsys/dumpsys.cpp b/cmds/dumpsys/dumpsys.cpp
index 68b3907..4811927 100644
--- a/cmds/dumpsys/dumpsys.cpp
+++ b/cmds/dumpsys/dumpsys.cpp
@@ -236,13 +236,11 @@
return 0;
}
- const bool dumpPid = !asProto;
-
for (size_t i = 0; i < N; i++) {
const String16& serviceName = services[i];
if (IsSkipped(skippedServices, serviceName)) continue;
- if (startDumpThread(serviceName, dumpPid, args) == OK) {
+ if (startDumpThread(serviceName, args) == OK) {
bool addSeparator = (N > 1);
if (addSeparator) {
writeDumpHeader(STDOUT_FILENO, serviceName, priorityFlags);
@@ -309,7 +307,7 @@
}
}
-status_t Dumpsys::startDumpThread(const String16& serviceName, bool dumpPid, const Vector<String16>& args) {
+status_t Dumpsys::startDumpThread(const String16& serviceName, const Vector<String16>& args) {
sp<IBinder> service = sm_->checkService(serviceName);
if (service == nullptr) {
aerr << "Can't find service: " << serviceName << endl;
@@ -329,20 +327,7 @@
// dump blocks until completion, so spawn a thread..
activeThread_ = std::thread([=, remote_end{std::move(remote_end)}]() mutable {
- if (dumpPid) {
- pid_t pid;
- status_t status = service->getDebugPid(&pid);
- if (status == OK) {
- std::ostringstream pidinfo;
- pidinfo << "Pid: " << pid << std::endl;
- WriteStringToFd(pidinfo.str(), remote_end.get());
- } else {
- aerr << "Error getting pid status_t (" << status << "): "
- << serviceName << endl;
- }
- }
-
- status_t err = service->dump(remote_end.get(), args);
+ int err = service->dump(remote_end.get(), args);
// It'd be nice to be able to close the remote end of the socketpair before the dump
// call returns, to terminate our reads if the other end closes their copy of the
@@ -350,8 +335,8 @@
// way to do this, though.
remote_end.reset();
- if (err != OK) {
- aerr << "Error dumping service info status_t (" << err << "): "
+ if (err != 0) {
+ aerr << "Error dumping service info: (" << strerror(err) << ") "
<< serviceName << endl;
}
});
diff --git a/cmds/dumpsys/dumpsys.h b/cmds/dumpsys/dumpsys.h
index 8d1291a..c48a1e9 100644
--- a/cmds/dumpsys/dumpsys.h
+++ b/cmds/dumpsys/dumpsys.h
@@ -56,13 +56,12 @@
* the output to a pipe. Thread must be stopped by a subsequent callto {@code
* stopDumpThread}.
* @param serviceName
- * @param dumpPid whether to include a header with service PID information
* @param args list of arguments to pass to service dump method.
* @return {@code OK} thread is started successfully.
* {@code NAME_NOT_FOUND} service could not be found.
* {@code != OK} error
*/
- status_t startDumpThread(const String16& serviceName, bool dumpPid, const Vector<String16>& args);
+ status_t startDumpThread(const String16& serviceName, const Vector<String16>& args);
/**
* Writes a section header to a file descriptor.
diff --git a/cmds/dumpsys/tests/dumpsys_test.cpp b/cmds/dumpsys/tests/dumpsys_test.cpp
index d0b167e..cbac839 100644
--- a/cmds/dumpsys/tests/dumpsys_test.cpp
+++ b/cmds/dumpsys/tests/dumpsys_test.cpp
@@ -188,6 +188,22 @@
EXPECT_THAT(status, Eq(0));
}
+ void CallSingleService(const String16& serviceName, Vector<String16>& args, int priorityFlags,
+ bool supportsProto, std::chrono::duration<double>& elapsedDuration,
+ size_t& bytesWritten) {
+ CaptureStdout();
+ CaptureStderr();
+ dump_.setServiceArgs(args, supportsProto, priorityFlags);
+ status_t status = dump_.startDumpThread(serviceName, args);
+ EXPECT_THAT(status, Eq(0));
+ status = dump_.writeDump(STDOUT_FILENO, serviceName, std::chrono::milliseconds(500), false,
+ elapsedDuration, bytesWritten);
+ EXPECT_THAT(status, Eq(0));
+ dump_.stopDumpThread(/* dumpCompleted = */ true);
+ stdout_ = GetCapturedStdout();
+ stderr_ = GetCapturedStderr();
+ }
+
void AssertRunningServices(const std::vector<std::string>& services) {
std::string expected;
if (services.size() > 1) {
@@ -199,13 +215,16 @@
EXPECT_THAT(stdout_, HasSubstr(expected));
}
+ void AssertOutput(const std::string& expected) {
+ EXPECT_THAT(stdout_, StrEq(expected));
+ }
+
void AssertOutputContains(const std::string& expected) {
EXPECT_THAT(stdout_, HasSubstr(expected));
}
void AssertDumped(const std::string& service, const std::string& dump) {
- EXPECT_THAT(stdout_, HasSubstr("DUMP OF SERVICE " + service + ":\n"));
- EXPECT_THAT(stdout_, HasSubstr(dump));
+ EXPECT_THAT(stdout_, HasSubstr("DUMP OF SERVICE " + service + ":\n" + dump));
EXPECT_THAT(stdout_, HasSubstr("was the duration of dumpsys " + service + ", ending at: "));
}
@@ -213,8 +232,7 @@
const char16_t* priorityType) {
std::string priority = String8(priorityType).c_str();
EXPECT_THAT(stdout_,
- HasSubstr("DUMP OF SERVICE " + priority + " " + service + ":\n"));
- EXPECT_THAT(stdout_, HasSubstr(dump));
+ HasSubstr("DUMP OF SERVICE " + priority + " " + service + ":\n" + dump));
EXPECT_THAT(stdout_, HasSubstr("was the duration of dumpsys " + service + ", ending at: "));
}
@@ -295,8 +313,7 @@
CallMain({"Valet"});
- AssertOutputContains("Pid: " + std::to_string(getpid()));
- AssertOutputContains("Here's your car");
+ AssertOutput("Here's your car");
}
// Tests 'dumpsys -t 1 service_name' on a service that times out after 2s
@@ -331,7 +348,7 @@
CallMain({"SERVICE", "Y", "U", "NO", "HANDLE", "ARGS"});
- AssertOutputContains("I DO!");
+ AssertOutput("I DO!");
}
// Tests dumpsys passes the -a flag when called on all services
@@ -522,6 +539,23 @@
AssertDumpedWithPriority("runninghigh2", "dump2", PriorityDumper::PRIORITY_ARG_HIGH);
}
+TEST_F(DumpsysTest, GetBytesWritten) {
+ const char* serviceName = "service2";
+ const char* dumpContents = "dump1";
+ ExpectDump(serviceName, dumpContents);
+
+ String16 service(serviceName);
+ Vector<String16> args;
+ std::chrono::duration<double> elapsedDuration;
+ size_t bytesWritten;
+
+ CallSingleService(service, args, IServiceManager::DUMP_FLAG_PRIORITY_ALL,
+ /* as_proto = */ false, elapsedDuration, bytesWritten);
+
+ AssertOutput(dumpContents);
+ EXPECT_THAT(bytesWritten, Eq(strlen(dumpContents)));
+}
+
TEST_F(DumpsysTest, WriteDumpWithoutThreadStart) {
std::chrono::duration<double> elapsedDuration;
size_t bytesWritten;
@@ -529,4 +563,4 @@
dump_.writeDump(STDOUT_FILENO, String16("service"), std::chrono::milliseconds(500),
/* as_proto = */ false, elapsedDuration, bytesWritten);
EXPECT_THAT(status, Eq(INVALID_OPERATION));
-}
+}
\ No newline at end of file