[rhq] modules/plugins

Jay Shaughnessy jshaughn at fedoraproject.org
Wed Aug 15 16:10:22 UTC 2012


 modules/plugins/pattern-generator/src/main/java/org/rhq/plugins/pattern/PatternComponent.java |   45 +++++-----
 modules/plugins/pattern-generator/src/main/resources/META-INF/rhq-plugin.xml                  |    1 
 2 files changed, 27 insertions(+), 19 deletions(-)

New commits:
commit 7b82e90aa77706ec33c5195e02da0f374e410c86
Author: Jay Shaughnessy <jshaughn at redhat.com>
Date:   Wed Aug 15 12:07:13 2012 -0400

    Upate this dev plugin to also allow for a delay when reporting metrics. This
    allows the plugin to be used for "slow" collection reporting when
    simulating an overloaded agent or misbehaving plugin.
    
    For example, to see debug logging in the agent when metric collection is
    falling behind try:
    
    1) Update pattern2 collection interval to 40s so that the two pattern metrics
       are not collected at the same time, thus creating more load.
    2) Set the new "delay" plugin config prop to 25.  So, each collection will
       take 25s, and quickly the agent will fall behind.

diff --git a/modules/plugins/pattern-generator/src/main/java/org/rhq/plugins/pattern/PatternComponent.java b/modules/plugins/pattern-generator/src/main/java/org/rhq/plugins/pattern/PatternComponent.java
index 5c8d631..18c6036 100644
--- a/modules/plugins/pattern-generator/src/main/java/org/rhq/plugins/pattern/PatternComponent.java
+++ b/modules/plugins/pattern-generator/src/main/java/org/rhq/plugins/pattern/PatternComponent.java
@@ -1,4 +1,3 @@
-
 package org.rhq.plugins.pattern;
 
 import java.util.Set;
@@ -30,6 +29,8 @@ public class PatternComponent implements ResourceComponent, MeasurementFacet {
 
     int[] wanted = new int[2];
 
+    long delay = 0L; // in seconds
+
     /**
      * Return availability of this resource
      *  @see org.rhq.core.pluginapi.inventory.ResourceComponent#getAvailability()
@@ -38,7 +39,6 @@ public class PatternComponent implements ResourceComponent, MeasurementFacet {
         return AvailabilityType.UP;
     }
 
-
     /**
      * Start the resource connection
      * @see org.rhq.core.pluginapi.inventory.ResourceComponent#start(org.rhq.core.pluginapi.inventory.ResourceContext)
@@ -46,19 +46,23 @@ public class PatternComponent implements ResourceComponent, MeasurementFacet {
     public void start(ResourceContext context) throws InvalidPluginConfigurationException {
 
         Configuration conf = context.getPluginConfiguration();
-        String tmp = conf.getSimpleValue("ones","1");
+        String tmp = conf.getSimpleValue("ones", "1");
         int wantedOnes = Integer.parseInt(tmp);
-        if (wantedOnes<1)
+        if (wantedOnes < 1)
             throw new InvalidPluginConfigurationException("Ones must be > 0");
-        tmp = conf.getSimpleValue("zeros","1");
+        tmp = conf.getSimpleValue("zeros", "1");
         int wantedZeros = Integer.parseInt(tmp);
-        if (wantedZeros<1)
+        if (wantedZeros < 1)
             throw new InvalidPluginConfigurationException("Zeros must be > 0");
 
         wanted[0] = wantedZeros;
         wanted[1] = wantedOnes;
-    }
 
+        tmp = conf.getSimpleValue("delay", "0");
+        delay = Long.parseLong(tmp);
+        if (delay < 0L)
+            delay = 0L;
+    }
 
     /**
      * Tear down the resource connection
@@ -68,19 +72,22 @@ public class PatternComponent implements ResourceComponent, MeasurementFacet {
         // Nothing to do.
     }
 
-
     /**
      * Gather "measurement" data - actually a series of 1s and 0s starting with 0.
      *  @see org.rhq.core.pluginapi.measurement.MeasurementFacet#getValues(org.rhq.core.domain.measurement.MeasurementReport, java.util.Set)
      */
-    public  void getValues(MeasurementReport report, Set<MeasurementScheduleRequest> requests) throws Exception {
+    public void getValues(MeasurementReport report, Set<MeasurementScheduleRequest> requests) throws Exception {
+
+        if (delay > 0L) {
+            Thread.sleep(delay * 1000L);
+        }
 
-         boolean flipMetrics = false;
-         boolean flipTraits = false;
-         for (MeasurementScheduleRequest request : requests) {
-             String metricName = request.getName();
+        boolean flipMetrics = false;
+        boolean flipTraits = false;
+        for (MeasurementScheduleRequest request : requests) {
+            String metricName = request.getName();
 
-             if (metricName.startsWith("pattern")) {
+            if (metricName.startsWith("pattern")) {
 
                 double value;
                 if (metricName.equals("pattern1")) {
@@ -98,15 +105,15 @@ public class PatternComponent implements ResourceComponent, MeasurementFacet {
 
                 double value;
                 if (metricName.equals("text1")) {
-                     value = numberForTrait;
-                     flipTraits = true;
+                    value = numberForTrait;
+                    flipTraits = true;
                 } else {
-                     // text2
-                     value = 1 - numberForTrait;
+                    // text2
+                    value = 1 - numberForTrait;
                 }
                 String traitValue = (value == 0) ? "red" : "green";
 
-                MeasurementDataTrait datum = new MeasurementDataTrait(request,traitValue);
+                MeasurementDataTrait datum = new MeasurementDataTrait(request, traitValue);
                 report.addData(datum);
             }
         }
diff --git a/modules/plugins/pattern-generator/src/main/resources/META-INF/rhq-plugin.xml b/modules/plugins/pattern-generator/src/main/resources/META-INF/rhq-plugin.xml
index 70a8a59..e45ba0f 100644
--- a/modules/plugins/pattern-generator/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/pattern-generator/src/main/resources/META-INF/rhq-plugin.xml
@@ -16,6 +16,7 @@
         <plugin-configuration>
             <c:simple-property name="zeros" description="Number of zeros in a row" type="integer" default="1"/>
             <c:simple-property name="ones" description="Number of ones in a row" type="integer" default="2"/>
+            <c:simple-property name="delay" description="Number of seconds to delay each metric collection (to test slow reporting)" type="integer" default="0"/>
         </plugin-configuration>
 
         <metric property="pattern1" displayName="Pattern 1 Metric" defaultInterval="30000" displayType="summary" defaultOn="true"/>




More information about the rhq-commits mailing list