From fc08beb8f52870d9e0b77a2869815118fb746932 Mon Sep 17 00:00:00 2001 From: Valerij Fredriksen Date: Thu, 29 Jul 2021 21:41:24 +0200 Subject: Treat epoch (none) as 0 --- .../com/yahoo/vespa/hosted/node/admin/task/util/yum/YumCommand.java | 2 ++ .../yahoo/vespa/hosted/node/admin/task/util/yum/YumPackageName.java | 6 ++++++ .../com/yahoo/vespa/hosted/node/admin/task/util/yum/YumTest.java | 2 +- 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumCommand.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumCommand.java index 1d105057e02..1530b3c72f0 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumCommand.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumCommand.java @@ -260,6 +260,8 @@ public abstract class YumCommand> { if (lines.size() > builders.size()) throw new IllegalArgumentException("Found multiple installed packages for '" + packageName + "'. Version is required to match package exactly"); IntStream.range(0, builders.size()).forEach(i -> lines.get(i).ifPresent(builders.get(i)::apply)); + if (builder.epoch().isEmpty()) builder.setEpoch("0"); + return Optional.of(builder.build()); } } diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumPackageName.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumPackageName.java index 5b32f50ad49..a1b89900ac2 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumPackageName.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumPackageName.java @@ -80,6 +80,12 @@ public class YumPackageName { public Builder setRelease(String release) { this.release = Optional.of(release); return this; } public Builder setArchitecture(String architecture) { this.architecture = Optional.of(architecture); return this; } + public Optional epoch() { return epoch; } + public String name() { return name; } + public Optional version() { return version; } + public Optional release() { return release; } + public Optional architecture() { return architecture; } + public YumPackageName build() { return new YumPackageName(epoch, name, version, release, architecture); } } 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 2c8a2535676..d36c1704515 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 @@ -58,7 +58,7 @@ public class YumTest { assertTrue(installed.isPresent()); assertEquals("vespa-node-admin", installed.get().getName()); - assertFalse(installed.get().getEpoch().isPresent()); + assertEquals("0", installed.get().getEpoch().get()); assertEquals("6.283.62", installed.get().getVersion().get()); assertEquals("1.el7", installed.get().getRelease().get()); assertEquals("noarch", installed.get().getArchitecture().get()); -- cgit v1.2.3 From a399a513294c5fe28250565c370b0a51e2fcbf72 Mon Sep 17 00:00:00 2001 From: Valerij Fredriksen Date: Fri, 30 Jul 2021 11:05:55 +0200 Subject: Do not default epoch 0 --- .../hosted/node/admin/task/util/yum/YumPackageName.java | 11 +---------- .../hosted/node/admin/task/util/yum/YumPackageNameTest.java | 6 +++--- .../hosted/node/admin/task/util/yum/YumTesterTest.java | 13 +++++-------- 3 files changed, 9 insertions(+), 21 deletions(-) diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumPackageName.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumPackageName.java index a1b89900ac2..058836ac328 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumPackageName.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumPackageName.java @@ -168,11 +168,6 @@ public class YumPackageName { release = Optional.ofNullable(matcher.group(3)); } - // Set default epoch if we have a version - if (version.isPresent() && epoch.isEmpty()) { - epoch = Optional.of("0"); - } - if (!NAME_PATTERN.matcher(spec).find()) { throw new IllegalArgumentException("Bad package name in " + packageSpec + ": '" + spec + "'"); } @@ -217,11 +212,7 @@ public class YumPackageName { * @throws IllegalStateException if any field required for the version lock spec is missing */ public String toVersionLockName() { - Builder b = new Builder(this).setArchitecture("*"); - if (epoch.isEmpty()) { - b.setEpoch("0"); - } - YumPackageName lockSpec = b.build(); + YumPackageName lockSpec = new Builder(this).setArchitecture("*").build(); if (lockSpec.getVersion().isEmpty()) throw new IllegalStateException("Version is missing for YUM package " + name); if (lockSpec.getRelease().isEmpty()) throw new IllegalStateException("Release is missing for YUM package " + name); return lockSpec.toName(); diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumPackageNameTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumPackageNameTest.java index a4dc3ac359a..9237f4c04d4 100644 --- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumPackageNameTest.java +++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumPackageNameTest.java @@ -65,7 +65,7 @@ public class YumPackageNameTest { // name-ver verifyPackageName("docker-engine-selinux-1.12.6", - "0", + null, "docker-engine-selinux", "1.12.6", null, @@ -75,7 +75,7 @@ public class YumPackageNameTest { // name-ver-rel verifyPackageName("docker-engine-selinux-1.12.6-1.el7", - "0", + null, "docker-engine-selinux", "1.12.6", "1.el7", @@ -85,7 +85,7 @@ public class YumPackageNameTest { // name-ver-rel.arch verifyPackageName("docker-engine-selinux-1.12.6-1.el7.x86_64", - "0", + null, "docker-engine-selinux", "1.12.6", "1.el7", diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumTesterTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumTesterTest.java index 93fffffb2fa..8bfc401be5e 100644 --- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumTesterTest.java +++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumTesterTest.java @@ -8,7 +8,6 @@ import org.junit.Test; import java.util.List; import java.util.Optional; import java.util.function.Function; -import java.util.stream.Stream; import static org.junit.Assert.assertEquals; @@ -19,8 +18,8 @@ public class YumTesterTest { private static final String[] packages = {"pkg1", "pkg2"}; private static final String[] repos = {"repo1", "repo2"}; - private static final YumPackageName minimalPackage = YumPackageName.fromString("my-pkg-1.13.1-0.el7"); - private static final YumPackageName fullPackage = YumPackageName.fromString("2:my-pkg-1.13.1-0.el7.x86_64"); + private static final YumPackageName minimalPackage = YumPackageName.fromString("pkg-1.13.1-0.el7"); + private static final YumPackageName fullPackage = YumPackageName.fromString("2:pkg-1.13.1-0.el7.x86_64"); private final TestTerminal terminal = new TestTerminal(); private final YumTester yum = new YumTester(terminal); @@ -43,11 +42,9 @@ public class YumTesterTest { @Test public void expect_query_installed() { - Stream.of(minimalPackage, fullPackage, null).forEach(pkg -> { - yum.expectQueryInstalled(packages[0]).andReturn(pkg); - assertEquals(Optional.ofNullable(pkg), yum.queryInstalled(context, packages[0])); - terminal.verifyAllCommandsExecuted(); - }); + yum.expectQueryInstalled(packages[0]).andReturn(fullPackage); + assertEquals(Optional.of(fullPackage), yum.queryInstalled(context, packages[0])); + terminal.verifyAllCommandsExecuted(); } private void assertYumMethod(Function yumTesterExpectationFunction, -- cgit v1.2.3