Merge "Fix adb not correctly reading return code from DeployAgent"

am: 73d03dc804

Change-Id: Icab80491069a33f6377897675268d0b834d57a1c
This commit is contained in:
Henry Daitx 2018-12-07 01:07:31 -08:00 committed by android-build-merger
commit aef367d8cd
3 changed files with 12 additions and 31 deletions

View file

@ -228,11 +228,12 @@ void extract_metadata(const char* apkPath, FILE* outputFp) {
android::base::StringPrintf(kAgentExtractCommandPattern, packageName.c_str()); android::base::StringPrintf(kAgentExtractCommandPattern, packageName.c_str());
std::vector<char> extractErrorBuffer; std::vector<char> extractErrorBuffer;
int statusCode; DeployAgentFileCallback cb(outputFp, &extractErrorBuffer);
DeployAgentFileCallback cb(outputFp, &extractErrorBuffer, &statusCode);
int returnCode = send_shell_command(extractCommand, false, &cb); int returnCode = send_shell_command(extractCommand, false, &cb);
if (returnCode != 0) { if (returnCode != 0) {
error_exit("Executing %s returned %d", extractCommand.c_str(), returnCode); fprintf(stderr, "Executing %s returned %d\n", extractCommand.c_str(), returnCode);
fprintf(stderr, "%*s\n", int(extractErrorBuffer.size()), extractErrorBuffer.data());
error_exit("Aborting");
} }
} }

View file

@ -35,8 +35,7 @@ static void appendBuffer(std::vector<char>* buffer, const char* input, int lengt
class DeployAgentBufferCallback : public StandardStreamsCallbackInterface { class DeployAgentBufferCallback : public StandardStreamsCallbackInterface {
public: public:
DeployAgentBufferCallback(std::vector<char>* outBuffer, std::vector<char>* errBuffer, DeployAgentBufferCallback(std::vector<char>* outBuffer, std::vector<char>* errBuffer);
int* statusCode);
virtual void OnStdout(const char* buffer, int length); virtual void OnStdout(const char* buffer, int length);
virtual void OnStderr(const char* buffer, int length); virtual void OnStderr(const char* buffer, int length);
@ -45,27 +44,17 @@ class DeployAgentBufferCallback : public StandardStreamsCallbackInterface {
private: private:
std::vector<char>* mpOutBuffer; std::vector<char>* mpOutBuffer;
std::vector<char>* mpErrBuffer; std::vector<char>* mpErrBuffer;
int* mpStatusCode;
}; };
int capture_shell_command(const char* command, std::vector<char>* outBuffer, int capture_shell_command(const char* command, std::vector<char>* outBuffer,
std::vector<char>* errBuffer) { std::vector<char>* errBuffer) {
int statusCode; DeployAgentBufferCallback cb(outBuffer, errBuffer);
DeployAgentBufferCallback cb(outBuffer, errBuffer, &statusCode); return send_shell_command(command, false, &cb);
int ret = send_shell_command(command, false, &cb);
if (ret == 0) {
return statusCode;
} else {
return ret;
}
} }
DeployAgentFileCallback::DeployAgentFileCallback(FILE* outputFile, std::vector<char>* errBuffer, DeployAgentFileCallback::DeployAgentFileCallback(FILE* outputFile, std::vector<char>* errBuffer) {
int* statusCode) {
mpOutFile = outputFile; mpOutFile = outputFile;
mpErrBuffer = errBuffer; mpErrBuffer = errBuffer;
mpStatusCode = statusCode;
mBytesWritten = 0; mBytesWritten = 0;
} }
@ -84,10 +73,7 @@ void DeployAgentFileCallback::OnStderr(const char* buffer, int length) {
} }
int DeployAgentFileCallback::Done(int status) { int DeployAgentFileCallback::Done(int status) {
if (mpStatusCode != NULL) { return status;
*mpStatusCode = status;
}
return 0;
} }
int DeployAgentFileCallback::getBytesWritten() { int DeployAgentFileCallback::getBytesWritten() {
@ -95,11 +81,9 @@ int DeployAgentFileCallback::getBytesWritten() {
} }
DeployAgentBufferCallback::DeployAgentBufferCallback(std::vector<char>* outBuffer, DeployAgentBufferCallback::DeployAgentBufferCallback(std::vector<char>* outBuffer,
std::vector<char>* errBuffer, std::vector<char>* errBuffer) {
int* statusCode) {
mpOutBuffer = outBuffer; mpOutBuffer = outBuffer;
mpErrBuffer = errBuffer; mpErrBuffer = errBuffer;
mpStatusCode = statusCode;
} }
void DeployAgentBufferCallback::OnStdout(const char* buffer, int length) { void DeployAgentBufferCallback::OnStdout(const char* buffer, int length) {
@ -111,8 +95,5 @@ void DeployAgentBufferCallback::OnStderr(const char* buffer, int length) {
} }
int DeployAgentBufferCallback::Done(int status) { int DeployAgentBufferCallback::Done(int status) {
if (mpStatusCode != NULL) { return status;
*mpStatusCode = status;
}
return 0;
} }

View file

@ -21,7 +21,7 @@
class DeployAgentFileCallback : public StandardStreamsCallbackInterface { class DeployAgentFileCallback : public StandardStreamsCallbackInterface {
public: public:
DeployAgentFileCallback(FILE* outputFile, std::vector<char>* errBuffer, int* statusCode); DeployAgentFileCallback(FILE* outputFile, std::vector<char>* errBuffer);
virtual void OnStdout(const char* buffer, int length); virtual void OnStdout(const char* buffer, int length);
virtual void OnStderr(const char* buffer, int length); virtual void OnStderr(const char* buffer, int length);
@ -33,7 +33,6 @@ class DeployAgentFileCallback : public StandardStreamsCallbackInterface {
FILE* mpOutFile; FILE* mpOutFile;
std::vector<char>* mpErrBuffer; std::vector<char>* mpErrBuffer;
int mBytesWritten; int mBytesWritten;
int* mpStatusCode;
}; };
int capture_shell_command(const char* command, std::vector<char>* outBuffer, int capture_shell_command(const char* command, std::vector<char>* outBuffer,