Mercurial > hg > release > thermostat-2.0
changeset 2562:7746392aec3c
[PATCH] small fixes for Windows
This is a tiny patch that makes the following changes for Windows compatibility.
- the profiler uses File.pathSeparator instead of hardcoded ':' when parsing a classpath.
- the version parser regular expression has been updated to handle the format of the JDK on windows, which has an extra '-redhat' appended to the end.
Reviewed by: sgehwolf
Review thread: http://icedtea.classpath.org/pipermail/thermostat/2017-January/021912.html
author | Simon Tooke <stooke@redhat.com> |
---|---|
date | Thu, 19 Jan 2017 16:02:46 -0500 |
parents | 879eb9424133 |
children | 512785b11eda |
files | vm-gc/common/src/main/java/com/redhat/thermostat/vm/gc/common/params/JavaVersionRange.java vm-gc/common/src/test/java/com/redhat/thermostat/vm/gc/common/params/JavaVersionRangeTest.java vm-profiler/jvm-agent/src/main/java/com/redhat/thermostat/vm/profiler/agent/jvm/ProfilerAgent.java |
diffstat | 3 files changed, 21 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/vm-gc/common/src/main/java/com/redhat/thermostat/vm/gc/common/params/JavaVersionRange.java Wed Jan 18 11:19:51 2017 -0500 +++ b/vm-gc/common/src/main/java/com/redhat/thermostat/vm/gc/common/params/JavaVersionRange.java Thu Jan 19 16:02:46 2017 -0500 @@ -62,7 +62,8 @@ private static final String OPTIONAL_UPDATE_PATTERN = "(?:" + UPDATE_PATTERN + ")?"; // non-capturing group private static final String PRE_RELEASE_PATTERN = "-([0-9a-zA-Z]+)"; private static final String OPTIONAL_PRE_RELEASE_PATTERN = "(?:" + PRE_RELEASE_PATTERN + ")?"; // non-capturing group - private static final String OPTIONAL_SUFFIX = "(" + OPTIONAL_UPDATE_PATTERN + OPTIONAL_PRE_RELEASE_PATTERN + ")"; + private static final String OPTIONAL_VENDOR_PATTERN = OPTIONAL_PRE_RELEASE_PATTERN; // non-capturing group + private static final String OPTIONAL_SUFFIX = "(" + OPTIONAL_UPDATE_PATTERN + OPTIONAL_PRE_RELEASE_PATTERN + OPTIONAL_VENDOR_PATTERN + ")"; private static final String SINGLE_VERSION_PATTERN_STRING = NUM + DOT + NUM + DOT + NUM + OPTIONAL_SUFFIX; private static final String VERSION_PATTERN_STRING = LBRACK + "?" + "(" + SINGLE_VERSION_PATTERN_STRING + ")" + RBRACK + "?"; private static final String RANGE_PATTERN_STRING = LBRACK + "(" + SINGLE_VERSION_PATTERN_STRING + ")?" + COMMA @@ -100,7 +101,7 @@ if (singleVersionMatcher.matches()) { VersionPoints points = VersionPoints.fromString(singleVersionMatcher.group(2)); String leftBracket = singleVersionMatcher.group(1); - String rightBracket = singleVersionMatcher.group(9); + String rightBracket = singleVersionMatcher.group(10); if (leftBracket == null && rightBracket == null) { return new JavaVersionRange(points); } else if (leftBracket != null && rightBracket != null) { @@ -112,7 +113,7 @@ Matcher rangeVersionMatcher = RANGE_PATTERN.matcher(javaVersionString); if (rangeVersionMatcher.matches()) { String lower = rangeVersionMatcher.group(2); - String upper = rangeVersionMatcher.group(9); + String upper = rangeVersionMatcher.group(10); VersionPoints lowerBound, upperBound; if (lower == null && upper == null) { throw new InvalidJavaVersionFormatException("Cannot specify a range without any bounds"); @@ -127,7 +128,7 @@ upperBound = VersionPoints.fromString(upper); } String leftBracket = rangeVersionMatcher.group(1); - String rightBracket = rangeVersionMatcher.group(16); + String rightBracket = rangeVersionMatcher.group(18); return new JavaVersionRange(lowerBound, isInclusive(leftBracket.charAt(0)), upperBound, isInclusive(rightBracket.charAt(0))); } else { throw new InvalidJavaVersionFormatException(javaVersionString);
--- a/vm-gc/common/src/test/java/com/redhat/thermostat/vm/gc/common/params/JavaVersionRangeTest.java Wed Jan 18 11:19:51 2017 -0500 +++ b/vm-gc/common/src/test/java/com/redhat/thermostat/vm/gc/common/params/JavaVersionRangeTest.java Thu Jan 19 16:02:46 2017 -0500 @@ -36,10 +36,13 @@ package com.redhat.thermostat.vm.gc.common.params; +import org.junit.Assert; import org.junit.Test; import com.redhat.thermostat.vm.gc.common.params.JavaVersionRange.VersionPoints; +import java.util.regex.Pattern; + import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; @@ -60,6 +63,17 @@ static final JavaVersionRange LARGE_RANGE = new JavaVersionRange(ONE_ZERO_ZERO_U0, true, TWO_ZERO_TEN_U40, true); @Test + public void testVendorStringInVersion() { + final String winRawStr = "1.8.0_101-1-comment"; + final String oldRawStr = "1.8.0_101-1"; + final JavaVersionRange winRange = JavaVersionRange.fromString(winRawStr); + final JavaVersionRange oldRange = JavaVersionRange.fromString(oldRawStr); + final String winRangeStr = winRange.toString(); + final String oldRangeStr = oldRange.toString(); + Assert.assertEquals("must strip off '-comment'", oldRangeStr, winRangeStr); + } + + @Test public void testValidSingleVersionComparisons() { assertFalse(ONE_ZERO_ZERO_U0 + " = " + ONE_ZERO_ZERO_U0, lessThan(VERSION_ONE_ZERO_ZERO_U0, VERSION_ONE_ZERO_ZERO_U0)); assertTrue(ONE_ZERO_ZERO_U0 + " < " + ONE_ZERO_ONE_U0, lessThan(VERSION_ONE_ZERO_ZERO_U0, VERSION_ONE_ZERO_ONE_U0));
--- a/vm-profiler/jvm-agent/src/main/java/com/redhat/thermostat/vm/profiler/agent/jvm/ProfilerAgent.java Wed Jan 18 11:19:51 2017 -0500 +++ b/vm-profiler/jvm-agent/src/main/java/com/redhat/thermostat/vm/profiler/agent/jvm/ProfilerAgent.java Thu Jan 19 16:02:46 2017 -0500 @@ -36,6 +36,7 @@ package com.redhat.thermostat.vm.profiler.agent.jvm; +import java.io.File; import java.io.IOException; import java.lang.instrument.Instrumentation; import java.lang.reflect.Constructor; @@ -80,7 +81,7 @@ Debug.println("Boot-Classpath: " + System.getProperty("sun.boot.class.path")); Debug.println("Classpath: " + System.getProperty("java.class.path")); boolean addToBoot = true; - String[] jarPaths = jars.split(":"); + String[] jarPaths = jars.split(File.pathSeparator); for (String jarPath : jarPaths) { JarFile jarFile = null; try {