Java APX CpuBurner: Integration Test#81
Closed
jaidev17 wants to merge 14 commits into
Closed
Conversation
Contributor
jaidev17
commented
May 6, 2026
- Prepare and compile CpuBurner on the runner for the APX Java hotspot test.
- Simplify Java APX workload command in mcp-local/tests/constants.py.
- Extend APX Java response wait and socket timeout to avoid premature timeouts.
- Add success criteria: CpuBurner::workC must appear in Java hotspots.
- Improve APX run_id parsing to handle multi-line JSON output.
…PX Java hotspots test
…tput The previous implementation hardcoded line index 1, which failed for the Java workload where APX may emit the run_id JSON on a different line or where _combine_command_output inserts [stderr] content between lines. Now scans all JSON-looking lines (same pattern as _extract_session_id), returning the first one that contains a valid run_id.
The cp /tmp/CpuBurnerOriginal.java approach failed because the file is not present on the remote target at workload execution time - it was only copied to the runner host, not the SSH target. The original base64 inline approach is self-contained and does not depend on any pre-staged files. Also removes the now-unnecessary workflow steps that copied the Java file to the runner and /tmp.
Contributor
There was a problem hiding this comment.
Pull request overview
Prepares a Java CpuBurner workload on the GitHub Actions runner and extends the existing MCP integration tests to validate APX Java “code_hotspots” output (including stricter success criteria), while also making APX run_id extraction more robust to noisy/multi-line CLI output.
Changes:
- Install a JDK on the runner and compile a Java CpuBurner workload for APX hotspot testing.
- Add a new MCP integration test request for APX Java hotspots and extend socket/response timeouts.
- Improve APX
run_idparsing by scanning output lines for JSON objects.
Reviewed changes
Copilot reviewed 5 out of 5 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
mcp-local/utils/apx.py |
Updates APX run_id extraction logic to parse JSON from multi-line output. |
mcp-local/tests/test_mcp.py |
Adds an integration test for APX Java hotspots with extended timeouts and a CpuBurner::workC presence check. |
mcp-local/tests/CpuBurnerOriginal.java |
Introduces a Java CPU-burning workload used by the APX hotspots test. |
mcp-local/tests/constants.py |
Adds a new apx_recipe_run request payload for the Java CpuBurner hotspots test. |
.github/workflows/integration-tests.yml |
Installs JDK and compiles CpuBurner on the runner before running integration tests. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
+252
to
+262
| java_rows = apx_java_structured.get("rows", []) | ||
| if java_rows: | ||
| workc_found = False | ||
| for row in java_rows: | ||
| if not isinstance(row, dict): | ||
| continue | ||
| function_name = row.get("FUNCTION_NAME") or row.get("function_name") or "" | ||
| if "CpuBurner::workC" in str(function_name): | ||
| workc_found = True | ||
| break | ||
| assert workc_found, "Test Failed: Expected CpuBurner::workC in APX Java hotspots output." |
| "arguments": { | ||
| "cmd": "java -XX:+PreserveFramePointer -cp /home/apxci/cpuburner CpuBurner 30", | ||
| "remote_ip_addr": "localhost", | ||
| "remote_usr": "base", |
Comment on lines
533
to
+542
| def extract_run_id(output: str) -> str: | ||
| if not output: | ||
| return "" | ||
| try: | ||
| data = json.loads(output.split("\n")[1]) | ||
| return data.get("data", {}).get("run_id", {}) | ||
| except Exception: | ||
| return "" | ||
| candidates = [line.strip() for line in output.splitlines() if line.strip().startswith("{")] | ||
| for candidate in candidates: | ||
| try: | ||
| data = json.loads(candidate) | ||
| run_id = data.get("data", {}).get("run_id") | ||
| if run_id: | ||
| return run_id |
| @@ -0,0 +1,199 @@ | |||
| // CpuBurner.java | |||
| // Orignal un-optimised version workC function is deliberately slow | |||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.