diff options
author | Valerij Fredriksen <valerijf@oath.com> | 2018-09-11 17:28:18 +0200 |
---|---|---|
committer | Valerij Fredriksen <valerijf@oath.com> | 2018-09-11 17:28:18 +0200 |
commit | 24906dc9b8ecf0c1e4bd2da3cee1d63b1f5a6210 (patch) | |
tree | e7cecb570c7693305c0e4396930931a2883f6807 /node-admin | |
parent | 795a89947b90c959a69a3d4767c1f3aa188e7a3c (diff) |
Add isSubsetOf to YumPackageName
Diffstat (limited to 'node-admin')
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 |