aboutsummaryrefslogtreecommitdiffstats
path: root/node-admin
diff options
context:
space:
mode:
authorValerij Fredriksen <valerijf@oath.com>2018-09-11 17:28:18 +0200
committerValerij Fredriksen <valerijf@oath.com>2018-09-11 17:28:18 +0200
commit24906dc9b8ecf0c1e4bd2da3cee1d63b1f5a6210 (patch)
treee7cecb570c7693305c0e4396930931a2883f6807 /node-admin
parent795a89947b90c959a69a3d4767c1f3aa188e7a3c (diff)
Add isSubsetOf to YumPackageName
Diffstat (limited to 'node-admin')
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumPackageName.java16
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumPackageNameTest.java19
2 files changed, 34 insertions, 1 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 137ad31ec82..a3a154e2175 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
@@ -1,6 +1,8 @@
// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.task.util.yum;
+import com.google.common.base.Strings;
+
import java.util.Arrays;
import java.util.Objects;
import java.util.Optional;
@@ -56,6 +58,8 @@ public class YumPackageName {
private Optional<String> release = Optional.empty();
private Optional<String> architecture = Optional.empty();
+ public Builder() { }
+
public Builder(String name) {
this.name = name;
}
@@ -83,6 +87,9 @@ public class YumPackageName {
Optional<String> version,
Optional<String> release,
Optional<String> architecture) {
+ if (Strings.isNullOrEmpty(name))
+ throw new IllegalArgumentException("name cannot be null or empty");
+
this.epoch = epoch;
this.name = name;
this.version = version;
@@ -235,6 +242,14 @@ public class YumPackageName {
"*");
}
+ public boolean isSubsetOf(YumPackageName other) {
+ return Objects.equals(name, other.name) &&
+ (!epoch.isPresent() || Objects.equals(epoch, other.epoch)) &&
+ (!version.isPresent() || Objects.equals(version, other.version)) &&
+ (!release.isPresent() || Objects.equals(release, other.release)) &&
+ (!architecture.isPresent() || Objects.equals(architecture, other.architecture));
+ }
+
@Override
public boolean equals(Object o) {
if (this == o) return true;
@@ -249,7 +264,6 @@ public class YumPackageName {
@Override
public int hashCode() {
-
return Objects.hash(epoch, name, version, release, architecture);
}
}
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 a3c608887e0..01664f5c22b 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
@@ -9,6 +9,7 @@ import static org.hamcrest.CoreMatchers.containsStringIgnoringCase;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
public class YumPackageNameTest {
@@ -149,4 +150,22 @@ public class YumPackageNameTest {
assertThat(e.getMessage(), containsStringIgnoringCase("epoch"));
}
}
+
+ @Test
+ public void testSubset() {
+ YumPackageName yumPackage = new YumPackageName.Builder("docker")
+ .setVersion("1.12.6")
+ .build();
+
+ assertTrue(yumPackage.isSubsetOf(yumPackage));
+ assertTrue(yumPackage.isSubsetOf(new YumPackageName.Builder("docker")
+ .setVersion("1.12.6")
+ .setEpoch("2")
+ .setRelease("71.git3e8e77d.el7.centos.1")
+ .setArchitecture("x86_64")
+ .build()));
+ assertFalse(yumPackage.isSubsetOf(new YumPackageName.Builder("docker")
+ .setVersion("1.13.1")
+ .build()));
+ }
} \ No newline at end of file