public static OS fromPackageVersionString(String packageVersionString) { if (packageVersionString == null) { return new OS(); } String[] os = packageVersionString.split(OS_DELIMITER, 3); if (os.length < 2) { return new OS(); } final String name = os[0].trim(); final Matcher versionMatcher = versionPattern.matcher(os[1].trim()); final Version version; if (versionMatcher.find()) { if (name != null && name.toLowerCase().startsWith("fedora")) { int major = extractVersionPart(versionMatcher.group()); int minor = extractVersionPart(os[2].trim()); version = new Version(major, minor); } else { version = new Version(versionMatcher.group()); } } else if (os.length == 3 && os[2].contains("el6")) { version = new Version(6, -1); } else if (os.length == 3 && os[2].contains("el7")) { version = new Version(7, -1); } else { version = new Version(); } final String fullVersion = StringUtils.join(Arrays.copyOfRange(os, 1, os.length), OS_DELIMITER); return new OS(name, version, fullVersion); }
@Test public void shouldDetectOlderOs() { assertThat(new OS("os1", new Version("6.2"), "").isOlderThan(new OS("os1", new Version("6.3"), ""))).isTrue(); assertThat(new OS("os1", new Version("6.2"), "").isOlderThan(new OS("os1", new Version("7.1"), ""))).isTrue(); assertThat(new OS("os1", new Version("6.2"), "").isOlderThan(new OS("os1", new Version("6.1"), ""))).isFalse(); assertThat(new OS("os1", new Version("7.2"), "").isOlderThan(new OS("os1", new Version("6.3"), ""))).isFalse(); } }
@Test public void shouldDetectNewerOs() { assertThat(new OS("os1", new Version("6.3"), "").isNewerThan(new OS("os1", new Version("6.2"), ""))).isTrue(); assertThat(new OS("os1", new Version("7.1"), "").isNewerThan(new OS("os1", new Version("6.2"), ""))).isTrue(); assertThat(new OS("os1", new Version("6.2"), "").isNewerThan(new OS("os1", new Version("6.3"), ""))).isFalse(); assertThat(new OS("os1", new Version("5.4"), "").isNewerThan(new OS("os1", new Version("6.3"), ""))).isFalse(); }
@Test public void shouldDetectEqualOs() { assertThat(new OS("RHEL", new Version("6.3"), "") .isSameOsFamily(new OS("oVirt Node", new Version("6.3"), ""))).isTrue(); assertThat(new OS("RHEL", new Version("6.3"), "") .isSameOsFamily(new OS("RHEV Hypervisor", new Version("6.3"), ""))).isTrue(); assertThat(new OS("oVirt Node", new Version("6.3"), "") .isSameOsFamily(new OS("RHEV Hypervisor", new Version("6.3"), ""))).isTrue(); }
@Test public void shouldReturnCorrectOsFamiliy() { assertThat(new OS("RHEV Hypervisor", new Version("6.3"), "").getOsFamily()).isEqualTo("RHEL"); assertThat(new OS("RHEL", new Version("6.3"), "").getOsFamily()).isEqualTo("RHEL"); assertThat(new OS("oVirt Node", new Version("6.3"), "").getOsFamily()).isEqualTo("RHEL"); }