mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

Violette Roche-Montane
13.06.2014 2ed9940ca86ca86abf5fae8a5bdc461b32d1a13a
Modified unit tests && operating system class.
Reviewed by JN, thanks !!

2 files modified
256 ■■■■■ changed files
opendj-core/src/main/java/com/forgerock/opendj/util/OperatingSystem.java 120 ●●●● patch | view | raw | blame | history
opendj-core/src/test/java/com/forgerock/opendj/util/OperatingSystemTestCase.java 136 ●●●● patch | view | raw | blame | history
opendj-core/src/main/java/com/forgerock/opendj/util/OperatingSystem.java
@@ -27,64 +27,78 @@
package com.forgerock.opendj.util;
/**
 * This class defines an enumeration that may be used to identify the operating system on which the JVM is running.
 * This class defines an enumeration that may be used to identify the operating system
 * on which the JVM is running.
 */
public enum OperatingSystem {
    /**
     * The value indicating the AIX operating system.
     */
    AIX("AIX"),
    AIX("AIX", false, false, true),
    /**
     * The value indicating the FreeBSD operating system.
     */
    FREEBSD("FreeBSD"),
    FREEBSD("FreeBSD", false, false, true),
    /**
     * The value indicating the HP-UX operating system.
     */
    HPUX("HP-UX"),
    HPUX("HP UX", false, false, true),
    /**
     * The value indicating the Linux operating system.
     */
    LINUX("Linux"),
    LINUX("Linux", false, false, true),
    /**
     * The value indicating the Mac OS X operating system.
     */
    MACOS("Mac OS X"),
    MACOSX("Mac OS X", false, true, true),
    /**
     * The value indicating the Solaris operating system.
     */
    SOLARIS("Solaris"),
    SOLARIS("Solaris", false, false, true),
    /**
     * The value indicating the Windows operating system.
     */
    WINDOWS("Windows"),
    WINDOWS("Windows", true, false, false),
    /**
     * The value indicating the Windows 7 operating system.
     */
    WINDOWS7("Windows 7", true, false, false),
    /**
     * The value indicating the Windows Vista operating system.
     */
    WINDOWS_VISTA("Windows Vista", true, false, false),
    /**
     * The value indicating the Windows Server 2008 operating system.
     */
    WINDOWS_SERVER_2008("Server 2008", true, false, false),
    /**
     * The value indicating the z/OS operating system.
     */
    ZOS("z/OS"),
    ZOS("z/OS", false, false, false),
    /**
     * The value indicating an unknown operating system.
     */
    UNKNOWN("Unknown");
    UNKNOWN("Unknown", false, false, false);
    // The human-readable name for this operating system.
    private String osName;
    private static boolean isWindows = false;
    private static boolean isVista = false;
    private static boolean isWindows2008 = false;
    private static boolean isWindows7 = false;
    private static boolean isMacOS = false;
    private static boolean isUnix = false;
    private static boolean isUnixBased = false;
    private boolean isWindows;
    private boolean isMacOS;
    private boolean isUnixBased;
    private static OperatingSystem os;
    /**
     * Creates a new operating system value with the provided name.
@@ -92,8 +106,11 @@
     * @param osName
     *            The human-readable name for the operating system.
     */
    private OperatingSystem(String osName) {
    private OperatingSystem(String osName, boolean isWindows, boolean isMacOS, boolean isUnixBased) {
        this.osName = osName;
        this.isWindows = isWindows;
        this.isMacOS = isMacOS;
        this.isUnixBased = isUnixBased;
    }
    /**
@@ -113,6 +130,10 @@
     * @return The operating system for the provided name.
     */
    public static OperatingSystem forName(final String osName) {
        return os = forName2(osName);
    }
    private static OperatingSystem forName2(final String osName) {
        if (osName == null) {
            return UNKNOWN;
        }
@@ -120,45 +141,31 @@
        final String lowerName = osName.toLowerCase();
        if ((lowerName.indexOf("solaris") >= 0) || (lowerName.indexOf("sunos") >= 0)) {
            isUnix = true;
            isUnixBased = true;
            return SOLARIS;
        } else if (lowerName.indexOf("linux") >= 0) {
            isUnix = true;
            isUnixBased = true;
            return LINUX;
        } else if ((lowerName.indexOf("hp-ux") >= 0) || (lowerName.indexOf("hp ux") >= 0)
                || (lowerName.indexOf("hpux") >= 0)) {
            isUnix = true;
            isUnixBased = true;
            return HPUX;
        } else if (lowerName.indexOf("aix") >= 0) {
            isUnix = true;
            isUnixBased = true;
            return AIX;
        } else if (lowerName.indexOf("windows") >= 0) {
            isWindows = true;
            if (lowerName.toString().indexOf("windows 7") != -1) {
                isWindows7 = true;
            if (lowerName.indexOf("windows 7") != -1) {
                return WINDOWS7;
            } else if (lowerName.indexOf("vista") != -1) {
                isVista = true;
                return WINDOWS_VISTA;
            } else if (lowerName.indexOf("server 2008") != -1) {
                isWindows2008 = true;
                return WINDOWS_SERVER_2008;
            }
            return WINDOWS;
        } else if ((lowerName.indexOf("freebsd") >= 0) || (lowerName.indexOf("free bsd") >= 0)) {
            isUnix = true;
            isUnixBased = true;
            return FREEBSD;
        } else if ((lowerName.indexOf("macos") >= 0) || (lowerName.indexOf("mac os") >= 0)) {
            isMacOS = true;
            isUnixBased = true;
            return MACOS;
        } else if ((lowerName.indexOf("macos x") >= 0) || (lowerName.indexOf("mac os x") >= 0)) {
            return MACOSX;
        } else if (lowerName.indexOf("z/os") >= 0) {
            return ZOS;
        } else {
            return UNKNOWN;
        }
        return UNKNOWN;
    }
    /**
@@ -170,17 +177,7 @@
     * @return <CODE>true</CODE> if the provided operating system is UNIX-based, or <CODE>false</CODE> if not.
     */
    public static boolean isUNIXBased(OperatingSystem os) {
        switch (os) {
        case SOLARIS:
        case LINUX:
        case HPUX:
        case AIX:
        case FREEBSD:
        case MACOS:
            return true;
        default:
            return false;
        }
        return os.isUnixBased;
    }
    /**
@@ -198,7 +195,7 @@
     * @return {@code true} if the underlying operating system is a Windows variant, or {@code false} if not.
     */
    public static boolean isWindows() {
        return isWindows;
        return os.isWindows;
    }
    /**
@@ -207,7 +204,7 @@
     * @return {@code true} if the underlying operating system is Windows Vista, or {@code false} if not.
     */
    public static boolean isVista() {
        return isVista;
        return os == WINDOWS_VISTA;
    }
    /**
@@ -216,7 +213,7 @@
     * @return {@code true} if the underlying operating system is Windows 2008, or {@code false} if not.
     */
    public static boolean isWindows2008() {
        return isWindows2008;
        return os == WINDOWS_SERVER_2008;
    }
    /**
@@ -225,7 +222,7 @@
     * @return {@code true} if the underlying operating system is Windows 7, or {@code false} if not.
     */
    public static boolean isWindows7() {
        return isWindows7;
        return os == WINDOWS7;
    }
    /**
@@ -234,7 +231,7 @@
     * @return {@code true} if we are running under Mac OS and {@code false} otherwise.
     */
    public static boolean isMacOS() {
        return isMacOS;
        return os == MACOSX;
    }
    /**
@@ -243,7 +240,7 @@
     * @return {@code true} if we are running under Unix and {@code false} otherwise.
     */
    public static boolean isUnix() {
        return isUnix;
        return os.isUnixBased;
    }
    /**
@@ -252,7 +249,16 @@
     * @return {@code true} if the OS is Unix based.
     */
    public static boolean isUnixBased() {
        return isUnixBased;
        return os.isUnixBased;
    }
    /**
     * Returns {@code true} if the OS is Unknown.
     *
     * @return {@code true} if the OS is Unknown.
     */
    public static boolean isUnknown() {
        return os == UNKNOWN;
    }
    /**
opendj-core/src/test/java/com/forgerock/opendj/util/OperatingSystemTestCase.java
@@ -27,6 +27,8 @@
import static org.testng.Assert.assertFalse;
import static org.testng.Assert.assertTrue;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
/**
@@ -34,43 +36,107 @@
 */
public class OperatingSystemTestCase extends UtilTestCase {
    @Test()
    public void testGetOperatingSystem() {
        final OperatingSystem os = OperatingSystem.getOperatingSystem();
        if (os.toString().toLowerCase().indexOf("windows") != -1) {
            assertTrue(OperatingSystem.isWindows());
            if (os.toString().toLowerCase().indexOf("windows 7") != -1) {
                assertTrue(OperatingSystem.isWindows7());
                assertFalse(OperatingSystem.isVista());
                assertFalse(OperatingSystem.isWindows2008());
            } else if (os.toString().toLowerCase().indexOf("vista") != -1) {
                assertTrue(OperatingSystem.isVista());
                assertFalse(OperatingSystem.isWindows7());
                assertFalse(OperatingSystem.isWindows2008());
            } else if (os.toString().toLowerCase().indexOf("server 2008") != -1) {
                assertTrue(OperatingSystem.isWindows2008());
                assertFalse(OperatingSystem.isWindows7());
                assertFalse(OperatingSystem.isVista());
    // @formatter:off
    @DataProvider(name = "allOS")
    Object[][] createValidArguments() throws Exception {
        return new Object[][] {
            { null },
            { "" },
            { "AIX" },
            { "Digital Unix" },
            { "FreeBSD" },
            { "HP UX" },
            { "Irix" },
            { "Linux" },
            { "Mac OS" },
            { "Mac OS X" },
            { "MPE/iX" },
            { "Netware 4.11" },
            { "OS/2" },
            { "Solaris" },
            { "Windows 2000" },
            { "Windows Server 2008" },
            { "Windows 95" },
            { "Windows 98" },
            { "Windows NT" },
            { "Windows Vista" },
            { "Windows 7" },
            { "Windows XP"  },
        };
    }
    // @formatter:on
    @Test(dataProvider = "allOS")
    public void testOperatingSystems(String value) throws Exception {
        String orig = System.getProperty("os.name");
        try {
            if (value == null) {
                System.clearProperty("os.name");
            } else {
                System.setProperty("os.name", value);
            }
            assertFalse(OperatingSystem.isMacOS());
            assertFalse(OperatingSystem.isUnix());
            assertFalse(OperatingSystem.isUnixBased());
        } else if (os.toString().toLowerCase().indexOf("solaris") != -1
                || os.toString().toLowerCase().indexOf("linux") != -1
                || os.toString().toLowerCase().indexOf("hp-ux") != -1
                || os.toString().toLowerCase().indexOf("hpux") != -1
                || os.toString().toLowerCase().indexOf("aix") != -1
                || os.toString().toLowerCase().indexOf("freebsd") != -1) {
            assertTrue(OperatingSystem.isUnix());
            assertFalse(OperatingSystem.isMacOS());
            assertFalse(OperatingSystem.isWindows());
            assertTrue(OperatingSystem.isUnixBased());
        } else if (os.toString().toLowerCase().indexOf("macos") != -1) {
            assertTrue(OperatingSystem.isMacOS());
            assertFalse(OperatingSystem.isUnix());
            assertTrue(OperatingSystem.isUnixBased());
            run();
        } finally {
            System.setProperty("os.name", orig);
        }
    }
    @Test()
    private void run() {
        final OperatingSystem os = OperatingSystem.getOperatingSystem();
        if (os == OperatingSystem.WINDOWS7) {
            assertTrue(OperatingSystem.isWindows());
            assertTrue(OperatingSystem.isWindows7());
            assertFalse(OperatingSystem.isVista());
            assertFalse(OperatingSystem.isWindows2008());
            assertFalse(OperatingSystem.isMacOS());
            assertFalse(OperatingSystem.isUnix());
        } else if (os == OperatingSystem.WINDOWS_VISTA) {
            assertTrue(OperatingSystem.isWindows());
            assertFalse(OperatingSystem.isWindows7());
            assertTrue(OperatingSystem.isVista());
            assertFalse(OperatingSystem.isWindows2008());
            assertFalse(OperatingSystem.isMacOS());
            assertFalse(OperatingSystem.isUnix());
        } else if (os == OperatingSystem.WINDOWS_SERVER_2008) {
            assertTrue(OperatingSystem.isWindows());
            assertFalse(OperatingSystem.isWindows7());
            assertFalse(OperatingSystem.isVista());
            assertTrue(OperatingSystem.isWindows2008());
            assertFalse(OperatingSystem.isMacOS());
            assertFalse(OperatingSystem.isUnix());
        } else if (os == OperatingSystem.WINDOWS) {
            assertTrue(OperatingSystem.isWindows());
            assertFalse(OperatingSystem.isWindows7());
            assertFalse(OperatingSystem.isVista());
            assertFalse(OperatingSystem.isWindows2008());
            assertFalse(OperatingSystem.isMacOS());
            assertFalse(OperatingSystem.isUnix());
        } else if (os == OperatingSystem.SOLARIS
                || os == OperatingSystem.LINUX
                || os == OperatingSystem.HPUX
                || os == OperatingSystem.FREEBSD
                || os == OperatingSystem.AIX) {
            assertNotWindows();
            assertFalse(OperatingSystem.isMacOS());
            assertTrue(OperatingSystem.isUnix());
        } else if (os == OperatingSystem.MACOSX) {
            assertNotWindows();
            assertTrue(OperatingSystem.isMacOS());
            assertTrue(OperatingSystem.isUnix());
        } else {
            assertNotWindows();
            assertFalse(OperatingSystem.isMacOS());
            assertFalse(OperatingSystem.isUnix());
            assertTrue(OperatingSystem.isUnknown());
        }
    }
    private void assertNotWindows() {
        assertFalse(OperatingSystem.isWindows());
        assertFalse(OperatingSystem.isWindows7());
        assertFalse(OperatingSystem.isVista());
        assertFalse(OperatingSystem.isWindows2008());
    }
}