aboutsummaryrefslogtreecommitdiffstats
path: root/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumPackageNameTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumPackageNameTest.java')
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumPackageNameTest.java146
1 files changed, 113 insertions, 33 deletions
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 911a5b64b33..2e1ef4c0a61 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
@@ -3,49 +3,124 @@ package com.yahoo.vespa.hosted.node.admin.task.util.yum;
import org.junit.Test;
+import java.util.Optional;
+
+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.fail;
public class YumPackageNameTest {
@Test
- public void parsePackageName() {
- YumPackageName packageName = YumPackageName.fromString("docker-engine-selinux-1.12.6-1.el7");
- assertFalse(packageName.getEpoch().isPresent());
- assertEquals("docker-engine-selinux", packageName.getName());
- assertEquals("1.12.6", packageName.getVersion().get());
- assertEquals("1.el7", packageName.getRelease().get());
- assertFalse(packageName.getArchitecture().isPresent());
- assertEquals("0:docker-engine-selinux-1.12.6-1.el7.*", packageName.toFullName());
+ public void testAllValidFormats() {
+ // name
+ verifyPackageName(
+ "docker-engine-selinux",
+ null,
+ "docker-engine-selinux",
+ null,
+ null,
+ null,
+ "docker-engine-selinux",
+ null);
+
+ // name.arch
+ verifyPackageName(
+ "docker-engine-selinux.x86_64",
+ null,
+ "docker-engine-selinux",
+ null,
+ null,
+ "x86_64",
+ "docker-engine-selinux.x86_64",
+ null);
+
+ // name-ver-rel
+ verifyPackageName("docker-engine-selinux-1.12.6-1.el7",
+ null,
+ "docker-engine-selinux",
+ "1.12.6",
+ "1.el7",
+ null,
+ "docker-engine-selinux-1.12.6-1.el7",
+ null);
+
+ // name-ver-rel.arch
+ verifyPackageName("docker-engine-selinux-1.12.6-1.el7.x86_64",
+ null,
+ "docker-engine-selinux",
+ "1.12.6",
+ "1.el7",
+ "x86_64",
+ "docker-engine-selinux-1.12.6-1.el7.x86_64",
+ null);
+
+ // name-epoch:ver-rel.arch
+ verifyPackageName(
+ "docker-2:1.12.6-71.git3e8e77d.el7.centos.1.x86_64",
+ "2",
+ "docker",
+ "1.12.6",
+ "71.git3e8e77d.el7.centos.1",
+ "x86_64",
+ "2:docker-1.12.6-71.git3e8e77d.el7.centos.1.x86_64",
+ "2:docker-1.12.6-71.git3e8e77d.el7.centos.1.*");
+
+ // epoch:name-ver-rel.arch
+ verifyPackageName(
+ "2:docker-1.12.6-71.git3e8e77d.el7.centos.1.x86_64",
+ "2",
+ "docker",
+ "1.12.6",
+ "71.git3e8e77d.el7.centos.1",
+ "x86_64",
+ "2:docker-1.12.6-71.git3e8e77d.el7.centos.1.x86_64",
+ "2:docker-1.12.6-71.git3e8e77d.el7.centos.1.*");
}
- @Test
- public void parsePackageNameWithArchitecture() {
- YumPackageName packageName = YumPackageName.fromString("docker-engine-selinux-1.12.6-1.el7.x86_64");
- assertFalse(packageName.getEpoch().isPresent());
- assertEquals("docker-engine-selinux", packageName.getName());
- assertEquals("1.12.6", packageName.getVersion().get());
- assertEquals("1.el7", packageName.getRelease().get());
- assertEquals("x86_64", packageName.getArchitecture().get());
- assertEquals("0:docker-engine-selinux-1.12.6-1.el7.x86_64", packageName.toFullName());
- assertEquals("0:docker-engine-selinux-1.12.6-1.el7.*", packageName.toVersionLock());
+ private void verifyPackageName(String packageName,
+ String epoch,
+ String name,
+ String version,
+ String release,
+ String architecture,
+ String toName,
+ String toVersionName) {
+ YumPackageName yumPackageName = YumPackageName.fromString(packageName);
+ verifyValue(epoch, yumPackageName.getEpoch());
+ verifyValue(name, Optional.of(yumPackageName.getName()));
+ verifyValue(version, yumPackageName.getVersion());
+ verifyValue(release, yumPackageName.getRelease());
+ verifyValue(architecture, yumPackageName.getArchitecture());
+ verifyValue(toName, Optional.of(yumPackageName.toName()));
+
+ if (toVersionName == null) {
+ try {
+ yumPackageName.toVersionLockName();
+ fail();
+ } catch (IllegalStateException e) {
+ assertThat(e.getMessage(), containsStringIgnoringCase("epoch is missing"));
+ }
+ } else {
+ assertEquals(toVersionName, yumPackageName.toVersionLockName());
+ }
}
- @Test
- public void parsePackageNameWithEpochAndArchitecture() {
- YumPackageName packageName = YumPackageName.fromString("1:docker-engine-selinux-1.12.6-1.el7.x86_64");
- assertEquals("1", packageName.getEpoch().get());
- assertEquals("docker-engine-selinux", packageName.getName());
- assertEquals("1.12.6", packageName.getVersion().get());
- assertEquals("1.el7", packageName.getRelease().get());
- assertEquals("x86_64", packageName.getArchitecture().get());
- assertEquals("1:docker-engine-selinux-1.12.6-1.el7.x86_64", packageName.toFullName());
- assertEquals("1:docker-engine-selinux-1.12.6-1.el7.*", packageName.toVersionLock());
+ private void verifyValue(String value, Optional<String> actual) {
+ if (value == null) {
+ assertFalse(actual.isPresent());
+ } else {
+ assertEquals(value, actual.get());
+ }
}
- @Test(expected = IllegalArgumentException.class)
- public void failParsingOfPackageName() {
- YumPackageName.fromString("docker-engine-selinux");
+ @Test
+ public void testArchitectures() {
+ assertEquals("x86_64", YumPackageName.fromString("docker.x86_64").getArchitecture().get());
+ assertEquals("i686", YumPackageName.fromString("docker.i686").getArchitecture().get());
+ assertEquals("noarch", YumPackageName.fromString("docker.noarch").getArchitecture().get());
}
@Test
@@ -55,8 +130,13 @@ public class YumPackageNameTest {
assertEquals("1.el7.i486", packageName.getRelease().get());
}
- @Test(expected = IllegalArgumentException.class)
+ @Test
public void failParsingOfPackageNameWithEpochAndArchitecture() {
- YumPackageName.fromString("epoch:docker-engine-selinux-1.12.6-1.el7.x86_64");
+ try {
+ YumPackageName.fromString("epoch:docker-engine-selinux-1.12.6-1.el7.x86_64");
+ fail();
+ } catch (IllegalArgumentException e) {
+ assertThat(e.getMessage(), containsStringIgnoringCase("epoch"));
+ }
}
} \ No newline at end of file