From d7070e28bf562cb71dade6d71dc2ccd43ad3b088 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adri=C3=A1n=20Moreno?= Date: Fri, 8 May 2020 10:29:32 +0200 Subject: [PATCH] Ability to filters samplers (list and regex) (#8) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Adrián Moreno --- README.md | 3 + docs/configuration.png | Bin 38752 -> 45146 bytes pom.xml | 2 +- .../azure/AzureBackendClient.java | 102 ++++++++++++++++-- .../azure/TestAzureBackendClient.java | 4 + 5 files changed, 99 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index fa5ffc5..a842ae6 100644 --- a/README.md +++ b/README.md @@ -51,6 +51,9 @@ Then, in the Parameters table, configure the following attributes. | *instrumentationKey* | The Instrumentation Key of your Application Insights instance | Yes | | *testName* | Name of the test. This value is used to differentiate metrics across test runs or plans in Application Insights and allow you to filter them. | Yes | | *liveMetrics* | Boolean to indicate whether or not real-time metrics are enabled and available in the [Live Metrics Stream](https://docs.microsoft.com/en-us/azure/azure-monitor/app/live-stream). Defaults to `true`. | No | +| *samplersList* | Optional list of samplers separated by a semi-colon (`;`) that the listener will collect and send metrics to Application Insights. If the list is empty, the listener will not filter samplers and send metrics from all of them. Defaults to an empty string. | No | +| *useRegexForSamplerList* | If set to `true` the `samplersList` will be evaluated as a regex to filter samplers. Defaults to `false`. | No | + *Example of configuration:* diff --git a/docs/configuration.png b/docs/configuration.png index b6d7128225c21f40e76aa21b472859b736cadf39..155260f71bf0ce863179d1f2f0784f1f601fdea8 100644 GIT binary patch literal 45146 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

mUJ#hKQ;ZSx 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 Nl43B?f@eBj{{inF5&r-H literal 38752 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.0.0 io.github.adrianmo jmeter.backendlistener.azure - 0.2.1 + 0.2.2 jar ${project.artifactId} A JMeter plug-in that enables you to send test results to Azure Monitor. diff --git a/src/main/java/io/github/adrianmo/jmeter/backendlistener/azure/AzureBackendClient.java b/src/main/java/io/github/adrianmo/jmeter/backendlistener/azure/AzureBackendClient.java index 3d9bfb0..44bc038 100644 --- a/src/main/java/io/github/adrianmo/jmeter/backendlistener/azure/AzureBackendClient.java +++ b/src/main/java/io/github/adrianmo/jmeter/backendlistener/azure/AzureBackendClient.java @@ -11,18 +11,74 @@ import org.apache.jmeter.threads.JMeterContextService; import org.apache.jmeter.visualizers.backend.AbstractBackendListenerClient; import org.apache.jmeter.visualizers.backend.BackendListenerContext; - +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.util.Date; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Set; public class AzureBackendClient extends AbstractBackendListenerClient { + /** + * Logger. + */ + private static final Logger log = LoggerFactory.getLogger(AzureBackendClient.class); + + /** + * Argument keys. + */ + private static final String KEY_TEST_NAME = "testName"; + private static final String KEY_INSTRUMENTATION_KEY = "instrumentationKey"; + private static final String KEY_LIVE_METRICS = "liveMetrics"; + private static final String KEY_SAMPLERS_LIST = "samplersList"; + private static final String KEY_USE_REGEX_FOR_SAMPLER_LIST = "useRegexForSamplerList"; + + /** + * Default argument values. + */ + private static final String DEFAULT_TEST_NAME = "jmeter"; + private static final String DEFAULT_INSTRUMENTATION_KEY = ""; + private static final boolean DEFAULT_LIVE_METRICS = true; + private static final String DEFAULT_SAMPLERS_LIST = ""; + private static final boolean DEFAULT_USE_REGEX_FOR_SAMPLER_LIST = false; + + /** + * Separator for samplers list. + */ + private static final String SEPARATOR = ";"; + + /** + * Application Insights telemetry client. + */ private TelemetryClient telemetryClient; - private static final String TEST_NAME = "testName"; - private static final String INSTRUMENTATION_KEY = "instrumentationKey"; - private static final String LIVE_METRICS = "liveMetrics"; + + /** + * Name of the test. + */ + private String testName; + + /** + * Whether to send metrics to the Live Metrics Stream. + */ + private boolean liveMetrics; + + /** + * List of samplers to record. + */ + private String samplersList = ""; + + /** + * Regex if samplers are defined through regular expression. + */ + private Boolean useRegexForSamplerList; + + /** + * Set of samplers to record. + */ + private Set samplersToFilter; public AzureBackendClient() { super(); @@ -31,23 +87,37 @@ public AzureBackendClient() { @Override public Arguments getDefaultParameters() { Arguments arguments = new Arguments(); - arguments.addArgument(TEST_NAME, "jmeter"); - arguments.addArgument(INSTRUMENTATION_KEY, ""); - arguments.addArgument(LIVE_METRICS, "true"); + arguments.addArgument(KEY_TEST_NAME, DEFAULT_TEST_NAME); + arguments.addArgument(KEY_INSTRUMENTATION_KEY, DEFAULT_INSTRUMENTATION_KEY); + arguments.addArgument(KEY_LIVE_METRICS, Boolean.toString(DEFAULT_LIVE_METRICS)); + arguments.addArgument(KEY_SAMPLERS_LIST, DEFAULT_SAMPLERS_LIST); + arguments.addArgument(KEY_USE_REGEX_FOR_SAMPLER_LIST, Boolean.toString(DEFAULT_USE_REGEX_FOR_SAMPLER_LIST)); return arguments; } @Override public void setupTest(BackendListenerContext context) throws Exception { - boolean liveMetrics = context.getBooleanParameter(LIVE_METRICS, true); + testName = context.getParameter(KEY_TEST_NAME, DEFAULT_TEST_NAME); + liveMetrics = context.getBooleanParameter(KEY_LIVE_METRICS, DEFAULT_LIVE_METRICS); + samplersList = context.getParameter(KEY_SAMPLERS_LIST, DEFAULT_SAMPLERS_LIST).trim(); + useRegexForSamplerList = context.getBooleanParameter(KEY_USE_REGEX_FOR_SAMPLER_LIST, DEFAULT_USE_REGEX_FOR_SAMPLER_LIST); + TelemetryConfiguration config = TelemetryConfiguration.createDefault(); - config.setInstrumentationKey(context.getParameter(INSTRUMENTATION_KEY)); + config.setInstrumentationKey(context.getParameter(KEY_INSTRUMENTATION_KEY)); telemetryClient = new TelemetryClient(config); if (liveMetrics) { QuickPulse.INSTANCE.initialize(config); } - super.setupTest(context); + + samplersToFilter = new HashSet(); + if (!useRegexForSamplerList) { + String[] samplers = samplersList.split(SEPARATOR); + samplersToFilter = new HashSet(); + for (String samplerName : samplers) { + samplersToFilter.add(samplerName); + } + } } private void trackRequest(String name, SampleResult sr) { @@ -84,13 +154,23 @@ private void trackRequest(String name, SampleResult sr) { @Override public void handleSampleResults(List results, BackendListenerContext context) { + + boolean samplersToFilterMatch; for (SampleResult sr : results) { - trackRequest(context.getParameter(TEST_NAME), sr); + + samplersToFilterMatch = samplersList.isEmpty() || + (useRegexForSamplerList && sr.getSampleLabel().matches(samplersList)) || + (!useRegexForSamplerList && samplersToFilter.contains(sr.getSampleLabel())); + + if (samplersToFilterMatch) { + trackRequest(testName, sr); + } } } @Override public void teardownTest(BackendListenerContext context) throws Exception { + samplersToFilter.clear(); telemetryClient.flush(); super.teardownTest(context); } diff --git a/src/test/java/io/github/adrianmo/jmeter/backendlistener/azure/TestAzureBackendClient.java b/src/test/java/io/github/adrianmo/jmeter/backendlistener/azure/TestAzureBackendClient.java index 4151ff8..64cbbf4 100644 --- a/src/test/java/io/github/adrianmo/jmeter/backendlistener/azure/TestAzureBackendClient.java +++ b/src/test/java/io/github/adrianmo/jmeter/backendlistener/azure/TestAzureBackendClient.java @@ -9,9 +9,11 @@ import org.junit.runner.RunWith; import org.mockito.InjectMocks; import org.mockito.Mock; +import org.mockito.internal.util.reflection.Whitebox; import org.mockito.runners.MockitoJUnitRunner; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; import static junit.framework.TestCase.fail; @@ -34,6 +36,8 @@ public void setUp() { Arguments args = new Arguments(); args.addArgument("testName", "test-1"); context = new BackendListenerContext(args); + Whitebox.setInternalState(client, "testName", "test-1"); + Whitebox.setInternalState(client, "samplersToFilter", new HashSet<>()); } @Test