From 2a57da593db86f0df158aaa27f1944fe6a357edd Mon Sep 17 00:00:00 2001 From: Valerij Fredriksen Date: Tue, 4 May 2021 17:42:49 +0200 Subject: Skip invoking yum on install/remove if package(s) are present/missing in rpm --- .../hosted/node/admin/task/util/yum/YumTest.java | 25 ++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'node-admin/src/test') diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumTest.java index 37695ca9504..92f8f78d255 100644 --- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumTest.java +++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumTest.java @@ -78,6 +78,7 @@ public class YumTest { @Test public void testAlreadyInstalled() { + mockRpmQuery("package-1", null); mockYumVersion(); terminal.expectCommand( "yum install --assumeyes --enablerepo=repo1 --enablerepo=repo2 --setopt skip_missing_names_on_install=False package-1 package-2 2>&1", @@ -90,6 +91,7 @@ public class YumTest { .converge(taskContext)); // RHEL 8 + mockRpmQuery("package-1", null); mockYumVersion(YumVersion.rhel8); terminal.expectCommand( "yum install --assumeyes --enablerepo=repo1 --enablerepo=repo2 --setopt skip_missing_names_on_install=False package-1 package-2 2>&1", @@ -125,6 +127,7 @@ public class YumTest { @Test public void testAlreadyRemoved() { + mockRpmQuery("package-1", YumPackageName.fromString("package-1-1.2.3-1")); mockYumVersion(); terminal.expectCommand( "yum remove --assumeyes package-1 package-2 2>&1", @@ -136,6 +139,7 @@ public class YumTest { .converge(taskContext)); // RHEL 8 + mockRpmQuery("package-1", YumPackageName.fromString("package-1-1.2.3-1")); mockYumVersion(YumVersion.rhel8); terminal.expectCommand( "yum remove --assumeyes package-1 package-2 2>&1", @@ -146,8 +150,16 @@ public class YumTest { .converge(taskContext)); } + @Test + public void skipsYumRemoveNotInRpm() { + mockRpmQuery("package-1", null); + mockRpmQuery("package-2", null); + assertFalse(yum.remove("package-1", "package-2").converge(taskContext)); + } + @Test public void testInstall() { + mockRpmQuery("package-1", null); mockYumVersion(); terminal.expectCommand( "yum install --assumeyes --setopt skip_missing_names_on_install=False package-1 package-2 2>&1", @@ -159,8 +171,16 @@ public class YumTest { .converge(taskContext)); } + @Test + public void skipsYumInstallIfInRpm() { + mockRpmQuery("package-1", YumPackageName.fromString("package-1-1.2.3-1")); + mockRpmQuery("package-2", YumPackageName.fromString("1:package-2-1.2.3-1.el7.x86_64")); + assertFalse(yum.install("package-1-1.2.3-1", "package-2").converge(taskContext)); + } + @Test public void testInstallWithEnablerepo() { + mockRpmQuery("package-1", null); mockYumVersion(); terminal.expectCommand( "yum install --assumeyes --enablerepo=repo-name --setopt skip_missing_names_on_install=False package-1 package-2 2>&1", @@ -273,6 +293,7 @@ public class YumTest { @Test(expected = ChildProcessFailureException.class) public void testFailedInstall() { + mockRpmQuery("package-1", null); mockYumVersion(); terminal.expectCommand( "yum install --assumeyes --enablerepo=repo-name --setopt skip_missing_names_on_install=False package-1 package-2 2>&1", @@ -288,6 +309,7 @@ public class YumTest { @Test public void testUnknownPackages() { + mockRpmQuery("package-1", null); mockYumVersion(); terminal.expectCommand( "yum install --assumeyes --setopt skip_missing_names_on_install=False package-1 package-2 package-3 2>&1", @@ -328,4 +350,7 @@ public class YumTest { mockYumVersion(YumVersion.rhel7); } + private void mockRpmQuery(String packageName, YumPackageName installedOrNull) { + new YumTester(terminal).expectQueryInstalled(packageName).andReturn(installedOrNull); + } } -- cgit v1.2.3