Example usage for java.lang.management OperatingSystemMXBean getSystemLoadAverage

List of usage examples for java.lang.management OperatingSystemMXBean getSystemLoadAverage

Introduction

In this page you can find the example usage for java.lang.management OperatingSystemMXBean getSystemLoadAverage.

Prototype

public double getSystemLoadAverage();

Source Link

Document

Returns the system load average for the last minute.

Usage

From source file:org.jwebsocket.util.Tools.java

/**
 * Gets the global CPU usage percent./*from www .jav  a2 s  .  c  o m*/
 *
 * @return
 * @throws java.lang.Exception
 */
public static double getCpuUsage() throws Exception {
    Double lJavaVersion = Double.parseDouble(System.getProperty("java.vm.specification.version"));
    if (!getOperatingSystem().startsWith("Windows") && lJavaVersion >= 1.6) {
        OperatingSystemMXBean lOSBean = ManagementFactory.getPlatformMXBean(OperatingSystemMXBean.class);

        return lOSBean.getSystemLoadAverage() * 10;
    } else {
        Sigar mSigar = new Sigar();
        CpuPerc lCPU = mSigar.getCpuPerc();
        double lIdle = lCPU.getIdle();

        return 100 - (lIdle * 100);
    }
}

From source file:com.thoughtworks.go.server.service.support.ServerRuntimeInformationProvider.java

private void osInfo(OperatingSystemMXBean operatingSystemMXBean, InformationStringBuilder builder) {
    builder.addSection("OS information");
    builder.append(String.format("%s, %s, %s, %s, %s\n", operatingSystemMXBean.getName(),
            operatingSystemMXBean.getArch(), operatingSystemMXBean.getVersion(),
            operatingSystemMXBean.getAvailableProcessors(), operatingSystemMXBean.getSystemLoadAverage()));
}

From source file:com.searchbox.framework.web.SystemController.java

@ModelAttribute("systemInfo")
private Map<String, Object> getSystemInfo() {
    Map<String, Object> info = new HashMap<String, Object>();
    OperatingSystemMXBean os = ManagementFactory.getOperatingSystemMXBean();
    info.put("name", os.getName());
    info.put("version", os.getVersion());
    info.put("arch", os.getArch());
    info.put("systemLoadAverage", os.getSystemLoadAverage());

    // com.sun.management.OperatingSystemMXBean
    addGetterIfAvaliable(os, "committedVirtualMemorySize", info);
    addGetterIfAvaliable(os, "freePhysicalMemorySize", info);
    addGetterIfAvaliable(os, "freeSwapSpaceSize", info);
    addGetterIfAvaliable(os, "processCpuTime", info);
    addGetterIfAvaliable(os, "totalPhysicalMemorySize", info);
    addGetterIfAvaliable(os, "totalSwapSpaceSize", info);

    // com.sun.management.UnixOperatingSystemMXBean
    addGetterIfAvaliable(os, "openFileDescriptorCount", info);
    addGetterIfAvaliable(os, "maxFileDescriptorCount", info);

    try {/*from w w  w. j a v a  2 s .c  o  m*/
        if (!os.getName().toLowerCase(Locale.ROOT).startsWith("windows")) {
            // Try some command line things
            info.put("uname", execute("uname -a"));
            info.put("uptime", execute("uptime"));
        }
    } catch (Exception ex) {
        ex.printStackTrace();
    }
    return info;
}

From source file:org.eclipse.gyrex.cloud.internal.NodeMetricsReporter.java

@Override
protected IStatus run(final IProgressMonitor monitor) {
    if (monitor.isCanceled()) {
        return Status.CANCEL_STATUS;
    }//from ww  w . j  a  v  a2  s.c  o  m

    try {
        final Properties metrics = new Properties() {
            private static final long serialVersionUID = 1L;

            @Override
            public synchronized Enumeration<Object> keys() {
                return Collections.enumeration(keySet());
            }

            @Override
            public Set<Object> keySet() {
                return new TreeSet<Object>(super.keySet());
            }
        };
        final OperatingSystemMXBean operatingSystemMXBean = ManagementFactory.getOperatingSystemMXBean();
        metrics.setProperty("os.availableProcessors",
                String.valueOf(operatingSystemMXBean.getAvailableProcessors()));
        metrics.setProperty("os.systemLoadAverage",
                String.valueOf(operatingSystemMXBean.getSystemLoadAverage()));
        metrics.setProperty("os.committedVirtualMemorySize",
                getUsingReflection(operatingSystemMXBean, "getCommittedVirtualMemorySize"));
        metrics.setProperty("os.totalSwapSpaceSize",
                getUsingReflection(operatingSystemMXBean, "getTotalSwapSpaceSize"));
        metrics.setProperty("os.freeSwapSpaceSize",
                getUsingReflection(operatingSystemMXBean, "getFreeSwapSpaceSize"));
        metrics.setProperty("os.processCpuTime",
                getUsingReflection(operatingSystemMXBean, "getProcessCpuTime"));
        metrics.setProperty("os.freePhysicalMemorySize",
                getUsingReflection(operatingSystemMXBean, "getFreePhysicalMemorySize"));
        metrics.setProperty("os.totalPhysicalMemorySize",
                getUsingReflection(operatingSystemMXBean, "getTotalPhysicalMemorySize"));
        metrics.setProperty("os.openFileDescriptorCount",
                getUsingReflection(operatingSystemMXBean, "getOpenFileDescriptorCount"));
        metrics.setProperty("os.maxFileDescriptorCount",
                getUsingReflection(operatingSystemMXBean, "getMaxFileDescriptorCount"));

        final MemoryMXBean memoryMXBean = ManagementFactory.getMemoryMXBean();
        final MemoryUsage heapMemoryUsage = memoryMXBean.getHeapMemoryUsage();
        metrics.setProperty("heap.used", String.valueOf(heapMemoryUsage.getUsed()));
        metrics.setProperty("heap.committed", String.valueOf(heapMemoryUsage.getCommitted()));
        metrics.setProperty("heap.max", String.valueOf(heapMemoryUsage.getMax()));
        metrics.setProperty("heap.init", String.valueOf(heapMemoryUsage.getInit()));
        final MemoryUsage nonHeapMemoryUsage = memoryMXBean.getNonHeapMemoryUsage();
        metrics.setProperty("nonHeap.used", String.valueOf(nonHeapMemoryUsage.getUsed()));
        metrics.setProperty("nonHeap.committed", String.valueOf(nonHeapMemoryUsage.getCommitted()));
        metrics.setProperty("nonHeap.max", String.valueOf(nonHeapMemoryUsage.getMax()));
        metrics.setProperty("nonHeap.init", String.valueOf(nonHeapMemoryUsage.getInit()));

        final ThreadMXBean threadMXBean = ManagementFactory.getThreadMXBean();
        metrics.setProperty("thread.count", String.valueOf(threadMXBean.getThreadCount()));
        metrics.setProperty("thread.peak", String.valueOf(threadMXBean.getPeakThreadCount()));
        metrics.setProperty("thread.totalStarted", String.valueOf(threadMXBean.getTotalStartedThreadCount()));

        final RuntimeMXBean runtimeMXBean = ManagementFactory.getRuntimeMXBean();
        metrics.setProperty("uptime", String.valueOf(runtimeMXBean.getUptime()));

        final ByteArrayOutputStream out = new ByteArrayOutputStream();
        final NodeInfo nodeInfo = CloudState.getNodeInfo();
        metrics.store(out, String.valueOf(nodeInfo));
        ZooKeeperGate.get().writeRecord(IZooKeeperLayout.PATH_NODES_METRICS.append(nodeInfo.getNodeId()),
                CreateMode.PERSISTENT, out.toByteArray());
        if (CloudDebug.nodeMetrics) {
            LOG.debug("Node metrics reported successfully.{}{}", SystemUtils.LINE_SEPARATOR,
                    new String(out.toByteArray(), CharEncoding.ISO_8859_1));
        }
    } catch (final Exception e) {
        LOG.warn("Failed to update node metrics. {}", e.getMessage());
    } finally {
        // reschedule
        schedule(DELAY);
    }

    return Status.OK_STATUS;
}

From source file:org.liferayhub.pc.service.impl.PowerConsoleServiceImpl.java

public String runCommand(long userId, long companyId, String mode, String command) {
    String response = "";
    Date startDate = new Date();
    if ("server".equalsIgnoreCase(mode)) {
        if ("help".equalsIgnoreCase(command)) {
            response = "Commands:\n" + "help\t\t\tShow this help message\n"
                    + "version\t\t Display the version of the Liferay Portal\n"
                    + "date\t\t\tDisplay the date and time of the database server\n"
                    + "uptime\t\t  Display the uptime of the portal\n" + "adduser\t\t Add a new user";
        } else if ("version".equalsIgnoreCase(command)) {
            response = ReleaseInfo.getReleaseInfo() + " running on "
                    + StringUtil.upperCaseFirstLetter(ServerDetector.getServerId());
        } else if ("date".equalsIgnoreCase(command)) {
            response = new Date().toString();
        } else if ("uptime".equalsIgnoreCase(command)) {
            response = getUptime(PortalUtil.getUptime().getTime());
        } else if (command.toLowerCase().startsWith("adduser")) {
            response = handleAddUser(userId, companyId, command);
        }/*  w ww .j a  v  a  2 s  .c  o m*/
    } else if ("db".equalsIgnoreCase(mode)) {
        if ("help".equalsIgnoreCase(command)) {
            response = "Commands:\n" + "help\t\t\tShow this help message\n"
                    + "version\t\t Display the version of the database\n"
                    + "date\t\t\tDisplay the date and time of the database server\n"
                    + "<sql query>\t Display result of any SQL query";
        } else if ("date".equalsIgnoreCase(command)) {
            response = runSQLQuery("select now() \"\"");
        } else if ("version".equalsIgnoreCase(command)) {
            response = runSQLQuery(
                    "select '" + DBFactoryUtil.getDBFactory().getDB().getType() + "' as '', version() ''");
        } else
            response = runSQLQuery(command);
    } else if ("jvm".equalsIgnoreCase(mode)) {
        if ("help".equalsIgnoreCase(command)) {
            response = "Commands:\n" + "help\t\tShow this help message\n"
                    + "mem\t\t Display memory usage of the JVM\n"
                    + "osinfo\t  Display operating system info of the running JVM\n"
                    + "vminfo\t  Display VM info";
        } else if ("mem".equalsIgnoreCase(command)) {
            MemoryMXBean mem = ManagementFactory.getMemoryMXBean();
            response = "Heap        : " + mem.getHeapMemoryUsage().toString();
            response += "\nNon Heap    : " + mem.getNonHeapMemoryUsage().toString();
            response += "\nFinalization: " + mem.getObjectPendingFinalizationCount() + " objects pending";
        } else if ("osinfo".equalsIgnoreCase(command)) {
            OperatingSystemMXBean os = ManagementFactory.getOperatingSystemMXBean();
            response = os.getName() + "[" + os.getArch() + "] " + os.getVersion() + " ("
                    + os.getAvailableProcessors() + " processors)";
            response += "\nLoad Average: " + os.getSystemLoadAverage();
        } else if ("vminfo".equalsIgnoreCase(command)) {
            RuntimeMXBean vm = ManagementFactory.getRuntimeMXBean();
            response = vm.getVmName() + " " + vm.getVmVersion() + " by " + vm.getVmVendor();
            response += "\n" + vm.getSpecName() + " " + vm.getSpecVersion() + " by " + vm.getSpecVendor();
            response += "\nStarted at: " + DateFormat.getInstance().format(new Date(vm.getStartTime()));
            response += "\nUptime    : " + getUptime(vm.getStartTime());
        } else {
            response = UNRECOGNIZED_COMMAND;
        }
    }
    // save command to database if it is not 'help'
    if (!command.startsWith("help")) {
        try {
            // add to history
            Date endDate = new Date();
            long id = CounterLocalServiceUtil.increment(CommandHistory.class.getName());
            CommandHistory history = CommandHistoryLocalServiceUtil.createCommandHistory(id);
            history.setCommand(command);
            history.setExecutionDate(startDate);
            history.setExecutionTime(endDate.getTime() - startDate.getTime());
            history.setMode(mode);
            history.setUserId(userId);
            CommandHistoryLocalServiceUtil.updateCommandHistory(history);
            // TODO: delete the oldest entry > MAX_HISTORY_SIZE
            // get the history size
            long historySize = 100;
            List<CommandHistory> historyList = CommandHistoryLocalServiceUtil
                    .findCommandHistoryByUserId(userId);
            if (historyList.size() >= historySize) {
                CommandHistoryLocalServiceUtil.deleteCommandHistory(historyList.get(0));
            }
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException(e.getMessage());
        }
    }
    return response;
}

From source file:com.alibaba.otter.node.etl.OtterController.java

public String getNodeSystemInfo() {
    OperatingSystemMXBean mbean = ManagementFactory.getOperatingSystemMXBean();
    StringBuilder buf = new StringBuilder();
    buf.append("").append(mbean.getName()).append(' ').append(mbean.getVersion()).append(' ')
            .append(mbean.getArch());//from   ww w .  j a v a 2  s.  co m
    buf.append(" @ ").append(mbean.getAvailableProcessors()).append(" cores");
    buf.append(" , ? load average:").append(mbean.getSystemLoadAverage()).append(" ");
    return buf.toString();
}

From source file:org.powertac.visualizer.services.VisualizerServiceTournament.java

private void tournamentLogin() {
    //log.info("Tournament URL='" + tournamentUrl + "'");
    if (tournamentUrl.isEmpty()) {
        // No TM, just connect to server
        putEvent(Event.noTm);/*www .  ja  va 2  s.co  m*/
        return;
    }

    OperatingSystemMXBean mxBean = ManagementFactory.getOperatingSystemMXBean();
    double load = mxBean.getSystemLoadAverage();

    String urlString = tournamentUrl + visualizerLoginContext + "?machineName=" + machineName + "&machineLoad="
            + load;
    log.info("tourney url=" + urlString);
    URL url;
    try {
        url = new URL(urlString);
        URLConnection conn = url.openConnection();
        InputStream input = conn.getInputStream();
        log.info("Parsing message..");
        DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
        Document doc = docBuilder.parse(input);

        doc.getDocumentElement().normalize();

        // Two different message types
        Node retryNode = doc.getElementsByTagName("retry").item(0);
        Node loginNode = doc.getElementsByTagName("login").item(0);

        if (retryNode != null) {
            String checkRetry = retryNode.getFirstChild().getNodeValue();
            log.info("Retry in " + checkRetry + " seconds");
            // Received retry message; spin and try again
            try {
                Thread.sleep(Integer.parseInt(checkRetry) * 1000);
            } catch (InterruptedException e) {
                //e.printStackTrace();
            }
        } else if (loginNode != null) {
            log.info("Login response received! ");
            queueName = doc.getElementsByTagName("queueName").item(0).getFirstChild().getNodeValue();
            serverQueue = doc.getElementsByTagName("serverQueue").item(0).getFirstChild().getNodeValue();
            log.info(String.format("Login message received: queueName=%s, serverQueue=%s", queueName,
                    serverQueue));

            putEvent(Event.accept);
        } else {
            // this is not working
            log.info("Invalid response from TS");
        }
    } catch (Exception e) {
        // should we have an event here?
        e.printStackTrace();
    }
}

From source file:sce.JobStoreTXCustom.java

public Map<String, String> getSystemStatus() {
    OperatingSystemMXBean omx = ManagementFactory.getOperatingSystemMXBean();
    com.sun.management.OperatingSystemMXBean osMxBean = null;
    if (omx instanceof com.sun.management.OperatingSystemMXBean) {
        osMxBean = (com.sun.management.OperatingSystemMXBean) omx;
    }//from ww w  . j  ava2  s. c o  m
    Map<String, String> statusMap = new HashMap<>();
    if (osMxBean != null) {
        statusMap.put("osArch", osMxBean.getArch());
        statusMap.put("availableProcessors", Integer.toString(osMxBean.getAvailableProcessors()));
        statusMap.put("osName", osMxBean.getName());
        statusMap.put("systemLoadAverage", Double.toString(osMxBean.getSystemLoadAverage()));
        statusMap.put("osVersion", osMxBean.getVersion());
        statusMap.put("committedVirtualMemorySize", Long.toString(osMxBean.getCommittedVirtualMemorySize()));
        statusMap.put("freePhysicalMemorySize", Long.toString(osMxBean.getFreePhysicalMemorySize()));
        statusMap.put("freeSwapSpaceSize", Long.toString(osMxBean.getFreeSwapSpaceSize()));
        statusMap.put("processCpuLoad", Double.toString(osMxBean.getProcessCpuLoad()));
        statusMap.put("processCpuTime", Long.toString(osMxBean.getProcessCpuTime()));
        statusMap.put("systemCpuLoad", Double.toString(osMxBean.getSystemCpuLoad()));
        statusMap.put("totalPhysicalMemorySize", Long.toString(osMxBean.getTotalPhysicalMemorySize()));
        statusMap.put("totalSwapSpaceSize", Long.toString(osMxBean.getTotalSwapSpaceSize()));
    }
    return statusMap;
}

From source file:edu.usu.sdl.openstorefront.web.rest.service.Application.java

@GET
@RequireAdmin/*from w  ww .  j av  a2  s  .c  o  m*/
@APIDescription("Gets the application system status")
@Produces({ MediaType.APPLICATION_JSON })
@DataType(ApplicationStatus.class)
@Path("/status")
public Response getApplicationStatus() {
    OperatingSystemMXBean operatingSystemMXBean = ManagementFactory.getOperatingSystemMXBean();
    RuntimeMXBean runtimeMXBean = ManagementFactory.getRuntimeMXBean();
    List<GarbageCollectorMXBean> garbageCollectorMXBeans = ManagementFactory.getGarbageCollectorMXBeans();
    MemoryMXBean memoryMXBean = ManagementFactory.getMemoryMXBean();
    List<MemoryPoolMXBean> memoryPoolMXBeans = ManagementFactory.getMemoryPoolMXBeans();
    ThreadMXBean threadMXBean = ManagementFactory.getThreadMXBean();

    ApplicationStatus applicationStatus = new ApplicationStatus();
    applicationStatus.setApplicationVersion(PropertiesManager.getApplicationVersion());
    applicationStatus.setProcessorCount(operatingSystemMXBean.getAvailableProcessors());
    applicationStatus.setSystemLoad(operatingSystemMXBean.getSystemLoadAverage());
    applicationStatus.setSystemProperties(runtimeMXBean.getSystemProperties());

    applicationStatus.getHeapMemoryStatus().setName("Heap");
    applicationStatus.getHeapMemoryStatus().setDetails(memoryMXBean.getHeapMemoryUsage().toString());
    applicationStatus.getHeapMemoryStatus()
            .setInitKb(memoryMXBean.getHeapMemoryUsage().getInit() != 0
                    ? memoryMXBean.getHeapMemoryUsage().getInit() / 1024
                    : 0);
    applicationStatus.getHeapMemoryStatus()
            .setUsedKb(memoryMXBean.getHeapMemoryUsage().getUsed() != 0
                    ? memoryMXBean.getHeapMemoryUsage().getUsed() / 1024
                    : 0);
    applicationStatus.getHeapMemoryStatus()
            .setMaxKb(memoryMXBean.getHeapMemoryUsage().getMax() != 0
                    ? memoryMXBean.getHeapMemoryUsage().getMax() / 1024
                    : 0);
    applicationStatus.getHeapMemoryStatus()
            .setCommitedKb(memoryMXBean.getHeapMemoryUsage().getCommitted() != 0
                    ? memoryMXBean.getHeapMemoryUsage().getCommitted() / 1024
                    : 0);

    applicationStatus.getNonHeapMemoryStatus().setName("Non-Heap");
    applicationStatus.getNonHeapMemoryStatus().setDetails(memoryMXBean.getNonHeapMemoryUsage().toString());
    applicationStatus.getNonHeapMemoryStatus()
            .setInitKb(memoryMXBean.getNonHeapMemoryUsage().getInit() != 0
                    ? memoryMXBean.getNonHeapMemoryUsage().getInit() / 1024
                    : 0);
    applicationStatus.getNonHeapMemoryStatus()
            .setUsedKb(memoryMXBean.getNonHeapMemoryUsage().getUsed() != 0
                    ? memoryMXBean.getNonHeapMemoryUsage().getUsed() / 1024
                    : 0);
    applicationStatus.getNonHeapMemoryStatus()
            .setMaxKb(memoryMXBean.getNonHeapMemoryUsage().getMax() != 0
                    ? memoryMXBean.getNonHeapMemoryUsage().getMax() / 1024
                    : 0);
    applicationStatus.getNonHeapMemoryStatus()
            .setCommitedKb(memoryMXBean.getNonHeapMemoryUsage().getCommitted() != 0
                    ? memoryMXBean.getNonHeapMemoryUsage().getCommitted() / 1024
                    : 0);

    applicationStatus.setLiveThreadCount(threadMXBean.getThreadCount());
    applicationStatus.setTotalThreadCount(threadMXBean.getTotalStartedThreadCount());

    applicationStatus.setStartTime(new Date(runtimeMXBean.getStartTime()));
    applicationStatus.setUpTime(TimeUtil.millisToString(runtimeMXBean.getUptime()));

    for (GarbageCollectorMXBean garbageCollectorMXBean : garbageCollectorMXBeans) {
        applicationStatus.getGarbageCollectionInfos()
                .add(TimeUtil.millisToString(garbageCollectorMXBean.getCollectionTime()) + " - ("
                        + garbageCollectorMXBean.getCollectionCount() + ")");
    }

    for (MemoryPoolMXBean memoryPoolMXBean : memoryPoolMXBeans) {
        MemoryPoolStatus memoryPoolStatus = new MemoryPoolStatus();
        memoryPoolStatus.setName(memoryPoolMXBean.getName() + " - " + memoryPoolMXBean.getType());
        memoryPoolStatus.setDetails(memoryPoolMXBean.getUsage().toString());
        memoryPoolStatus.setInitKb(
                memoryPoolMXBean.getUsage().getInit() != 0 ? memoryPoolMXBean.getUsage().getInit() / 1024 : 0);
        memoryPoolStatus.setUsedKb(
                memoryPoolMXBean.getUsage().getUsed() != 0 ? memoryPoolMXBean.getUsage().getUsed() / 1024 : 0);
        memoryPoolStatus.setMaxKb(
                memoryPoolMXBean.getUsage().getMax() != 0 ? memoryPoolMXBean.getUsage().getMax() / 1024 : 0);
        memoryPoolStatus.setCommitedKb(memoryPoolMXBean.getUsage().getCommitted() != 0
                ? memoryPoolMXBean.getUsage().getCommitted() / 1024
                : 0);

        applicationStatus.getMemoryPools().add(memoryPoolStatus);
    }

    return sendSingleEntityResponse(applicationStatus);
}

From source file:sce.JobStoreTXCustom.java

public boolean checkConstraints(JobDataMap jobDataMap) {
    try {/* w  w  w . j a v  a2s .c o  m*/
        if (jobDataMap.containsKey("#jobConstraints")) {
            OperatingSystemMXBean omx = ManagementFactory.getOperatingSystemMXBean();
            com.sun.management.OperatingSystemMXBean osMxBean = null;
            if (omx instanceof com.sun.management.OperatingSystemMXBean) {
                osMxBean = (com.sun.management.OperatingSystemMXBean) omx;
            }
            if (osMxBean != null) {
                //read json from request
                JSONParser parser = new JSONParser();
                Object obj = parser.parse(jobDataMap.getString("#jobConstraints"));
                JSONArray jsonArray = (JSONArray) obj;
                String ipAddress = getIpAddress();
                for (int i = 0; i < jsonArray.size(); i++) {
                    JSONObject jsonobject = (JSONObject) jsonArray.get(i);
                    String systemParameterName = (String) jsonobject.get("systemParameterName"); //system parameter name (osArch, availableProcessors, freePhysicalMemorySize etc.)
                    String operator = (String) jsonobject.get("operator"); // ==, !=, <, >, <=, >=
                    String value = (String) jsonobject.get("value"); //value of the system parameter that must be satisfied
                    String systemParameterValue; //system parameter actual value
                    boolean ipAddressConstraint = false; //set ip address constraint as not satisfied by default

                    switch (systemParameterName) {
                    case "osArch":
                        systemParameterValue = osMxBean.getArch();
                        break;
                    case "availableProcessors":
                        systemParameterValue = Integer.toString(osMxBean.getAvailableProcessors());
                        break;
                    case "osName":
                        systemParameterValue = osMxBean.getArch();
                        break;
                    case "systemLoadAverage":
                        systemParameterValue = Double.toString(osMxBean.getSystemLoadAverage());
                        break;
                    case "osVersion":
                        systemParameterValue = osMxBean.getArch();
                        break;
                    case "committedVirtualMemorySize":
                        systemParameterValue = Long.toString(osMxBean.getCommittedVirtualMemorySize());
                        break;
                    case "freePhysicalMemorySize":
                        systemParameterValue = Long.toString(osMxBean.getFreePhysicalMemorySize());
                        break;
                    case "freeSwapSpaceSize":
                        systemParameterValue = Long.toString(osMxBean.getFreeSwapSpaceSize());
                        break;
                    case "processCpuLoad":
                        systemParameterValue = Double.toString(osMxBean.getProcessCpuLoad());
                        break;
                    case "processCpuTime":
                        systemParameterValue = Long.toString(osMxBean.getProcessCpuTime());
                        break;
                    case "systemCpuLoad":
                        systemParameterValue = Double.toString(osMxBean.getSystemCpuLoad());
                        break;
                    case "totalPhysicalMemorySize":
                        systemParameterValue = Long.toString(osMxBean.getTotalPhysicalMemorySize());
                        break;
                    case "totalSwapSpaceSize":
                        systemParameterValue = Long.toString(osMxBean.getTotalSwapSpaceSize());
                        break;
                    default:
                        systemParameterValue = null;
                    }

                    //if systemParameterName is ipAddress, and there is one ip address that is equal/not equal (depending on the operator) to the scheduler's ip address, then set the ipAddressConstraint to true
                    if (systemParameterName.equals("ipAddress")) {
                        String[] ipAddressesArray = value.split(";");
                        for (String tmp : ipAddressesArray) {
                            if ((operator.equals("==") && ipAddress.equals(tmp))
                                    || (operator.equals("!=") && !ipAddress.equals(tmp))) {
                                ipAddressConstraint = true;
                                break;
                            }
                        }
                        //if the ipAddressConstraint is false, the return false
                        if (!ipAddressConstraint) {
                            return false;
                        }
                    }

                    //if the constraint is not satisfied, then return false
                    //if systemParameterName = ipAddress, then systemParameterValue is null (default switch case) and this if condition is not satisfied
                    if (systemParameterValue != null && ((operator.equals("==")
                            && !isNumeric(systemParameterValue) && !isNumeric(value)
                            && !value.equalsIgnoreCase(systemParameterValue))
                            || (operator.equals("!=") && !isNumeric(systemParameterValue) && !isNumeric(value)
                                    && value.equalsIgnoreCase(systemParameterValue))
                            || (operator.equals("==") && isNumeric(systemParameterValue) && isNumeric(value)
                                    && Double.parseDouble(systemParameterValue) != Double.parseDouble(value))
                            || (operator.equals("!=") && isNumeric(systemParameterValue) && isNumeric(value)
                                    && Double.parseDouble(systemParameterValue) == Double.parseDouble(value))
                            || (operator.equals("<") && isNumeric(systemParameterValue) && isNumeric(value)
                                    && Double.parseDouble(systemParameterValue) >= Double.parseDouble(value))
                            || (operator.equals(">") && isNumeric(systemParameterValue) && isNumeric(value)
                                    && Double.parseDouble(systemParameterValue) <= Double.parseDouble(value))
                            || (operator.equals("<=") && isNumeric(systemParameterValue) && isNumeric(value)
                                    && Double.parseDouble(systemParameterValue) > Double.parseDouble(value))
                            || (operator.equals(">=") && isNumeric(systemParameterValue) && isNumeric(value)
                                    && Double.parseDouble(systemParameterValue) < Double.parseDouble(value)))) {
                        return false;
                    }
                }
            }
        }
        return true;
    } catch (ParseException e) {
        e.printStackTrace();
        return true;
    }
}