Skip to content

Commit

Permalink
Fix machineInfo curl validation
Browse files Browse the repository at this point in the history
- based on #457
- change back curl version command as it doesn't work for certain machines
- provide fix for NumberFormatException

This reverts commit d59bb56.
  • Loading branch information
renfeiw committed Jul 14, 2023
1 parent 7c00d51 commit 1ef86a8
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 10 deletions.
7 changes: 7 additions & 0 deletions src/org/openj9/envInfo/CmdExecutor.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Map;

public class CmdExecutor {
private static CmdExecutor instance;
Expand All @@ -36,9 +37,15 @@ public String execute(String[] commands) {
String rt = null;
try {
ProcessBuilder builder = new ProcessBuilder(Arrays.asList(commands));
Map<String, String> env = builder.environment();
// clear env and copy from the parent shell environment
env.clear();
Map<String, String> shellEnv = System.getenv();
env.putAll(shellEnv);
builder.redirectErrorStream(true);
Process proc = builder.start();
BufferedReader stdOutput = new BufferedReader(new InputStreamReader(proc.getInputStream()));

StringBuilder sb = new StringBuilder();
String line = null;
String newline = "";
Expand Down
25 changes: 15 additions & 10 deletions src/org/openj9/envInfo/MachineInfo.java
Original file line number Diff line number Diff line change
Expand Up @@ -142,9 +142,10 @@ private void makeSameLength(ArrayList<Integer> list, int requiredLength){
}
}

private boolean validateVersion(String versionName, String actualVersionStr, String requriedVersionStr) {
private boolean validateVersion(Info info, String requriedVersionStr) {
boolean isValid = true;
try {
String actualVersionStr = parseInfo(info.output);
try {
ArrayList<Integer> accVer = versionStr2ArrList(actualVersionStr);
ArrayList<Integer> reqVer = versionStr2ArrList(requriedVersionStr);
int accVerLen = accVer.size();
Expand All @@ -162,11 +163,13 @@ private boolean validateVersion(String versionName, String actualVersionStr, Str
}
}
if (!isValid) {
System.out.println("Error: required " + versionName + ": " + requriedVersionStr + ". Installed version: " + actualVersionStr);
System.out.println("Warning: required " + info.name + ": " + requriedVersionStr + ". Output:\n" + info.output);
}
} catch (NumberFormatException e){
System.out.println("Warning: "+ versionName + " information cannot be extracted.");
System.out.println(versionName + " output: " + actualVersionStr);
// We need to add an option to toggle the failure or warning mode.
// isValid = false;
System.out.println("Warning: "+ info.name + " information cannot be extracted.");
System.out.println(info.name + " output: " + actualVersionStr);
}
return isValid;
}
Expand All @@ -175,13 +178,15 @@ private void validateInfo() {
boolean valid = true;
for (Info info : infoMap.values()) {
if (info.req != null) {
String version = parseInfo(info.output);
valid &= validateVersion(info.name, version, info.req);
valid &= validateVersion(info, info.req);
}
}
if (!valid) {
System.exit(1);
}

// Do not fail if the check not pass for the build environment.
// We need to add an option to toggle the failure or warning mode.
// if (!valid) {
// System.exit(1);
//}
}

private void getSysInfo() {
Expand Down

0 comments on commit 1ef86a8

Please sign in to comment.