Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PIOT-GDA-02-005: Create module - SystemCpuUtilTask #47

Open
labbenchstudios opened this issue Jul 15, 2020 · 0 comments
Open

PIOT-GDA-02-005: Create module - SystemCpuUtilTask #47

labbenchstudios opened this issue Jul 15, 2020 · 0 comments
Labels
exercise New feature to implement as an exercise
Milestone

Comments

@labbenchstudios
Copy link
Contributor

labbenchstudios commented Jul 15, 2020

Description

  • Create the SystemCpuUtilTask module and implement the functionality to retrieve CPU utilization.

Review the README

  • Please see README.md for further information on, and use of, this content.
  • License for embedded documentation and source codes: PIOT-DOC-LIC

Estimated effort may vary greatly

  • The estimated level of effort for this exercise shown in the 'Estimate' section below is a very rough approximation. The actual level of effort may vary greatly depending on your development and test environment, experience with the requisite technologies, and many other factors.

Actions

NOTE: The implementation examples depicted here are only one way to implement the requirements listed. Your own implementation may vary of course.

  • Within the programmingtheiot.gda.system package, create a new Java class named SystemCpuUtilTask. This should be derived from BaseSystemUtilTask.
  • Import statements should include the following (you may choose to include the Logger for debugging):
import java.lang.management.ManagementFactory;
import java.lang.management.OperatingSystemMXBean;

import java.util.logging.Logger;

import programmingtheiot.common.ConfigConst;
  • Add in an override for the inherited template method getTelemetryValue(). It will retrieve CPU utilization (averaged across any / all cores) and return the value as a float. Use the @Override annotation and be sure to remove the abstract keyword if you're copying / pasting from the base class. Use the following code for the value:
ManagementFactory.getOperatingSystemMXBean().getSystemLoadAverage()
  • Here's one way to implement these requirements (your own implementation may vary from this). Also note that this may not work with all OSes:
public SystemCpuUtilTask()
{
	super(ConfigConst.NOT_SET, ConfigConst.DEFAULT_TYPE_ID);
}

@Override
public float getTelemetryValue()
{
	OperatingSystemMXBean mxBean = ManagementFactory.getOperatingSystemMXBean();
	double cpuUtil = mxBean.getSystemLoadAverage();
	
	return (float) cpuUtil;
}

Estimate

  • Small

Tests

  • Unit tests (in ./src/test/java/programmingtheiot/part01/unit)
    • Run ./system/SystemCpuUtilTaskTest. If your Operating System supports retrieval of CPU load, the testGetTelemetryValue() unit test should pass while displaying values greater than 0.0% and (likely) less than 100.0%. If your Operating System doesn't support this, each test will return a negative value, as follows:
Test 1: CPU Util not supported on this OS: -1.0
Test 2: CPU Util not supported on this OS: -1.0
Test 3: CPU Util not supported on this OS: -1.0
Test 4: CPU Util not supported on this OS: -1.0
Test 5: CPU Util not supported on this OS: -1.0
@labbenchstudios labbenchstudios changed the title PIOT-GDA-02-003 PIOT-GDA-02-003: Create module - SystemCpuUtilTask Jul 15, 2020
@labbenchstudios labbenchstudios self-assigned this Jul 15, 2020
@labbenchstudios labbenchstudios changed the title PIOT-GDA-02-003: Create module - SystemCpuUtilTask PIOT-GDA-02-004: Create module - SystemCpuUtilTask Jul 19, 2020
@labbenchstudios labbenchstudios removed their assignment Aug 17, 2020
@labbenchstudios labbenchstudios transferred this issue from programming-the-iot/java-components Sep 7, 2020
@labbenchstudios labbenchstudios added the exercise New feature to implement as an exercise label Sep 7, 2020
@labbenchstudios labbenchstudios added this to the Chapter 02 milestone Sep 7, 2020
@labbenchstudios labbenchstudios changed the title PIOT-GDA-02-004: Create module - SystemCpuUtilTask PIOT-GDA-02-005: Create module - SystemCpuUtilTask Sep 18, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
exercise New feature to implement as an exercise
Projects
Status: Lab Module 02 - Edge Tier Apps
Status: Lab Module 02 - System Performance
Development

No branches or pull requests

1 participant