package org.ovirt.engine.core.utils;
import static org.assertj.core.api.Assertions.assertThat;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.junit.MockitoJUnitRunner;
import org.ovirt.engine.core.compat.Version;
@RunWith(MockitoJUnitRunner.class)
public class OSTest {
@Test
public void shouldDetectVersionWithoutDigits() {
final OS invalidOs = OS.fromPackageVersionString("Centos - Seven - release");
assertThat(invalidOs.isValid()).isFalse();
}
@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 shouldHandleAlNumFullVersion() {
final OS validOs = OS.fromPackageVersionString("Centos - 7.3.2Server - release");
assertThat(validOs.isValid()).isTrue();
assertThat(validOs.getVersion().getMajor()).isEqualTo(7);
assertThat(validOs.getVersion().getMinor()).isEqualTo(3);
assertThat(validOs.getVersion().getBuild()).isEqualTo(2);
}
@Test
public void shouldHandleNumMajorVersion() {
final OS validOs = OS.fromPackageVersionString("Centos - 7 - release");
assertThat(validOs.isValid()).isTrue();
assertThat(validOs.getVersion().getMajor()).isEqualTo(7);
assertThat(validOs.getVersion().getMinor()).isEqualTo(-1);
}
@Test
public void shouldHandleNumMinorVersion() {
final OS validOs = OS.fromPackageVersionString("Centos - 7.3 - release");
assertThat(validOs.isValid()).isTrue();
assertThat(validOs.getVersion().getMajor()).isEqualTo(7);
assertThat(validOs.getVersion().getMinor()).isEqualTo(3);
}
@Test
public void shouldHandleStrangeMajorVersion() {
final OS validOs = OS.fromPackageVersionString("Centos - 7. - release");
assertThat(validOs.isValid()).isTrue();
assertThat(validOs.getVersion().getMajor()).isEqualTo(7);
assertThat(validOs.getVersion().getMinor()).isEqualTo(-1);
}
@Test
public void shouldDetectIncompleteOsIdentifier() {
final OS invalidOs = OS.fromPackageVersionString("Centos");
assertThat(invalidOs.isValid()).isFalse();
}
@Test
public void shouldOnlyTakeStartingDigits() {
final OS invalidOs = OS.fromPackageVersionString("Centos - Server7 - release");
assertThat(invalidOs.isValid()).isFalse();
}
@Test
public void shouldFalbackToEl6ReleaseIdentifier() {
final OS validOs = OS.fromPackageVersionString("Centos - Server7 - release.el6");
assertThat(validOs.isValid()).isTrue();
assertThat(validOs.getVersion().getMajor()).isEqualTo(6);
}
@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 shouldDetectSameMajorVersion() {
assertThat(new OS("test", new Version("6.3"), "").isSameMajorVersion(new OS("test", new Version("6.6"), "")))
.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 shouldDetectDifferentOs() {
assertThat(new OS("os1", new Version("6.3"), "").isSameOsFamily(new OS("os2", new Version("6.3"), ""))).isFalse();
}
@Test
public void shouldDetectSameOs() {
assertThat(new OS("os1", new Version("6.3"), "").isSameOsFamily(new OS("os1", new Version("6.3"), ""))).isTrue();
}
@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");
}
@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 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();
}
}