public boolean isOlderThan(final OS os) { return getVersion().less(os.getVersion()); }
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 shouldFalbackToEl6ReleaseIdentifier() { final OS validOs = OS.fromPackageVersionString("Centos - Server7 - release.el6"); assertThat(validOs.isValid()).isTrue(); assertThat(validOs.getVersion().getMajor()).isEqualTo(6); }
private static OperatingSystem mapOperatingSystem(VDS entity) { final OperatingSystem model = new OperatingSystem(); if (StringUtils.isNotBlank(entity.getHostOs())) { OS hostOs = OS.fromPackageVersionString(entity.getHostOs()); Version version = new Version(); if (hostOs.getVersion().getMajor() != VERSION_NOT_SET) { version.setMajor(hostOs.getVersion().getMajor()); } if (hostOs.getVersion().getMinor() != VERSION_NOT_SET) { version.setMinor(hostOs.getVersion().getMinor()); } if (hostOs.getVersion().getBuild() != VERSION_NOT_SET) { version.setBuild(hostOs.getVersion().getBuild()); } version.setFullVersion(hostOs.getFullVersion()); model.setVersion(version); model.setType(hostOs.getName()); } model.setCustomKernelCmdline(Objects.toString(entity.getCurrentKernelCmdline(), "")); model.setReportedKernelCmdline(entity.getKernelArgs()); return model; }
@ParameterizedTest @MethodSource public void verifyOsFormatCanBeParsed (String name, int major, int minor, int release, int build, String fullVersion) { final Version version = new Version(major, minor, release, build); final OS validOs = OS.fromPackageVersionString(name); assertThat(validOs.isValid()).isTrue(); assertThat(validOs.getVersion()).isEqualTo(version); assertThat(validOs.getFullVersion()).isEqualTo(fullVersion); }
@Test public void shouldDetectVersionWithoutDigits() { final OS invalidOs = OS.fromPackageVersionString("Centos - Seven - release"); assertThat(invalidOs.isValid()).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 shouldDetectDifferentMajorVersion() { assertThat(new OS("test", new Version("6.3"), "").isSameMajorVersion(new OS("test", new Version("7.3"), ""))) .isFalse(); }
@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"); }
@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 shouldFalbackToEl7ReleaseIdentifier() { final OS validOs = OS.fromPackageVersionString("Centos - Server9 - release.el7"); assertThat(validOs.isValid()).isTrue(); assertThat(validOs.getVersion().getMajor()).isEqualTo(7); }
@Test public void shouldOnlyTakeStartingDigits() { final OS invalidOs = OS.fromPackageVersionString("Centos - Server7 - release"); assertThat(invalidOs.isValid()).isFalse(); }
@Test public void shouldDetectDifferentOs() { assertThat(new OS("os1", new Version("6.3"), "").isSameOsFamily(new OS("os2", new Version("6.3"), ""))).isFalse(); }
@Test public void shouldDetectSameMajorVersion() { assertThat(new OS("test", new Version("6.3"), "").isSameMajorVersion(new OS("test", new Version("6.6"), ""))) .isTrue(); }
@Test public void shouldHandleAlNumMajorVersion() { final OS validOs = OS.fromPackageVersionString("Centos - 7Server - release"); assertThat(validOs.isValid()).isTrue(); assertThat(validOs.getVersion().getMajor()).isEqualTo(7); }
@Test public void shouldDetectIncompleteOsIdentifier() { final OS invalidOs = OS.fromPackageVersionString("Centos"); assertThat(invalidOs.isValid()).isFalse(); }
@Test public void shouldDetectSameOs() { assertThat(new OS("os1", new Version("6.3"), "").isSameOsFamily(new OS("os1", new Version("6.3"), ""))).isTrue(); }