From 5a6ada8434b58e7571f58a6c9f2f609a3289027c Mon Sep 17 00:00:00 2001 From: Nathan Scott Date: Oct 11 2017 02:51:11 +0000 Subject: Update to latest community sources, add RHEL7 support --- diff --git a/.gitignore b/.gitignore index 454934e..aeef267 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ /parfait-0.5.3.tar.gz +/parfait-0.5.4.tar.gz diff --git a/no-jackson-version2.patch b/no-jackson-version2.patch new file mode 100644 index 0000000..c8729a4 --- /dev/null +++ b/no-jackson-version2.patch @@ -0,0 +1,114 @@ +diff -Naurp parfait-0.5.3.orig/parfait-agent/pom.xml parfait-0.5.3/parfait-agent/pom.xml +--- parfait-0.5.3.orig/parfait-agent/pom.xml 2017-10-06 11:45:35.000000000 +1100 ++++ parfait-0.5.3/parfait-agent/pom.xml 2017-10-06 13:27:24.176598870 +1100 +@@ -147,19 +147,14 @@ + ${log4j.version} + + +- com.fasterxml.jackson.core +- jackson-core +- 2.8.8 ++ org.codehaus.jackson ++ jackson-core-asl ++ ${jackson.version} + + +- com.fasterxml.jackson.core +- jackson-annotations +- 2.8.8 +- +- +- com.fasterxml.jackson.core +- jackson-databind +- 2.8.8 ++ org.codehaus.jackson ++ jackson-mapper-asl ++ ${jackson.version} + + + +diff -Naurp parfait-0.5.3.orig/parfait-agent/src/main/java/io/pcp/parfait/ParfaitAgent.java parfait-0.5.3/parfait-agent/src/main/java/io/pcp/parfait/ParfaitAgent.java +--- parfait-0.5.3.orig/parfait-agent/src/main/java/io/pcp/parfait/ParfaitAgent.java 2017-10-06 11:45:35.000000000 +1100 ++++ parfait-0.5.3/parfait-agent/src/main/java/io/pcp/parfait/ParfaitAgent.java 2017-10-06 13:26:49.945893951 +1100 +@@ -16,10 +16,10 @@ + + package io.pcp.parfait; + +-import com.fasterxml.jackson.core.JsonGenerationException; +-import com.fasterxml.jackson.databind.JsonMappingException; +-import com.fasterxml.jackson.databind.JsonNode; +-import com.fasterxml.jackson.databind.ObjectMapper; ++import org.codehaus.jackson.JsonNode; ++import org.codehaus.jackson.JsonParseException; ++import org.codehaus.jackson.JsonProcessingException; ++import org.codehaus.jackson.map.ObjectMapper; + + import io.pcp.parfait.MonitoringViewProperties; + import io.pcp.parfait.AgentMonitoringView; +diff -Naurp parfait-0.5.3.orig/parfait-agent/src/main/java/io/pcp/parfait/Specification.java parfait-0.5.3/parfait-agent/src/main/java/io/pcp/parfait/Specification.java +--- parfait-0.5.3.orig/parfait-agent/src/main/java/io/pcp/parfait/Specification.java 2017-10-06 11:45:35.000000000 +1100 ++++ parfait-0.5.3/parfait-agent/src/main/java/io/pcp/parfait/Specification.java 2017-10-06 13:26:49.946893942 +1100 +@@ -16,9 +16,10 @@ + + package io.pcp.parfait; + +-import com.fasterxml.jackson.core.JsonParseException; +-import com.fasterxml.jackson.core.JsonParser; +-import com.fasterxml.jackson.databind.JsonNode; ++import org.codehaus.jackson.JsonNode; ++import org.codehaus.jackson.JsonParseException; ++import org.codehaus.jackson.JsonProcessingException; ++import org.codehaus.jackson.map.ObjectMapper; + + import systems.uom.quantity.Information; + import tec.uom.se.unit.MetricPrefix; +diff -Naurp parfait-0.5.3.orig/pom.xml parfait-0.5.3/pom.xml +--- parfait-0.5.3.orig/pom.xml 2017-10-06 13:25:59.173331629 +1100 ++++ parfait-0.5.3/pom.xml 2017-10-06 13:27:17.456656798 +1100 +@@ -103,6 +103,7 @@ + ${jdk.version} + ${jdk.version} + 1.0.2 ++ 1.9.11 + 1.0 + 1.0.4 + 0.6 +@@ -365,6 +366,16 @@ + ${metrics3.version} + + ++ org.codehaus.jackson ++ jackson-core-asl ++ ${jackson.version} ++ ++ ++ org.codehaus.jackson ++ jackson-mapper-asl ++ ${jackson.version} ++ ++ + org.hamcrest + hamcrest-all + 1.3 +@@ -389,21 +400,6 @@ + log4j + true + +- +- com.fasterxml.jackson.core +- jackson-core +- 2.8.8 +- +- +- com.fasterxml.jackson.core +- jackson-annotations +- 2.8.8 +- +- +- com.fasterxml.jackson.core +- jackson-databind +- 2.8.8 +- + + + diff --git a/no-jcip-annotations.patch b/no-jcip-annotations.patch new file mode 100644 index 0000000..d102355 --- /dev/null +++ b/no-jcip-annotations.patch @@ -0,0 +1,238 @@ +diff -Naurp parfait-0.5.3.orig/dxm/pom.xml parfait-0.5.3/dxm/pom.xml +--- parfait-0.5.3.orig/dxm/pom.xml 2017-10-06 11:45:35.000000000 +1100 ++++ parfait-0.5.3/dxm/pom.xml 2017-10-06 11:56:57.565404760 +1100 +@@ -38,10 +38,6 @@ + guava + + +- net.jcip +- jcip-annotations +- +- + javax.measure + unit-api + +diff -Naurp parfait-0.5.3.orig/dxm/src/main/java/io/pcp/parfait/dxm/PcpMmvWriter.java parfait-0.5.3/dxm/src/main/java/io/pcp/parfait/dxm/PcpMmvWriter.java +--- parfait-0.5.3.orig/dxm/src/main/java/io/pcp/parfait/dxm/PcpMmvWriter.java 2017-10-06 11:45:35.000000000 +1100 ++++ parfait-0.5.3/dxm/src/main/java/io/pcp/parfait/dxm/PcpMmvWriter.java 2017-10-06 11:56:57.567404741 +1100 +@@ -54,7 +54,7 @@ import io.pcp.parfait.dxm.types.DefaultT + import io.pcp.parfait.dxm.types.MmvMetricType; + import io.pcp.parfait.dxm.types.TypeHandler; + import com.google.common.base.Preconditions; +-import net.jcip.annotations.GuardedBy; ++//import net.jcip.annotations.GuardedBy; + import org.apache.commons.lang.builder.ToStringBuilder; + import org.apache.commons.lang.builder.ToStringStyle; + +@@ -162,7 +162,7 @@ public class PcpMmvWriter implements Pcp + private volatile boolean usePerMetricLock = true; + private final Map perMetricByteBuffers = newConcurrentMap(); + private final Object globalLock = new Object(); +- @GuardedBy("itself") ++ //@GuardedBy("itself") + private volatile ByteBuffer dataFileBuffer = null; + + +diff -Naurp parfait-0.5.3.orig/parfait-core/pom.xml parfait-0.5.3/parfait-core/pom.xml +--- parfait-0.5.3.orig/parfait-core/pom.xml 2017-10-06 11:45:35.000000000 +1100 ++++ parfait-0.5.3/parfait-core/pom.xml 2017-10-06 11:56:57.567404741 +1100 +@@ -34,10 +34,6 @@ + test + + +- net.jcip +- jcip-annotations +- +- + com.google.guava + guava + +diff -Naurp parfait-0.5.3.orig/parfait-core/src/main/java/io/pcp/parfait/TimeWindowCounterBuilder.java parfait-0.5.3/parfait-core/src/main/java/io/pcp/parfait/TimeWindowCounterBuilder.java +--- parfait-0.5.3.orig/parfait-core/src/main/java/io/pcp/parfait/TimeWindowCounterBuilder.java 2017-10-06 11:45:35.000000000 +1100 ++++ parfait-0.5.3/parfait-core/src/main/java/io/pcp/parfait/TimeWindowCounterBuilder.java 2017-10-06 11:56:57.568404732 +1100 +@@ -20,7 +20,7 @@ import java.util.List; + + import javax.measure.Unit; + +-import net.jcip.annotations.ThreadSafe; ++//import net.jcip.annotations.ThreadSafe; + + import com.google.common.base.Supplier; + import com.google.common.collect.ImmutableList; +@@ -34,7 +34,7 @@ import com.google.common.collect.Lists; + * create the TimeWindowCounters from scratch, or 'copy' an existing + * MonitoredCounter. + */ +-@ThreadSafe ++//@ThreadSafe + public class TimeWindowCounterBuilder { + private final List timeWindows; + private final Supplier timeSource; +diff -Naurp parfait-0.5.3.orig/parfait-core/src/main/java/io/pcp/parfait/TimeWindowCounter.java parfait-0.5.3/parfait-core/src/main/java/io/pcp/parfait/TimeWindowCounter.java +--- parfait-0.5.3.orig/parfait-core/src/main/java/io/pcp/parfait/TimeWindowCounter.java 2017-10-06 11:45:35.000000000 +1100 ++++ parfait-0.5.3/parfait-core/src/main/java/io/pcp/parfait/TimeWindowCounter.java 2017-10-06 11:56:57.568404732 +1100 +@@ -18,8 +18,8 @@ package io.pcp.parfait; + + import java.util.Arrays; + +-import net.jcip.annotations.GuardedBy; +-import net.jcip.annotations.ThreadSafe; ++//import net.jcip.annotations.GuardedBy; ++//import net.jcip.annotations.ThreadSafe; + + import com.google.common.annotations.VisibleForTesting; + import com.google.common.base.Supplier; +@@ -43,15 +43,15 @@ import com.google.common.base.Supplier; + * prove too contentious and require change later. + *

+ */ +-@ThreadSafe ++//@ThreadSafe + public class TimeWindowCounter implements Counter { +- @GuardedBy("lock") ++ //@GuardedBy("lock") + private long overallValue; +- @GuardedBy("lock") ++ //@GuardedBy("lock") + private final long[] interimValues; +- @GuardedBy("lock") ++ //@GuardedBy("lock") + private int headIndex = 0; +- @GuardedBy("lock") ++ //@GuardedBy("lock") + private long headTime; + + private final Object lock = new Object(); +@@ -87,7 +87,7 @@ public class TimeWindowCounter implement + * until headTime is within one 'tick' of the current time; we have then + * found the correct bucket. + */ +- @GuardedBy("lock") ++ //@GuardedBy("lock") + private void cleanState() { + long eventTime = timeSource.get(); + long bucketsToSkip = (eventTime - headTime) / window.getResolution(); +diff -Naurp parfait-0.5.3.orig/parfait-core/src/main/java/io/pcp/parfait/TimeWindow.java parfait-0.5.3/parfait-core/src/main/java/io/pcp/parfait/TimeWindow.java +--- parfait-0.5.3.orig/parfait-core/src/main/java/io/pcp/parfait/TimeWindow.java 2017-10-06 11:45:35.000000000 +1100 ++++ parfait-0.5.3/parfait-core/src/main/java/io/pcp/parfait/TimeWindow.java 2017-10-06 11:56:57.569404723 +1100 +@@ -16,7 +16,7 @@ + + package io.pcp.parfait; + +-import net.jcip.annotations.ThreadSafe; ++//import net.jcip.annotations.ThreadSafe; + + import com.google.common.base.Preconditions; + +@@ -27,7 +27,7 @@ import com.google.common.base.Preconditi + * (the amount of time represented by each window), and a resolution (the + * duration at which events will be clustered together). + */ +-@ThreadSafe ++//@ThreadSafe + public final class TimeWindow { + private final int resolution; + private final long period; +@@ -82,4 +82,4 @@ public final class TimeWindow { + // We know that bucket count fits in an int, per our constructor checks + return (int) (period / resolution); + } +-} +\ No newline at end of file ++} +diff -Naurp parfait-0.5.3.orig/parfait-core/src/main/java/io/pcp/parfait/timing/EventTimer.java parfait-0.5.3/parfait-core/src/main/java/io/pcp/parfait/timing/EventTimer.java +--- parfait-0.5.3.orig/parfait-core/src/main/java/io/pcp/parfait/timing/EventTimer.java 2017-10-06 11:45:35.000000000 +1100 ++++ parfait-0.5.3/parfait-core/src/main/java/io/pcp/parfait/timing/EventTimer.java 2017-10-06 11:56:57.570404714 +1100 +@@ -32,13 +32,13 @@ import org.slf4j.LoggerFactory; + import io.pcp.parfait.MonitorableRegistry; + import io.pcp.parfait.MonitoredCounter; + import com.google.common.collect.ImmutableList; +-import net.jcip.annotations.ThreadSafe; ++//import net.jcip.annotations.ThreadSafe; + + /** + * A class to provide a {@link EventMetricCollector} to each {@link Timeable} on demand, guaranteed + * to be thread-safe as long is it's only ever used by the requesting thread. + */ +-@ThreadSafe ++//@ThreadSafe + public class EventTimer { + + /** +diff -Naurp parfait-0.5.3.orig/parfait-core/src/main/java/io/pcp/parfait/timing/LoggerSink.java parfait-0.5.3/parfait-core/src/main/java/io/pcp/parfait/timing/LoggerSink.java +--- parfait-0.5.3.orig/parfait-core/src/main/java/io/pcp/parfait/timing/LoggerSink.java 2017-10-06 11:45:35.000000000 +1100 ++++ parfait-0.5.3/parfait-core/src/main/java/io/pcp/parfait/timing/LoggerSink.java 2017-10-06 11:56:57.570404714 +1100 +@@ -21,14 +21,14 @@ import java.util.Map; + + import javax.measure.Unit; + +-import net.jcip.annotations.ThreadSafe; ++//import net.jcip.annotations.ThreadSafe; + + import org.slf4j.Logger; + import org.slf4j.LoggerFactory; + + import com.google.common.collect.Maps; + +-@ThreadSafe ++//@ThreadSafe + public class LoggerSink implements StepMeasurementSink { + private final Logger logger; + private final Map, Unit> normalizations = Maps.newConcurrentMap(); +diff -Naurp parfait-0.5.3.orig/parfait-core/src/main/java/io/pcp/parfait/timing/ThreadContext.java parfait-0.5.3/parfait-core/src/main/java/io/pcp/parfait/timing/ThreadContext.java +--- parfait-0.5.3.orig/parfait-core/src/main/java/io/pcp/parfait/timing/ThreadContext.java 2017-10-06 11:45:35.000000000 +1100 ++++ parfait-0.5.3/parfait-core/src/main/java/io/pcp/parfait/timing/ThreadContext.java 2017-10-06 11:56:57.571404704 +1100 +@@ -26,7 +26,7 @@ import java.util.concurrent.ConcurrentHa + import com.google.common.cache.CacheBuilder; + import com.google.common.cache.CacheLoader; + import com.google.common.cache.LoadingCache; +-import net.jcip.annotations.ThreadSafe; ++//import net.jcip.annotations.ThreadSafe; + + /** + *

+@@ -45,7 +45,7 @@ import net.jcip.annotations.ThreadSafe; + * + * @author Cowan + */ +-@ThreadSafe ++//@ThreadSafe + public class ThreadContext { + private static final CacheLoader> NEW_CONTEXT_CREATOR = new CacheLoader>() { + @Override +diff -Naurp parfait-0.5.3.orig/parfait-pcp/src/main/java/io/pcp/parfait/pcp/PcpMonitorBridge.java parfait-0.5.3/parfait-pcp/src/main/java/io/pcp/parfait/pcp/PcpMonitorBridge.java +--- parfait-0.5.3.orig/parfait-pcp/src/main/java/io/pcp/parfait/pcp/PcpMonitorBridge.java 2017-10-06 11:45:35.000000000 +1100 ++++ parfait-0.5.3/parfait-pcp/src/main/java/io/pcp/parfait/pcp/PcpMonitorBridge.java 2017-10-06 11:59:49.367827348 +1100 +@@ -25,7 +25,7 @@ import io.pcp.parfait.dxm.PcpWriter; + import io.pcp.parfait.dxm.semantics.Semantics; + import com.google.common.base.Preconditions; + import com.google.common.collect.ImmutableMap; +-import net.jcip.annotations.NotThreadSafe; ++//import net.jcip.annotations.NotThreadSafe; + import org.slf4j.Logger; + import org.slf4j.LoggerFactory; + +@@ -45,7 +45,7 @@ import java.util.concurrent.ArrayBlockin + * + * @see io.pcp.parfait.QuiescentRegistryListener + */ +-@NotThreadSafe ++//@NotThreadSafe + public class PcpMonitorBridge implements MonitoringView { + + private static final Logger LOG = LoggerFactory.getLogger(PcpMonitorBridge.class); +diff -Naurp parfait-0.5.3.orig/pom.xml parfait-0.5.3/pom.xml +--- parfait-0.5.3.orig/pom.xml 2017-10-06 11:45:35.000000000 +1100 ++++ parfait-0.5.3/pom.xml 2017-10-06 11:56:57.571404704 +1100 +@@ -340,11 +340,6 @@ + 2.2.9 + + +- net.jcip +- jcip-annotations +- 1.0 +- +- + commons-io + commons-io + 1.4 diff --git a/no-more-objects.patch b/no-more-objects.patch new file mode 100644 index 0000000..f7fbe20 --- /dev/null +++ b/no-more-objects.patch @@ -0,0 +1,322 @@ +diff -Naurp parfait-0.5.3.orig/parfait-core/src/main/java/io/pcp/parfait/PollingMonitoredValue.java parfait-0.5.3/parfait-core/src/main/java/io/pcp/parfait/PollingMonitoredValue.java +--- parfait-0.5.3.orig/parfait-core/src/main/java/io/pcp/parfait/PollingMonitoredValue.java 2017-10-03 11:38:15.000000000 +1100 ++++ parfait-0.5.3/parfait-core/src/main/java/io/pcp/parfait/PollingMonitoredValue.java 2017-10-06 13:35:06.169481799 +1100 +@@ -29,7 +29,7 @@ import org.slf4j.Logger; + import org.slf4j.LoggerFactory; + + import com.google.common.annotations.VisibleForTesting; +-import com.google.common.base.MoreObjects; ++//import com.google.common.base.MoreObjects; + import com.google.common.base.Preconditions; + import com.google.common.base.Supplier; + +@@ -104,10 +104,10 @@ public class PollingMonitoredValue ex + scheduler.schedule(new PollerTask(), updateInterval); + } + +- @Override +- public String toString() { +- return MoreObjects.toStringHelper(this).add("name", getName()).add("description", getDescription()).add("poller", poller).toString(); +- } ++// @Override ++// public String toString() { ++// return MoreObjects.toStringHelper(this).add("name", getName()).add("description", getDescription()).add("poller", poller).toString(); ++// } + + + private class PollerTask extends TimerTask { +diff -Naurp parfait-0.5.3.orig/parfait-jmx/src/main/java/io/pcp/parfait/jmx/JmxView.java parfait-0.5.3/parfait-jmx/src/main/java/io/pcp/parfait/jmx/JmxView.java +--- parfait-0.5.3.orig/parfait-jmx/src/main/java/io/pcp/parfait/jmx/JmxView.java 2017-10-03 11:44:14.000000000 +1100 ++++ parfait-0.5.3/parfait-jmx/src/main/java/io/pcp/parfait/jmx/JmxView.java 1970-01-01 10:00:00.000000000 +1000 +@@ -1,150 +0,0 @@ +-/* +- * Copyright 2009-2017 Aconex +- * +- * Licensed under the Apache License, Version 2.0 +- * (the "License"); you may not use this file except in compliance with +- * the License. You may obtain a copy of the License at: +- * +- * http://www.apache.org/licenses/LICENSE-2.0 +- * +- * Unless required by applicable law or agreed to in writing, software +- * distributed under the License is distributed on an "AS IS" BASIS, +- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +- * implied. See the License for the specific language governing +- * permissions and limitations under the License. +- */ +- +-package io.pcp.parfait.jmx; +- +-import io.pcp.parfait.Monitor; +-import io.pcp.parfait.Monitorable; +-import io.pcp.parfait.MonitoringView; +-import com.google.common.base.MoreObjects; +-import org.springframework.jmx.export.annotation.ManagedAttribute; +-import org.springframework.jmx.export.annotation.ManagedResource; +- +-import javax.management.openmbean.CompositeData; +-import javax.management.openmbean.CompositeDataSupport; +-import javax.management.openmbean.CompositeType; +-import javax.management.openmbean.OpenDataException; +-import javax.management.openmbean.OpenType; +-import javax.management.openmbean.SimpleType; +-import java.util.Collection; +-import java.util.HashMap; +-import java.util.Map; +-import java.util.concurrent.atomic.AtomicInteger; +-import java.util.concurrent.atomic.AtomicLong; +- +-@ManagedResource +-public class JmxView implements MonitoringView { +- private String[] jmxMonitoredNames; +- private Object[] jmxMonitoredValues; +- private Map jmxArrayIndexMap; +- private CompositeType monitoredType; +- +- private final Monitor monitor = new JmxUpdatingMonitor(); +- private volatile boolean started; +- +- +- @Override +- public void startMonitoring(Collection> monitorables) { +- setupJmxValues(monitorables); +- for (Monitorable monitorable : monitorables) { +- updateData(monitorable); +- monitorable.attachMonitor(monitor); +- } +- this.started = true; +- } +- +- @Override +- public void stopMonitoring(Collection> monitorables) { +- for (Monitorable monitorable : monitorables) { +- monitorable.removeMonitor(monitor); +- } +- this.started = false; +- } +- +- @Override +- public boolean isRunning() { +- return started; +- } +- +- private void setupJmxValues(Collection> monitorables) { +- if (monitorables.isEmpty()) { +- return; +- } +- try { +- jmxMonitoredNames = new String[monitorables.size()]; +- String[] descriptions = new String[monitorables.size()]; +- jmxMonitoredValues = new Object[monitorables.size()]; +- OpenType[] types = new OpenType[monitorables.size()]; +- jmxArrayIndexMap = new HashMap(monitorables.size()); +- int index = 0; +- +- for (Monitorable monitorable : monitorables) { +- jmxMonitoredNames[index] = monitorable.getName(); +- descriptions[index] = MoreObjects.firstNonNull(monitorable.getDescription(), +- "(unknown)"); +- types[index] = getJmxType(monitorable.getType()); +- jmxArrayIndexMap.put(monitorable.getName(), index); +- index++; +- } +- +- monitoredType = new CompositeType("Exposed PCP metrics", +- "Details of all exposed PCP metrics", jmxMonitoredNames, descriptions, types); +- } catch (OpenDataException e) { +- throw new UnsupportedOperationException("Unable to configure JMX types", e); +- } +- } +- +- private OpenType getJmxType(Class type) { +- if (type == Boolean.class) { +- return SimpleType.BOOLEAN; +- } else if (type == Integer.class || type == AtomicInteger.class) { +- return SimpleType.INTEGER; +- } else if (type == Long.class || type == AtomicLong.class) { +- return SimpleType.LONG; +- } else if (type == Double.class) { +- return SimpleType.DOUBLE; +- } else if (type == String.class) { +- return SimpleType.STRING; +- } else { +- throw new UnsupportedOperationException( +- "Don't know how to process Monitorable of type [" + type + "]"); +- } +- } +- +- @ManagedAttribute(description = "All exposed parfait metrics") +- public CompositeData getExposedMetrics() { +- try { +- return new CompositeDataSupport(monitoredType, jmxMonitoredNames, jmxMonitoredValues); +- } catch (OpenDataException e) { +- throw new RuntimeException(e); +- } +- } +- +- private void updateData(Monitorable monitorable) { +- Class type = monitorable.getType(); +- Object jmxValue; +- +- if (type == Boolean.class || type == Integer.class || type == Long.class +- || type == Double.class || type == String.class) { +- jmxValue = monitorable.get(); +- } else if (type == AtomicInteger.class) { +- jmxValue = ((AtomicInteger) monitorable.get()).intValue(); +- } else if (type == AtomicLong.class) { +- jmxValue = ((AtomicLong) monitorable.get()).longValue(); +- } else { +- throw new UnsupportedOperationException( +- "Don't know how to process Monitorable of type [" + type + "]"); +- } +- +- jmxMonitoredValues[jmxArrayIndexMap.get(monitorable.getName())] = jmxValue; +- } +- +- public class JmxUpdatingMonitor implements Monitor { +- public void valueChanged(Monitorable monitorable) { +- updateData(monitorable); +- } +- } +-} +diff -Naurp parfait-0.5.3.orig/parfait-jmx/src/test/java/io/pcp/parfait/jmx/JmxViewTest.java parfait-0.5.3/parfait-jmx/src/test/java/io/pcp/parfait/jmx/JmxViewTest.java +--- parfait-0.5.3.orig/parfait-jmx/src/test/java/io/pcp/parfait/jmx/JmxViewTest.java 2017-10-03 11:44:14.000000000 +1100 ++++ parfait-0.5.3/parfait-jmx/src/test/java/io/pcp/parfait/jmx/JmxViewTest.java 1970-01-01 10:00:00.000000000 +1000 +@@ -1,137 +0,0 @@ +-/* +- * Copyright 2009-2017 Aconex +- * +- * Licensed under the Apache License, Version 2.0 +- * (the "License"); you may not use this file except in compliance with +- * the License. You may obtain a copy of the License at: +- * +- * http://www.apache.org/licenses/LICENSE-2.0 +- * +- * Unless required by applicable law or agreed to in writing, software +- * distributed under the License is distributed on an "AS IS" BASIS, +- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +- * implied. See the License for the specific language governing +- * permissions and limitations under the License. +- */ +- +-package io.pcp.parfait.jmx; +- +-import io.pcp.parfait.MonitorableRegistry; +-import io.pcp.parfait.MonitoredValue; +-import junit.framework.TestCase; +- +-import javax.management.openmbean.CompositeData; +-import java.io.IOException; +- +-public class JmxViewTest extends TestCase { +- private MonitoredValue booleanValue = null; +- +- private MonitoredValue intValue = null; +- +- private MonitoredValue longValue = null; +- private MonitoredValue doubleValue = null; +- private MonitoredValue stringValue = null; +- +- private MonitorableRegistry registry = new MonitorableRegistry(); +- +- private JmxView jmx = null; +- +- public JmxViewTest() { +- } +- +- public void setUp() { +- booleanValue = new MonitoredValue("boolean.value", "boolean.value.desc", registry, true); +- intValue = new MonitoredValue("int.value", "int.value.desc", registry, 1); +- longValue = new MonitoredValue("long.value", "long.value.desc", registry, 1l); +- doubleValue = new MonitoredValue("double.value", "double.value.desc", registry, 1d); +- stringValue = new MonitoredValue("string.value", "string.value.desc", registry, "!"); +- +- jmx = new JmxView(); +- } +- +- public void tearDown() { +- jmx.stopMonitoring(registry.getMonitorables()); +- } +- +- public void testSupportsAllTypes() throws IOException, InterruptedException { +- jmx.startMonitoring(registry.getMonitorables()); +- +- checkDataValues(); +- +- booleanValue.set(false); +- checkDataValues(); +- +- booleanValue.set(true); +- checkDataValues(); +- +- intValue.set(0); +- checkDataValues(); +- +- intValue.set(Integer.MAX_VALUE); +- checkDataValues(); +- +- intValue.set(Integer.MIN_VALUE); +- checkDataValues(); +- +- intValue.set(1234567890); +- checkDataValues(); +- +- longValue.set(0l); +- checkDataValues(); +- +- longValue.set(Long.MAX_VALUE); +- checkDataValues(); +- +- longValue.set(Long.MIN_VALUE); +- checkDataValues(); +- +- longValue.set(1234567891012345679l); +- checkDataValues(); +- +- doubleValue.set(0d); +- checkDataValues(); +- +- doubleValue.set(Double.MAX_VALUE); +- checkDataValues(); +- +- doubleValue.set(Double.MIN_VALUE); +- checkDataValues(); +- +- doubleValue.set(Double.NEGATIVE_INFINITY); +- checkDataValues(); +- +- doubleValue.set(Double.POSITIVE_INFINITY); +- checkDataValues(); +- +- doubleValue.set(Double.NaN); +- checkDataValues(); +- +- doubleValue.set(1234567891.012345679d); +- checkDataValues(); +- +- stringValue.set(""); +- checkDataValues(); +- +- stringValue.set(createString(500)); +- checkDataValues(); +- } +- +- private String createString(int length) { +- StringBuilder sb = new StringBuilder(); +- for (int i = 0; i < length; i++) { +- sb.append(Math.max(1, i & 255)); +- } +- return sb.toString(); +- } +- +- private void checkDataValues() { +- +- CompositeData data = jmx.getExposedMetrics(); +- +- assertEquals(booleanValue.get(), data.get("boolean.value")); +- assertEquals(doubleValue.get(), data.get("double.value")); +- assertEquals((int) intValue.get(), data.get("int.value")); +- assertEquals((long) longValue.get(), data.get("long.value")); +- assertEquals(stringValue.get(), data.get("string.value")); +- } +-} diff --git a/parfait.spec b/parfait.spec index 9b6e33b..56e6464 100644 --- a/parfait.spec +++ b/parfait.spec @@ -1,21 +1,27 @@ Name: parfait -Version: 0.5.3 +Version: 0.5.4 Release: 1%{?dist} Summary: Java libraries for Performance Co-Pilot (PCP) License: ASL 2.0 URL: https://github.com/performancecopilot/parfait Source0: https://github.com/performancecopilot/parfait/archive/%{version}/%{name}-%{version}.tar.gz +Patch1: no-jcip-annotations.patch +Patch2: no-jackson-version2.patch +Patch3: no-more-objects.patch + %bcond_with metrics BuildRequires: junit BuildRequires: testng BuildRequires: maven-local +%if 0%{?rhel} == 0 BuildRequires: maven-license-plugin BuildRequires: maven-failsafe-plugin BuildRequires: maven-source-plugin -BuildRequires: maven-plugin-bundle +%endif BuildRequires: maven-assembly-plugin +BuildRequires: maven-plugin-bundle BuildRequires: maven-jar-plugin BuildRequires: maven-shade-plugin BuildRequires: maven-install-plugin @@ -24,6 +30,7 @@ BuildRequires: maven-surefire-provider-testng BuildRequires: maven-surefire-provider-junit BuildRequires: maven-dependency-plugin BuildRequires: maven-verifier-plugin +%if 0%{?rhel} == 0 BuildRequires: mvn(net.jcip:jcip-annotations) BuildRequires: mvn(org.apache.maven.wagon:wagon-ftp) BuildRequires: mvn(org.aspectj:aspectjweaver) @@ -34,10 +41,19 @@ BuildRequires: mvn(org.springframework:spring-core) BuildRequires: mvn(org.springframework:spring-beans) BuildRequires: mvn(org.springframework:spring-context) BuildRequires: mvn(org.springframework:spring-test) +%endif %if %{with metrics} BuildRequires: mvn(com.codahale.metrics:metrics-core) %endif -BuildRequires: mvn(systems.uom:systems-unicode-java8:pom:) +%if 0%{?rhel} != 0 +BuildRequires: mvn(org.codehaus.jackson:jackson-core-asl) +BuildRequires: mvn(org.codehaus.jackson:jackson-mapper-asl) +%else +BuildRequires: mvn(com.fasterxml.jackson.core:jackson-core) +BuildRequires: mvn(com.fasterxml.jackson.core:jackson-annotations) +BuildRequires: mvn(com.fasterxml.jackson.core:jackson-databind) +%endif +BuildRequires: mvn(systems.uom:systems-unicode-java8) BuildRequires: mvn(javax.measure:unit-api) BuildRequires: mvn(tec.uom:uom-se) @@ -79,6 +95,12 @@ for instrumenting applications. %prep %setup -q +%if 0%{?rhel} != 0 +%patch1 -p1 +%patch2 -p1 +%patch3 -p1 +%endif + # Remove license plugin in main pom.xml %pom_remove_plugin com.mycila:license-maven-plugin %pom_remove_plugin com.mycila:license-maven-plugin parfait-agent @@ -88,7 +110,16 @@ for instrumenting applications. %if %{without metrics} %pom_disable_module parfait-dropwizard %endif -%pom_disable_module parfait-jdbc # need hsqldb update? +%pom_disable_module parfait-jdbc +%if 0%{?rhel} != 0 +%pom_disable_module parfait-jmx +%pom_disable_module parfait-spring +%endif +%pom_remove_plugin org.apache.maven.plugins:maven-failsafe-plugin +%pom_remove_plugin org.apache.maven.plugins:maven-jxr-plugin +%pom_remove_plugin org.apache.maven.plugins:maven-pmd-plugin +%pom_remove_plugin :maven-javadoc-plugin +%pom_remove_plugin :maven-site-plugin %build # skip tests for now, missing org.unitils:unitils-core:jar @@ -143,6 +174,10 @@ done %license LICENSE.md %changelog +* Fri Oct 06 2017 Nathan Scott - 0.5.4-1 +- Update to latest upstream sources. +- Support (patched) RHEL7 builds. + * Tue Sep 05 2017 Lukas Berk - 0.5.3-1 - Update to upstream release diff --git a/sources b/sources index 14bd065..e0aa8f9 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (parfait-0.5.3.tar.gz) = ae90120313f2de97f8b4281b250a805a05bf3d1f5585b2762289f16b719159f544b7cf7ebb7e0e1b53e8a115e5bcbbb24ddefbd717200e29cfdfd0fb560dee65 +SHA512 (parfait-0.5.4.tar.gz) = f79bc26161c6f6d71bfbe47c73b7d486d50ea9243f8888cb0a6a4a078d9c145cf4b21025dbcc3933437941f49b24cfc4cc0fe0212ee0d7e4344972e77b33c914