Skip to content

Commit

Permalink
fastdeploy: fix tests.
Browse files Browse the repository at this point in the history
Actually log results of adb commands, so we can see why this fails.

Fix the asan-detected use of a value from a reused part of the stack.

Test: atest FastDeployTest on Linux (with an asan adb)
Change-Id: I4d2bbae62a301e16065d604a2c9918077489cafb
  • Loading branch information
enh-google committed Nov 8, 2019
1 parent ae3f96d commit 22c1507
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 15 deletions.
17 changes: 6 additions & 11 deletions client/fastdeploy.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -101,17 +101,12 @@ void fastdeploy_set_agent_update_strategy(FastDeploy_AgentUpdateStrategy agent_u

static void push_to_device(const void* data, size_t byte_count, const char* dst, bool sync) {
std::vector<const char*> srcs;
{
TemporaryFile temp;
android::base::WriteFully(temp.fd, data, byte_count);
srcs.push_back(temp.path);

// On Windows, the file needs to be flushed before pushing to device.
// closing the file flushes its content, but we still need to remove it after push.
// FileDeleter does exactly that.
temp.DoNotRemove();
}
FileDeleter temp_deleter(srcs.back());
TemporaryFile tf;
android::base::WriteFully(tf.fd, data, byte_count);
srcs.push_back(tf.path);
// On Windows, the file needs to be flushed before pushing to device,
// but can't be removed until after the push.
unix_close(tf.release());

if (!do_sync_push(srcs, dst, sync)) {
error_exit("Failed to push fastdeploy agent to device.");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,9 @@
import static org.junit.Assert.assertTrue;

import com.android.compatibility.common.tradefed.build.CompatibilityBuildHelper;
import com.android.ddmlib.Log.LogLevel;
import com.android.tradefed.device.DeviceNotAvailableException;
import com.android.tradefed.log.LogUtil.CLog;
import com.android.tradefed.testtype.DeviceJUnit4ClassRunner;
import com.android.tradefed.testtype.junit4.BaseHostJUnit4Test;

Expand Down Expand Up @@ -68,17 +70,19 @@ public void testAppPatch() throws Exception {
}

private boolean isAppInstalled(String packageName) throws DeviceNotAvailableException {
final String commandResult = getDevice().executeShellCommand("pm list packages");
final String result = getDevice().executeShellCommand("pm list packages");
CLog.logAndDisplay(LogLevel.INFO, result);
final int prefixLength = "package:".length();
return Arrays.stream(commandResult.split("\\r?\\n"))
return Arrays.stream(result.split("\\r?\\n"))
.anyMatch(line -> line.substring(prefixLength).equals(packageName));
}

// Mostly copied from PkgInstallSignatureVerificationTest.java.
private String fastInstallPackage(String apkPath)
private void fastInstallPackage(String apkPath)
throws IOException, DeviceNotAvailableException {
return getDevice().executeAdbCommand("install", "-t", "--fastdeploy", "--force-agent",
String result = getDevice().executeAdbCommand("install", "-t", "--fastdeploy", "--force-agent",
apkPath);
CLog.logAndDisplay(LogLevel.INFO, result);
}
}

Expand Down

0 comments on commit 22c1507

Please sign in to comment.