Tests: If dpkg fails try and log failure (#35551)

If `dpkg` fails, try and look for who has `/var/lib/dpkg/lock` open. If
it exists and is open then return a failure with information about who
has file open. This should help us debug #33762.

Closes #34309
This commit is contained in:
Nik Everett 2018-11-27 09:06:10 -05:00 committed by GitHub
parent c91ef1105d
commit cb8646ac0e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 19 additions and 2 deletions

View File

@ -112,7 +112,16 @@ public class Packages {
if (Platforms.isRPM()) {
return sh.runIgnoreExitCode("rpm -i " + distributionFile);
} else {
return sh.runIgnoreExitCode("dpkg -i " + distributionFile);
Result r = sh.runIgnoreExitCode("dpkg -i " + distributionFile);
if (r.exitCode != 0) {
Result lockOF = sh.runIgnoreExitCode("lsof /var/lib/dpkg/lock");
if (lockOF.exitCode == 0) {
throw new RuntimeException(
"dpkg failed and the lockfile still exists. "
+ "Failure:\n" + r + "\nLockfile:\n" + lockOF);
}
}
return r;
}
}

View File

@ -76,7 +76,15 @@ install_package() {
if is_rpm; then
rpm $rpmCommand $PACKAGE_NAME-$version.rpm
elif is_dpkg; then
dpkg $dpkgCommand -i $PACKAGE_NAME-$version.deb
run dpkg $dpkgCommand -i $PACKAGE_NAME-$version.deb
[[ "$status" -eq 0 ]] || {
echo "dpkg failed:"
echo "$output"
run lsof /var/lib/dpkg/lock
echo "lsof /var/lib/dpkg/lock:"
echo "$output"
false
}
else
skip "Only rpm or deb supported"
fi