From 6ab9ee639d1620f0225957f31272d7c73d13536d Mon Sep 17 00:00:00 2001 From: David Latorre Date: Wed, 28 Nov 2018 16:18:27 +0000 Subject: [PATCH] Version metric should be a string instead of an integer. --- .../main/java/com/hotels/styx/Version.java | 26 ------------------- .../com/hotels/styx/startup/CoreMetrics.java | 17 +++--------- .../java/com/hotels/styx/VersionTest.java | 2 ++ .../hotels/styx/startup/CoreMetricsTest.java | 4 +-- .../proxy/src/test/resources/version.json | 3 +++ 5 files changed, 10 insertions(+), 42 deletions(-) create mode 100644 components/proxy/src/test/resources/version.json diff --git a/components/proxy/src/main/java/com/hotels/styx/Version.java b/components/proxy/src/main/java/com/hotels/styx/Version.java index fd0d0064cc..174a2f00e1 100644 --- a/components/proxy/src/main/java/com/hotels/styx/Version.java +++ b/components/proxy/src/main/java/com/hotels/styx/Version.java @@ -23,10 +23,8 @@ import java.io.InputStreamReader; import java.io.Reader; import java.util.Objects; -import java.util.Optional; import static com.google.common.base.Objects.toStringHelper; -import static java.lang.Integer.parseInt; import static org.slf4j.LoggerFactory.getLogger; /** @@ -76,31 +74,7 @@ public String releaseVersion() { return releaseTag.substring(firstDot + 1); } - public Optional buildNumber() { - String releaseVersion = releaseVersion(); - Optional buildNumberAsString = extractFinalInt(releaseVersion); - - return buildNumberAsString.flatMap(this::parseInteger); - } - - private Optional extractFinalInt(String dotSeparatedIntegers) { - int lastDot = dotSeparatedIntegers.lastIndexOf('.'); - - if (lastDot == -1 || lastDot == dotSeparatedIntegers.length() - 1) { - return Optional.empty(); - } - - return Optional.of(dotSeparatedIntegers.substring(lastDot + 1)); - } - - private Optional parseInteger(String string) { - try { - return Optional.of(parseInt(string)); - } catch (NumberFormatException e) { - return Optional.empty(); - } - } @Override public String toString() { diff --git a/components/proxy/src/main/java/com/hotels/styx/startup/CoreMetrics.java b/components/proxy/src/main/java/com/hotels/styx/startup/CoreMetrics.java index 932ed1446b..985a45e892 100644 --- a/components/proxy/src/main/java/com/hotels/styx/startup/CoreMetrics.java +++ b/components/proxy/src/main/java/com/hotels/styx/startup/CoreMetrics.java @@ -30,7 +30,6 @@ import java.lang.management.RuntimeMXBean; import java.time.Duration; -import java.util.Optional; import static java.lang.String.format; import static java.lang.management.ManagementFactory.getPlatformMBeanServer; @@ -47,23 +46,13 @@ private CoreMetrics() { } public static void registerCoreMetrics(Version buildInfo, MetricRegistry metrics) { - registerVersionMetric(buildInfo, metrics); + registerVersionMetric(metrics, buildInfo.releaseVersion()); registerJvmMetrics(metrics); metrics.register("os", new OperatingSystemMetricSet()); } - private static void registerVersionMetric(Version buildInfo, MetricRegistry metrics) { - Optional buildNumber = buildInfo.buildNumber(); - - if (buildNumber.isPresent()) { - registerVersionMetric(metrics, buildNumber.get()); - } else { - LOG.warn("Could not acquire build number from release version: {}", buildInfo); - } - } - - private static void registerVersionMetric(MetricRegistry metricRegistry, Integer buildNumber) { - Gauge versionGauge = () -> buildNumber; + private static void registerVersionMetric(MetricRegistry metricRegistry, String versionNumber) { + Gauge versionGauge = () -> versionNumber; metricRegistry.scope("styx").register("version.buildnumber", versionGauge); } diff --git a/components/proxy/src/test/java/com/hotels/styx/VersionTest.java b/components/proxy/src/test/java/com/hotels/styx/VersionTest.java index 85a93af664..3e07aa2900 100644 --- a/components/proxy/src/test/java/com/hotels/styx/VersionTest.java +++ b/components/proxy/src/test/java/com/hotels/styx/VersionTest.java @@ -19,6 +19,7 @@ import static com.hotels.styx.Version.newVersion; import static com.hotels.styx.Version.readVersionFrom; +import static com.hotels.styx.support.matchers.IsOptional.isPresent; import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.MatcherAssert.assertThat; @@ -29,6 +30,7 @@ public class VersionTest { public void readBuildInfoFromTheSpecifiedPath() { Version version = readVersionFrom("/version.json"); assertThat(version.releaseTag(), containsString("STYX")); + assertThat(version.releaseVersion(), is("0.0-125")); } @Test diff --git a/components/proxy/src/test/java/com/hotels/styx/startup/CoreMetricsTest.java b/components/proxy/src/test/java/com/hotels/styx/startup/CoreMetricsTest.java index 1ba095687f..539e3afcd2 100644 --- a/components/proxy/src/test/java/com/hotels/styx/startup/CoreMetricsTest.java +++ b/components/proxy/src/test/java/com/hotels/styx/startup/CoreMetricsTest.java @@ -28,7 +28,7 @@ import static org.hamcrest.Matchers.is; public class CoreMetricsTest { - private final Version version = new Version("1.2.3"); + private final Version version = new Version("STYX.1.2.3"); @Test public void registersVersionMetric() { @@ -37,7 +37,7 @@ public void registersVersionMetric() { Gauge gauge = metrics.getGauges().get("styx.version.buildnumber"); - assertThat(gauge.getValue(), is(3)); + assertThat(gauge.getValue(), is("1.2.3")); } @Test diff --git a/components/proxy/src/test/resources/version.json b/components/proxy/src/test/resources/version.json new file mode 100644 index 0000000000..5b284d7aed --- /dev/null +++ b/components/proxy/src/test/resources/version.json @@ -0,0 +1,3 @@ +{ + "release.tag": "STYX.0.0-125" +} \ No newline at end of file