├── .github └── workflows │ └── pr.yml ├── .gitignore ├── .travis.yml.bak ├── LICENSE ├── NOTICE ├── README ├── README.md ├── downloads.py ├── examples ├── ActiveThreadsOverTimeExample.jmx ├── All_Plugins.jmx ├── AsyncDownloadTutorial.jmx ├── AtlantBH_test.jmx ├── AutoStopExample_ErrRate.jmx ├── AutoStopExample_Time.jmx ├── BytesThroughputExample.jmx ├── ComplexExample.jmx ├── CompositeGraphExample.jmx ├── DNS_Test_Example.jmx ├── DummySamplerExample.jmx ├── F-Online.jmx ├── FFWTutorial_FakeSampler.jmx ├── FlexibleFileWriterExample.jmx ├── JSONPathExtractorExample.jmx ├── LimitedRuntimeExample.jmx ├── LoadTestBPP.jmx ├── LoadosophiaExample.jmx ├── NewPerfMonTest.jmx ├── PageDataExtractorExample.jmx ├── ParameterizedControllerExample.jmx ├── RawDataSourceExample.jmx ├── RawRequestExample.jmx ├── RedisDataSetExample.jmx ├── ResponseTimePercentilesExample.jmx ├── SetVariablesAction.jmx ├── SpiderExample.jmx ├── SteppingThreadGroupExample.jmx ├── SynchronizationExample.jmx ├── SynchronizationPluginsExample.jmx ├── ThroughputShapingExample.jmx ├── UDPRequestExample.jmx ├── XMPP.jmx ├── demo_sts_add_save.jmx ├── demo_sts_read_first_remove.jmx ├── demo_sts_read_random.jmx ├── demo_sts_read_random_for2slaves.jmx └── logins.csv ├── graphs ├── graphs-additional │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ └── kg │ │ │ └── apc │ │ │ └── jmeter │ │ │ └── vizualizers │ │ │ ├── BytesThroughputOverTimeGui.java │ │ │ ├── ConnectTimesOverTimeGui.java │ │ │ ├── HitsPerSecondGui.java │ │ │ ├── LatenciesOverTimeGui.java │ │ │ └── ResponseCodesPerSecondGui.java │ │ └── test │ │ └── java │ │ └── kg │ │ └── apc │ │ └── jmeter │ │ └── vizualizers │ │ ├── BytesThroughputOverTimeGuiTest.java │ │ ├── ConnectTimesOverTimeGuiTest.java │ │ ├── HitsPerSecondGuiTest.java │ │ ├── LatenciesOverTimeGuiTest.java │ │ └── ResponseCodesPerSecondGuiTest.java ├── graphs-basic │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ └── kg │ │ │ └── apc │ │ │ └── jmeter │ │ │ └── vizualizers │ │ │ ├── ResponseTimesOverTimeGui.java │ │ │ ├── ThreadsStateOverTimeGui.java │ │ │ └── TransactionsPerSecondGui.java │ │ └── test │ │ └── java │ │ └── kg │ │ └── apc │ │ └── jmeter │ │ └── vizualizers │ │ ├── ResponseTimesOverTimeGuiTest.java │ │ ├── ThreadsStateOverTimeGuiTest.java │ │ └── TransactionsPerSecondGuiTest.java ├── graphs-composite │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ └── kg │ │ │ └── apc │ │ │ └── jmeter │ │ │ └── vizualizers │ │ │ ├── CompositeGraphGui.java │ │ │ ├── CompositeGraphRow.java │ │ │ ├── JCompositeRowsSelectorPanel.form │ │ │ └── JCompositeRowsSelectorPanel.java │ │ └── test │ │ └── java │ │ └── kg │ │ └── apc │ │ └── jmeter │ │ └── vizualizers │ │ ├── CompositeGraphGuiTest.java │ │ ├── CompositeModelTest.java │ │ ├── CompositeResultCollectorTest.java │ │ └── JCompositeRowsSelectorPanelTest.java ├── graphs-dist │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ └── kg │ │ │ └── apc │ │ │ └── jmeter │ │ │ └── vizualizers │ │ │ ├── ResponseTimesDistributionGui.java │ │ │ └── ResponseTimesPercentilesGui.java │ │ └── test │ │ └── java │ │ └── kg │ │ └── apc │ │ └── jmeter │ │ └── vizualizers │ │ ├── ResponseTimesDistributionGuiTest.java │ │ └── ResponseTimesPercentilesGuiTest.java ├── graphs-vs │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ └── kg │ │ │ └── apc │ │ │ └── jmeter │ │ │ └── vizualizers │ │ │ ├── ThroughputVsThreadsGui.java │ │ │ └── TimesVsThreadsGui.java │ │ └── test │ │ └── java │ │ └── kg │ │ └── apc │ │ └── jmeter │ │ └── vizualizers │ │ ├── SamplesVsThreadsGuiTest.java │ │ ├── ThroughputVsThreadsGuiTest.java │ │ └── TimesVsThreadsGuiTest.java └── pom.xml ├── infra ├── common-io │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ └── kg │ │ │ └── apc │ │ │ ├── io │ │ │ ├── BinaryUtils.java │ │ │ ├── DatagramChannelWithTimeouts.java │ │ │ └── SocketChannelWithTimeouts.java │ │ │ └── jmeter │ │ │ └── samplers │ │ │ └── AbstractIPSampler.java │ │ └── test │ │ └── java │ │ └── kg │ │ └── apc │ │ ├── io │ │ ├── DatagramChannelWithTimeoutsTest.java │ │ └── SocketChannelWithTimeoutsTest.java │ │ └── jmeter │ │ └── samplers │ │ └── AbstractIPSamplerTest.java ├── common │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── kg │ │ │ │ └── apc │ │ │ │ ├── charting │ │ │ │ ├── AbstractGraphPanelChartElement.java │ │ │ │ ├── AbstractGraphRow.java │ │ │ │ ├── ChartSettings.java │ │ │ │ ├── ColorsDispatcher.java │ │ │ │ ├── ColorsDispatcherFactory.java │ │ │ │ ├── CubicSpline.java │ │ │ │ ├── DateTimeRenderer.java │ │ │ │ ├── DividerRenderer.java │ │ │ │ ├── GraphModelToCsvExporter.java │ │ │ │ ├── GraphPanelChart.java │ │ │ │ ├── LabelToColorMapping.java │ │ │ │ ├── colors │ │ │ │ │ ├── CustomPalette.java │ │ │ │ │ ├── CycleColors.java │ │ │ │ │ └── HueRotatePalette.java │ │ │ │ ├── elements │ │ │ │ │ ├── GraphPanelChartAverageElement.java │ │ │ │ │ ├── GraphPanelChartExactElement.java │ │ │ │ │ ├── GraphPanelChartSimpleElement.java │ │ │ │ │ └── GraphPanelChartSumElement.java │ │ │ │ ├── plotters │ │ │ │ │ ├── AbstractRowPlotter.java │ │ │ │ │ ├── BarRowPlotter.java │ │ │ │ │ ├── CSplineRowPlotter.java │ │ │ │ │ └── LineRowPlotter.java │ │ │ │ └── rows │ │ │ │ │ ├── GraphRowAverages.java │ │ │ │ │ ├── GraphRowExactValues.java │ │ │ │ │ ├── GraphRowOverallAverages.java │ │ │ │ │ ├── GraphRowPercentiles.java │ │ │ │ │ ├── GraphRowSimple.java │ │ │ │ │ └── GraphRowSumValues.java │ │ │ │ ├── jmeter │ │ │ │ ├── DummyEvaluator.java │ │ │ │ ├── JMeterPluginsUtils.java │ │ │ │ ├── JMeterVariableEvaluator.java │ │ │ │ ├── graphs │ │ │ │ │ ├── AbstractGraphPanelVisualizer.java │ │ │ │ │ ├── AbstractMonitoringVisualizer.java │ │ │ │ │ ├── AbstractOverTimeVisualizer.java │ │ │ │ │ ├── AbstractVsThreadVisualizer.java │ │ │ │ │ ├── ChartRowsTable.java │ │ │ │ │ ├── ColorRenderer.java │ │ │ │ │ ├── CompositeNotifierInterface.java │ │ │ │ │ ├── GraphPanel.java │ │ │ │ │ ├── GraphRendererInterface.java │ │ │ │ │ ├── HeaderAsTextRenderer.java │ │ │ │ │ ├── HeaderClickCheckAllListener.java │ │ │ │ │ ├── JRowsSelectorPanel.form │ │ │ │ │ ├── JRowsSelectorPanel.java │ │ │ │ │ └── SettingsInterface.java │ │ │ │ ├── gui │ │ │ │ │ ├── AddRowAction.java │ │ │ │ │ ├── BrowseAction.java │ │ │ │ │ ├── ButtonPanelAddCopyRemove.java │ │ │ │ │ ├── ComponentBorder.java │ │ │ │ │ ├── CopyRowAction.java │ │ │ │ │ ├── CustomNumberRenderer.java │ │ │ │ │ ├── DeleteRowAction.java │ │ │ │ │ ├── DialogFactory.java │ │ │ │ │ ├── Grid.java │ │ │ │ │ ├── GuiBuilderHelper.java │ │ │ │ │ ├── IntegerInputVerifier.java │ │ │ │ │ └── JAbsrtactDialogPanel.java │ │ │ │ └── vizualizers │ │ │ │ │ ├── CompositeModel.java │ │ │ │ │ ├── CompositeResultCollector.java │ │ │ │ │ ├── CorrectedResultCollector.java │ │ │ │ │ ├── JSettingsPanel.form │ │ │ │ │ ├── JSettingsPanel.java │ │ │ │ │ ├── MonitoringResultsCollector.java │ │ │ │ │ ├── MonitoringSampleGenerator.java │ │ │ │ │ ├── MonitoringSampleResult.java │ │ │ │ │ └── MonitoringSampler.java │ │ │ │ └── logging │ │ │ │ ├── LoggingConfigurator.java │ │ │ │ └── LoggingUtils.java │ │ └── resources │ │ │ └── kg │ │ │ └── apc │ │ │ └── jmeter │ │ │ ├── img │ │ │ ├── checks.png │ │ │ ├── copy.png │ │ │ ├── export.png │ │ │ ├── graph.png │ │ │ ├── maximize.png │ │ │ ├── restore.png │ │ │ ├── save.png │ │ │ └── settings.png │ │ │ └── vizualizers │ │ │ ├── cross.png │ │ │ ├── folder.png │ │ │ ├── folderLink.png │ │ │ ├── information.png │ │ │ ├── leftArrow.png │ │ │ ├── logoSimple.png │ │ │ ├── rightArrow.png │ │ │ ├── tick.png │ │ │ ├── treeLeaf.png │ │ │ └── wand.png │ │ └── test │ │ ├── java │ │ └── kg │ │ │ └── apc │ │ │ ├── charting │ │ │ ├── AbstractGraphPanelChartElementTest.java │ │ │ ├── AbstractGraphRowTest.java │ │ │ ├── ChartSettingsTest.java │ │ │ ├── CubicSplineTest.java │ │ │ ├── DateTimeRendererTest.java │ │ │ ├── DividerRendererTest.java │ │ │ ├── GraphModelToCsvExporterTest.java │ │ │ ├── GraphPanelChartTest.java │ │ │ ├── LabelToColorMappingTest.java │ │ │ ├── colors │ │ │ │ ├── CustomPaletteTest.java │ │ │ │ ├── CycleColorsTest.java │ │ │ │ └── HueRotateTest.java │ │ │ ├── elements │ │ │ │ ├── GraphPanelChartAverageElementTest.java │ │ │ │ ├── GraphPanelChartExactElementTest.java │ │ │ │ ├── GraphPanelChartSimpleElementTest.java │ │ │ │ └── GraphPanelChartSumElementTest.java │ │ │ ├── plotters │ │ │ │ ├── AbstractRowPlotterTest.java │ │ │ │ ├── BarRowPlotterTest.java │ │ │ │ ├── CSplineRowPlotterTest.java │ │ │ │ └── LineRowPlotterTest.java │ │ │ └── rows │ │ │ │ ├── GraphRowAveragesTest.java │ │ │ │ ├── GraphRowExactValuesTest.java │ │ │ │ ├── GraphRowOverallAveragesTest.java │ │ │ │ ├── GraphRowPercentilesTest.java │ │ │ │ ├── GraphRowSimpleTest.java │ │ │ │ └── GraphRowSumValuesTest.java │ │ │ └── jmeter │ │ │ ├── JMeterPluginsUtilsTest.java │ │ │ ├── bin │ │ │ └── saveservice.properties │ │ │ ├── graphs │ │ │ ├── AbstractGraphPanelVisualizerTest.java │ │ │ ├── AbstractMonitoringVisualizerTest.java │ │ │ ├── AbstractOverTimeVisualizerTest.java │ │ │ ├── AbstractVsThreadVisualizerTest.java │ │ │ ├── ChartRowsTableTest.java │ │ │ ├── ColorRendererTest.java │ │ │ ├── CompositeNotifierInterfaceTest.java │ │ │ ├── GraphPanelTest.java │ │ │ ├── GraphRendererInterfaceTest.java │ │ │ ├── HeaderAsTextRendererTest.java │ │ │ ├── HeaderClickCheckAllListenerTest.java │ │ │ ├── JRowsSelectorPanelTest.java │ │ │ └── SettingsInterfaceTest.java │ │ │ ├── gui │ │ │ ├── AddRowActionTest.java │ │ │ ├── BrowseActionTest.java │ │ │ ├── ButtonPanelAddCopyRemoveTest.java │ │ │ ├── ComponentBorderTest.java │ │ │ ├── CopyRowActionTest.java │ │ │ ├── CustomNumberRendererTest.java │ │ │ ├── DeleteRowActionTest.java │ │ │ ├── DialogFactoryTest.java │ │ │ ├── GuiBuilderHelperTest.java │ │ │ ├── IntegerInputVerifierTest.java │ │ │ ├── JAbsrtactDialogPanelTest.java │ │ │ └── TableModelEmul.java │ │ │ ├── short.jtl │ │ │ └── vizualizers │ │ │ ├── CompositeResultCollectorTest.java │ │ │ ├── CorrectedResultCollectorTest.java │ │ │ ├── JSettingsPanelTest.java │ │ │ ├── MonitoringResultsCollectorTest.java │ │ │ ├── MonitoringSampleGeneratorTest.java │ │ │ ├── MonitoringSampleResultTest.java │ │ │ └── MonitoringSamplerTest.java │ │ └── resources │ │ └── kg │ │ └── apc │ │ └── charting │ │ └── export.csv ├── emulators │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── kg │ │ │ └── apc │ │ │ └── emulators │ │ │ ├── DatagramChannelEmul.java │ │ │ ├── DatagramSocketEmulator.java │ │ │ ├── DirectoryAnchor.java │ │ │ ├── EmulatorJmeterEngine.java │ │ │ ├── EmulatorThreadMonitor.java │ │ │ ├── FileChannelEmul.java │ │ │ ├── FileChooserEmul.java │ │ │ ├── FileLockEmul.java │ │ │ ├── FilesTestTools.java │ │ │ ├── Graphics2DEmul.java │ │ │ ├── SelectionKeyEmul.java │ │ │ ├── SelectorEmul.java │ │ │ ├── ServerSocketChannelEmul.java │ │ │ ├── ServerSocketEmulator.java │ │ │ ├── SocketChannelEmul.java │ │ │ ├── SocketEmulator.java │ │ │ ├── SocketEmulatorInputStream.java │ │ │ ├── SocketEmulatorOutputStream.java │ │ │ ├── TestFontMetrics.java │ │ │ ├── TestGraphics.java │ │ │ ├── TestJMeterUtils.java │ │ │ └── TestSocketFactory.java │ │ └── resources │ │ ├── anchor.properties │ │ └── kg │ │ └── apc │ │ └── jmeter │ │ └── bin │ │ └── saveservice.properties └── pom.xml ├── local-build.sh ├── maven-bundle.sh ├── plugins ├── autostop │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── kg │ │ │ │ └── apc │ │ │ │ └── jmeter │ │ │ │ └── reporters │ │ │ │ ├── AutoStop.java │ │ │ │ ├── AutoStopGui.java │ │ │ │ ├── JAutoStopPanel.form │ │ │ │ └── JAutoStopPanel.java │ │ └── resources │ │ │ └── kg │ │ │ └── apc │ │ │ └── jmeter │ │ │ └── reporters │ │ │ └── bulletGreen.png │ │ └── test │ │ └── java │ │ └── kg │ │ └── apc │ │ └── jmeter │ │ └── reporters │ │ ├── AutoStopGuiTest.java │ │ ├── AutoStopTest.java │ │ └── JAutoStopPanelTest.java ├── casutg │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ ├── com │ │ │ └── blazemeter │ │ │ │ └── jmeter │ │ │ │ ├── control │ │ │ │ └── VirtualUserController.java │ │ │ │ ├── gui │ │ │ │ └── ArrangedLabelFieldPanel.java │ │ │ │ ├── reporters │ │ │ │ └── FlushingResultCollector.java │ │ │ │ └── threads │ │ │ │ ├── AbstractDynamicThreadGroup.java │ │ │ │ ├── AbstractDynamicThreadGroupGui.java │ │ │ │ ├── AbstractDynamicThreadGroupModel.java │ │ │ │ ├── AbstractThreadStarter.java │ │ │ │ ├── AdditionalFieldsPanel.java │ │ │ │ ├── DynamicThread.java │ │ │ │ ├── LoadParamsFieldsPanel.java │ │ │ │ ├── ParamsPanel.java │ │ │ │ ├── arrivals │ │ │ │ ├── ArrivalsThreadGroup.java │ │ │ │ ├── ArrivalsThreadGroupGui.java │ │ │ │ ├── ArrivalsThreadStarter.java │ │ │ │ ├── FreeFormArrivalsThreadGroup.java │ │ │ │ ├── FreeFormArrivalsThreadGroupGui.java │ │ │ │ ├── FreeFormArrivalsThreadStarter.java │ │ │ │ └── FreeFormLoadPanel.java │ │ │ │ └── concurrency │ │ │ │ ├── ConcurrencyThreadGroup.java │ │ │ │ ├── ConcurrencyThreadGroupGui.java │ │ │ │ └── ConcurrencyThreadStarter.java │ │ │ ├── kg │ │ │ └── apc │ │ │ │ └── jmeter │ │ │ │ └── threads │ │ │ │ ├── AbstractSimpleThreadGroup.java │ │ │ │ ├── SteppingThreadGroup.java │ │ │ │ ├── SteppingThreadGroupGui.java │ │ │ │ ├── UltimateThreadGroup.java │ │ │ │ └── UltimateThreadGroupGui.java │ │ │ └── org │ │ │ └── apache │ │ │ └── jmeter │ │ │ └── threads │ │ │ └── ThreadCountsAccessor.java │ │ └── test │ │ └── java │ │ ├── com │ │ └── blazemeter │ │ │ └── jmeter │ │ │ ├── control │ │ │ └── VirtualUserControllerTest.java │ │ │ └── threads │ │ │ ├── arrivals │ │ │ ├── ArrivalsThreadGroupEmul.java │ │ │ ├── ArrivalsThreadGroupGuiTest.java │ │ │ ├── ArrivalsThreadGroupTest.java │ │ │ ├── FreeFormArrivalsThreadGroupGuiTest.java │ │ │ └── FreeFormArrivalsThreadStarterTest.java │ │ │ └── concurrency │ │ │ ├── ConcurrencyThreadGroupGuiTest.java │ │ │ ├── ConcurrencyThreadGroupTest.java │ │ │ └── ConcurrencyThreadStarterTest.java │ │ └── kg │ │ └── apc │ │ └── jmeter │ │ └── threads │ │ ├── AbstractSimpleThreadGroupImpl.java │ │ ├── AbstractSimpleThreadGroupTest.java │ │ ├── SteppingThreadGroupGuiTest.java │ │ ├── SteppingThreadGroupTest.java │ │ ├── UltimateThreadGroupGuiTest.java │ │ └── UltimateThreadGroupTest.java ├── csl │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ └── kg │ │ │ └── apc │ │ │ └── jmeter │ │ │ └── reporters │ │ │ ├── ConsoleStatusLogger.java │ │ │ └── ConsoleStatusLoggerGui.java │ │ └── test │ │ └── java │ │ └── kg │ │ └── apc │ │ └── jmeter │ │ └── reporters │ │ ├── ConsoleStatusLoggerGuiTest.java │ │ └── ConsoleStatusLoggerTest.java ├── csvars │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ └── kg │ │ │ └── apc │ │ │ └── jmeter │ │ │ └── config │ │ │ ├── TestCsvFileAction.java │ │ │ ├── VariableFromCsvFileReader.java │ │ │ ├── VariablesFromCSV.java │ │ │ └── VariablesFromCSVGui.java │ │ └── test │ │ ├── java │ │ └── kg │ │ │ └── apc │ │ │ └── jmeter │ │ │ └── config │ │ │ ├── TestCsvFileActionTest.java │ │ │ ├── VariableFromCsvFileReaderTest.java │ │ │ ├── VariablesFromCSVGuiTest.java │ │ │ └── VariablesFromCSVTest.java │ │ └── resources │ │ └── kg │ │ └── apc │ │ └── jmeter │ │ └── config │ │ ├── CSVSample_user.csv │ │ └── csvFileTest.csv ├── dbmon │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ └── kg │ │ │ └── apc │ │ │ └── jmeter │ │ │ ├── dbmon │ │ │ ├── DbMonCollector.java │ │ │ ├── DbMonSampleGenerator.java │ │ │ ├── DbMonSampleResult.java │ │ │ └── DbMonSampler.java │ │ │ └── vizualizers │ │ │ └── DbMonGui.java │ │ └── test │ │ └── java │ │ └── kg │ │ └── apc │ │ └── jmeter │ │ ├── dbmon │ │ ├── ConnectionEmul.java │ │ ├── DbMonCollectorTest.java │ │ ├── DbMonSampleGeneratorEmul.java │ │ ├── DbMonSampleGeneratorTest.java │ │ ├── DbMonSampleResultTest.java │ │ ├── DbMonSamplerTest.java │ │ ├── DbmonTest.java │ │ ├── ResultSetEmul.java │ │ ├── StatementEmul.java │ │ └── TestConnection.java │ │ └── vizualizers │ │ └── DbMonGuiTest.java ├── deprecated │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ ├── com │ │ │ └── atlantbh │ │ │ │ └── jmeter │ │ │ │ └── plugins │ │ │ │ └── xmlformatter │ │ │ │ ├── XMLFormatPostProcessor.java │ │ │ │ ├── XmlUtil.java │ │ │ │ └── gui │ │ │ │ └── XMLFormatPostProcessorGui.java │ │ │ └── kg │ │ │ └── apc │ │ │ └── jmeter │ │ │ └── config │ │ │ ├── AddRemoteServerAction.java │ │ │ ├── DistributedTestControl.java │ │ │ ├── DistributedTestControlGui.java │ │ │ ├── JMeterServerPanel.java │ │ │ ├── RemoveServerAction.java │ │ │ └── ServersListPanel.java │ │ └── test │ │ └── java │ │ ├── com │ │ └── atlantbh │ │ │ └── jmeter │ │ │ └── plugins │ │ │ └── xmlformatter │ │ │ ├── XMLFormatPostProcessorTest.java │ │ │ ├── XmlUtilTest.java │ │ │ └── gui │ │ │ └── XMLFormatPostProcessorGuiTest.java │ │ └── kg │ │ └── apc │ │ └── jmeter │ │ └── config │ │ └── ServersListPanelTest.java ├── dummy │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ └── kg │ │ │ └── apc │ │ │ └── jmeter │ │ │ ├── dummy │ │ │ ├── DummyElement.java │ │ │ └── DummyPanel.java │ │ │ ├── modifiers │ │ │ ├── DummySubPostProcessor.java │ │ │ └── DummySubPostProcessorGui.java │ │ │ └── samplers │ │ │ ├── DummySampler.java │ │ │ └── DummySamplerGui.java │ │ └── test │ │ └── java │ │ └── kg │ │ └── apc │ │ └── jmeter │ │ ├── modifiers │ │ ├── DummySubPostProcessorGuiTest.java │ │ └── DummySubPostProcessorTest.java │ │ └── samplers │ │ ├── DummySamplerGuiTest.java │ │ └── DummySamplerTest.java ├── ffw │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ └── kg │ │ │ └── apc │ │ │ └── jmeter │ │ │ └── reporters │ │ │ ├── FlexibleFileWriter.java │ │ │ └── FlexibleFileWriterGui.java │ │ └── test │ │ └── java │ │ └── kg │ │ └── apc │ │ └── jmeter │ │ └── reporters │ │ ├── FlexibleFileWriterGuiTest.java │ │ └── FlexibleFileWriterTest.java ├── fifo │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ └── kg │ │ │ └── apc │ │ │ └── jmeter │ │ │ ├── functions │ │ │ ├── FifoGet.java │ │ │ ├── FifoPop.java │ │ │ ├── FifoPut.java │ │ │ └── FifoSize.java │ │ │ └── modifiers │ │ │ ├── FifoMap.java │ │ │ ├── FifoPopPreProcessor.java │ │ │ ├── FifoPopPreProcessorGui.java │ │ │ ├── FifoPutPostProcessor.java │ │ │ └── FifoPutPostProcessorGui.java │ │ └── test │ │ └── java │ │ └── kg │ │ └── apc │ │ └── jmeter │ │ ├── functions │ │ ├── FifoGetTest.java │ │ ├── FifoPopTest.java │ │ ├── FifoPutTest.java │ │ └── FifoSizeTest.java │ │ └── modifiers │ │ ├── FifoMapTest.java │ │ ├── FifoPopPreProcessorGuiTest.java │ │ ├── FifoPopPreProcessorTest.java │ │ ├── FifoPutPostProcessorGuiTest.java │ │ └── FifoPutPostProcessorTest.java ├── functions │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ └── kg │ │ │ └── apc │ │ │ └── jmeter │ │ │ └── functions │ │ │ ├── Base64Decode.java │ │ │ ├── Base64Encode.java │ │ │ ├── CaseFormat.java │ │ │ ├── ChooseRandom.java │ │ │ ├── DoubleSum.java │ │ │ ├── Env.java │ │ │ ├── If.java │ │ │ ├── IsDefined.java │ │ │ ├── IterationNum.java │ │ │ ├── LowerCase.java │ │ │ ├── MD5.java │ │ │ ├── StrLen.java │ │ │ ├── StrReplace.java │ │ │ ├── StrReplaceRegex.java │ │ │ ├── Substring.java │ │ │ └── UpperCase.java │ │ └── test │ │ └── java │ │ └── kg │ │ └── apc │ │ └── jmeter │ │ └── functions │ │ ├── Base64DecodeTest.java │ │ ├── Base64EncodeTest.java │ │ ├── CaseFormatTest.java │ │ ├── ChooseRandomTest.java │ │ ├── DoubleSumTest.java │ │ ├── EnvTest.java │ │ ├── IfTest.java │ │ ├── IsDefinedTest.java │ │ ├── IterationNumTest.java │ │ ├── LowerCaseTest.java │ │ ├── MD5Test.java │ │ ├── StrLenTest.java │ │ ├── SubstringTest.java │ │ └── UpperCaseTest.java ├── httpraw │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ └── kg │ │ │ └── apc │ │ │ └── jmeter │ │ │ ├── EndOfFileException.java │ │ │ ├── RuntimeEOFException.java │ │ │ ├── modifiers │ │ │ ├── CheckConsistencyAction.java │ │ │ ├── RawRequestSourcePreProcessor.java │ │ │ └── RawRequestSourcePreProcessorGui.java │ │ │ └── samplers │ │ │ ├── HTTPRawSampler.java │ │ │ └── HTTPRawSamplerGui.java │ │ └── test │ │ ├── java │ │ └── kg │ │ │ └── apc │ │ │ └── jmeter │ │ │ ├── EndOfFileExceptionTest.java │ │ │ ├── RuntimeEOFExceptionTest.java │ │ │ ├── modifiers │ │ │ ├── CheckConsistencyActionTest.java │ │ │ ├── RawRequestSourcePreProcessorGuiTest.java │ │ │ └── RawRequestSourcePreProcessorTest.java │ │ │ └── samplers │ │ │ ├── HTTPRawSamplerGuiTest.java │ │ │ └── HTTPRawSamplerTest.java │ │ └── resources │ │ ├── protobuf.one.ammo │ │ ├── rawdata_broken.txt │ │ ├── rawdata_crlf_metaline.txt │ │ ├── rawdata_nonzeroterm.txt │ │ ├── rawdata_zeroterm_looped.txt │ │ ├── testSendFile.raw │ │ └── testSendFile_1.raw ├── jms │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ └── com │ │ │ └── atlantbh │ │ │ └── jmeter │ │ │ └── plugins │ │ │ └── jmstools │ │ │ ├── BinaryMessageConverter.java │ │ │ ├── BinaryMessagepostProcessor.java │ │ │ └── JmsUtil.java │ │ └── test │ │ └── java │ │ └── com │ │ └── atlantbh │ │ └── jmeter │ │ └── plugins │ │ └── jmstools │ │ ├── BinaryMessageConverterTest.java │ │ ├── BinaryMessagepostProcessorTest.java │ │ ├── BytesMessageEmul.java │ │ ├── JmsUtilTest.java │ │ ├── MessageEmul.java │ │ └── SessionEmul.java ├── jmxmon │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ └── kg │ │ │ └── apc │ │ │ └── jmeter │ │ │ ├── jmxmon │ │ │ ├── JMXMonCollector.java │ │ │ ├── JMXMonConnectionPool.java │ │ │ ├── JMXMonSampleGenerator.java │ │ │ ├── JMXMonSampleResult.java │ │ │ └── JMXMonSampler.java │ │ │ └── vizualizers │ │ │ └── JMXMonGui.java │ │ └── test │ │ └── java │ │ └── kg │ │ └── apc │ │ └── jmeter │ │ ├── jmxmon │ │ ├── JMXConnectorEmul.java │ │ ├── JMXMonCollectorTest.java │ │ ├── JMXMonConnectionPoolTest.java │ │ ├── JMXMonSampleGeneratorEmul.java │ │ ├── JMXMonSampleGeneratorTest.java │ │ ├── JMXMonSampleResultTest.java │ │ ├── JMXMonSamplerTest.java │ │ ├── JMXMonSuite.java │ │ ├── JMXMonTest.java │ │ ├── JMeterPropertyEmul.java │ │ ├── MBeanServerConnectionEmul.java │ │ ├── TestJMXMonCollector.java │ │ └── rmi │ │ │ └── ClientProvider.java │ │ └── vizualizers │ │ └── JMXMonGuiTest.java ├── json │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ └── com │ │ │ └── atlantbh │ │ │ └── jmeter │ │ │ └── plugins │ │ │ ├── jsontoxmlconverter │ │ │ ├── JSONToXMLConverter.java │ │ │ └── gui │ │ │ │ └── JSONToXMLConverterGui.java │ │ │ └── jsonutils │ │ │ ├── YAMLToJSONConverter.java │ │ │ ├── jsonformatter │ │ │ ├── JSONFormatter.java │ │ │ └── gui │ │ │ │ └── JSONFormatterGui.java │ │ │ ├── jsonpathassertion │ │ │ ├── JSONPathAssertion.java │ │ │ └── gui │ │ │ │ └── JSONPathAssertionGui.java │ │ │ └── jsonpathextractor │ │ │ ├── JSONPathExtractor.java │ │ │ └── gui │ │ │ └── JSONPathExtractorGui.java │ │ └── test │ │ ├── java │ │ └── com │ │ │ └── atlantbh │ │ │ └── jmeter │ │ │ └── plugins │ │ │ ├── jsontoxmlconverter │ │ │ ├── JSONToXMLConverterTest.java │ │ │ └── gui │ │ │ │ └── JSONToXMLConverterGuiTest.java │ │ │ └── jsonutils │ │ │ ├── jsonformatter │ │ │ ├── JSONFormatterTest.java │ │ │ └── gui │ │ │ │ └── JSONFormatterGuiTest.java │ │ │ ├── jsonpathassertion │ │ │ ├── JSONPathAssertionTest.java │ │ │ └── gui │ │ │ │ └── JSONPathAssertionGuiTest.java │ │ │ └── jsonpathextractor │ │ │ ├── JSONPathExtractorTest.java │ │ │ └── gui │ │ │ └── JSONPathExtractorGuiTest.java │ │ └── resources │ │ ├── test.yml │ │ └── test1.yml ├── lockfile │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ └── kg │ │ │ └── apc │ │ │ └── jmeter │ │ │ └── config │ │ │ ├── LockFile.java │ │ │ └── LockFileGui.java │ │ └── test │ │ └── java │ │ └── kg │ │ └── apc │ │ └── jmeter │ │ └── config │ │ ├── LockFileGuiTest.java │ │ └── LockFileTest.java ├── oauth │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ └── com │ │ │ └── atlantbh │ │ │ └── jmeter │ │ │ └── plugins │ │ │ └── oauth │ │ │ ├── OAuthGenerator.java │ │ │ ├── OAuthSampler.java │ │ │ ├── Parameter.java │ │ │ └── gui │ │ │ └── OAuthSamplerGui.java │ │ └── test │ │ └── java │ │ └── com │ │ └── atlantbh │ │ └── jmeter │ │ └── plugins │ │ └── oauth │ │ ├── OAuthGeneratorTest.java │ │ ├── OAuthSamplerEmul.java │ │ ├── OAuthSamplerTest.java │ │ ├── ParameterTest.java │ │ └── gui │ │ └── OAuthSamplerGuiTest.java ├── perfmon │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ └── kg │ │ │ └── apc │ │ │ └── jmeter │ │ │ ├── perfmon │ │ │ ├── NewAgentConnector.java │ │ │ ├── PerfMonAgentConnector.java │ │ │ ├── PerfMonCollector.java │ │ │ ├── PerfMonException.java │ │ │ ├── PerfMonSampleGenerator.java │ │ │ ├── PerfMonSampleResult.java │ │ │ └── UnavailableAgentConnector.java │ │ │ └── vizualizers │ │ │ ├── JPerfmonParamsPanel.form │ │ │ ├── JPerfmonParamsPanel.java │ │ │ └── PerfMonGui.java │ │ └── test │ │ └── java │ │ └── kg │ │ └── apc │ │ └── jmeter │ │ ├── perfmon │ │ ├── NewAgentConnectorTest.java │ │ ├── PerfMonAgentConnectorTest.java │ │ ├── PerfMonCollectorTest.java │ │ ├── PerfMonExceptionTest.java │ │ ├── PerfMonSampleGeneratorTest.java │ │ ├── PerfMonSampleResultTest.java │ │ └── UnavailableAgentConnectorTest.java │ │ └── vizualizers │ │ ├── JPerfmonParamsPanelTest.java │ │ └── PerfMonGuiTest.java ├── pom.xml ├── prmctl │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ └── kg │ │ │ └── apc │ │ │ └── jmeter │ │ │ └── control │ │ │ ├── ParameterizedController.java │ │ │ ├── ParameterizedControllerGui.java │ │ │ └── sampler │ │ │ ├── SetVariablesAction.java │ │ │ └── SetVariablesActionGui.java │ │ └── test │ │ └── java │ │ └── kg │ │ └── apc │ │ └── jmeter │ │ └── control │ │ ├── ParameterizedControllerGuiTest.java │ │ ├── ParameterizedControllerTest.java │ │ └── sampler │ │ ├── SetVariablesActionGuiTest.java │ │ └── SetVariablesActionTest.java ├── redis │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── kg │ │ │ │ └── apc │ │ │ │ └── jmeter │ │ │ │ └── config │ │ │ │ └── redis │ │ │ │ ├── RedisDataSet.java │ │ │ │ └── RedisDataSetBeanInfo.java │ │ └── resources │ │ │ └── kg │ │ │ └── apc │ │ │ └── jmeter │ │ │ └── config │ │ │ └── redis │ │ │ ├── RedisDataSetResources.properties │ │ │ └── RedisDataSetResources_fr.properties │ │ └── test │ │ └── java │ │ └── kg │ │ └── apc │ │ └── jmeter │ │ └── config │ │ └── redis │ │ └── RedisDataSetTest.java ├── tst │ ├── demo.jmx │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ └── kg │ │ │ └── apc │ │ │ └── jmeter │ │ │ └── timers │ │ │ ├── VariableThroughputTimer.java │ │ │ ├── VariableThroughputTimerGui.java │ │ │ └── functions │ │ │ └── TSTFeedback.java │ │ └── test │ │ └── java │ │ └── kg │ │ └── apc │ │ └── jmeter │ │ └── timers │ │ ├── VariableThroughputTimerGuiTest.java │ │ ├── VariableThroughputTimerTest.java │ │ └── functions │ │ └── TSTFeedbackTest.java ├── udp │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ └── kg │ │ │ └── apc │ │ │ └── jmeter │ │ │ └── samplers │ │ │ ├── DNSJavaDecoder.java │ │ │ ├── DNSJavaDecoderToRawData.java │ │ │ ├── DNSJavaTCPClientImpl.java │ │ │ ├── HexStringUDPDecoder.java │ │ │ ├── UDPSampler.java │ │ │ ├── UDPSamplerGui.java │ │ │ └── UDPTrafficDecoder.java │ │ └── test │ │ └── java │ │ └── kg │ │ └── apc │ │ └── jmeter │ │ └── samplers │ │ ├── HexStringUDPDecoderTest.java │ │ ├── UDPSamplerGuiTest.java │ │ ├── UDPSamplerTest.java │ │ └── UDPTrafficDecoderTest.java └── xml │ ├── pom.xml │ └── src │ ├── main │ └── java │ │ └── com │ │ └── atlantbh │ │ └── jmeter │ │ └── plugins │ │ └── xmlformatter │ │ ├── XMLFormatPostProcessor.java │ │ ├── XmlUtil.java │ │ └── gui │ │ └── XMLFormatPostProcessorGui.java │ └── test │ └── java │ └── com │ └── atlantbh │ └── jmeter │ └── plugins │ └── xmlformatter │ ├── XMLFormatPostProcessorTest.java │ ├── XmlUtilTest.java │ └── gui │ └── XMLFormatPostProcessorGuiTest.java ├── pom.xml ├── prepare-upload.sh ├── repo_schema.json ├── site-upload.sh ├── site ├── .dockerignore ├── Dockerfile ├── JPGC │ └── PluginsRepository.php ├── cfg.php ├── composer.json ├── dat │ ├── JMeterPlugins.pptx │ ├── counter.tpl │ ├── dl │ │ ├── all.wiki │ │ ├── old.wiki │ │ └── snapshots.wiki │ ├── html │ │ ├── catalogue.html │ │ └── stats.html │ ├── out.xml │ ├── plugins.tpl │ ├── repo │ │ ├── blazemeter.json │ │ ├── jmeter.json │ │ ├── jpgc-graphs.json │ │ ├── jpgc-plugins.json │ │ ├── jpgc-sets.json │ │ ├── jpgc-tools.json │ │ ├── self.json │ │ └── various.json │ └── wiki │ │ ├── ActiveThreadsOverTime.wiki │ │ ├── ArrivalsThreadGroup.wiki │ │ ├── AsyncDownloadTutorial.wiki │ │ ├── AutoStop.wiki │ │ ├── BuildingFromSource.wiki │ │ ├── BytesThroughput.wiki │ │ ├── Changelog.wiki │ │ ├── CompositeGraph.wiki │ │ ├── ConcurrencyThreadGroup.wiki │ │ ├── ConnectTimeOverTime.wiki │ │ ├── ConsoleStatusLogger.wiki │ │ ├── Contributors.wiki │ │ ├── DbMon.wiki │ │ ├── DeveloperGuide.wiki │ │ ├── DummySampler.wiki │ │ ├── FFWTutorials.wiki │ │ ├── FilterResultsTool.wiki │ │ ├── FlexibleFileWriter.wiki │ │ ├── FreeFormArrivalsThreadGroup.wiki │ │ ├── Functions.wiki │ │ ├── GraphsGeneratorListener.wiki │ │ ├── HBaseCRUDSampler.wiki │ │ ├── HBaseConnection.wiki │ │ ├── HBaseRowkeySampler.wiki │ │ ├── HBaseScanSampler.wiki │ │ ├── HDFSOperations.wiki │ │ ├── HadoopJobTracker.wiki │ │ ├── HitsPerSecond.wiki │ │ ├── HttpSimpleTableServer.wiki │ │ ├── Install.wiki │ │ ├── InterThreadCommunication.wiki │ │ ├── JMSSampler.wiki │ │ ├── JMXMon.wiki │ │ ├── JMeterPluginsCMD.wiki │ │ ├── JSONFormatter.wiki │ │ ├── JSONPathAssertion.wiki │ │ ├── JSONPathExtractor.wiki │ │ ├── JSONToXMLConverter.wiki │ │ ├── LatenciesOverTime.wiki │ │ ├── LockFile.wiki │ │ ├── MergeResults.wiki │ │ ├── OAuthSampler.wiki │ │ ├── PageDataExtractor.wiki │ │ ├── ParameterizedController.wiki │ │ ├── PerfMon.wiki │ │ ├── PluginInstall.wiki │ │ ├── PluginRepositoryDescriptorFormat.wiki │ │ ├── PluginsGuiGuidelines.wiki │ │ ├── PluginsManager.wiki │ │ ├── PluginsManagerAutomated.wiki │ │ ├── PluginsManagerNetworkConfiguration.wiki │ │ ├── RawDataSource.wiki │ │ ├── RawRequest.wiki │ │ ├── RedisDataSet.wiki │ │ ├── RespTimePercentiles.wiki │ │ ├── RespTimesDistribution.wiki │ │ ├── ResponseCodesPerSecond.wiki │ │ ├── ResponseTimesOverTime.wiki │ │ ├── ResponseTimesVsThreads.wiki │ │ ├── Roadmap.wiki │ │ ├── SetVariablesAction.wiki │ │ ├── SettingsPanel.wiki │ │ ├── Sidebar.wiki │ │ ├── Start.wiki │ │ ├── SteppingThreadGroup.wiki │ │ ├── SynthesisReport.wiki │ │ ├── TestPlanCheckTool.wiki │ │ ├── ThroughputShapingTimer.wiki │ │ ├── TransactionThroughputVsThreads.wiki │ │ ├── TransactionsPerSecond.wiki │ │ ├── UDPRequest.wiki │ │ ├── UltimateThreadGroup.wiki │ │ ├── VariablesFromCSV.wiki │ │ ├── XMLFormatPostProcessor.wiki │ │ ├── XMPPSet.wiki │ │ └── dns_test_using_jmeter.wiki ├── favicon.ico ├── files │ └── packages │ │ └── index.php ├── img │ ├── feather-vectors.svg │ ├── icons │ │ ├── advanced.png │ │ ├── cart.png │ │ ├── download-icon.png │ │ ├── libs.png │ │ ├── new_wog.gif │ │ └── warning.gif │ ├── logo.png │ ├── logo.svg │ ├── plugins.css │ ├── site │ │ ├── JMeter_logo_big.png │ │ ├── JMeterpluginsLogo5.png │ │ ├── apache-hadoop-hdfs-logo.png │ │ ├── apc.jpg │ │ ├── holiday_lights.gif │ │ ├── jmeter-logo.png │ │ ├── logo.png │ │ ├── logoSimple.png │ │ ├── logo_small.png │ │ ├── null.gif │ │ └── selenium-logo.png │ └── wiki │ │ ├── ArrivalsThreadGroup.png │ │ ├── AutoStop1.png │ │ ├── ConcurrencyThreadGroup.png │ │ ├── FlexibleFileWriter.png │ │ ├── Formatted-xml1.png │ │ ├── FreeFormArrivalsThreadGroup.png │ │ ├── HBaseConnection1.png │ │ ├── HBaseRowkey1.png │ │ ├── HBaseScan1.png │ │ ├── HDFSOperations1.png │ │ ├── HadoopJobTracker2.png │ │ ├── JMSreceive1.png │ │ ├── JMSsend1.png │ │ ├── JSONPathExtractor.png │ │ ├── JSONToXML1.png │ │ ├── OAuth-Sampler.png │ │ ├── PageDataExtractor.png │ │ ├── PageDataExtractorServlet.png │ │ ├── PageDataExtractorTP.png │ │ ├── REST-Sampler.png │ │ ├── UDPRequest.png │ │ ├── Unformattedxml1.png │ │ ├── active_threads_over_time.png │ │ ├── active_threads_over_time_stepping.png │ │ ├── agent_architecture.png │ │ ├── appeal.png │ │ ├── async_tutorial │ │ ├── undera-03c2.png │ │ ├── undera-0a4f.png │ │ ├── undera-0e30.png │ │ ├── undera-514d.png │ │ ├── undera-d399.png │ │ └── undera-fe26.png │ │ ├── build_env1.png │ │ ├── bytes_throughput_over_time.png │ │ ├── chartPopup.png │ │ ├── composite_chart.png │ │ ├── composite_selector.png │ │ ├── config_active_thread_count.png │ │ ├── config_active_thread_count_button.png │ │ ├── dbmon_samples_collector.png │ │ ├── dcerpcsampler.png │ │ ├── dns │ │ ├── screenshot1.png │ │ ├── screenshot10.png │ │ ├── screenshot11.png │ │ ├── screenshot12.png │ │ ├── screenshot13.png │ │ ├── screenshot14.png │ │ ├── screenshot2.png │ │ ├── screenshot3.png │ │ ├── screenshot4.png │ │ ├── screenshot5.png │ │ ├── screenshot6.png │ │ ├── screenshot7.png │ │ ├── screenshot8.png │ │ └── screenshot9.png │ │ ├── dotchart_graph.png │ │ ├── dummy_sampler.png │ │ ├── graphs_filter_panel.png │ │ ├── graphs_period_filter_panel.png │ │ ├── graphs_period_filtered.png │ │ ├── graphs_regex_filter_panel.png │ │ ├── graphs_regex_filtered.png │ │ ├── graphs_unfiltered.png │ │ ├── gui_rules1.png │ │ ├── gui_rules2.png │ │ ├── hits_per_seconds.png │ │ ├── http_simple_table_server.png │ │ ├── http_sts_add_request.png │ │ ├── http_sts_jmeter_archi_distributed_v4.0.png │ │ ├── http_sts_regex_extractor_read_login.png │ │ ├── http_sts_regex_extractor_read_password.png │ │ ├── http_sts_startup_gui.png │ │ ├── jmxmon_samples_collector.png │ │ ├── jmxmon_samples_collector_jconsole1_obj_name.png │ │ ├── jmxmon_samples_collector_jconsole2_attrib.png │ │ ├── jmxmon_samples_collector_jconsole3_attrib_key.png │ │ ├── json_path_assertion.png │ │ ├── listener │ │ └── GraphsGeneratorListener.png │ │ ├── loadJppm.png │ │ ├── lock_file.png │ │ ├── merge_results_start.png │ │ ├── merge_results_test1-2.png │ │ ├── merge_results_test1.png │ │ ├── merge_results_test2.png │ │ ├── merge_results_ui.png │ │ ├── parameterizedcontroller.png │ │ ├── perfmonCPUChart.png │ │ ├── perfmonDiskIOChart.png │ │ ├── perfmonMemChart.png │ │ ├── perfmonNetIOChart.png │ │ ├── perfmonSWAPChart.png │ │ ├── pmgr │ │ ├── pmgr_dialog.png │ │ └── pmgr_menu_item.png │ │ ├── rawdatasource.png │ │ ├── rawrequest.png │ │ ├── redis │ │ ├── RedisDataSet.png │ │ └── TestPlanWithRedisList.png │ │ ├── response_codes_per_second.png │ │ ├── response_latencies_over_time.png │ │ ├── response_times_distribution.png │ │ ├── response_times_over_time.png │ │ ├── response_times_percentiles.png │ │ ├── rowSelection.png │ │ ├── servers_performance_monitoring.png │ │ ├── setVariablesAction.png │ │ ├── settings │ │ ├── aggregated.png │ │ ├── doubleClickToChangeColor.png │ │ ├── draw_current_x.png │ │ ├── final_zeroing_lines.png │ │ ├── labelToColorMapping.png │ │ ├── limit_nb_points.png │ │ ├── noRelative.png │ │ ├── no_gradient.png │ │ ├── normal.png │ │ ├── normal2.png │ │ ├── orangeSpectrum.png │ │ ├── outliers.png │ │ ├── outliers_fixed.png │ │ ├── rampup.png │ │ ├── relative.png │ │ ├── vsThreadNoLimit.png │ │ └── vsThreadWithLimit.png │ │ ├── settingsPanel.png │ │ ├── stepping_thread_group1.png │ │ ├── synchronization.png │ │ ├── synthesis_report.png │ │ ├── throughput_over_time.png │ │ ├── throughput_shaping_timer1.png │ │ ├── throughput_shaping_timer2.png │ │ ├── throughputvsthreads.png │ │ ├── timevsthreads.png │ │ ├── total_transactions_per_seconds.png │ │ ├── transactions_per_seconds.png │ │ ├── ultimate_thread_group1.png │ │ ├── ultimate_thread_group2.png │ │ ├── varsfromcsv1.png │ │ └── varsfromcsv2.png ├── index.php └── robots.txt └── tools ├── cmd ├── pom.xml └── src │ ├── main │ ├── java │ │ └── kg │ │ │ └── apc │ │ │ ├── cmdtools │ │ │ ├── CMDInstaller.java │ │ │ └── ReporterTool.java │ │ │ └── jmeter │ │ │ ├── CMDLineArgumentsProcessor.java │ │ │ └── PluginsCMDWorker.java │ └── resources │ │ └── kg │ │ └── apc │ │ └── cmdtools │ │ ├── JMeterPluginsCMD.bat │ │ └── JMeterPluginsCMD.sh │ └── test │ ├── java │ └── kg │ │ └── apc │ │ ├── cmdtools │ │ └── ReporterToolTest.java │ │ └── jmeter │ │ └── PluginsCMDWorkerTest.java │ └── resources │ └── kg │ └── apc │ └── jmeter │ └── short.jtl ├── filterresults ├── pom.xml └── src │ ├── main │ ├── java │ │ ├── kg │ │ │ └── apc │ │ │ │ └── cmdtools │ │ │ │ ├── FilterResultsInstaller.java │ │ │ │ └── FilterResultsTool.java │ │ └── org │ │ │ └── jmeterplugins │ │ │ ├── tools │ │ │ └── FilterResults.java │ │ │ └── visualizers │ │ │ └── gui │ │ │ └── FilterPanel.java │ └── resources │ │ └── kg │ │ └── apc │ │ └── cmdtools │ │ ├── FilterResults.bat │ │ └── FilterResults.sh │ └── test │ └── java │ └── org │ └── jmeterplugins │ └── visualizers │ └── gui │ └── FilterPanelTest.java ├── graphs-ggl ├── pom.xml └── src │ └── main │ ├── java │ └── kg │ │ └── apc │ │ └── jmeter │ │ └── listener │ │ ├── GraphsGeneratorListener.java │ │ └── GraphsGeneratorListenerBeanInfo.java │ └── resources │ └── kg │ └── apc │ └── jmeter │ └── listener │ └── GraphsGeneratorListenerResources.properties ├── mergeresults ├── pom.xml └── src │ ├── main │ ├── java │ │ ├── kg │ │ │ └── apc │ │ │ │ └── jmeter │ │ │ │ └── vizualizers │ │ │ │ └── MergeResultsGui.java │ │ └── org │ │ │ └── jmeterplugins │ │ │ └── save │ │ │ ├── MergeResultsInstaller.java │ │ │ └── MergeResultsService.java │ └── resources │ │ └── org │ │ └── jmeterplugins │ │ └── save │ │ └── merge-results.properties │ └── test │ └── java │ ├── kg │ └── apc │ │ └── jmeter │ │ └── vizualizers │ │ └── MergeResultsGuiTest.java │ └── org │ └── jmeterplugins │ └── save │ └── MergeResultsServiceTest.java ├── pde ├── pom.xml └── src │ ├── main │ └── java │ │ └── kg │ │ └── apc │ │ └── jmeter │ │ └── vizualizers │ │ └── PageDataExtractorOverTimeGui.java │ └── test │ └── java │ └── kg │ └── apc │ └── jmeter │ └── vizualizers │ └── PageDataExtractorOverTimeGuiTest.java ├── plancheck ├── pom.xml └── src │ ├── main │ ├── java │ │ └── kg │ │ │ └── apc │ │ │ └── cmdtools │ │ │ ├── TestPlanCheckInstaller.java │ │ │ └── TestPlanCheckTool.java │ └── resources │ │ └── kg │ │ └── apc │ │ └── cmdtools │ │ ├── TestPlanCheck.bat │ │ └── TestPlanCheck.sh │ └── test │ ├── java │ └── kg │ │ └── apc │ │ └── cmdtools │ │ └── TestPlanCheckToolTest.java │ └── resources │ └── kg │ └── apc │ └── cmdtools │ ├── Invalid.jmx │ └── Valid.jmx ├── pom.xml ├── synthesis ├── pom.xml └── src │ ├── main │ └── java │ │ └── kg │ │ └── apc │ │ └── jmeter │ │ └── vizualizers │ │ ├── AggregateReportGui.java │ │ └── SynthesisReportGui.java │ └── test │ └── java │ └── kg │ └── apc │ └── jmeter │ └── vizualizers │ ├── AggregateReportGuiTest.java │ └── SynthesisReportGuiTest.java └── table-server ├── pom.xml └── src ├── main ├── java │ └── org │ │ └── jmeterplugins │ │ └── protocol │ │ └── http │ │ └── control │ │ ├── HttpSimpleTableControl.java │ │ ├── HttpSimpleTableServer.java │ │ ├── KeyWaiter.java │ │ ├── NanoHTTPD.java │ │ ├── STSInstaller.java │ │ ├── ServerRunner.java │ │ └── gui │ │ └── HttpSimpleTableControlGui.java └── resources │ └── org │ └── jmeterplugins │ └── protocol │ └── http │ └── control │ ├── NanoHttpd-2.1.0_License.txt │ ├── simple-table-server.bsh │ ├── simple-table-server.cmd │ ├── simple-table-server.groovy │ └── simple-table-server.sh └── test └── java └── org └── jmeterplugins └── protocol └── http └── control ├── HttpSimpleTableControlTest.java ├── HttpSimpleTableServerEmul.java ├── HttpSimpleTableServerTest.java ├── STSInstallerTest.java ├── ServerRunnerTest.java ├── ServerSocketEmul.java └── gui └── HttpSimpleTableControlGuiTest.java /.github/workflows/pr.yml: -------------------------------------------------------------------------------- 1 | name: Build Automation 2 | 3 | on: 4 | push: 5 | branches: [ "master" ] 6 | pull_request: 7 | branches: [ "*" ] 8 | 9 | permissions: 10 | contents: read 11 | 12 | jobs: 13 | build: 14 | runs-on: ubuntu-latest 15 | 16 | steps: 17 | - uses: actions/checkout@v3 18 | 19 | - name: Setup PHP Action 20 | uses: shivammathur/setup-php@2.24.0 21 | with: 22 | php-version: '5.6' 23 | tools: composer 24 | 25 | - name: Prepare upload 26 | run: ./prepare-upload.sh 27 | 28 | - uses: actions/setup-java@v3 29 | with: 30 | distribution: temurin 31 | java-version: '8' 32 | cache: maven 33 | 34 | - name: Maven tests 35 | run: mvn -T 1C -Djava.awt.headless=true -Dmaven.test.redirectTestOutputToFile=true --fail-at-end --batch-mode org.jacoco:jacoco-maven-plugin:prepare-agent test org.jacoco:jacoco-maven-plugin:report install 36 | # working-directory: ./plugins/dummy 37 | 38 | - name: Codecov 39 | uses: codecov/codecov-action@v3.1.1 40 | 41 | - name: Perform upload 42 | run: 'curl --fail -vk https://jmeter-plugins.org/unzip.php -F "zipfile=@upload/site.zip" -H "Authorization: Bearer ${{ secrets.UPLOAD_TOKEN }}"' 43 | if: github.ref == 'refs/heads/master' 44 | 45 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /site/.htaccess 2 | /site/composer.lock 3 | /site/vendor 4 | jmeter.log 5 | /bundle/ 6 | /site/files/ 7 | /site/img/design/ 8 | /site/dat/stats/ 9 | /target/ 10 | /**/target/ 11 | nbactions.xml 12 | dependency-reduced-pom.xml 13 | .idea/ 14 | *.iml 15 | .directory 16 | *~ 17 | .classpath 18 | .project 19 | .settings/ 20 | upload 21 | /editor 22 | plugins/csl/bin/pom.xml 23 | plugins/csl/bin/src/main/java/kg/apc/jmeter/reporters/ConsoleStatusLogger$JMeterLoggerOutputStream.class 24 | plugins/csl/bin/src/main/java/kg/apc/jmeter/reporters/ConsoleStatusLogger.class 25 | plugins/csl/bin/src/main/java/kg/apc/jmeter/reporters/ConsoleStatusLoggerGui.class 26 | plugins/csl/bin/src/test/java/kg/apc/jmeter/reporters/ConsoleStatusLoggerGuiTest.class 27 | plugins/csl/bin/src/test/java/kg/apc/jmeter/reporters/ConsoleStatusLoggerTest.class 28 | -------------------------------------------------------------------------------- /.travis.yml.bak: -------------------------------------------------------------------------------- 1 | language: java 2 | cache: 3 | directories: 4 | - $HOME/.m2 5 | install: 6 | - python -m virtualenv --system-site-packages ./venv && source venv/bin/activate && python -m pip install jsonschema && ./prepare-upload.sh 7 | - mvn -T 1C -Dmaven.test.skip=true clean install --batch-mode 8 | script: 9 | - mvn -T 1C -Djava.awt.headless=true -Dmaven.test.redirectTestOutputToFile=true --fail-at-end --batch-mode org.jacoco:jacoco-maven-plugin:prepare-agent test org.jacoco:jacoco-maven-plugin:report && ./site-upload.sh 10 | after_success: 11 | - bash <(curl -s https://codecov.io/bash) 12 | 13 | -------------------------------------------------------------------------------- /NOTICE: -------------------------------------------------------------------------------- 1 | JMeter-Plugins.org 2 | 3 | This product includes software developed by AtlantBH 4 | Copyright 2011 AtlantBH 5 | AtlantBH Custom Jmeter Components (http://www.atlantbh.com/jmeter-components/) 6 | 7 | This product includes software developed at 8 | The Apache Software Foundation (http://www.apache.org/). 9 | 10 | This product includes software (JSON) developed by 11 | JSON.org. (http://json.org) 12 | 13 | This product includes ASM (http://asm.ow2.org) 14 | Copyright (c) 2000-2011 INRIA, France Telecom 15 | All rights reserved. 16 | 17 | This product includes software developed by 18 | The Legion Of The Bouncy Castle 19 | Copyright (c) 2000 - 2011 The Legion Of The Bouncy Castle (http://www.bouncycastle.org) 20 | 21 | This product includes Hamcrest (www.hamcrest.org) 22 | Copyright (c) 2000-2006, www.hamcrest.org 23 | 24 | This product includes HSQLDB (http://hsqldb.org) 25 | Copyright (c) 2001-2010, The HSQL Development Group 26 | 27 | This product includes Jettison (http://jettison.codehaus.org) 28 | Copyright 2006 Envoi Solutions LLC 29 | 30 | This product includes XOM (http://www.xom.nu) 31 | Copyright (C) 2002, 2004 Elliotte Rusty Harold -------------------------------------------------------------------------------- /README: -------------------------------------------------------------------------------- 1 | # J M E T E R - P L U G I N S . ORG 2 | 3 | 1. What is it? 4 | This library contains additional plugins for Apache JMeter Tool. 5 | See project site here: http://jmeter-plugins.org/ 6 | 7 | 2. Installation and Usage 8 | Just copy the JAR file into JMeter's lib/ext directory. 9 | Then you can start JMeter and add additional items to your Test Plan. 10 | Java version 1.6 and JMeter 2.4 are required. 11 | Found full installation guide at: 12 | http://jmeter-plugins.org/wiki/PluginInstall 13 | 14 | 3. Latest Downloads, Project Page, Troubleshooting, Feedback 15 | Visit http://jmeter-plugins.org/ for latest information 16 | and downloads. For troubleshooting and feedback use http://groups.google.com/group/jmeter-plugins 17 | 18 | https://travis-ci.org/undera/jmeter-plugins.png 19 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | JMeter Plugins 2 | ============================= 3 | 4 | What is it? 5 | ----------- 6 | A marketplace with additional plugins for Apache JMeter Tool. 7 | The [project site](http://jmeter-plugins.org/) has all the information about installation and usage 8 | 9 | Troubleshooting and Feedback 10 | --------------------------------------------------------- 11 | For troubleshooting and feedback, please get in touch on [our google groups]( http://groups.google.com/group/jmeter-plugins) 12 | -------------------------------------------------------------------------------- /examples/logins.csv: -------------------------------------------------------------------------------- 1 | login1,password1 2 | login2,password2 3 | login3,password3 4 | login4,password4 5 | login5,password5 6 | login6,password6 -------------------------------------------------------------------------------- /graphs/graphs-additional/src/test/java/kg/apc/jmeter/vizualizers/ConnectTimesOverTimeGuiTest.java: -------------------------------------------------------------------------------- 1 | package kg.apc.jmeter.vizualizers; 2 | 3 | import kg.apc.emulators.TestJMeterUtils; 4 | import org.apache.jmeter.samplers.SampleResult; 5 | import org.junit.BeforeClass; 6 | import org.junit.Test; 7 | 8 | public class ConnectTimesOverTimeGuiTest { 9 | @BeforeClass 10 | public static void setUpClass() throws Exception { 11 | TestJMeterUtils.createJmeterEnv(); 12 | } 13 | 14 | @Test 15 | public void testDummies() { 16 | ConnectTimesOverTimeGui obj = new ConnectTimesOverTimeGui(); 17 | obj.getLabelResource(); 18 | } 19 | 20 | @Test 21 | public void testAdd() { 22 | ConnectTimesOverTimeGui obj = new ConnectTimesOverTimeGui(); 23 | SampleResult res=new SampleResult(); 24 | obj.add(res); 25 | } 26 | } -------------------------------------------------------------------------------- /graphs/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 4.0.0 6 | 7 | kg.apc 8 | jmeter-plugins-graphs 9 | 0.1 10 | pom 11 | 12 | 22 | 23 | 24 | graphs-basic 25 | graphs-additional 26 | graphs-composite 27 | graphs-dist 28 | graphs-vs 29 | 30 | -------------------------------------------------------------------------------- /infra/common-io/src/main/java/kg/apc/io/BinaryUtils.java: -------------------------------------------------------------------------------- 1 | package kg.apc.io; 2 | 3 | public class BinaryUtils { 4 | 5 | public static byte[] shortToByteArray(short value) { 6 | byte[] result = new byte[2]; 7 | result[1] = (byte) (value >>> 8); 8 | result[0] = (byte) value; 9 | return result; 10 | } 11 | 12 | 13 | public static long twoBytesToLongVal(byte byte1, byte byte2) { 14 | long short1 = (long) (byte1 & 0xFF); // God knows, how long I searched for this... 15 | long short2 = (long) (byte2 & 0xFF); 16 | 17 | return (short2 << 8) | short1; 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /infra/common/src/main/java/kg/apc/charting/AbstractGraphPanelChartElement.java: -------------------------------------------------------------------------------- 1 | package kg.apc.charting; 2 | 3 | import java.io.Serializable; 4 | 5 | public abstract class AbstractGraphPanelChartElement implements Serializable { 6 | 7 | public abstract double getValue(); 8 | 9 | public abstract void add(double val); 10 | 11 | public boolean isPointRepresentative(int limit) { 12 | return true; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /infra/common/src/main/java/kg/apc/charting/ColorsDispatcher.java: -------------------------------------------------------------------------------- 1 | package kg.apc.charting; 2 | 3 | import java.awt.Color; 4 | import java.io.Serializable; 5 | 6 | /** 7 | * Interface for ColorsDispatcher to providing custom color palettes 8 | */ 9 | public interface ColorsDispatcher extends Serializable { 10 | public void reset(); 11 | public Color getNextColor(); 12 | } 13 | -------------------------------------------------------------------------------- /infra/common/src/main/java/kg/apc/charting/ColorsDispatcherFactory.java: -------------------------------------------------------------------------------- 1 | package kg.apc.charting; 2 | 3 | import java.io.Serializable; 4 | 5 | import org.apache.jmeter.util.JMeterUtils; 6 | import org.slf4j.LoggerFactory; 7 | import org.slf4j.Logger; 8 | import kg.apc.charting.colors.*; 9 | 10 | public class ColorsDispatcherFactory implements Serializable { 11 | 12 | private static final Logger log = LoggerFactory.getLogger(ColorsDispatcherFactory.class); 13 | 14 | public static ColorsDispatcher getColorsDispatcher() { 15 | String customDispatcher = JMeterUtils.getProperty("jmeterPlugin.customColorsDispatcher"); 16 | String customOptions = JMeterUtils.getProperty("jmeterPlugin.customColorsDispatcher.options"); 17 | if (customDispatcher != null) { 18 | if (customDispatcher.equalsIgnoreCase("huerotate")) { 19 | log.debug("customDispatcher hue rotate"); 20 | return new HueRotatePalette(customOptions); 21 | } else if (customDispatcher.equalsIgnoreCase("custompalette")) { 22 | log.debug("customDispatcher custom palette"); 23 | return new CustomPalette(customOptions); 24 | } 25 | } 26 | log.debug("Original boring cycle colors"); 27 | return new CycleColors(); // original "cycle" colors dispatcher 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /infra/common/src/main/java/kg/apc/charting/DividerRenderer.java: -------------------------------------------------------------------------------- 1 | package kg.apc.charting; 2 | 3 | import org.apache.jorphan.gui.NumberRenderer; 4 | 5 | public class DividerRenderer extends NumberRenderer{ 6 | private final double factor; 7 | 8 | public DividerRenderer(double i) { 9 | factor=i; 10 | } 11 | 12 | public double getFactor() { 13 | return factor; 14 | } 15 | 16 | @Override 17 | public void setValue(Object value) { 18 | Double val=((Long) value) /factor; 19 | setText(Double.toString(val)); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /infra/common/src/main/java/kg/apc/charting/elements/GraphPanelChartAverageElement.java: -------------------------------------------------------------------------------- 1 | package kg.apc.charting.elements; 2 | 3 | import kg.apc.charting.AbstractGraphPanelChartElement; 4 | 5 | /** 6 | * {@inheritDoc} 7 | */ 8 | public class GraphPanelChartAverageElement 9 | extends AbstractGraphPanelChartElement { 10 | private int count = 0; 11 | private double avgValue = 0; 12 | 13 | public GraphPanelChartAverageElement(double yVal) { 14 | add(yVal); 15 | } 16 | 17 | public GraphPanelChartAverageElement() { 18 | } 19 | 20 | public void add(double yVal) { 21 | avgValue = (avgValue * count + yVal) / (++count); 22 | } 23 | 24 | /** 25 | * {@inheritDoc} 26 | */ 27 | public double getValue() { 28 | return avgValue; 29 | } 30 | 31 | /** 32 | * @return the count 33 | */ 34 | public int getCount() { 35 | return count; 36 | } 37 | 38 | @Override 39 | public boolean isPointRepresentative(int limit) { 40 | return count > limit; 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /infra/common/src/main/java/kg/apc/charting/elements/GraphPanelChartExactElement.java: -------------------------------------------------------------------------------- 1 | package kg.apc.charting.elements; 2 | 3 | import kg.apc.charting.AbstractGraphPanelChartElement; 4 | 5 | /** 6 | * {@inheritDoc} 7 | */ 8 | public class GraphPanelChartExactElement 9 | extends AbstractGraphPanelChartElement { 10 | private long x = 0; 11 | private double y = 0; 12 | 13 | public GraphPanelChartExactElement(long xVal, double yVal) { 14 | x = xVal; 15 | y = yVal; 16 | } 17 | 18 | /** 19 | * {@inheritDoc} 20 | */ 21 | public double getValue() { 22 | return y; 23 | } 24 | 25 | public long getX() { 26 | return x; 27 | } 28 | 29 | public void add(double val) { 30 | y = val; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /infra/common/src/main/java/kg/apc/charting/elements/GraphPanelChartSimpleElement.java: -------------------------------------------------------------------------------- 1 | package kg.apc.charting.elements; 2 | 3 | import kg.apc.charting.AbstractGraphPanelChartElement; 4 | 5 | /** 6 | * {@inheritDoc} 7 | */ 8 | public class GraphPanelChartSimpleElement 9 | extends AbstractGraphPanelChartElement { 10 | double value = 0; 11 | 12 | public GraphPanelChartSimpleElement(double yVal) { 13 | add(yVal); 14 | } 15 | 16 | GraphPanelChartSimpleElement() { 17 | } 18 | 19 | public void add(double yVal) { 20 | value = yVal; 21 | } 22 | 23 | /** 24 | * {@inheritDoc} 25 | */ 26 | public double getValue() { 27 | return value; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /infra/common/src/main/java/kg/apc/charting/elements/GraphPanelChartSumElement.java: -------------------------------------------------------------------------------- 1 | package kg.apc.charting.elements; 2 | 3 | import kg.apc.charting.AbstractGraphPanelChartElement; 4 | 5 | /** 6 | * {@inheritDoc} 7 | */ 8 | public class GraphPanelChartSumElement 9 | extends AbstractGraphPanelChartElement { 10 | private int count = 0; 11 | private double sumValue = 0; 12 | 13 | public GraphPanelChartSumElement(double yVal) { 14 | add(yVal); 15 | } 16 | 17 | GraphPanelChartSumElement() { 18 | } 19 | 20 | public void add(double yVal) { 21 | sumValue += yVal; 22 | count++; 23 | } 24 | 25 | /** 26 | * {@inheritDoc} 27 | */ 28 | public double getValue() { 29 | return sumValue; 30 | } 31 | 32 | public int getCount() { 33 | return count; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /infra/common/src/main/java/kg/apc/charting/plotters/BarRowPlotter.java: -------------------------------------------------------------------------------- 1 | package kg.apc.charting.plotters; 2 | 3 | import java.awt.Composite; 4 | import java.awt.Graphics2D; 5 | import kg.apc.charting.ChartSettings; 6 | import org.apache.jorphan.gui.NumberRenderer; 7 | 8 | public class BarRowPlotter extends AbstractRowPlotter { 9 | 10 | public BarRowPlotter(ChartSettings chartSettings, NumberRenderer labelRenderer) { 11 | super(chartSettings, labelRenderer); 12 | allowMarkers = false; 13 | } 14 | 15 | @Override 16 | protected void processPoint(Graphics2D g2d, int granulation) { 17 | //fix bar flickering 18 | if (y < chartRect.y) { 19 | y = chartRect.y; 20 | } 21 | if (isChartPointValid(x + 1, y)) { //as we draw bars, xMax values must be rejected 22 | int x2 = chartRect.x + (int) ((calcPointX + granulation - minXVal) * dxForDVal) - x - 1; 23 | Composite oldComposite = g2d.getComposite(); 24 | g2d.setComposite(chartSettings.getBarComposite()); 25 | 26 | int yHeight = chartRect.y + chartRect.height - y; 27 | 28 | g2d.fillRect(x, y - 1, x2, yHeight + 1); 29 | g2d.setComposite(oldComposite); 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /infra/common/src/main/java/kg/apc/charting/plotters/LineRowPlotter.java: -------------------------------------------------------------------------------- 1 | package kg.apc.charting.plotters; 2 | 3 | import java.awt.Graphics2D; 4 | import kg.apc.charting.ChartSettings; 5 | import org.apache.jorphan.gui.NumberRenderer; 6 | 7 | public class LineRowPlotter extends AbstractRowPlotter { 8 | 9 | public LineRowPlotter(ChartSettings chartSettings, NumberRenderer labelRenderer) { 10 | super(chartSettings, labelRenderer); 11 | allowMarkers = true; 12 | } 13 | 14 | @Override 15 | protected void processPoint(Graphics2D g2d, int granulation) { 16 | if(chartSettings.getLineWidth() == 0) return; 17 | 18 | boolean valid = isChartPointValid(x, y); 19 | if (mustDrawFirstZeroingLine && valid) { 20 | mustDrawFirstZeroingLine = false; 21 | prevX = x; 22 | } 23 | if (prevX >= 0) { 24 | if (valid) { 25 | if (prevY >= chartRect.y && y >= chartRect.y) { 26 | g2d.drawLine(prevX, prevY, x, y); 27 | } else if (prevY >= chartRect.y && y < chartRect.y) { 28 | int x1 = (x - prevX) * (chartRect.y - prevY) / (y - prevY) + prevX; 29 | g2d.drawLine(prevX, prevY, x1, chartRect.y); 30 | } else if (prevY < chartRect.y && y >= chartRect.y) { 31 | int x1 = (x - prevX) * (chartRect.y - prevY) / (y - prevY) + prevX; 32 | g2d.drawLine(x1, chartRect.y, x, y); 33 | } 34 | } 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /infra/common/src/main/java/kg/apc/jmeter/DummyEvaluator.java: -------------------------------------------------------------------------------- 1 | package kg.apc.jmeter; 2 | 3 | public class DummyEvaluator extends JMeterVariableEvaluator { 4 | @Override 5 | public String evaluate(String text) { 6 | return text; 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /infra/common/src/main/java/kg/apc/jmeter/JMeterVariableEvaluator.java: -------------------------------------------------------------------------------- 1 | package kg.apc.jmeter; 2 | 3 | import org.apache.jmeter.engine.util.CompoundVariable; 4 | import org.apache.jmeter.testelement.property.JMeterProperty; 5 | import org.apache.jmeter.testelement.property.StringProperty; 6 | 7 | public class JMeterVariableEvaluator { 8 | public String evaluate(String text) { 9 | return (new CompoundVariable(text)).execute(); 10 | } 11 | 12 | public double getDouble(JMeterProperty jMeterProperty) { 13 | String strval = evaluate(jMeterProperty.getStringValue()); 14 | 15 | return (new StringProperty("", strval)).getDoubleValue(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /infra/common/src/main/java/kg/apc/jmeter/graphs/CompositeNotifierInterface.java: -------------------------------------------------------------------------------- 1 | package kg.apc.jmeter.graphs; 2 | 3 | public interface CompositeNotifierInterface { 4 | public void refresh(); 5 | } 6 | -------------------------------------------------------------------------------- /infra/common/src/main/java/kg/apc/jmeter/graphs/GraphRendererInterface.java: -------------------------------------------------------------------------------- 1 | package kg.apc.jmeter.graphs; 2 | 3 | import javax.swing.JPanel; 4 | 5 | public interface GraphRendererInterface { 6 | public JPanel getGraphDisplayPanel(); 7 | public boolean isPreview(); 8 | } 9 | -------------------------------------------------------------------------------- /infra/common/src/main/java/kg/apc/jmeter/graphs/HeaderAsTextRenderer.java: -------------------------------------------------------------------------------- 1 | package kg.apc.jmeter.graphs; 2 | 3 | import java.awt.Component; 4 | import javax.swing.JLabel; 5 | import javax.swing.JTable; 6 | import javax.swing.UIManager; 7 | import javax.swing.table.JTableHeader; 8 | import org.apache.jmeter.gui.util.HeaderAsPropertyRenderer; 9 | 10 | class HeaderAsTextRenderer 11 | extends HeaderAsPropertyRenderer 12 | { 13 | @Override 14 | public Component getTableCellRendererComponent(JTable table, Object value, 15 | boolean isSelected, boolean hasFocus, int row, int column) 16 | { 17 | if (table != null) 18 | { 19 | JTableHeader header = table.getTableHeader(); 20 | if (header != null) 21 | { 22 | setForeground(header.getForeground()); 23 | setBackground(header.getBackground()); 24 | setFont(header.getFont()); 25 | } 26 | setText(getText(value, row, column)); 27 | setBorder(UIManager.getBorder("TableHeader.cellBorder")); 28 | setHorizontalAlignment(JLabel.CENTER); 29 | } 30 | return this; 31 | } 32 | 33 | @Override 34 | protected String getText(Object value, int row, int column) 35 | { 36 | if (value == null) 37 | { 38 | return ""; 39 | } 40 | return value.toString(); 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /infra/common/src/main/java/kg/apc/jmeter/graphs/SettingsInterface.java: -------------------------------------------------------------------------------- 1 | package kg.apc.jmeter.graphs; 2 | 3 | import kg.apc.charting.GraphPanelChart; 4 | 5 | public interface SettingsInterface { 6 | public int getGranulation(); 7 | public void setGranulation(int granulation); 8 | public GraphPanelChart getGraphPanelChart(); 9 | public void switchModel(boolean aggregate); 10 | public String getWikiPage(); 11 | } 12 | -------------------------------------------------------------------------------- /infra/common/src/main/java/kg/apc/jmeter/gui/ButtonPanelAddCopyRemove.java: -------------------------------------------------------------------------------- 1 | package kg.apc.jmeter.gui; 2 | 3 | import java.awt.GridLayout; 4 | import javax.swing.JButton; 5 | import javax.swing.JPanel; 6 | import javax.swing.JTable; 7 | import org.apache.jmeter.gui.util.PowerTableModel; 8 | 9 | public class ButtonPanelAddCopyRemove extends JPanel { 10 | private final JButton deleteRowButton; 11 | 12 | private final PowerTableModel tableModel; 13 | 14 | public ButtonPanelAddCopyRemove(JTable grid, PowerTableModel tableModel, Object[] defaultValues) { 15 | setLayout(new GridLayout(1, 2)); 16 | 17 | JButton addRowButton = new JButton("Add Row"); 18 | JButton copyRowButton = new JButton("Copy Row"); 19 | deleteRowButton = new JButton("Delete Row"); 20 | 21 | addRowButton.addActionListener(new AddRowAction(this, grid, tableModel, deleteRowButton, defaultValues)); 22 | copyRowButton.addActionListener(new CopyRowAction(this, grid, tableModel, deleteRowButton)); 23 | deleteRowButton.addActionListener(new DeleteRowAction(this, grid, tableModel, deleteRowButton)); 24 | 25 | add(addRowButton); 26 | add(copyRowButton); 27 | add(deleteRowButton); 28 | this.tableModel = tableModel; 29 | } 30 | 31 | public void checkDeleteButtonStatus() { 32 | deleteRowButton.setEnabled(tableModel != null && tableModel.getRowCount() > 0); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /infra/common/src/main/java/kg/apc/jmeter/gui/CustomNumberRenderer.java: -------------------------------------------------------------------------------- 1 | package kg.apc.jmeter.gui; 2 | 3 | import java.text.DecimalFormat; 4 | import java.text.DecimalFormatSymbols; 5 | import java.text.NumberFormat; 6 | import org.apache.jorphan.gui.NumberRenderer; 7 | 8 | public class CustomNumberRenderer extends NumberRenderer { 9 | private NumberFormat customFormatter = null; 10 | 11 | public CustomNumberRenderer() { 12 | super(); 13 | } 14 | 15 | public CustomNumberRenderer(String format) { 16 | super(format); 17 | } 18 | 19 | public CustomNumberRenderer(String format, char groupingSeparator) { 20 | super(); 21 | DecimalFormatSymbols symbols = new DecimalFormatSymbols(); 22 | symbols.setGroupingSeparator(groupingSeparator); 23 | customFormatter = new DecimalFormat(format, symbols); 24 | } 25 | 26 | @Override 27 | public void setValue(Object value) { 28 | String str = ""; 29 | if(value != null) { 30 | if(customFormatter != null) { 31 | str = customFormatter.format(value); 32 | } else { 33 | str = formatter.format(value); 34 | } 35 | } 36 | setText(str); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /infra/common/src/main/java/kg/apc/jmeter/gui/GuiBuilderHelper.java: -------------------------------------------------------------------------------- 1 | package kg.apc.jmeter.gui; 2 | 3 | import javax.swing.*; 4 | import java.awt.*; 5 | 6 | /** 7 | * Simple class to help building GUI 8 | */ 9 | public class GuiBuilderHelper { 10 | 11 | public static JScrollPane getTextAreaScrollPaneContainer(JTextArea textArea, int nbLines) { 12 | JScrollPane ret = new JScrollPane(); 13 | textArea.setRows(nbLines); 14 | textArea.setColumns(20); 15 | ret.setViewportView(textArea); 16 | return ret; 17 | } 18 | 19 | public static void strechItemToComponent(JComponent component, JComponent item) { 20 | int iWidth = (int) item.getPreferredSize().getWidth(); 21 | int iHeight = (int) component.getPreferredSize().getHeight(); 22 | item.setPreferredSize(new Dimension(iWidth, iHeight)); 23 | } 24 | 25 | public static JPanel getComponentWithMargin(Component component, int top, int left, int bottom, int right) { 26 | JPanel ret = new JPanel(new GridBagLayout()); 27 | GridBagConstraints constraints = new GridBagConstraints(); 28 | constraints.weightx = 1.0; 29 | constraints.weighty = 1.0; 30 | constraints.fill = GridBagConstraints.BOTH; 31 | constraints.insets = new Insets(top, left, bottom, right); 32 | ret.add(component, constraints); 33 | return ret; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /infra/common/src/main/java/kg/apc/jmeter/gui/JAbsrtactDialogPanel.java: -------------------------------------------------------------------------------- 1 | package kg.apc.jmeter.gui; 2 | 3 | import java.awt.Dimension; 4 | import javax.swing.JDialog; 5 | import javax.swing.JPanel; 6 | import javax.swing.SwingUtilities; 7 | 8 | public abstract class JAbsrtactDialogPanel extends JPanel{ 9 | private int minWidth = 0; 10 | 11 | public int getMinWidth() { 12 | return minWidth; 13 | } 14 | 15 | public void setMinWidth(int minWidth) { 16 | this.minWidth = minWidth; 17 | } 18 | 19 | protected void repack() { 20 | JDialog dlgParent = getAssociatedDialog(); 21 | if(dlgParent != null) { 22 | Dimension newSize = dlgParent.getPreferredSize(); 23 | if(newSize.width < minWidth) { 24 | newSize.width = minWidth; 25 | } 26 | dlgParent.setSize(newSize); 27 | dlgParent.validate(); 28 | } 29 | } 30 | 31 | protected JDialog getAssociatedDialog() { 32 | return (JDialog)SwingUtilities.getWindowAncestor(this); 33 | } 34 | 35 | } 36 | -------------------------------------------------------------------------------- /infra/common/src/main/java/kg/apc/jmeter/vizualizers/CompositeResultCollector.java: -------------------------------------------------------------------------------- 1 | package kg.apc.jmeter.vizualizers; 2 | 3 | import java.io.Serializable; 4 | import org.apache.jmeter.reporters.ResultCollector; 5 | 6 | public class CompositeResultCollector extends ResultCollector implements Serializable, Cloneable { 7 | 8 | private CompositeModel compositeModel; 9 | 10 | public void setCompositeModel(CompositeModel model) { 11 | this.compositeModel = model; 12 | } 13 | 14 | public CompositeModel getCompositeModel() { 15 | return compositeModel; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /infra/common/src/main/java/kg/apc/jmeter/vizualizers/MonitoringSampleGenerator.java: -------------------------------------------------------------------------------- 1 | package kg.apc.jmeter.vizualizers; 2 | 3 | public interface MonitoringSampleGenerator { 4 | public void generateSample(double d, String string); 5 | } 6 | -------------------------------------------------------------------------------- /infra/common/src/main/java/kg/apc/jmeter/vizualizers/MonitoringSampleResult.java: -------------------------------------------------------------------------------- 1 | package kg.apc.jmeter.vizualizers; 2 | 3 | import org.apache.jmeter.samplers.SampleResult; 4 | 5 | public class MonitoringSampleResult 6 | extends SampleResult { 7 | 8 | private final long ts; 9 | 10 | public MonitoringSampleResult() { 11 | ts = System.currentTimeMillis(); 12 | } 13 | 14 | // store as responseMessage, as monitoring query can return any value (bigger than float precision) 15 | public void setValue(double value) { 16 | setStartTime(ts); 17 | setResponseMessage(Double.toString(value)); 18 | } 19 | 20 | @Override 21 | public void setResponseMessage(String msg) { 22 | super.setResponseMessage(msg); 23 | setStartTime(ts); 24 | } 25 | 26 | @Deprecated 27 | public double getValue() { 28 | return Double.valueOf(getResponseMessage()); 29 | } 30 | 31 | //needed for CSV reload as object created by JMeter is not MonitoringSampleResult but SampleResult 32 | public static double getValue(SampleResult res) { 33 | return Double.valueOf(res.getResponseMessage()); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /infra/common/src/main/java/kg/apc/jmeter/vizualizers/MonitoringSampler.java: -------------------------------------------------------------------------------- 1 | package kg.apc.jmeter.vizualizers; 2 | 3 | public interface MonitoringSampler { 4 | public void generateSamples(MonitoringSampleGenerator collector); 5 | } 6 | -------------------------------------------------------------------------------- /infra/common/src/main/java/kg/apc/logging/LoggingConfigurator.java: -------------------------------------------------------------------------------- 1 | package kg.apc.logging; 2 | 3 | import org.apache.logging.log4j.Level; 4 | import org.apache.logging.log4j.LogManager; 5 | import org.apache.logging.log4j.core.LoggerContext; 6 | import org.apache.logging.log4j.core.appender.ConsoleAppender; 7 | import org.apache.logging.log4j.core.config.Configuration; 8 | import org.apache.logging.log4j.core.config.LoggerConfig; 9 | import org.apache.logging.log4j.core.layout.PatternLayout; 10 | 11 | /** 12 | * Configure log4j logging for JMeter since 3.2 in PluginsManagerCMD 13 | */ 14 | public class LoggingConfigurator { 15 | 16 | 17 | 18 | public LoggingConfigurator() { 19 | configure(); 20 | } 21 | 22 | public void configure() { 23 | PatternLayout.Builder patternBuilder = PatternLayout.newBuilder(); 24 | patternBuilder.withPattern("%d %p %c{1.}: %m%n"); 25 | PatternLayout layout = patternBuilder.build(); 26 | 27 | ConsoleAppender consoleAppender = ConsoleAppender.createDefaultAppenderForLayout(layout); 28 | consoleAppender.start(); 29 | 30 | Configuration configuration = ((LoggerContext) LogManager.getContext(false)).getConfiguration(); 31 | 32 | LoggerConfig rootLogger = configuration.getRootLogger(); 33 | rootLogger.setLevel(Level.INFO); 34 | rootLogger.addAppender(consoleAppender, Level.INFO, null); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /infra/common/src/main/java/kg/apc/logging/LoggingUtils.java: -------------------------------------------------------------------------------- 1 | package kg.apc.logging; 2 | 3 | import org.slf4j.LoggerFactory; 4 | import org.slf4j.Logger; 5 | 6 | import java.lang.reflect.Constructor; 7 | 8 | public class LoggingUtils { 9 | private static final Logger log = LoggerFactory.getLogger(LoggingUtils.class); 10 | 11 | public static void addLoggingConfig() { 12 | if (isJMeter32orLater()) { 13 | configureCMDLogging(); 14 | } 15 | } 16 | 17 | private static void configureCMDLogging() { 18 | try { 19 | Class cls = Class.forName("kg.apc.logging.LoggingConfigurator"); 20 | Constructor constructor = cls.getConstructor(); 21 | constructor.newInstance(); 22 | } catch (Throwable ex) { 23 | System.out.println("Fail to configure logging " + ex.getMessage()); 24 | ex.printStackTrace(System.out); 25 | } 26 | } 27 | 28 | public static boolean isJMeter32orLater() { 29 | try { 30 | Class cls = LoggingUtils.class.getClassLoader().loadClass("org.apache.jmeter.gui.logging.GuiLogEventBus"); 31 | if (cls != null) { 32 | return true; 33 | } 34 | } catch (ClassNotFoundException ex) { 35 | log.debug("Class 'org.apache.jmeter.gui.logging.GuiLogEventBus' not found", ex); 36 | } catch (Throwable ex) { 37 | log.warn("Fail to detect JMeter version", ex); 38 | } 39 | return false; 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /infra/common/src/main/resources/kg/apc/jmeter/img/checks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/infra/common/src/main/resources/kg/apc/jmeter/img/checks.png -------------------------------------------------------------------------------- /infra/common/src/main/resources/kg/apc/jmeter/img/copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/infra/common/src/main/resources/kg/apc/jmeter/img/copy.png -------------------------------------------------------------------------------- /infra/common/src/main/resources/kg/apc/jmeter/img/export.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/infra/common/src/main/resources/kg/apc/jmeter/img/export.png -------------------------------------------------------------------------------- /infra/common/src/main/resources/kg/apc/jmeter/img/graph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/infra/common/src/main/resources/kg/apc/jmeter/img/graph.png -------------------------------------------------------------------------------- /infra/common/src/main/resources/kg/apc/jmeter/img/maximize.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/infra/common/src/main/resources/kg/apc/jmeter/img/maximize.png -------------------------------------------------------------------------------- /infra/common/src/main/resources/kg/apc/jmeter/img/restore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/infra/common/src/main/resources/kg/apc/jmeter/img/restore.png -------------------------------------------------------------------------------- /infra/common/src/main/resources/kg/apc/jmeter/img/save.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/infra/common/src/main/resources/kg/apc/jmeter/img/save.png -------------------------------------------------------------------------------- /infra/common/src/main/resources/kg/apc/jmeter/img/settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/infra/common/src/main/resources/kg/apc/jmeter/img/settings.png -------------------------------------------------------------------------------- /infra/common/src/main/resources/kg/apc/jmeter/vizualizers/cross.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/infra/common/src/main/resources/kg/apc/jmeter/vizualizers/cross.png -------------------------------------------------------------------------------- /infra/common/src/main/resources/kg/apc/jmeter/vizualizers/folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/infra/common/src/main/resources/kg/apc/jmeter/vizualizers/folder.png -------------------------------------------------------------------------------- /infra/common/src/main/resources/kg/apc/jmeter/vizualizers/folderLink.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/infra/common/src/main/resources/kg/apc/jmeter/vizualizers/folderLink.png -------------------------------------------------------------------------------- /infra/common/src/main/resources/kg/apc/jmeter/vizualizers/information.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/infra/common/src/main/resources/kg/apc/jmeter/vizualizers/information.png -------------------------------------------------------------------------------- /infra/common/src/main/resources/kg/apc/jmeter/vizualizers/leftArrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/infra/common/src/main/resources/kg/apc/jmeter/vizualizers/leftArrow.png -------------------------------------------------------------------------------- /infra/common/src/main/resources/kg/apc/jmeter/vizualizers/logoSimple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/infra/common/src/main/resources/kg/apc/jmeter/vizualizers/logoSimple.png -------------------------------------------------------------------------------- /infra/common/src/main/resources/kg/apc/jmeter/vizualizers/rightArrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/infra/common/src/main/resources/kg/apc/jmeter/vizualizers/rightArrow.png -------------------------------------------------------------------------------- /infra/common/src/main/resources/kg/apc/jmeter/vizualizers/tick.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/infra/common/src/main/resources/kg/apc/jmeter/vizualizers/tick.png -------------------------------------------------------------------------------- /infra/common/src/main/resources/kg/apc/jmeter/vizualizers/treeLeaf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/infra/common/src/main/resources/kg/apc/jmeter/vizualizers/treeLeaf.png -------------------------------------------------------------------------------- /infra/common/src/main/resources/kg/apc/jmeter/vizualizers/wand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/infra/common/src/main/resources/kg/apc/jmeter/vizualizers/wand.png -------------------------------------------------------------------------------- /infra/common/src/test/java/kg/apc/charting/DividerRendererTest.java: -------------------------------------------------------------------------------- 1 | package kg.apc.charting; 2 | 3 | import org.junit.*; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | public class DividerRendererTest { 8 | 9 | public DividerRendererTest() { 10 | } 11 | 12 | @BeforeClass 13 | public static void setUpClass() throws Exception { 14 | } 15 | 16 | @AfterClass 17 | public static void tearDownClass() throws Exception { 18 | } 19 | 20 | @Before 21 | public void setUp() { 22 | } 23 | 24 | @After 25 | public void tearDown() { 26 | } 27 | 28 | /** 29 | * Test of setValue method, of class DividerRenderer. 30 | */ 31 | @Test 32 | public void testSetValue() { 33 | 34 | } 35 | 36 | /** 37 | * Test of getFactor method, of class DividerRenderer. 38 | */ 39 | @Test 40 | public void testGetFactor() { 41 | System.out.println("testGetFactor"); 42 | DividerRenderer instance = new DividerRenderer(10); 43 | Assert.assertTrue(instance.getFactor() == 10); 44 | } 45 | 46 | } -------------------------------------------------------------------------------- /infra/common/src/test/java/kg/apc/charting/elements/GraphPanelChartSimpleElementTest.java: -------------------------------------------------------------------------------- 1 | package kg.apc.charting.elements; 2 | 3 | import org.junit.*; 4 | 5 | public class GraphPanelChartSimpleElementTest { 6 | 7 | public GraphPanelChartSimpleElementTest() { 8 | } 9 | 10 | @BeforeClass 11 | public static void setUpClass() throws Exception { 12 | } 13 | 14 | @AfterClass 15 | public static void tearDownClass() throws Exception { 16 | } 17 | 18 | @Before 19 | public void setUp() { 20 | } 21 | 22 | @After 23 | public void tearDown() { 24 | } 25 | 26 | /** 27 | * Test of add method, of class GraphPanelChartSimpleElement. 28 | */ 29 | @Test 30 | public void testAdd() { 31 | System.out.println("add"); 32 | double yVal = 0.0; 33 | GraphPanelChartSimpleElement instance = new GraphPanelChartSimpleElement(); 34 | instance.add(yVal); 35 | } 36 | 37 | /** 38 | * Test of getValue method, of class GraphPanelChartSimpleElement. 39 | */ 40 | @Test 41 | public void testGetValue() { 42 | System.out.println("getValue"); 43 | GraphPanelChartSimpleElement instance = new GraphPanelChartSimpleElement(); 44 | instance.add(1); 45 | instance.add(2); 46 | double expResult = 2.0; 47 | double result = instance.getValue(); 48 | Assert.assertEquals(expResult, result, 0.0); 49 | } 50 | 51 | } -------------------------------------------------------------------------------- /infra/common/src/test/java/kg/apc/jmeter/graphs/CompositeNotifierInterfaceTest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * To change this template, choose Tools | Templates 3 | * and open the template in the editor. 4 | */ 5 | 6 | package kg.apc.jmeter.graphs; 7 | 8 | import kg.apc.jmeter.graphs.CompositeNotifierInterface; 9 | import org.junit.After; 10 | import org.junit.AfterClass; 11 | import org.junit.Before; 12 | import org.junit.BeforeClass; 13 | import org.junit.Test; 14 | import static org.junit.Assert.*; 15 | 16 | public class CompositeNotifierInterfaceTest { 17 | 18 | public CompositeNotifierInterfaceTest() { 19 | } 20 | 21 | @BeforeClass 22 | public static void setUpClass() throws Exception 23 | { 24 | } 25 | 26 | @AfterClass 27 | public static void tearDownClass() throws Exception 28 | { 29 | } 30 | 31 | @Before 32 | public void setUp() { 33 | } 34 | 35 | @After 36 | public void tearDown() { 37 | } 38 | 39 | /** 40 | * Test of refresh method, of class CompositeNotifierInterface. 41 | */ 42 | @Test 43 | public void testRefresh() 44 | { 45 | System.out.println("refresh"); 46 | CompositeNotifierInterface instance = new CompositeNotifierInterfaceImpl(); 47 | instance.refresh(); 48 | } 49 | 50 | public class CompositeNotifierInterfaceImpl implements CompositeNotifierInterface 51 | { 52 | 53 | public void refresh() 54 | { 55 | } 56 | } 57 | 58 | } -------------------------------------------------------------------------------- /infra/common/src/test/java/kg/apc/jmeter/gui/AddRowActionTest.java: -------------------------------------------------------------------------------- 1 | package kg.apc.jmeter.gui; 2 | 3 | import javax.swing.JButton; 4 | import javax.swing.JPanel; 5 | import javax.swing.JTable; 6 | import org.apache.jmeter.gui.util.PowerTableModel; 7 | import org.junit.After; 8 | import org.junit.AfterClass; 9 | import org.junit.Before; 10 | import org.junit.BeforeClass; 11 | import org.junit.Test; 12 | 13 | public class AddRowActionTest { 14 | 15 | public AddRowActionTest() { 16 | } 17 | 18 | @BeforeClass 19 | public static void setUpClass() throws Exception { 20 | } 21 | 22 | @AfterClass 23 | public static void tearDownClass() throws Exception { 24 | } 25 | 26 | @Before 27 | public void setUp() { 28 | } 29 | 30 | @After 31 | public void tearDown() { 32 | } 33 | 34 | /** 35 | * Test of actionPerformed method, of class AddRowAction. 36 | */ 37 | @Test 38 | public void testActionPerformed() { 39 | System.out.println("actionPerformed"); 40 | AddRowAction instance = new AddRowAction( 41 | new JPanel(), 42 | new JTable(), 43 | new PowerTableModel(TableModelEmul.columnIdentifiers, TableModelEmul.columnClasses), 44 | new JButton(), 45 | TableModelEmul.defaultValues); 46 | instance.actionPerformed(null); 47 | } 48 | } -------------------------------------------------------------------------------- /infra/common/src/test/java/kg/apc/jmeter/gui/ButtonPanelAddCopyRemoveTest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * To change this template, choose Tools | Templates 3 | * and open the template in the editor. 4 | */ 5 | 6 | package kg.apc.jmeter.gui; 7 | 8 | import org.junit.After; 9 | import org.junit.AfterClass; 10 | import org.junit.Before; 11 | import org.junit.BeforeClass; 12 | import org.junit.Test; 13 | import static org.junit.Assert.*; 14 | 15 | public class ButtonPanelAddCopyRemoveTest { 16 | 17 | public ButtonPanelAddCopyRemoveTest() { 18 | } 19 | 20 | @BeforeClass 21 | public static void setUpClass() throws Exception { 22 | } 23 | 24 | @AfterClass 25 | public static void tearDownClass() throws Exception { 26 | } 27 | 28 | @Before 29 | public void setUp() { 30 | } 31 | 32 | @After 33 | public void tearDown() { 34 | } 35 | 36 | @Test 37 | public void testSomeMethod() { 38 | Object[] defaultValues=new String[]{"", "", ""}; 39 | ButtonPanelAddCopyRemove instance = new ButtonPanelAddCopyRemove(null, null, defaultValues); 40 | } 41 | 42 | /** 43 | * Test of checkDeleteButtonStatus method, of class ButtonPanelAddCopyRemove. 44 | */ 45 | @Test 46 | public void testCheckDeleteButtonStatus() { 47 | System.out.println("checkDeleteButtonStatus"); 48 | Object[] defaultValues=new String[]{"", "", ""}; 49 | ButtonPanelAddCopyRemove instance = new ButtonPanelAddCopyRemove(null, null, defaultValues); 50 | instance.checkDeleteButtonStatus(); 51 | } 52 | 53 | } -------------------------------------------------------------------------------- /infra/common/src/test/java/kg/apc/jmeter/gui/CopyRowActionTest.java: -------------------------------------------------------------------------------- 1 | package kg.apc.jmeter.gui; 2 | 3 | import java.awt.event.ActionEvent; 4 | import javax.swing.JButton; 5 | import javax.swing.JPanel; 6 | import javax.swing.JTable; 7 | import org.apache.jmeter.gui.util.PowerTableModel; 8 | import org.junit.After; 9 | import org.junit.AfterClass; 10 | import org.junit.Before; 11 | import org.junit.BeforeClass; 12 | import org.junit.Test; 13 | 14 | public class CopyRowActionTest { 15 | 16 | public CopyRowActionTest() { 17 | } 18 | 19 | @BeforeClass 20 | public static void setUpClass() throws Exception { 21 | } 22 | 23 | @AfterClass 24 | public static void tearDownClass() throws Exception { 25 | } 26 | 27 | @Before 28 | public void setUp() { 29 | } 30 | 31 | @After 32 | public void tearDown() { 33 | } 34 | 35 | /** 36 | * Test of actionPerformed method, of class CopyRowAction. 37 | */ 38 | @Test 39 | public void testActionPerformed() { 40 | System.out.println("actionPerformed"); 41 | ActionEvent e = null; 42 | CopyRowAction instance = new CopyRowAction(new JPanel(), 43 | new JTable(), 44 | new PowerTableModel(TableModelEmul.columnIdentifiers, TableModelEmul.columnClasses), 45 | new JButton()); 46 | 47 | instance.actionPerformed(e); 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /infra/common/src/test/java/kg/apc/jmeter/gui/CustomNumberRendererTest.java: -------------------------------------------------------------------------------- 1 | package kg.apc.jmeter.gui; 2 | 3 | import org.junit.After; 4 | import org.junit.AfterClass; 5 | import org.junit.Before; 6 | import org.junit.BeforeClass; 7 | import org.junit.Test; 8 | import static org.junit.Assert.*; 9 | 10 | public class CustomNumberRendererTest { 11 | 12 | public CustomNumberRendererTest() { 13 | } 14 | 15 | @BeforeClass 16 | public static void setUpClass() throws Exception { 17 | } 18 | 19 | @AfterClass 20 | public static void tearDownClass() throws Exception { 21 | } 22 | 23 | @Before 24 | public void setUp() { 25 | } 26 | 27 | @After 28 | public void tearDown() { 29 | } 30 | 31 | /** 32 | * Test of setValue method, of class CustomNumberRenderer. 33 | */ 34 | @Test 35 | public void testSetValue() { 36 | System.out.println("setValue"); 37 | CustomNumberRenderer instance = new CustomNumberRenderer("#,###.#", ' '); 38 | instance.setValue(1000000); 39 | String result = instance.getText(); 40 | assertTrue("1 000 000".equals(result)); 41 | instance = new CustomNumberRenderer("#.#"); 42 | instance.setValue(1000000); 43 | result = instance.getText(); 44 | assertTrue("1000000".equals(result)); 45 | } 46 | } -------------------------------------------------------------------------------- /infra/common/src/test/java/kg/apc/jmeter/gui/DeleteRowActionTest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * To change this template, choose Tools | Templates 3 | * and open the template in the editor. 4 | */ 5 | package kg.apc.jmeter.gui; 6 | 7 | import java.awt.event.ActionEvent; 8 | import javax.swing.JButton; 9 | import javax.swing.JPanel; 10 | import javax.swing.JTable; 11 | import org.apache.jmeter.gui.util.PowerTableModel; 12 | import org.junit.After; 13 | import org.junit.AfterClass; 14 | import org.junit.Before; 15 | import org.junit.BeforeClass; 16 | import org.junit.Test; 17 | 18 | public class DeleteRowActionTest { 19 | 20 | public DeleteRowActionTest() { 21 | } 22 | 23 | @BeforeClass 24 | public static void setUpClass() throws Exception { 25 | } 26 | 27 | @AfterClass 28 | public static void tearDownClass() throws Exception { 29 | } 30 | 31 | @Before 32 | public void setUp() { 33 | } 34 | 35 | @After 36 | public void tearDown() { 37 | } 38 | 39 | /** 40 | * Test of actionPerformed method, of class DeleteRowAction. 41 | */ 42 | @Test 43 | public void testActionPerformed() { 44 | System.out.println("actionPerformed"); 45 | ActionEvent e = null; 46 | DeleteRowAction instance = new DeleteRowAction(new JPanel(), 47 | new JTable(), 48 | new PowerTableModel(TableModelEmul.columnIdentifiers, TableModelEmul.columnClasses), 49 | new JButton()); 50 | instance.actionPerformed(e); 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /infra/common/src/test/java/kg/apc/jmeter/gui/TableModelEmul.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2013 undera. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package kg.apc.jmeter.gui; 17 | 18 | class TableModelEmul { 19 | 20 | public static final String[] columnIdentifiers = new String[]{ 21 | "Start Threads Count", "Initial Delay, sec", "Startup Time, sec", "Hold Load For, sec", "Shutdown Time" 22 | }; 23 | /** 24 | * 25 | */ 26 | public static final Class[] columnClasses = new Class[]{ 27 | String.class, String.class, String.class, String.class, String.class 28 | }; 29 | public static final Integer[] defaultValues = new Integer[]{ 30 | 100, 0, 30, 60, 10 31 | }; 32 | } 33 | -------------------------------------------------------------------------------- /infra/common/src/test/java/kg/apc/jmeter/vizualizers/MonitoringSampleGeneratorTest.java: -------------------------------------------------------------------------------- 1 | package kg.apc.jmeter.vizualizers; 2 | 3 | import org.junit.Test; 4 | import static org.junit.Assert.*; 5 | 6 | public class MonitoringSampleGeneratorTest { 7 | 8 | @Test 9 | public void testGenerateSample() { 10 | System.out.println("generateSample"); 11 | double d = 0.0; 12 | String string = "Test"; 13 | MonitoringSampleGenerator instance = new MonitoringSampleGeneratorImpl(); 14 | instance.generateSample(d, string); 15 | 16 | String result1 = ((MonitoringSampleGeneratorImpl)instance).metric; 17 | double result2 = ((MonitoringSampleGeneratorImpl)instance).value; 18 | assertEquals(string, result1); 19 | assertEquals(d, result2, 0.0); 20 | } 21 | 22 | public class MonitoringSampleGeneratorImpl implements MonitoringSampleGenerator { 23 | protected String metric; 24 | protected double value; 25 | 26 | public void generateSample(double d, String string) { 27 | this.metric = string; 28 | this.value = d; 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /infra/common/src/test/resources/kg/apc/charting/export.csv: -------------------------------------------------------------------------------- 1 | Elapsed time;row1;row2;row3 2 | 10:30:00.500;10.0;20.0; 3 | 10:30:10.500;20.0;30.0; 4 | 10:30:25.500;;;50.0 -------------------------------------------------------------------------------- /infra/emulators/src/main/java/kg/apc/emulators/DatagramSocketEmulator.java: -------------------------------------------------------------------------------- 1 | package kg.apc.emulators; 2 | 3 | import org.slf4j.LoggerFactory; 4 | import org.slf4j.Logger; 5 | 6 | import java.io.IOException; 7 | import java.net.DatagramPacket; 8 | import java.net.DatagramSocket; 9 | import java.net.SocketException; 10 | 11 | 12 | public class DatagramSocketEmulator 13 | extends DatagramSocket { 14 | 15 | private static final Logger log = LoggerFactory.getLogger(DatagramSocketEmulator.class); 16 | private DatagramPacket toRead; 17 | 18 | public DatagramSocketEmulator() throws SocketException { 19 | log.debug("Created emulator"); 20 | } 21 | 22 | @Override 23 | public synchronized void receive(DatagramPacket p) throws IOException { 24 | log.debug("Emulate receive: " + p); 25 | if (toRead == null) { 26 | throw new SocketException(); 27 | } 28 | 29 | p.setData(toRead.getData()); 30 | p.setAddress(toRead.getAddress()); 31 | //p.setSocketAddress(toRead.getSocketAddress()); 32 | toRead = null; 33 | } 34 | 35 | @Override 36 | public void send(DatagramPacket p) throws IOException { 37 | log.debug("Emulate send: " + p); 38 | } 39 | 40 | public void setDatagramToReceive(DatagramPacket datagramPacket) { 41 | toRead = datagramPacket; 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /infra/emulators/src/main/java/kg/apc/emulators/DirectoryAnchor.java: -------------------------------------------------------------------------------- 1 | package kg.apc.emulators; 2 | 3 | public class DirectoryAnchor { 4 | 5 | @Override 6 | public String toString() { 7 | String file = this.getClass().getResource("anchor.properties").getPath(); 8 | return file.substring(0, file.lastIndexOf("/")); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /infra/emulators/src/main/java/kg/apc/emulators/EmulatorJmeterEngine.java: -------------------------------------------------------------------------------- 1 | package kg.apc.emulators; 2 | 3 | import org.apache.jmeter.engine.StandardJMeterEngine; 4 | import org.slf4j.LoggerFactory; 5 | import org.slf4j.Logger; 6 | 7 | public class EmulatorJmeterEngine extends StandardJMeterEngine{ 8 | private static final Logger log = LoggerFactory.getLogger(EmulatorJmeterEngine.class); 9 | 10 | @Override 11 | public void askThreadsToStop() { 12 | log.debug("Engine emulator asking threads to stop"); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /infra/emulators/src/main/java/kg/apc/emulators/EmulatorThreadMonitor.java: -------------------------------------------------------------------------------- 1 | package kg.apc.emulators; 2 | 3 | import org.apache.jmeter.threads.JMeterThread; 4 | import org.apache.jmeter.threads.JMeterThreadMonitor; 5 | import org.slf4j.LoggerFactory; 6 | import org.slf4j.Logger; 7 | 8 | public class EmulatorThreadMonitor implements JMeterThreadMonitor { 9 | private static final Logger log = LoggerFactory.getLogger(EmulatorThreadMonitor.class); 10 | 11 | @Override 12 | public void threadFinished(JMeterThread jmt) { 13 | log.debug("ThreadMonitor emulator notify thread finished"); 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /infra/emulators/src/main/java/kg/apc/emulators/FileChooserEmul.java: -------------------------------------------------------------------------------- 1 | package kg.apc.emulators; 2 | 3 | import javax.swing.JFileChooser; 4 | 5 | public class FileChooserEmul extends JFileChooser { 6 | 7 | } 8 | -------------------------------------------------------------------------------- /infra/emulators/src/main/java/kg/apc/emulators/FileLockEmul.java: -------------------------------------------------------------------------------- 1 | /* 2 | * To change this template, choose Tools | Templates 3 | * and open the template in the editor. 4 | */ 5 | 6 | package kg.apc.emulators; 7 | 8 | import java.io.IOException; 9 | import java.nio.channels.FileChannel; 10 | import java.nio.channels.FileLock; 11 | import org.slf4j.LoggerFactory; 12 | import org.slf4j.Logger; 13 | 14 | class FileLockEmul extends FileLock { 15 | private static final Logger log = LoggerFactory.getLogger(FileLockEmul.class); 16 | 17 | public FileLockEmul() { 18 | super((FileChannel) null, 0, 0, false); 19 | } 20 | 21 | @Override 22 | public boolean isValid() { 23 | return true; 24 | } 25 | 26 | @Override 27 | public void release() throws IOException { 28 | log.debug("Release lock"); 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /infra/emulators/src/main/java/kg/apc/emulators/SelectionKeyEmul.java: -------------------------------------------------------------------------------- 1 | package kg.apc.emulators; 2 | 3 | import java.nio.channels.SelectableChannel; 4 | import java.nio.channels.SelectionKey; 5 | import java.nio.channels.Selector; 6 | import java.nio.channels.spi.AbstractSelectionKey; 7 | 8 | public class SelectionKeyEmul extends AbstractSelectionKey { 9 | 10 | public SelectionKeyEmul() { 11 | } 12 | 13 | @Override 14 | public SelectableChannel channel() { 15 | throw new UnsupportedOperationException("Not supported yet."); 16 | } 17 | 18 | @Override 19 | public Selector selector() { 20 | throw new UnsupportedOperationException("Not supported yet."); 21 | } 22 | 23 | @Override 24 | public int interestOps() { 25 | throw new UnsupportedOperationException("Not supported yet."); 26 | } 27 | 28 | @Override 29 | public SelectionKey interestOps(int ops) { 30 | throw new UnsupportedOperationException("Not supported yet."); 31 | } 32 | 33 | @Override 34 | public int readyOps() { 35 | return Integer.MAX_VALUE; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /infra/emulators/src/main/java/kg/apc/emulators/ServerSocketEmulator.java: -------------------------------------------------------------------------------- 1 | package kg.apc.emulators; 2 | 3 | import java.io.IOException; 4 | import java.net.ServerSocket; 5 | import java.net.Socket; 6 | 7 | 8 | public class ServerSocketEmulator extends ServerSocket { 9 | 10 | public ServerSocketEmulator() throws IOException { 11 | } 12 | 13 | public Socket accept() throws IOException { 14 | return new SocketEmulator(); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /infra/emulators/src/main/java/kg/apc/emulators/SocketEmulator.java: -------------------------------------------------------------------------------- 1 | package kg.apc.emulators; 2 | 3 | import java.io.IOException; 4 | import java.io.InputStream; 5 | import java.io.OutputStream; 6 | import java.net.Socket; 7 | 8 | 9 | public class SocketEmulator extends Socket { 10 | private final SocketEmulatorOutputStream os; 11 | private final SocketEmulatorInputStream is; 12 | 13 | public SocketEmulator() { 14 | os = new SocketEmulatorOutputStream(); 15 | is = new SocketEmulatorInputStream(); 16 | } 17 | 18 | @Override 19 | public OutputStream getOutputStream() throws IOException { 20 | return os; 21 | } 22 | 23 | @Override 24 | public InputStream getInputStream() throws IOException { 25 | return is; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /infra/emulators/src/main/java/kg/apc/emulators/SocketEmulatorOutputStream.java: -------------------------------------------------------------------------------- 1 | package kg.apc.emulators; 2 | 3 | import org.apache.jmeter.protocol.tcp.sampler.BinaryTCPClientImpl; 4 | 5 | import java.io.IOException; 6 | import java.io.OutputStream; 7 | 8 | 9 | public class SocketEmulatorOutputStream 10 | extends OutputStream { 11 | 12 | private StringBuilder buffer; 13 | 14 | public SocketEmulatorOutputStream() { 15 | buffer = new StringBuilder(); 16 | } 17 | 18 | @Override 19 | public void write(int b) throws IOException { 20 | appendByte(b); 21 | } 22 | 23 | private void appendByte(int b1) { 24 | String hex = Integer.toHexString(0xFF & b1); 25 | if (hex.length() == 1) { 26 | // could use a for loop, but we're only dealing with a single byte 27 | buffer.append('0'); 28 | } 29 | buffer.append(hex); 30 | } 31 | 32 | public String getWrittenBytesAsHexString() { 33 | final String toString = buffer.toString(); 34 | buffer.setLength(0); 35 | return toString; 36 | } 37 | 38 | public String getWrittenBytesAsString() { 39 | byte[] res = BinaryTCPClientImpl.hexStringToByteArray(getWrittenBytesAsHexString()); 40 | return new String(res); 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /infra/emulators/src/main/java/kg/apc/emulators/TestFontMetrics.java: -------------------------------------------------------------------------------- 1 | package kg.apc.emulators; 2 | 3 | import java.awt.Font; 4 | import java.awt.FontMetrics; 5 | 6 | public class TestFontMetrics 7 | extends FontMetrics 8 | { 9 | /** 10 | * 11 | * @param f 12 | */ 13 | public TestFontMetrics(Font f) 14 | { 15 | super(f); 16 | } 17 | 18 | @Override 19 | public int getHeight() 20 | { 21 | return 10; 22 | } 23 | 24 | @Override 25 | public int stringWidth(String str) 26 | { 27 | return str.length(); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /infra/emulators/src/main/java/kg/apc/emulators/TestSocketFactory.java: -------------------------------------------------------------------------------- 1 | package kg.apc.emulators; 2 | 3 | import java.io.IOException; 4 | import java.net.InetAddress; 5 | import java.net.Socket; 6 | import java.net.UnknownHostException; 7 | import javax.net.SocketFactory; 8 | 9 | public class TestSocketFactory 10 | extends SocketFactory 11 | { 12 | private Socket socket; 13 | 14 | public TestSocketFactory() 15 | { 16 | socket = new SocketEmulator(); 17 | } 18 | 19 | @Override 20 | public Socket createSocket(String string, int i) throws IOException, UnknownHostException 21 | { 22 | return socket; 23 | } 24 | 25 | @Override 26 | public Socket createSocket() throws IOException 27 | { 28 | return socket; 29 | } 30 | 31 | @Override 32 | public Socket createSocket(String string, int i, InetAddress ia, int i1) throws IOException, UnknownHostException 33 | { 34 | throw new UnsupportedOperationException("Not supported yet."); 35 | } 36 | 37 | @Override 38 | public Socket createSocket(InetAddress ia, int i) throws IOException 39 | { 40 | throw new UnsupportedOperationException("Not supported yet."); 41 | } 42 | 43 | @Override 44 | public Socket createSocket(InetAddress ia, int i, InetAddress ia1, int i1) throws IOException 45 | { 46 | throw new UnsupportedOperationException("Not supported yet."); 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /infra/emulators/src/main/resources/anchor.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/infra/emulators/src/main/resources/anchor.properties -------------------------------------------------------------------------------- /infra/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 4.0.0 6 | 7 | kg.apc 8 | jmeter-plugins-infra 9 | 0.0 10 | pom 11 | 12 | 13 | emulators 14 | common 15 | common-io 16 | 17 | 18 | -------------------------------------------------------------------------------- /local-build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | mvn clean package dependency:copy-dependencies -------------------------------------------------------------------------------- /maven-bundle.sh: -------------------------------------------------------------------------------- 1 | #! /bin/sh -xe 2 | 3 | mvn -Dmaven.test.skip=true -Dadditionalparam=-Xdoclint:none -Dpackaging=jar clean package javadoc:jar source:jar verify gpg:sign deploy 4 | -------------------------------------------------------------------------------- /plugins/autostop/src/main/resources/kg/apc/jmeter/reporters/bulletGreen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/plugins/autostop/src/main/resources/kg/apc/jmeter/reporters/bulletGreen.png -------------------------------------------------------------------------------- /plugins/casutg/src/main/java/com/blazemeter/jmeter/reporters/FlushingResultCollector.java: -------------------------------------------------------------------------------- 1 | package com.blazemeter.jmeter.reporters; 2 | 3 | import org.apache.jmeter.reporters.ResultCollector; 4 | import org.slf4j.LoggerFactory; 5 | import org.slf4j.Logger; 6 | 7 | public class FlushingResultCollector extends ResultCollector { 8 | private static final Logger log = LoggerFactory.getLogger(FlushingResultCollector.class); 9 | 10 | public FlushingResultCollector() { 11 | super(); 12 | getSaveConfig().setFieldNames(true); 13 | } 14 | 15 | @Override 16 | public void testEnded(String host) { 17 | super.testEnded(host); 18 | try { 19 | // hack for JMeter < 2.12 (BUG #56807) 20 | ResultCollector.class.getDeclaredMethod("flushFile"); 21 | flushFile(); 22 | } catch (NoSuchMethodException e) { 23 | log.warn("Cannot flush PrintWriter to file"); 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /plugins/casutg/src/main/java/com/blazemeter/jmeter/threads/DynamicThread.java: -------------------------------------------------------------------------------- 1 | package com.blazemeter.jmeter.threads; 2 | 3 | import org.apache.jmeter.threads.JMeterThread; 4 | import org.apache.jmeter.threads.JMeterThreadMonitor; 5 | import org.apache.jmeter.threads.ListenerNotifier; 6 | import org.apache.jorphan.collections.HashTree; 7 | 8 | public class DynamicThread extends JMeterThread { 9 | private Thread osThread; 10 | private boolean stopping = false; 11 | 12 | public DynamicThread(HashTree test, JMeterThreadMonitor monitor, ListenerNotifier note, 13 | Boolean isSameUserOnNextIteration) { 14 | super(test, monitor, note, isSameUserOnNextIteration); 15 | } 16 | 17 | public void setOSThread(Thread OSThread) { 18 | this.osThread = OSThread; 19 | } 20 | 21 | public Thread getOSThread() { 22 | return osThread; 23 | } 24 | 25 | @Override 26 | public String toString() { 27 | return getThreadName(); 28 | } 29 | 30 | @Override 31 | public void stop() { 32 | stopping = true; 33 | super.stop(); 34 | } 35 | 36 | public void interruptOSThread() { 37 | if (osThread != null) { 38 | osThread.interrupt(); 39 | } 40 | } 41 | 42 | public boolean isStopping() { 43 | return stopping; 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /plugins/casutg/src/main/java/com/blazemeter/jmeter/threads/ParamsPanel.java: -------------------------------------------------------------------------------- 1 | package com.blazemeter.jmeter.threads; 2 | 3 | import kg.apc.jmeter.JMeterVariableEvaluator; 4 | 5 | public interface ParamsPanel { 6 | void modelToUI(AbstractDynamicThreadGroup tg); 7 | 8 | void UItoModel(AbstractDynamicThreadGroup tg, JMeterVariableEvaluator evaluator); 9 | 10 | void clearUI(); 11 | } 12 | -------------------------------------------------------------------------------- /plugins/casutg/src/main/java/com/blazemeter/jmeter/threads/arrivals/FreeFormArrivalsThreadGroup.java: -------------------------------------------------------------------------------- 1 | package com.blazemeter.jmeter.threads.arrivals; 2 | 3 | import kg.apc.jmeter.JMeterPluginsUtils; 4 | import org.apache.jmeter.engine.StandardJMeterEngine; 5 | import org.apache.jmeter.gui.util.PowerTableModel; 6 | import org.apache.jmeter.testelement.property.CollectionProperty; 7 | import org.apache.jmeter.testelement.property.JMeterProperty; 8 | import org.apache.jmeter.threads.ListenerNotifier; 9 | import org.apache.jorphan.collections.ListedHashTree; 10 | 11 | public class FreeFormArrivalsThreadGroup extends ArrivalsThreadGroup { 12 | public static final String SCHEDULE = "Schedule"; 13 | 14 | public void setData(PowerTableModel model) { 15 | CollectionProperty prop = JMeterPluginsUtils.tableModelRowsToCollectionProperty(model, SCHEDULE); 16 | setProperty(prop); 17 | } 18 | 19 | public CollectionProperty getData() { 20 | JMeterProperty prop = getProperty(SCHEDULE); 21 | if (prop instanceof CollectionProperty) { 22 | return (CollectionProperty) prop; 23 | } else { 24 | return new CollectionProperty(); 25 | } 26 | } 27 | 28 | @Override 29 | protected Thread getThreadStarter(int groupIndex, ListenerNotifier listenerNotifier, ListedHashTree testTree, StandardJMeterEngine engine) { 30 | return new FreeFormArrivalsThreadStarter(groupIndex, listenerNotifier, testTree, engine, this); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /plugins/casutg/src/main/java/org/apache/jmeter/threads/ThreadCountsAccessor.java: -------------------------------------------------------------------------------- 1 | package org.apache.jmeter.threads; 2 | 3 | import org.apache.jmeter.gui.GuiPackage; 4 | 5 | // so sad, but JMeter core has package-private visibility for some methods 6 | public class ThreadCountsAccessor { 7 | private static long lastUpdate = 0; 8 | 9 | public static void decrNumberOfThreads() { 10 | JMeterContextService.decrNumberOfThreads(); 11 | refreshUI(); 12 | } 13 | 14 | public static void incrNumberOfThreads() { 15 | JMeterContextService.incrNumberOfThreads(); 16 | refreshUI(); 17 | } 18 | 19 | private static void refreshUI() { 20 | long ts = System.currentTimeMillis(); 21 | if (ts - lastUpdate < 1000) { 22 | return; // throttle down updates 23 | } 24 | 25 | lastUpdate = ts; 26 | GuiPackage gp = GuiPackage.getInstance(); 27 | if (gp != null) {// check there is a GUI 28 | gp.getMainFrame().updateCounts(); 29 | } 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /plugins/casutg/src/test/java/com/blazemeter/jmeter/control/VirtualUserControllerTest.java: -------------------------------------------------------------------------------- 1 | package com.blazemeter.jmeter.control; 2 | 3 | import com.blazemeter.jmeter.threads.arrivals.ArrivalsThreadGroup; 4 | import com.blazemeter.jmeter.threads.arrivals.ArrivalsThreadGroupTest; 5 | import kg.apc.emulators.TestJMeterUtils; 6 | import org.apache.jmeter.sampler.DebugSampler; 7 | import org.junit.BeforeClass; 8 | import org.junit.Test; 9 | 10 | import static org.junit.Assert.*; 11 | 12 | public class VirtualUserControllerTest { 13 | 14 | @BeforeClass 15 | public static void setUpClass() throws Exception { 16 | ArrivalsThreadGroupTest.setUpClass(); 17 | TestJMeterUtils.createJmeterEnv(); 18 | } 19 | 20 | @Test 21 | public void testThreadGroupInterrupted() { 22 | VirtualUserController vuc = new VirtualUserController(); 23 | vuc.addTestElement(new DebugSampler()); 24 | 25 | ArrivalsThreadGroup tg = new ArrivalsThreadGroup() { 26 | @Override 27 | public boolean isRunning() { 28 | return false; 29 | } 30 | }; 31 | tg.addTestElement(vuc); 32 | vuc.setOwner(tg); 33 | assertNull(vuc.next()); 34 | } 35 | } -------------------------------------------------------------------------------- /plugins/casutg/src/test/java/com/blazemeter/jmeter/threads/arrivals/ArrivalsThreadGroupEmul.java: -------------------------------------------------------------------------------- 1 | package com.blazemeter.jmeter.threads.arrivals; 2 | 3 | import com.blazemeter.jmeter.control.VirtualUserController; 4 | import org.apache.jmeter.sampler.DebugSampler; 5 | 6 | public class ArrivalsThreadGroupEmul extends ArrivalsThreadGroup { 7 | public ArrivalsThreadGroupEmul() { 8 | super(); 9 | VirtualUserController vuc = new VirtualUserController(); 10 | vuc.addTestElement(new DebugSampler()); 11 | addTestElement(vuc); 12 | } 13 | 14 | public long getArrivalsDone() { 15 | return arrivalsCount.longValue(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /plugins/casutg/src/test/java/com/blazemeter/jmeter/threads/concurrency/ConcurrencyThreadStarterTest.java: -------------------------------------------------------------------------------- 1 | package com.blazemeter.jmeter.threads.concurrency; 2 | 3 | import com.blazemeter.jmeter.threads.arrivals.ArrivalsThreadGroupTest; 4 | import kg.apc.emulators.TestJMeterUtils; 5 | import org.apache.jorphan.collections.ListedHashTree; 6 | import org.junit.BeforeClass; 7 | import org.junit.Test; 8 | 9 | import static org.junit.Assert.*; 10 | 11 | public class ConcurrencyThreadStarterTest { 12 | @BeforeClass 13 | public static void setUpClass() { 14 | TestJMeterUtils.createJmeterEnv(); 15 | } 16 | 17 | @Test(timeout = 1000) 18 | public void testZeroThreads() { 19 | ConcurrencyThreadGroupExt ctg = new ConcurrencyThreadGroupExt(); 20 | ctg.setTargetLevel("0"); 21 | ctg.setHold("400000"); 22 | ListedHashTree tree = ArrivalsThreadGroupTest.getListedHashTree(ctg, false); 23 | ConcurrencyThreadStarter starter = new ConcurrencyThreadStarter(0, null, tree, null, ctg); 24 | starter.supplyActiveThreads(); 25 | } 26 | 27 | public static class ConcurrencyThreadGroupExt extends ConcurrencyThreadGroup { 28 | @Override 29 | public boolean isLimitReached() { 30 | return false; 31 | } 32 | } 33 | } -------------------------------------------------------------------------------- /plugins/casutg/src/test/java/kg/apc/jmeter/threads/AbstractSimpleThreadGroupImpl.java: -------------------------------------------------------------------------------- 1 | package kg.apc.jmeter.threads; 2 | 3 | import org.apache.jmeter.threads.JMeterThread; 4 | 5 | import java.util.Map; 6 | 7 | public class AbstractSimpleThreadGroupImpl extends AbstractSimpleThreadGroup { 8 | 9 | public void scheduleThread(JMeterThread thread, long now) { 10 | // just dummy impl 11 | } 12 | 13 | public Map getAllThreads() { 14 | return this.allThreads; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /plugins/csvars/src/test/resources/kg/apc/jmeter/config/CSVSample_user.csv: -------------------------------------------------------------------------------- 1 | ermadmin,ermadmin 2 | probe,probe 3 | yesra,yesra 4 | -------------------------------------------------------------------------------- /plugins/csvars/src/test/resources/kg/apc/jmeter/config/csvFileTest.csv: -------------------------------------------------------------------------------- 1 | var1,first 2 | var2,second -------------------------------------------------------------------------------- /plugins/dbmon/src/main/java/kg/apc/jmeter/dbmon/DbMonSampleGenerator.java: -------------------------------------------------------------------------------- 1 | package kg.apc.jmeter.dbmon; 2 | 3 | public interface DbMonSampleGenerator { 4 | public void generateSample(double d, String string); 5 | } 6 | -------------------------------------------------------------------------------- /plugins/dbmon/src/main/java/kg/apc/jmeter/dbmon/DbMonSampleResult.java: -------------------------------------------------------------------------------- 1 | package kg.apc.jmeter.dbmon; 2 | 3 | import org.apache.jmeter.samplers.SampleResult; 4 | 5 | public class DbMonSampleResult 6 | extends SampleResult { 7 | 8 | private final long ts; 9 | 10 | public DbMonSampleResult() { 11 | ts = System.currentTimeMillis(); 12 | } 13 | 14 | // store as responseMessage, as db query can return any value (bigger than float precision) 15 | public void setValue(double value) { 16 | setStartTime(ts); 17 | setResponseMessage(Double.toString(value)); 18 | } 19 | 20 | @Override 21 | public void setResponseMessage(String msg) { 22 | super.setResponseMessage(msg); 23 | setStartTime(ts); 24 | } 25 | 26 | @Deprecated 27 | public double getValue() { 28 | return Double.valueOf(getResponseMessage()); 29 | } 30 | 31 | //needed for CSV reload as object created by JMeter is not PerfMonSampleResult but SampleResult 32 | public static double getValue(SampleResult res) { 33 | return Double.valueOf(res.getResponseMessage()); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /plugins/dbmon/src/test/java/kg/apc/jmeter/dbmon/DbMonSampleGeneratorEmul.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2013 undera. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package kg.apc.jmeter.dbmon; 17 | 18 | class DbMonSampleGeneratorEmul implements DbMonSampleGenerator { 19 | 20 | public DbMonSampleGeneratorEmul() { 21 | } 22 | 23 | @Override 24 | public void generateSample(double d, String string) { 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /plugins/deprecated/src/main/java/kg/apc/jmeter/config/AddRemoteServerAction.java: -------------------------------------------------------------------------------- 1 | package kg.apc.jmeter.config; 2 | 3 | import java.awt.event.ActionEvent; 4 | import java.awt.event.ActionListener; 5 | 6 | public class AddRemoteServerAction implements ActionListener { 7 | private ServersListPanel servers; 8 | 9 | public AddRemoteServerAction(ServersListPanel serversPanel) { 10 | servers = serversPanel; 11 | } 12 | 13 | public void actionPerformed(ActionEvent actionEvent) { 14 | servers.add(""); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /plugins/deprecated/src/main/java/kg/apc/jmeter/config/DistributedTestControl.java: -------------------------------------------------------------------------------- 1 | package kg.apc.jmeter.config; 2 | 3 | import org.apache.commons.lang3.StringUtils; 4 | import org.apache.jmeter.config.ConfigTestElement; 5 | import org.apache.jmeter.testelement.property.CollectionProperty; 6 | import org.apache.jmeter.util.JMeterUtils; 7 | import org.slf4j.Logger; 8 | import org.slf4j.LoggerFactory; 9 | 10 | import java.util.ArrayList; 11 | import java.util.LinkedList; 12 | 13 | public class DistributedTestControl extends ConfigTestElement { 14 | 15 | public static final String DATA_PROP = "SERVERS"; 16 | public static final String PROP_HOSTS = "remote_hosts"; 17 | private static final Logger log = LoggerFactory.getLogger(DistributedTestControl.class); 18 | 19 | public CollectionProperty getData() { 20 | CollectionProperty data = (CollectionProperty) getProperty(DATA_PROP); 21 | LinkedList arr=new LinkedList(); 22 | 23 | for (int n = 0; n < data.size(); n++) { 24 | arr.add(data.get(n).getStringValue()); 25 | } 26 | 27 | String val = StringUtils.join(arr, ","); 28 | log.debug("Setting hosts 1: " + val); 29 | JMeterUtils.setProperty(PROP_HOSTS, val); 30 | return data; 31 | } 32 | 33 | public void setData(ArrayList data) { 34 | setProperty(new CollectionProperty(DistributedTestControl.DATA_PROP, data)); 35 | String val = StringUtils.join(data, ","); 36 | log.debug("Setting hosts 2: " + val); 37 | JMeterUtils.setProperty(PROP_HOSTS, val); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /plugins/deprecated/src/main/java/kg/apc/jmeter/config/JMeterServerPanel.java: -------------------------------------------------------------------------------- 1 | package kg.apc.jmeter.config; 2 | 3 | import javax.swing.*; 4 | import java.awt.*; 5 | 6 | public class JMeterServerPanel extends JPanel { 7 | 8 | private final JTextField serverName; 9 | private ServersListPanel owner; 10 | 11 | public JMeterServerPanel(String srvName, ServersListPanel aOwner) { 12 | super(); 13 | owner = aOwner; 14 | setLayout(new BoxLayout(this, BoxLayout.X_AXIS)); 15 | setMaximumSize(new Dimension(Short.MAX_VALUE, Short.MAX_VALUE)); 16 | setBorder(BorderFactory.createEtchedBorder()); 17 | add(new JLabel("Server Address: ")); 18 | add(serverName = new JTextField(srvName, 32)); 19 | add(new JLabel("Status: ")); 20 | add(new JLabel("unknown")); 21 | add(new JButton("Get Status")); 22 | JButton btnRemove = new JButton("Remove"); 23 | btnRemove.addActionListener(new RemoveServerAction(this)); 24 | add(btnRemove); 25 | } 26 | 27 | public String getServerName() { 28 | return serverName.getText(); 29 | } 30 | 31 | public void remove() { 32 | owner.removeServer(this); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /plugins/deprecated/src/main/java/kg/apc/jmeter/config/RemoveServerAction.java: -------------------------------------------------------------------------------- 1 | package kg.apc.jmeter.config; 2 | 3 | import java.awt.event.ActionEvent; 4 | import java.awt.event.ActionListener; 5 | 6 | public class RemoveServerAction implements ActionListener { 7 | private final JMeterServerPanel owner; 8 | 9 | public RemoveServerAction(JMeterServerPanel jMeterServerPanel) { 10 | owner=jMeterServerPanel; 11 | } 12 | 13 | public void actionPerformed(ActionEvent actionEvent) { 14 | owner.remove(); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /plugins/deprecated/src/test/java/kg/apc/jmeter/config/ServersListPanelTest.java: -------------------------------------------------------------------------------- 1 | package kg.apc.jmeter.config; 2 | 3 | import kg.apc.emulators.TestJMeterUtils; 4 | import org.junit.BeforeClass; 5 | import org.junit.Test; 6 | 7 | import javax.swing.*; 8 | 9 | import static org.junit.Assert.assertEquals; 10 | 11 | public class ServersListPanelTest { 12 | @BeforeClass 13 | public static void setUpClass() throws Exception { 14 | TestJMeterUtils.createJmeterEnv(); 15 | } 16 | 17 | @Test 18 | public void testClear() { 19 | ServersListPanel obj = new ServersListPanel(); 20 | new JPanel().add(obj); 21 | assertEquals(0, obj.getCount()); 22 | obj.add("Test"); 23 | assertEquals(1, obj.getCount()); 24 | obj.clear(); 25 | assertEquals(0, obj.getCount()); 26 | } 27 | 28 | @Test 29 | public void testSaveToTestElement() { 30 | DistributedTestControl te = new DistributedTestControl(); 31 | ServersListPanel obj1 = new ServersListPanel(); 32 | new JPanel().add(obj1); 33 | obj1.add("Test"); 34 | obj1.saveToTestElement(te); 35 | ServersListPanel obj2 = new ServersListPanel(); 36 | new JPanel().add(obj2); 37 | assertEquals(0, obj2.getCount()); 38 | obj2.loadFromTestElement(te); 39 | assertEquals(1, obj2.getCount()); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /plugins/dummy/src/main/java/kg/apc/jmeter/modifiers/DummySubPostProcessor.java: -------------------------------------------------------------------------------- 1 | package kg.apc.jmeter.modifiers; 2 | 3 | import kg.apc.jmeter.dummy.DummyElement; 4 | import org.apache.jmeter.processor.PostProcessor; 5 | import org.apache.jmeter.samplers.SampleResult; 6 | import org.apache.jmeter.testelement.AbstractTestElement; 7 | import org.apache.jmeter.threads.JMeterContext; 8 | 9 | public class DummySubPostProcessor extends AbstractTestElement implements PostProcessor { 10 | private final DummyElement dummy; 11 | 12 | public DummySubPostProcessor() { 13 | this.dummy = new DummyElement(this); 14 | } 15 | 16 | @Override 17 | public void process() { 18 | JMeterContext context = getThreadContext(); 19 | SampleResult res = context.getPreviousResult(); 20 | SampleResult sample = dummy.sample(); 21 | res.addSubResult(sample); 22 | } 23 | 24 | public DummyElement getDummy() { 25 | return dummy; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /plugins/dummy/src/main/java/kg/apc/jmeter/samplers/DummySampler.java: -------------------------------------------------------------------------------- 1 | package kg.apc.jmeter.samplers; 2 | 3 | import kg.apc.jmeter.dummy.DummyElement; 4 | import org.apache.jmeter.samplers.AbstractSampler; 5 | import org.apache.jmeter.samplers.Entry; 6 | import org.apache.jmeter.samplers.Interruptible; 7 | import org.apache.jmeter.samplers.SampleResult; 8 | 9 | public class DummySampler extends AbstractSampler implements Interruptible { 10 | private final DummyElement dummy; 11 | 12 | public DummySampler() { 13 | this.dummy = new DummyElement(this); 14 | } 15 | 16 | public boolean interrupt() { 17 | Thread.currentThread().interrupt(); 18 | return true; 19 | } 20 | 21 | @Override 22 | public SampleResult sample(Entry e) { 23 | return dummy.sample(); 24 | } 25 | 26 | public DummyElement getDummy() { 27 | return dummy; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /plugins/dummy/src/test/java/kg/apc/jmeter/modifiers/DummySubPostProcessorTest.java: -------------------------------------------------------------------------------- 1 | package kg.apc.jmeter.modifiers; 2 | 3 | import kg.apc.jmeter.samplers.DummySampler; 4 | import org.apache.jmeter.samplers.SampleResult; 5 | import org.apache.jmeter.threads.JMeterContext; 6 | import org.apache.jmeter.threads.JMeterContextService; 7 | import org.junit.Before; 8 | import org.junit.Test; 9 | 10 | import java.io.IOException; 11 | import java.io.ObjectOutputStream; 12 | 13 | import static org.junit.Assert.*; 14 | 15 | public class DummySubPostProcessorTest { 16 | @Before 17 | public void setUp() { 18 | JMeterContext threadContext = JMeterContextService.getContext(); 19 | SampleResult res = new SampleResult(); 20 | res.sampleStart(); 21 | res.sampleEnd(); 22 | threadContext.setPreviousResult(res); 23 | } 24 | 25 | @Test 26 | public void process() { 27 | DummySubPostProcessor te = new DummySubPostProcessor(); 28 | te.process(); 29 | } 30 | 31 | @Test 32 | public void testSerialize() throws IOException { 33 | Object instance = new DummySubPostProcessor(); 34 | ObjectOutputStream os = new ObjectOutputStream(System.out); 35 | os.writeObject(instance); 36 | } 37 | } -------------------------------------------------------------------------------- /plugins/functions/src/main/java/kg/apc/jmeter/functions/IterationNum.java: -------------------------------------------------------------------------------- 1 | package kg.apc.jmeter.functions; 2 | 3 | import org.apache.jmeter.engine.util.CompoundVariable; 4 | import org.apache.jmeter.functions.AbstractFunction; 5 | import org.apache.jmeter.functions.InvalidVariableException; 6 | import org.apache.jmeter.samplers.SampleResult; 7 | import org.apache.jmeter.samplers.Sampler; 8 | 9 | import java.util.Collection; 10 | import java.util.LinkedList; 11 | import java.util.List; 12 | 13 | public class IterationNum extends AbstractFunction { 14 | 15 | private static final List desc = new LinkedList(); 16 | private static final String KEY = "__iterationNum"; 17 | 18 | @Override 19 | public synchronized String execute(SampleResult previousResult, Sampler currentSampler) 20 | throws InvalidVariableException { 21 | return String.valueOf(getVariables().getIteration()); 22 | 23 | } 24 | 25 | @Override 26 | public synchronized void setParameters(Collection parameters) throws InvalidVariableException { 27 | } 28 | 29 | @Override 30 | public String getReferenceKey() { 31 | return KEY; 32 | } 33 | 34 | @Override 35 | public List getArgumentDesc() { 36 | return desc; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /plugins/functions/src/test/java/kg/apc/jmeter/functions/IterationNumTest.java: -------------------------------------------------------------------------------- 1 | package kg.apc.jmeter.functions; 2 | 3 | import kg.apc.emulators.TestJMeterUtils; 4 | import org.junit.Assert; 5 | import org.junit.BeforeClass; 6 | import org.junit.Test; 7 | 8 | public class IterationNumTest { 9 | @BeforeClass 10 | public static void setUpClass() throws Exception { 11 | TestJMeterUtils.createJmeterEnv(); 12 | } 13 | 14 | @Test 15 | public void testExecute() throws Exception { 16 | IterationNum obj = new IterationNum(); 17 | String res = obj.execute(null, null); 18 | Assert.assertEquals("0", res); 19 | } 20 | 21 | } -------------------------------------------------------------------------------- /plugins/httpraw/src/main/java/kg/apc/jmeter/EndOfFileException.java: -------------------------------------------------------------------------------- 1 | package kg.apc.jmeter; 2 | 3 | import java.io.IOException; 4 | 5 | public class EndOfFileException extends IOException 6 | { 7 | 8 | public EndOfFileException(String string) { 9 | super(string); 10 | } 11 | 12 | } 13 | -------------------------------------------------------------------------------- /plugins/httpraw/src/main/java/kg/apc/jmeter/RuntimeEOFException.java: -------------------------------------------------------------------------------- 1 | package kg.apc.jmeter; 2 | 3 | public class RuntimeEOFException extends RuntimeException 4 | { 5 | 6 | public RuntimeEOFException(String string) { 7 | super(string); 8 | } 9 | 10 | public RuntimeEOFException(String string, Throwable ex) { 11 | super(string, ex); 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /plugins/httpraw/src/test/java/kg/apc/jmeter/EndOfFileExceptionTest.java: -------------------------------------------------------------------------------- 1 | package kg.apc.jmeter; 2 | 3 | import org.junit.After; 4 | import org.junit.Before; 5 | import org.junit.Test; 6 | import static org.junit.Assert.*; 7 | 8 | public class EndOfFileExceptionTest { 9 | 10 | public EndOfFileExceptionTest() { 11 | } 12 | 13 | @Before 14 | public void setUp() { 15 | } 16 | 17 | @After 18 | public void tearDown() { 19 | } 20 | 21 | @Test 22 | public void testInst() 23 | { 24 | EndOfFileException i = new EndOfFileException(""); 25 | assertNotNull(i); 26 | } 27 | 28 | } -------------------------------------------------------------------------------- /plugins/httpraw/src/test/java/kg/apc/jmeter/RuntimeEOFExceptionTest.java: -------------------------------------------------------------------------------- 1 | package kg.apc.jmeter; 2 | 3 | import org.junit.After; 4 | import org.junit.AfterClass; 5 | import org.junit.Before; 6 | import org.junit.BeforeClass; 7 | import org.junit.Test; 8 | 9 | public class RuntimeEOFExceptionTest { 10 | 11 | public RuntimeEOFExceptionTest() { 12 | } 13 | 14 | @BeforeClass 15 | public static void setUpClass() throws Exception { 16 | } 17 | 18 | @AfterClass 19 | public static void tearDownClass() throws Exception { 20 | } 21 | 22 | @Before 23 | public void setUp() { 24 | } 25 | 26 | @After 27 | public void tearDown() { 28 | } 29 | 30 | @Test 31 | public void testSomeMethod() { 32 | new RuntimeEOFException("test"); 33 | } 34 | 35 | } -------------------------------------------------------------------------------- /plugins/httpraw/src/test/resources/protobuf.one.ammo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/plugins/httpraw/src/test/resources/protobuf.one.ammo -------------------------------------------------------------------------------- /plugins/httpraw/src/test/resources/testSendFile.raw: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/plugins/httpraw/src/test/resources/testSendFile.raw -------------------------------------------------------------------------------- /plugins/httpraw/src/test/resources/testSendFile_1.raw: -------------------------------------------------------------------------------- 1 | GET / HTTP/1.1 2 | Host: files.namba.kz 3 | Connection: close 4 | Referer: http://files.namba.kz/upload.php 5 | 6 | -------------------------------------------------------------------------------- /plugins/jms/src/main/java/com/atlantbh/jmeter/plugins/jmstools/BinaryMessagepostProcessor.java: -------------------------------------------------------------------------------- 1 | /*! 2 | * AtlantBH Custom Jmeter Components v1.0.0 3 | * http://www.atlantbh.com/jmeter-components/ 4 | * 5 | * Copyright 2011, AtlantBH 6 | * 7 | * Licensed under the under the Apache License, Version 2.0. 8 | */ 9 | package com.atlantbh.jmeter.plugins.jmstools; 10 | 11 | import java.util.HashMap; 12 | import java.util.Map; 13 | 14 | import javax.jms.JMSException; 15 | import javax.jms.Message; 16 | 17 | import org.springframework.jms.core.MessagePostProcessor; 18 | 19 | public class BinaryMessagepostProcessor implements MessagePostProcessor { 20 | 21 | private Map messageProperties = new HashMap(); 22 | 23 | public Map getMessageProperties() { 24 | return messageProperties; 25 | } 26 | 27 | public void setMessageProperties(Map messageProperties) { 28 | this.messageProperties = messageProperties; 29 | } 30 | 31 | @Override 32 | public Message postProcessMessage(Message message) throws JMSException { 33 | if (message != null) { 34 | for (String key : messageProperties.keySet()) { 35 | message.setStringProperty(key, messageProperties.get(key)); 36 | } 37 | return message; 38 | } 39 | return null; 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /plugins/jmxmon/src/main/java/kg/apc/jmeter/jmxmon/JMXMonSampleGenerator.java: -------------------------------------------------------------------------------- 1 | package kg.apc.jmeter.jmxmon; 2 | 3 | public interface JMXMonSampleGenerator { 4 | public void generateSample(double d, String string); 5 | } 6 | -------------------------------------------------------------------------------- /plugins/jmxmon/src/main/java/kg/apc/jmeter/jmxmon/JMXMonSampleResult.java: -------------------------------------------------------------------------------- 1 | package kg.apc.jmeter.jmxmon; 2 | 3 | import org.apache.jmeter.samplers.SampleResult; 4 | 5 | public class JMXMonSampleResult 6 | extends SampleResult { 7 | 8 | private final long ts; 9 | 10 | public JMXMonSampleResult() { 11 | ts = System.currentTimeMillis(); 12 | } 13 | 14 | // store as responseMessage, as db query can return any value (bigger than float precision) 15 | public void setValue(double value) { 16 | setStartTime(ts); 17 | setResponseMessage(new Double(value).toString()); 18 | } 19 | 20 | @Override 21 | public void setResponseMessage(String msg) { 22 | super.setResponseMessage(msg); 23 | setStartTime(ts); 24 | } 25 | 26 | @Deprecated 27 | public double getValue() { 28 | return Double.valueOf(getResponseMessage()); 29 | } 30 | 31 | //needed for CSV reload as object created by JMeter is not PerfMonSampleResult but SampleResult 32 | public static double getValue(SampleResult res) { 33 | return Double.valueOf(res.getResponseMessage()); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /plugins/jmxmon/src/test/java/kg/apc/jmeter/jmxmon/JMXMonSampleGeneratorEmul.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2013 undera. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package kg.apc.jmeter.jmxmon; 17 | 18 | class JMXMonSampleGeneratorEmul implements JMXMonSampleGenerator { 19 | 20 | public JMXMonSampleGeneratorEmul() { 21 | } 22 | 23 | @Override 24 | public void generateSample(double d, String string) { 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /plugins/jmxmon/src/test/java/kg/apc/jmeter/jmxmon/JMXMonSuite.java: -------------------------------------------------------------------------------- 1 | /* 2 | * To change this template, choose Tools | Templates 3 | * and open the template in the editor. 4 | */ 5 | package kg.apc.jmeter.jmxmon; 6 | 7 | import org.junit.After; 8 | import org.junit.AfterClass; 9 | import org.junit.Before; 10 | import org.junit.BeforeClass; 11 | import org.junit.runner.RunWith; 12 | import org.junit.runners.Suite; 13 | 14 | @RunWith(Suite.class) 15 | @Suite.SuiteClasses({ JMXMonSampleGeneratorTest.class, JMXMonCollectorTest.class, JMXMonSamplerTest.class, 16 | JMXMonSampleResultTest.class, JMXMonTest.class, JMXMonConnectionPoolTest.class }) 17 | public class JMXMonSuite { 18 | 19 | @BeforeClass 20 | public static void setUpClass() throws Exception { 21 | } 22 | 23 | @AfterClass 24 | public static void tearDownClass() throws Exception { 25 | } 26 | 27 | @Before 28 | public void setUp() throws Exception { 29 | } 30 | 31 | @After 32 | public void tearDown() throws Exception { 33 | } 34 | 35 | } 36 | -------------------------------------------------------------------------------- /plugins/jmxmon/src/test/java/kg/apc/jmeter/jmxmon/rmi/ClientProvider.java: -------------------------------------------------------------------------------- 1 | package kg.apc.jmeter.jmxmon.rmi; 2 | 3 | import java.io.IOException; 4 | import java.util.Map; 5 | 6 | import javax.management.remote.JMXConnector; 7 | import javax.management.remote.JMXConnectorProvider; 8 | import javax.management.remote.JMXServiceURL; 9 | 10 | import kg.apc.jmeter.jmxmon.JMXConnectorEmul; 11 | 12 | public class ClientProvider implements JMXConnectorProvider { 13 | 14 | @Override 15 | public JMXConnector newJMXConnector(JMXServiceURL serviceURL, Map environment) throws IOException { 16 | return new JMXConnectorEmul(); 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /plugins/json/src/main/java/com/atlantbh/jmeter/plugins/jsonutils/YAMLToJSONConverter.java: -------------------------------------------------------------------------------- 1 | package com.atlantbh.jmeter.plugins.jsonutils; 2 | 3 | 4 | import net.minidev.json.JSONObject; 5 | import org.slf4j.LoggerFactory; 6 | import org.slf4j.Logger; 7 | import org.yaml.snakeyaml.Yaml; 8 | 9 | import java.util.Map; 10 | 11 | public class YAMLToJSONConverter { 12 | private static final Logger log = LoggerFactory.getLogger(YAMLToJSONConverter.class); 13 | 14 | public static String convert(String yamlString) { 15 | Yaml yaml = new Yaml(); 16 | log.debug("Try to load yaml string: " + yamlString); 17 | Map load = yaml.load(yamlString); 18 | return JSONObject.toJSONString(load); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /plugins/json/src/test/resources/test.yml: -------------------------------------------------------------------------------- 1 | # Yaml for test 2 | developers: # all the contributors here 3 | - rultor # bot used for devops 4 | - salikjan 5 | - sherif 6 | architect: mihai 7 | name: camel -------------------------------------------------------------------------------- /plugins/json/src/test/resources/test1.yml: -------------------------------------------------------------------------------- 1 | execution: 2 | - concurrency: 100 3 | ramp-up: 1m 4 | hold-for: 5m 5 | scenario: quick-test 6 | name: camel 7 | scenarios: 8 | quick-test: 9 | requests: 10 | - http://blazedemo.com -------------------------------------------------------------------------------- /plugins/oauth/src/test/java/com/atlantbh/jmeter/plugins/oauth/OAuthSamplerEmul.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2013 undera. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package com.atlantbh.jmeter.plugins.oauth; 17 | 18 | import java.io.IOException; 19 | import org.apache.commons.httpclient.HttpClient; 20 | import org.apache.commons.httpclient.HttpMethodBase; 21 | 22 | class OAuthSamplerEmul extends OAuthSampler { 23 | 24 | public OAuthSamplerEmul() { 25 | } 26 | 27 | @Override 28 | protected HttpClient setupConnection(java.net.URL u, HttpMethodBase httpMethod) throws IOException { 29 | return new HttpClient(); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /plugins/perfmon/src/main/java/kg/apc/jmeter/perfmon/PerfMonAgentConnector.java: -------------------------------------------------------------------------------- 1 | package kg.apc.jmeter.perfmon; 2 | 3 | import java.io.IOException; 4 | 5 | public interface PerfMonAgentConnector { 6 | 7 | void connect() throws IOException; 8 | 9 | void disconnect(); 10 | 11 | void generateSamples(PerfMonSampleGenerator collector) throws IOException; 12 | 13 | void addMetric(String metric, String params, String label); 14 | } 15 | -------------------------------------------------------------------------------- /plugins/perfmon/src/main/java/kg/apc/jmeter/perfmon/PerfMonException.java: -------------------------------------------------------------------------------- 1 | package kg.apc.jmeter.perfmon; 2 | 3 | import java.io.IOException; 4 | 5 | public class PerfMonException extends IOException { 6 | public PerfMonException(String message, Throwable cause) { 7 | super(message, cause); 8 | } 9 | 10 | public PerfMonException(String message) { 11 | super(message); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /plugins/perfmon/src/main/java/kg/apc/jmeter/perfmon/PerfMonSampleGenerator.java: -------------------------------------------------------------------------------- 1 | package kg.apc.jmeter.perfmon; 2 | 3 | public interface PerfMonSampleGenerator { 4 | 5 | void generate2Samples(long[] netIO, String string, String string0, double d); 6 | 7 | void generate2Samples(long[] disksIO, String string, String string0); 8 | 9 | void generateSample(double d, String string); 10 | 11 | void generateErrorSample(String label, String errorMsg); 12 | } 13 | -------------------------------------------------------------------------------- /plugins/perfmon/src/main/java/kg/apc/jmeter/perfmon/PerfMonSampleResult.java: -------------------------------------------------------------------------------- 1 | package kg.apc.jmeter.perfmon; 2 | 3 | import org.apache.jmeter.samplers.SampleResult; 4 | 5 | public class PerfMonSampleResult extends SampleResult { 6 | 7 | private final long ts; 8 | 9 | public PerfMonSampleResult() { 10 | ts = System.currentTimeMillis(); 11 | } 12 | 13 | // store as responseTime, multiply by 1000 to keep floating precision 14 | public void setValue(double value) { 15 | setStartTime(ts); 16 | setEndTime(ts + (long) (value * 1000)); 17 | } 18 | 19 | @Deprecated 20 | public double getValue() { 21 | return ((double) getTime()) / 1000d; 22 | } 23 | 24 | //needed for CSV reload as object created by JMeter is not PerfMonSampleResult but SampleResult 25 | public static double getValue(SampleResult res) { 26 | return ((double) res.getTime()) / 1000d; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /plugins/perfmon/src/main/java/kg/apc/jmeter/perfmon/UnavailableAgentConnector.java: -------------------------------------------------------------------------------- 1 | package kg.apc.jmeter.perfmon; 2 | 3 | import java.io.IOException; 4 | import org.slf4j.LoggerFactory; 5 | import org.slf4j.Logger; 6 | 7 | /** 8 | * Using "null object" pattern 9 | */ 10 | class UnavailableAgentConnector implements PerfMonAgentConnector { 11 | 12 | private static final Logger log = LoggerFactory.getLogger(UnavailableAgentConnector.class); 13 | private IOException cause; 14 | 15 | UnavailableAgentConnector(IOException e) { 16 | cause = e; 17 | } 18 | 19 | public void setMetricType(String metric) { 20 | log.debug("Dropped setMetric call"); 21 | } 22 | 23 | public void setParams(String params) { 24 | log.debug("Dropped setParams call"); 25 | } 26 | 27 | public void connect() throws IOException { 28 | log.debug("Dropped connect call"); 29 | } 30 | 31 | public void disconnect() { 32 | log.debug("Dropped disconnect call"); 33 | } 34 | 35 | public String getLabel(boolean translateHost) { 36 | return cause.toString(); 37 | } 38 | 39 | public void generateSamples(PerfMonSampleGenerator collector) throws IOException { 40 | collector.generateErrorSample(getLabel(false), cause.toString()); 41 | } 42 | 43 | public void addMetric(String metric, String params, String label) { 44 | log.debug("Dropped addMetric call"); 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /plugins/perfmon/src/test/java/kg/apc/jmeter/perfmon/PerfMonExceptionTest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * To change this template, choose Tools | Templates 3 | * and open the template in the editor. 4 | */ 5 | 6 | package kg.apc.jmeter.perfmon; 7 | 8 | import org.junit.After; 9 | import org.junit.AfterClass; 10 | import org.junit.Before; 11 | import org.junit.BeforeClass; 12 | import org.junit.Test; 13 | import static org.junit.Assert.*; 14 | 15 | public class PerfMonExceptionTest { 16 | 17 | public PerfMonExceptionTest() { 18 | } 19 | 20 | @BeforeClass 21 | public static void setUpClass() throws Exception { 22 | } 23 | 24 | @AfterClass 25 | public static void tearDownClass() throws Exception { 26 | } 27 | 28 | @Before 29 | public void setUp() { 30 | } 31 | 32 | @After 33 | public void tearDown() { 34 | } 35 | 36 | @Test 37 | public void testSomeMethod() { 38 | PerfMonException ex = new PerfMonException("test"); 39 | } 40 | 41 | } -------------------------------------------------------------------------------- /plugins/perfmon/src/test/java/kg/apc/jmeter/vizualizers/JPerfmonParamsPanelTest.java: -------------------------------------------------------------------------------- 1 | package kg.apc.jmeter.vizualizers; 2 | 3 | import javax.swing.JTextField; 4 | import org.junit.After; 5 | import org.junit.AfterClass; 6 | import org.junit.Before; 7 | import org.junit.BeforeClass; 8 | import org.junit.Test; 9 | import static org.junit.Assert.*; 10 | 11 | public class JPerfmonParamsPanelTest { 12 | 13 | public JPerfmonParamsPanelTest() { 14 | } 15 | 16 | @BeforeClass 17 | public static void setUpClass() throws Exception { 18 | } 19 | 20 | @AfterClass 21 | public static void tearDownClass() throws Exception { 22 | } 23 | 24 | @Before 25 | public void setUp() { 26 | } 27 | 28 | @After 29 | public void tearDown() { 30 | } 31 | 32 | @Test 33 | public void testSomeMethod() { 34 | JPerfmonParamsPanel instance = new JPerfmonParamsPanel("CPU", new JTextField("core=2:pid=1234:label=myLabel:total")); 35 | assertNotNull(instance); 36 | } 37 | 38 | } -------------------------------------------------------------------------------- /plugins/redis/src/main/resources/kg/apc/jmeter/config/redis/RedisDataSetResources_fr.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/plugins/redis/src/main/resources/kg/apc/jmeter/config/redis/RedisDataSetResources_fr.properties -------------------------------------------------------------------------------- /plugins/udp/src/main/java/kg/apc/jmeter/samplers/DNSJavaDecoderToRawData.java: -------------------------------------------------------------------------------- 1 | package kg.apc.jmeter.samplers; 2 | 3 | import org.apache.jorphan.util.JOrphanUtils; 4 | import org.xbill.DNS.Message; 5 | import org.xbill.DNS.Section; 6 | 7 | import java.io.*; 8 | import java.nio.ByteBuffer; 9 | 10 | @Deprecated 11 | public class DNSJavaDecoderToRawData extends DNSJavaDecoder { 12 | 13 | protected OutputStream os = null; 14 | 15 | @Override 16 | public ByteBuffer encode(String data) { 17 | if (os == null) { 18 | try { 19 | os = new FileOutputStream(new File("DNSJavaDecoderToRawData.out")); 20 | } catch (FileNotFoundException ex) { 21 | throw new RuntimeException(ex); 22 | } 23 | } 24 | 25 | Message msg = new Message(); 26 | String recs[] = data.split(NL); 27 | for (String rec : recs) { 28 | msg.addRecord(getRecord(rec), Section.QUESTION); 29 | } 30 | 31 | try { 32 | final byte[] ba1 = msg.toWire(); 33 | os.write(Integer.toString(ba1.length * 2).getBytes("cp866")); 34 | os.write('\n'); 35 | os.write(JOrphanUtils.baToHexBytes(ba1)); 36 | os.write('\n'); 37 | } catch (IOException ex) { 38 | throw new RuntimeException(ex); 39 | } 40 | 41 | return ByteBuffer.wrap(msg.toWire()); 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /plugins/udp/src/main/java/kg/apc/jmeter/samplers/HexStringUDPDecoder.java: -------------------------------------------------------------------------------- 1 | package kg.apc.jmeter.samplers; 2 | 3 | import org.apache.jmeter.protocol.tcp.sampler.BinaryTCPClientImpl; 4 | import org.apache.jorphan.util.JOrphanUtils; 5 | 6 | import java.nio.ByteBuffer; 7 | 8 | public class HexStringUDPDecoder implements UDPTrafficDecoder { 9 | 10 | public ByteBuffer encode(String data) { 11 | return ByteBuffer.wrap(BinaryTCPClientImpl.hexStringToByteArray(data)); 12 | } 13 | 14 | public byte[] decode(byte[] buf) { 15 | return JOrphanUtils.baToHexString(buf).getBytes(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /plugins/udp/src/main/java/kg/apc/jmeter/samplers/UDPTrafficDecoder.java: -------------------------------------------------------------------------------- 1 | package kg.apc.jmeter.samplers; 2 | 3 | import java.nio.ByteBuffer; 4 | 5 | public interface UDPTrafficDecoder { 6 | 7 | public abstract ByteBuffer encode(String data); 8 | 9 | public abstract byte[] decode(byte[] data); 10 | } 11 | -------------------------------------------------------------------------------- /plugins/udp/src/test/java/kg/apc/jmeter/samplers/HexStringUDPDecoderTest.java: -------------------------------------------------------------------------------- 1 | package kg.apc.jmeter.samplers; 2 | 3 | import java.nio.ByteBuffer; 4 | 5 | import kg.apc.emulators.FileChannelEmul; 6 | import kg.apc.jmeter.JMeterPluginsUtils; 7 | import org.junit.*; 8 | 9 | import static org.junit.Assert.*; 10 | 11 | public class HexStringUDPDecoderTest { 12 | 13 | public HexStringUDPDecoderTest() { 14 | } 15 | 16 | @BeforeClass 17 | public static void setUpClass() throws Exception { 18 | } 19 | 20 | @AfterClass 21 | public static void tearDownClass() throws Exception { 22 | } 23 | 24 | @Before 25 | public void setUp() { 26 | } 27 | 28 | @After 29 | public void tearDown() { 30 | } 31 | 32 | /** 33 | * Test of encode method, of class HexStringUDPDecoder. 34 | */ 35 | @Test 36 | public void testEncode() { 37 | System.out.println("encode"); 38 | String data = "74657374"; 39 | HexStringUDPDecoder instance = new HexStringUDPDecoder(); 40 | ByteBuffer result = instance.encode(data); 41 | Assert.assertEquals("test", FileChannelEmul.byteBufferToString(result)); 42 | } 43 | 44 | /** 45 | * Test of decode method, of class HexStringUDPDecoder. 46 | */ 47 | @Test 48 | public void testDecode() { 49 | System.out.println("decode"); 50 | byte[] buf = "test".getBytes(); 51 | HexStringUDPDecoder instance = new HexStringUDPDecoder(); 52 | byte[] result = instance.decode(buf); 53 | assertEquals("74657374", new String(result)); 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /pom.xml: -------------------------------------------------------------------------------- 1 | 3 | 4.0.0 4 | 5 | kg.apc 6 | jmeter-plugins 7 | 2.0 8 | pom 9 | 10 | infra 11 | plugins 12 | tools 13 | graphs 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /prepare-upload.sh: -------------------------------------------------------------------------------- 1 | #! /bin/sh -ex 2 | 3 | python downloads.py 4 | 5 | rm -rf upload 6 | mkdir -p upload 7 | 8 | # site docs 9 | cp -r site/* upload/ 10 | 11 | # examples 12 | cp -r examples upload/img/ 13 | 14 | php --version 15 | curl -sS https://getcomposer.org/installer | php 16 | cd upload 17 | ../composer.phar update --no-dev --prefer-stable 18 | cp vendor/undera/pwe/.htaccess ./ 19 | cd .. 20 | 21 | cd upload 22 | zip -r site.zip * .htaccess 23 | cd .. 24 | -------------------------------------------------------------------------------- /site-upload.sh: -------------------------------------------------------------------------------- 1 | #! /bin/sh -ex 2 | 3 | curl --fail -vk https://jmeter-plugins.org/unzip.php?job=$TRAVIS_JOB_ID -F "zipfile=@upload/site.zip" -H "Authorization: Bearer $UPLOAD_TOKEN" 4 | -------------------------------------------------------------------------------- /site/.dockerignore: -------------------------------------------------------------------------------- 1 | * -------------------------------------------------------------------------------- /site/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:20.04 2 | 3 | EXPOSE 80 4 | 5 | RUN apt update && DEBIAN_FRONTEND=noninteractive apt install -y --force-yes apache2 php libapache2-mod-php php-xml mc less php-curl 6 | 7 | RUN a2enmod rewrite 8 | 9 | RUN apt install curl 10 | 11 | RUN curl -v -sS https://getcomposer.org/installer -o composer-setup.php && php composer-setup.php && rm composer-setup.php && mv composer.phar /usr/local/bin/composer 12 | 13 | RUN echo '' >> /etc/apache2/conf-enabled/99local.conf 14 | RUN echo 'AllowOverride All' >> /etc/apache2/conf-enabled/99local.conf 15 | RUN echo '' >> /etc/apache2/conf-enabled/99local.conf 16 | 17 | WORKDIR /var/www/html 18 | ENTRYPOINT ln -sf vendor/undera/pwe/.htaccess && composer upgrade && service apache2 start && tail -f /var/log/apache2/*.log 19 | 20 | # Implies we mount /site dir into /var/www/html 21 | # docker build . -t jpgc && docker run -it -p 8080:80 -v `pwd`:/var/www/html jpgc -------------------------------------------------------------------------------- /site/cfg.php: -------------------------------------------------------------------------------- 1 | setRootDirectory(__DIR__); 23 | $PWECore->setXMLDirectory($PWECore->getDataDirectory()); 24 | $PWECore->setTempDirectory($tempdir); 25 | 26 | if ($isDebug) { 27 | $fname = $tempdir . '/jpgc.xml'; 28 | if (!is_file($fname)) { 29 | file_put_contents($fname, ""); 30 | } 31 | 32 | $PWECore->getModulesManager()->setRegistryFile($fname); 33 | } 34 | -------------------------------------------------------------------------------- /site/composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "undera/jmeter-plugins", 3 | "description": "Homepage for project JMeter-Plugins.org", 4 | "minimum-stability": "dev", 5 | "license": "Apache 2.0", 6 | "authors": [ 7 | { 8 | "name": "Andrey Pokhilko", 9 | "email": "apc4@ya.ru" 10 | } 11 | ], 12 | "require": { 13 | "php": ">=5.5.0", 14 | "undera/pwe": "dev-master" 15 | }, 16 | "config": { 17 | "platform": { 18 | "php": "5.5.9" 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /site/dat/JMeterPlugins.pptx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/dat/JMeterPlugins.pptx -------------------------------------------------------------------------------- /site/dat/counter.tpl: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /site/dat/dl/all.wiki: -------------------------------------------------------------------------------- 1 | = Plugins Manager Download = 2 | 3 | The easiest way to get the plugins is to install [/wiki/PluginsManager/ Plugins Manager]. Then you'll be able to install any other plugins just by clicking chekbox. Plugins Manager is available from "Options" menu of JMeter. 4 | 5 |

6 | Download *[/get/ plugins-manager.jar]* and put it into {{{lib/ext}}} directory, then restart JMeter. 7 |

8 | 9 | ---- 10 | 11 | See also: 12 | 13 | * [old Previous ZIP Releases] 14 | -------------------------------------------------------------------------------- /site/dat/dl/snapshots.wiki: -------------------------------------------------------------------------------- 1 | =Developer Snapshots= 2 | 3 | Developer builds are uploaded from master branch, in case of stable build. Use at your own risk. 4 | 5 | -------------------------------------------------------------------------------- /site/dat/repo/jpgc-sets.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "id": "jpgc-standard", 4 | "name": "jpgc - Standard Set", 5 | "description": "Virtual package, select to install its dependencies", 6 | "screenshotUrl": "", 7 | "helpUrl": "", 8 | "vendor": "JMeter-Plugins.org", 9 | "markerClass": null, 10 | "versions": { 11 | "2.0": { 12 | "downloadUrl": null, 13 | "depends": [ 14 | "jpgc-dummy", 15 | "jpgc-casutg", 16 | "jpgc-tst", 17 | "jpgc-graphs-basic", 18 | "jpgc-ffw", 19 | "jpgc-fifo", 20 | "jpgc-perfmon", 21 | "jpgc-functions" 22 | ] 23 | } 24 | } 25 | } 26 | ] -------------------------------------------------------------------------------- /site/dat/wiki/ActiveThreadsOverTime.wiki: -------------------------------------------------------------------------------- 1 | = Active Threads Over Time Listener = 2 | [/?search=jpgc-graphs-basic Download] 3 | 4 | 5 | [/img/icons/warning.gif] Don't forget to [PluginInstall#Configure-JMeter set up saving thread counts] when running in non-GUI mode! 6 | 7 | *If you are doing distributed tests, you should name the thread groups like this in your test plan:* 8 | {{{ 9 | ${__machineName()}_My Threadgroup name 10 | }}} 11 | 12 | Active Threads Over Time is a simple listener showing how many active threads are there in each thread group during test run.
The plugin produces graph like shown below: 13 | 14 | [/img/wiki/active_threads_over_time.png] 15 | 16 | Legend items represents Thread Groups in your test plan. 17 | 18 | == Example == 19 | 20 | [/editor/?utm_source=jpgc&utm_medium=openurl&utm_campaign=examples#/img/examples/ActiveThreadsOverTimeExample.jmx Download Example Test Plan] -------------------------------------------------------------------------------- /site/dat/wiki/ArrivalsThreadGroup.wiki: -------------------------------------------------------------------------------- 1 | = Arrivals Thread Group = 2 | 3 | [/?search=jpgc-casutg Download] 4 | 5 | == Authorship == 6 |
7 | [http://blazemeter.com/?utm_source=jmplinnerpages&utm_medium=cpc&utm_content=jmpininnerpgs&utm_campaign=JMeter%2BPlug%2BIn%2BWiki https://d3qmoqvtroy6p7.cloudfront.net/logo.png] 8 | 9 | feat. 10 | 11 | [http://www.dynatrace.com/?utm_source=jmplinnerpages&utm_medium=cpc&utm_content=jmpininnerpgs&utm_campaign=JMeter%2BPlug%2BIn%2BWiki https://d3qmoqvtroy6p7.cloudfront.net/dynatrace.png] 12 |
13 | This plugin was inspired by _[http://www.dynatrace.com/?utm_source=jmplinnerpages&utm_medium=cpc&utm_content=jmpininnerpgs&utm_campaign=JMeter%2BPlug%2BIn%2BWiki Dynatrace LLC]_, implemented by _[http://blazemeter.com/?utm_source=jmplinnerpages&utm_medium=cpc&utm_content=jmpininnerpgs&utm_campaign=JMeter%2BPlug%2BIn%2BWiki BlazeMeter Inc.]_, and then contributed to community as Open Source. 14 | 15 | == Description == 16 | 17 | This thread group operates with "arrivals" schedule as a way to express the load. "Arrival" means thread iteration start. It will create new threads if all existing threads are busy in the middle of iterations. 18 | 19 | Note that constant arrival rate means increasing concurrency, so be careful with the values you enter. Use "Concurrency Limit" field as safety valve to prevent running out of memory. 20 | 21 | [/img/wiki/ArrivalsThreadGroup.png] -------------------------------------------------------------------------------- /site/dat/wiki/BuildingFromSource.wiki: -------------------------------------------------------------------------------- 1 | = Building Project from Sources = 2 | 3 | To build any part of JMeter Plugins you'll need [http://git-scm.com/ Git] client, [http://maven.apache.org/ Maven] tool and Java 1.7+ JDK. 4 | 5 | == Building JMeter-Plugins == 6 | 7 | a) Checkout latest source code from GitHub: 8 | 9 | {{{ 10 | git clone https://github.com/undera/jmeter-plugins.git 11 | }}} 12 | 13 | b) go to sources subdirectory: 14 | 15 | {{{ 16 | cd jmeter-plugins 17 | }}} 18 | 19 | c) run Maven build: 20 | 21 | {{{ 22 | mvn clean package 23 | }}} 24 | 25 | Maven tool will download all required stuff, compile, test and package the plugins. Resulting artifacts located in _target_ directories of plugin sets. 26 | 27 | == Building ServerAgent == 28 | 29 | a) Checkout latest source code from GitHub: 30 | 31 | {{{ 32 | git clone https://github.com/undera/perfmon-agent.git 33 | }}} 34 | 35 | b) go to sources subdirectory: 36 | 37 | {{{ 38 | cd perfmon-agent 39 | }}} 40 | 41 | c) download latest SIGAR lib at [http://sourceforge.net/projects/sigar/files/] 42 | 43 | d) unpack SIGAR lib into perfmon-agent/lib 44 | 45 | e) run Maven build: 46 | 47 | {{{ 48 | mvn clean package 49 | }}} 50 | 51 | Resulting artifacts located in _target_ directory. 52 | 53 | == Building CMDRunner == 54 | 55 | a) Checkout latest source code from GitHub: 56 | 57 | {{{ 58 | git clone https://github.com/undera/cmdrunner.git 59 | }}} 60 | 61 | b) go to sources subdirectory: 62 | 63 | {{{ 64 | cd cmdrunner 65 | }}} 66 | 67 | c) run Maven build: 68 | 69 | {{{ 70 | mvn clean package 71 | }}} 72 | 73 | Resulting artifacts located in _target_ directory. -------------------------------------------------------------------------------- /site/dat/wiki/BytesThroughput.wiki: -------------------------------------------------------------------------------- 1 | = Bytes Throughput Over Time = 2 | 3 | [/?search=jpgc-graphs-additional Download] 4 | 5 | This graph will display the amount of bytes sent and received by JMeter during the load test. 6 | 7 | [/img/wiki/bytes_throughput_over_time.png] 8 | 9 | == Example == 10 | 11 | [/editor/?utm_source=jpgc&utm_medium=openurl&utm_campaign=examples#/img/examples/BytesThroughputExample.jmx Download Example Test Plan] -------------------------------------------------------------------------------- /site/dat/wiki/CompositeGraph.wiki: -------------------------------------------------------------------------------- 1 | = Composite Graph = 2 | 3 | [/?search=jpgc-graphs-composite Download] 4 | 5 | This graph will allow you to pick any row from any other graph of your test plan 6 | and compose a new one with them. This is very useful to see the correlation 7 | of different factors. For instance, you can see in the same graph the impact 8 | of the user count to the response time and the server cpu load. 9 | 10 | To have a better visibility, the rows are scaled to be maximized in the graph. 11 | A factor will be set to them, and will be indicated in the legend name (eg. x10, x100, etc.). 12 | So if a row is marked x10, it means the value you read is the actual value multiplied by 10. 13 | 14 | This listener will work only if you place it in your test plan before starting the test. 15 | If you add it after the test started or finished, the rows will not be displayed 16 | in the selector panel. This is valid also for csv / jtl file reload, 17 | you must add it before reloading files. 18 | 19 | == ScreenShots == 20 | 21 | [/img/wiki/composite_chart.png] 22 | [/img/wiki/composite_selector.png] 23 | 24 | == Example == 25 | 26 | [/editor/?utm_source=jpgc&utm_medium=openurl&utm_campaign=examples#/img/examples/CompositeGraphExample.jmx Download Example Test Plan] 27 | -------------------------------------------------------------------------------- /site/dat/wiki/ConnectTimeOverTime.wiki: -------------------------------------------------------------------------------- 1 | = Connect Times Over Time = 2 | 3 | [/?search=jpgc-graphs-additional Download] 4 | 5 | 6 | This graph will display the average time to establish connection during the load test. Note that this metric became available since 7 | JMeter 2.13. 8 | 9 | == Sample result == 10 | 11 | [/img/wiki/connect_times_over_time.png] -------------------------------------------------------------------------------- /site/dat/wiki/ConsoleStatusLogger.wiki: -------------------------------------------------------------------------------- 1 | = Console Status Logger = 2 | 3 | [/?search=jpgc-csl Download] 4 | 5 | 6 | This is simple listener plugin that prints short summary log to console while JMeter running in non-GUI mode. 7 | It also writes the same info into jmeter.log in GUI mode. 8 | 9 | Note that response time and latency displayed are averages. 10 | 11 | Example info: 12 | 13 | {{{ 14 | #0 Threads: 27/5000 Samples: 1 Latency: 5 Resp.Time: 5 Errors: 0% 15 | #1 Threads: 2350/5000 Samples: 142 Latency: 19 Resp.Time: 19 Errors: 0% 16 | #2 Threads: 4500/5000 Samples: 130 Latency: 51 Resp.Time: 51 Errors: 0% 17 | #3 Threads: 5000/5000 Samples: 153 Latency: 81 Resp.Time: 81 Errors: 0% 18 | }}} 19 | 20 | TODO: add screenshot -------------------------------------------------------------------------------- /site/dat/wiki/DbMon.wiki: -------------------------------------------------------------------------------- 1 | DbMon Sample Collector 2 | 3 | [/?search=jpgc-dbmon Download] 4 | 5 | 6 | =Introduction= 7 | Many databases provide performance counters accessible via sql. DbMon lets you plot these values over time when the test is running. The plugin can also plot other values that is accessible via sql. 8 | 9 | This screenshot show the plugin when it is used to plot read and write transactions for a SQLServer 10 | 11 | [/img/wiki/dbmon_samples_collector.png] 12 | 13 | =Usage= 14 | ==GUI Mode== 15 | First you need to add a "JDBC Connection Configuration" this configuration will be used to connect to the database. 16 | 17 | Next step is to add a "jp@gc - DbMon Samples Collector" this can be found in the listeners section. Here you can add multiple lines that will be displayed in the same graph. For each line you have to configure which JDBC configuration to use, what label it should have and a SQL query that will be used. 18 | 19 | The sql query should return a single row with a single column and that value should be a number. 20 | 21 | This query is by default invoked once every second so it can not be to expencive. To change how often the a sample should be taken set the parameter "jmeterPlugin.dbmon.interval" to the interval in milliseconds. 22 | 23 | ==Non GUI Mode== 24 | If you run JMeter in non GUI mode and want to save dbmon data to file, just configure result file saving in GUI as you do with other listeners. After running the test you may load saved file into GUI and see the values timeline. -------------------------------------------------------------------------------- /site/dat/wiki/DummySampler.wiki: -------------------------------------------------------------------------------- 1 | = Dummy Sampler = 2 | 3 | [/?search=jpgc-dummy Download] 4 | 5 | 6 | Dummy Sampler is the most obedient of the JMeter samplers: 7 | it generates sample just with the values that was defined for it. 8 | It is extremely convenient when you need to debug 9 | a [http://jakarta.apache.org/jmeter/usermanual/component_reference.html#BeanShell_PostProcessor BeanShell Post-Processor] 10 | or [http://jakarta.apache.org/jmeter/usermanual/component_reference.html#Regular_Expression_Extractor RegExp Extractor] 11 | without repeating whole test or waiting for exact condition in application under test. 12 | 13 | [/img/wiki/dummy_sampler.png] 14 | 15 | == Add Dummy Subresult Post-Processor == 16 | 17 | In addition to Sampler component, you can use a post-processor that adds dummy samples as subresults. An obvious use-case 18 | is to have Dummy Sampler with Dummy Subresults to simulate HTTP Request with embedded resources. 19 | 20 | == Example == 21 | 22 | [/editor/?utm_source=jpgc&utm_medium=openurl&utm_campaign=examples#/img/examples/DummySamplerExample.jmx Download Example Test Plan] 23 | -------------------------------------------------------------------------------- /site/dat/wiki/FilterResultsTool.wiki: -------------------------------------------------------------------------------- 1 | = Filter Results Tool = 2 | 3 | [/?search=jpgc-filterresults Download] 4 | 5 | 6 | Often it's necessary to filter the results of a test to obtain a global vision with pages without all the urls that are declared in the html page. 7 | 8 | It should also filter queries that are not calls to the application but debug samplers or intermediate calculation samplers as beanshell samplers. 9 | 10 | If you want to remove the ramp-up phase, you could use offset filters. 11 | 12 | == Usage and Parameters == 13 | 14 | Filter results with multi parameters 15 | 16 | Example 1 : 17 | 18 | {{{ 19 | jmeter\bin\FilterResults.bat --output-file filteredout.csv --input-file inputfile.jtl --include-label-regex true --include-labels "P[1-3].*" 20 | }}} 21 | 22 | 23 | Example 2 : 24 | 25 | {{{ 26 | jmeter/bin/FilterResults.sh --output-file filteredout.xml --input-file inputfile.csv --include-label-regex true --include-labels "P[1-3].*" --start-offset 2 --end-offset 180 --success-filter true --save-as-xml true 27 | }}} 28 | 29 | Parameters are : 30 | --input-file --output-file 31 | [ 32 | --success-filter (true : Only success samplers, false : all results by default) 33 | --include-labels 34 | --exclude-labels 35 | --include-label-regex 36 | --exclude-label-regex 37 | --start-offset 38 | --end-offset 39 | --save-as-xml (false : CSV format by default) " 40 | ] 41 | -------------------------------------------------------------------------------- /site/dat/wiki/FreeFormArrivalsThreadGroup.wiki: -------------------------------------------------------------------------------- 1 | = Free-Form Arrivals Thread Group = 2 | 3 | [/?search=jpgc-casutg Download] 4 | 5 | == Authorship == 6 |
7 | [http://blazemeter.com/?utm_source=jmplinnerpages&utm_medium=cpc&utm_content=jmpininnerpgs&utm_campaign=JMeter%2BPlug%2BIn%2BWiki https://d3qmoqvtroy6p7.cloudfront.net/logo.png] 8 | 9 | feat. 10 | 11 | [http://www.dynatrace.com/?utm_source=jmplinnerpages&utm_medium=cpc&utm_content=jmpininnerpgs&utm_campaign=JMeter%2BPlug%2BIn%2BWiki https://d3qmoqvtroy6p7.cloudfront.net/dynatrace.png] 12 |
13 | 14 | This plugin was inspired by _[http://www.dynatrace.com/?utm_source=jmplinnerpages&utm_medium=cpc&utm_content=jmpininnerpgs&utm_campaign=JMeter%2BPlug%2BIn%2BWiki Dynatrace LLC]_, implemented by _[http://blazemeter.com/?utm_source=jmplinnerpages&utm_medium=cpc&utm_content=jmpininnerpgs&utm_campaign=JMeter%2BPlug%2BIn%2BWiki BlazeMeter Inc.]_, and then contributed to community as Open Source. 15 | 16 | == Description == 17 | 18 | Free-Form Arrivals TG has the same idea of "arriving users" as [ArrivalsThreadGroup Arrivals Thread Group]. It just offers free-form schedule capabilities. 19 | 20 | [/img/wiki/FreeFormArrivalsThreadGroup.png] -------------------------------------------------------------------------------- /site/dat/wiki/HBaseCRUDSampler.wiki: -------------------------------------------------------------------------------- 1 | = HBase CRUD Sampler = 2 | 3 | [/?search=jpgc-hadoop Download] 4 | 5 | This plugin was originally developed by [http://www.atlantbh.com/ Atlantbh d.o.o.], 6 | released as [https://github.com/ATLANTBH/jmeter-components jmeter-components], 7 | then merged into JP@GC. 8 | 9 | == Description == 10 | 11 | HBase-experienced volunteer wanted to write a doc for this plugin :-[. -------------------------------------------------------------------------------- /site/dat/wiki/HBaseConnection.wiki: -------------------------------------------------------------------------------- 1 | = HBase Connection Config = 2 | 3 | [/?search=jpgc-hadoop Download] 4 | 5 | This plugin was originally developed by [http://www.atlantbh.com/ Atlantbh d.o.o.], 6 | released as [https://github.com/ATLANTBH/jmeter-components jmeter-components], 7 | then merged into JP@GC. 8 | 9 | == Description == 10 | 11 | HBase connection a config element and is used to define the connection to the HBase which will be shared among the samplers in the test plan. The Connection name is the name which will be referenced in the HBase samplers, and zk host is the zookeeper host. 12 | 13 | [/img/wiki/HBaseConnection1.png] -------------------------------------------------------------------------------- /site/dat/wiki/HBaseRowkeySampler.wiki: -------------------------------------------------------------------------------- 1 | = HBase Rowkey Sampler = 2 | 3 | [/?search=jpgc-hadoop Download] 4 | 5 | This plugin was originally developed by [http://www.atlantbh.com/ Atlantbh d.o.o.], 6 | released as [https://github.com/ATLANTBH/jmeter-components jmeter-components], 7 | then merged into JP@GC. 8 | 9 | == Description == 10 | 11 | HBase rowkey sampler is used to retrieve a specific record by specifying the rowkey of the hbase table. You need to specify the Connection name (name which is specified in the Hbase connection config element), Table: hbase table name, Rowkey. rowkey of the specific record. The possibility exists to check the checkbox to retrieve the most recent record, as a record might be updated and you are interested in the latest data, have this parameter turned on. 12 | 13 | [/img/wiki/HBaseRowkey1.png] -------------------------------------------------------------------------------- /site/dat/wiki/HBaseScanSampler.wiki: -------------------------------------------------------------------------------- 1 | = HBase Scan Sampler = 2 | 3 | [/?search=jpgc-hadoop Download] 4 | 5 | This plugin was originally developed by [http://www.atlantbh.com/ Atlantbh d.o.o.], 6 | released as [https://github.com/ATLANTBH/jmeter-components jmeter-components], 7 | then merged into JP@GC. 8 | 9 | == Description == 10 | 11 | HBase scan sampler provides the possibility to retrieve one/multiple records from hbase table with specifying a filter. 12 | Same values should be specified as in the hbase rowkey sampler, with additionally the following: 13 | * Start rowkey: this is optional 14 | * End rowkey: this is optional 15 | * Filter should be in the format: {{{ {column_family}:{qualifier}{= | != | < | > | <= | >=}{value} }}} 16 | * Limit: limit the number of returned records 17 | 18 | With this sampler you have the same possibility to create a variable for each row, in this way the returned values will be stored in the same matter as with a jdbc request, while by default, an xml response will be returned. If you are using the default option you can extract the values and store them by using an xpath extractor post processor. Also, you can retrieve only the latest record by checking the checkbox Retrieve most recent record. 19 | 20 | [/img/wiki/HBaseScan1.png] -------------------------------------------------------------------------------- /site/dat/wiki/HDFSOperations.wiki: -------------------------------------------------------------------------------- 1 | = HDFS Operations = 2 | 3 | [/?search=jpgc-hadoop Download] 4 | 5 | This plugin was originally developed by [http://www.atlantbh.com/ Atlantbh d.o.o.], 6 | released as [https://github.com/ATLANTBH/jmeter-components jmeter-components], 7 | then merged into JP@GC. 8 | 9 | == Description == 10 | 11 | HDFS (Hadoop Distributed File System) is Hadoop’s primary storage system, as users, during testing, need to possibility to copy a file from local directory or a location on the server to the hdfs directory, we have created this sampler. 12 | 13 | You need to define the following: 14 | * Input file destination: local directory of the input file 15 | * Output directory on HDFS: location on hdfs to which you want to copy the file. 16 | 17 | Response shows the name of the file and the location to which it has been copied, if the file already exists it will show the message that the file already exists. 18 | 19 | [/img/wiki/HDFSOperations1.png] -------------------------------------------------------------------------------- /site/dat/wiki/HitsPerSecond.wiki: -------------------------------------------------------------------------------- 1 | = Server Hits per Second = 2 | 3 | [/?search=jpgc-graphs-additional Download] 4 | 5 | This graph will display the hits generated by the test plan to the server per second. Hits uncludes child samples from transactions and embedded resources hits. 6 | 7 | == Sample Result == 8 | 9 | [/img/wiki/hits_per_seconds.png] -------------------------------------------------------------------------------- /site/dat/wiki/Install.wiki: -------------------------------------------------------------------------------- 1 | = Installing Plugins = 2 | 3 | The easiest way to get the plugins is to install [/wiki/PluginsManager/ Plugins Manager]. Then you'll be able to install any other plugins just by clicking a checkbox. 4 | 5 |
6 | Download *[/get/ plugins-manager.jar]* and put it into {{{lib/ext}}} directory, then restart JMeter. 7 |
8 | 9 | If you experience any issues with plugins installation, don't hesitate to ask at [/support/ Support Forums]. 10 | -------------------------------------------------------------------------------- /site/dat/wiki/JSONFormatter.wiki: -------------------------------------------------------------------------------- 1 | = JSON Formatter PostProcessor = 2 | 3 | [/?search=jpgc-json Download] 4 | 5 | This plugin was originally developed by [http://www.atlantbh.com/ Atlantbh d.o.o.], 6 | released as [https://github.com/ATLANTBH/jmeter-components jmeter-components], 7 | then merged into JP@GC. 8 | 9 | == Description == 10 | 11 | A volunteer wanted to write the doc. -------------------------------------------------------------------------------- /site/dat/wiki/JSONPathAssertion.wiki: -------------------------------------------------------------------------------- 1 | = JSON/YAML Path Assertion = 2 | 3 | [/?search=jpgc-json Download] 4 | 5 | This plugin was originally developed by [http://www.atlantbh.com/ Atlantbh d.o.o.], 6 | released as [https://github.com/ATLANTBH/jmeter-components jmeter-components], 7 | then merged into JP@GC, and reworked significantly in v.1.2.1 8 | 9 | == Description == 10 | 11 | This component allows you to perform validations of JSON or YAML documents (Use {{{Input Format}}} radio buttons for switch between JSON/YAML.). 12 | 13 | First, it will parse the JSON and fail if the data is not JSON. 14 | 15 | Second, it will search for specified path, using syntax from [https://github.com/jayway/JsonPath Jayway JsonPath 1.2.0]. If the path is not found, it will fail. 16 | 17 | Third, if JSON path was found in the document, and validation against expected value was requested, it will perform validation. For the {{{null}}} value there is special checkbox in the GUI. 18 | 19 | Note that if the path will return array object, it will be iterated and if expected value is found, the assertion will succeed. To validate empty array use {{{[]}}} string. Also, if patch will return dictionary object, it will be converted to string before comparison. 20 | 21 | [/img/wiki/json_path_assertion.png] 22 | 23 | ___NOTE: In case when checked YAML Input Format then plugin will convert YAML to JSON.___ -------------------------------------------------------------------------------- /site/dat/wiki/JSONPathExtractor.wiki: -------------------------------------------------------------------------------- 1 | = JSON/YAML Path Extractor = 2 | 3 | [/?search=jpgc-json Download] 4 | 5 | This plugin was originally developed by [http://www.atlantbh.com/ Atlantbh d.o.o.], 6 | released as [https://github.com/ATLANTBH/jmeter-components jmeter-components], 7 | then merged into JP@GC,, and reworked significantly in v.1.2.1 8 | 9 | == Description == 10 | 11 | Allows extracting values from JSON or YAML responses using [http://goessner.net/articles/JsonPath/index.html#e2 JSONPath syntax]. 12 | Use {{{Input Format}}} radio buttons for switch between JSON/YAML. 13 | 14 | It will try to find the JSON path provided and extract corresponding value. If the path is not found, it will use default value. For the {{{null}}} value the "null" string will be used. 15 | 16 | If result is array, it will additionally set loop variables. This is much like [http://jmeter.apache.org/usermanual/component_reference.html#Regular_Expression_Extractor RegExp Extractor] or [http://jmeter.apache.org/usermanual/component_reference.html#XPath_Extractor XPath Extractor] do to support [http://jmeter.apache.org/usermanual/component_reference.html#ForEach_Controller ForEach Controller] input: 17 | * varName_1 18 | * varName_2 19 | * varName_3 20 | * ... 21 | 22 | [/img/wiki/JSONPathExtractor.png] 23 | 24 | ___NOTE: In case when checked YAML Input Format then plugin will convert YAML to JSON.___ 25 | 26 | == Example == 27 | 28 | [/editor/?utm_source=jpgc&utm_medium=openurl&utm_campaign=examples#/img/examples/JSONPathExtractorExample.jmx Download Example Test Plan] -------------------------------------------------------------------------------- /site/dat/wiki/JSONToXMLConverter.wiki: -------------------------------------------------------------------------------- 1 | = JSON to XML Converter = 2 | 3 | [/?search=jpgc-json Download] 4 | 5 | This plugin was originally developed by [http://www.atlantbh.com/ Atlantbh d.o.o.], 6 | released as [https://github.com/ATLANTBH/jmeter-components jmeter-components], 7 | then merged into JP@GC. 8 | 9 | == Description == 10 | 11 | If you wish to convert a json text into xml, use the sampler JSON to XML Converter, preferable in combination with the XML Format Post Processor which is in more details specified below. 12 | 13 | To use this sampler enter your JSON text at JSON Input, the response will be the text transformed into XML. 14 | 15 | [/img/wiki/JSONToXML1.png] -------------------------------------------------------------------------------- /site/dat/wiki/LatenciesOverTime.wiki: -------------------------------------------------------------------------------- 1 | = Latencies Over Time = 2 | 3 | [/?search=jpgc-graphs-additional Download] 4 | 5 | This graph will display the response latencies during the load test. 6 | A latency is the duration between the end of the request and the beginning 7 | of the server response. 8 | 9 | == Sample result == 10 | 11 | [/img/wiki/response_latencies_over_time.png] -------------------------------------------------------------------------------- /site/dat/wiki/LockFile.wiki: -------------------------------------------------------------------------------- 1 | = Lock File Config Item = 2 | 3 | [/?search=jpgc-lockfile Download] 4 | 5 | LockFile plugin allows you to specify a lock file wich will be created in the beginning of the test and deleted after test. 6 | You can also specify a filename with wildcards to check for existing lock files. This helps preventing several JMeter instances running at the same machine. 7 | 8 | Test will not be started if existing lock files found. 9 | 10 | To use, add Config -> *jp@gc - Lock File Config*, then specify a lock file and a pattern. 11 | 12 | [/img/wiki/lock_file.png] -------------------------------------------------------------------------------- /site/dat/wiki/OAuthSampler.wiki: -------------------------------------------------------------------------------- 1 | = OAuth Sampler (Deprecated) = 2 | 3 | [/?search=jpgc-oauth Download] 4 | 5 | This plugin was originally developed by [http://www.atlantbh.com/ Atlantbh d.o.o.], 6 | released as [https://github.com/ATLANTBH/jmeter-components jmeter-components], 7 | then merged into JP@GC. 8 | 9 | _Does not work with JMeter v3.2+._ 10 | 11 | OAuth is an authentication protocol which provides the possibility to users to hand out tokens instead of credentials to their data hosted by a given service provider. The token grants access for specific resources for a defined period of time. 12 | 13 | OAuth sampler is an extended REST sampler which in addition includes the properties needed for this authorization: 14 | 15 | * Consumer Key 16 | * Consumer Secret 17 | * These two properties together authenticate the Consumer to the Service Provider. 18 | 19 | [/img/wiki/OAuth-Sampler.png] -------------------------------------------------------------------------------- /site/dat/wiki/PluginsGuiGuidelines.wiki: -------------------------------------------------------------------------------- 1 | #summary GUI guidelines for developers 2 | 3 | = Plugin GUI Guidelines = 4 | 5 | If you plan to integrate plugins in the jp@gc distribution, please follow these guidelines. 6 | 7 | == Fields #1 == 8 | 9 | [/img/wiki/gui_rules1.png] 10 | 11 | == Fields #2 == 12 | 13 | [/img/wiki/gui_rules2.png] -------------------------------------------------------------------------------- /site/dat/wiki/RespTimePercentiles.wiki: -------------------------------------------------------------------------------- 1 | = Response Times Percentiles = 2 | 3 | [/?search=jpgc-graphs-dist Download] 4 | 5 | This graph will display the percentiles for the response time values. X Axis represents percentage, Y Axis Response time values. One point (P, Value) means for the whole scenario, P percent of the values are bellow Value ms. 6 | 7 | The precision of the graph was updated in version 0.4.1 to {{{0.1}}} granularity. The percentiles are calculated in the range {{{[0.1 .. 99.9]}}} so outliers values will not break the graph Y range. 8 | 9 | == Sample Result== 10 | [/img/wiki/response_times_percentiles.png] 11 | -------------------------------------------------------------------------------- /site/dat/wiki/RespTimesDistribution.wiki: -------------------------------------------------------------------------------- 1 | = Response Times Distribution = 2 | 3 | [/?search=jpgc-graphs-dist Download] 4 | 5 | This graph will display the response time distribution of the test. The X axis shows the response times grouped by interval, and the Y axis the number of samples which are contained in each interval. 6 | 7 | == Sample result == 8 | 9 | [/img/wiki/response_times_distribution.png] 10 | -------------------------------------------------------------------------------- /site/dat/wiki/ResponseCodesPerSecond.wiki: -------------------------------------------------------------------------------- 1 | = Response Codes per Second = 2 | 3 | [/?search=jpgc-graphs-additional Download] 4 | 5 | This graph will display the response code per second returned during the test. 6 | 7 | == Sample result == 8 | 9 | [/img/wiki/response_codes_per_second.png] 10 | -------------------------------------------------------------------------------- /site/dat/wiki/ResponseTimesOverTime.wiki: -------------------------------------------------------------------------------- 1 | = Response Times Over Time = 2 | 3 | [/?search=jpgc-graphs-basic Download] 4 | 5 | From all the tutorials floating around in the net on how to get response times graphs from JMeter log files it is clear that this feature is missing to a lot of JMeter users. 6 | Well, this is history now, as the Response Times Over Time Listener is now part of the plugin package! 7 | 8 | This graph will display for each sampler the average response time in milliseconds. 9 | And here is how it looks like: 10 | 11 | [/img/wiki/response_times_over_time.png] 12 | -------------------------------------------------------------------------------- /site/dat/wiki/ResponseTimesVsThreads.wiki: -------------------------------------------------------------------------------- 1 | = Response Times vs Threads = 2 | 3 | [/?search=jpgc-graphs-vs Download] 4 | 5 | This graph shows how Response Time changes with amount of parallel threads. Naturally, server takes longer to respond when a lot of users requests it simultaneously. This graph visualizes such dependencies. 6 | 7 | Example graph: 8 | 9 | [/img/wiki/timevsthreads.png] 10 | -------------------------------------------------------------------------------- /site/dat/wiki/Sidebar.wiki: -------------------------------------------------------------------------------- 1 |
[https://twitter.com/#!/jmeter_plugins Follow us on Twitter]
2 | 3 |
[/editor/?utm_source=jpgc&utm_medium=banner&utm_campaign=sidebar Online JMX Editor]
4 | -------------------------------------------------------------------------------- /site/dat/wiki/SynthesisReport.wiki: -------------------------------------------------------------------------------- 1 | = Synthesis Report = 2 | 3 | [/?search=jpgc-synthesis Download] 4 | 5 | Synthesis Report is a mix between Summary Report and Aggregate Report: 6 | 7 | * Samples 8 | * Average 9 | * Min 10 | * Max 11 | * 90% 12 | * Line 13 | * Std. Dev 14 | * Error % 15 | * Throughout 16 | * KB/sec 17 | * Avg.Bytes 18 | 19 | It is possible to include/exclude some samples by adding their labels (with comma separator) or a regular expression in the include/exclude field. 20 | It is also possible to restrict on an specified test period (Start/End Offset). 21 | 22 | [/img/wiki/synthesis_report.png] -------------------------------------------------------------------------------- /site/dat/wiki/TransactionsPerSecond.wiki: -------------------------------------------------------------------------------- 1 | = Transactions per Second = 2 | 3 | [/?search=jpgc-graphs-basic Download] 4 | 5 | This graph shows the number of transactions per second for each sampler. It counts for each seconds the number of finished transactions. Compared to the previous version (0.3.0), it will now also display the failed transactions. 6 | 7 | == Result == 8 | === Normal display === 9 | 10 | [/img/wiki/transactions_per_seconds.png] 11 | 12 | === Aggregated display === 13 | 14 | The aggragated display replace the old *Total Transaction per Seconds* graph. You can set this parameter in the Settings panel. 15 | 16 | [/img/wiki/total_transactions_per_seconds.png] 17 | -------------------------------------------------------------------------------- /site/dat/wiki/XMLFormatPostProcessor.wiki: -------------------------------------------------------------------------------- 1 | = XML Format Post Processor = 2 | 3 | [/?search=jpgc-xml Download] 4 | 5 | This plugin was originally developed by [http://www.atlantbh.com/ Atlantbh d.o.o.], 6 | released as [https://github.com/ATLANTBH/jmeter-components jmeter-components], 7 | then merged into JP@GC. 8 | 9 | Jmeter response for xml is not formatted, the xml format post processor provides you the possibility to have your responses formatted. 10 | This post processor should be added at the begin of your test, which will format all your xml’s returned in your test. 11 | 12 | Unformatted xml: 13 | [/img/wiki/Unformattedxml1.png] 14 | 15 | Formatted xml (when using xml format post processor) 16 | [/img/wiki/Formatted-xml1.png] 17 | In the examples above following webservice has been used: Translation Engine from WebserviceX.NET -------------------------------------------------------------------------------- /site/dat/wiki/XMPPSet.wiki: -------------------------------------------------------------------------------- 1 | = BlazeMeter's XMPP Set = 2 | [/?search=jpgc-xmpp Download] 3 | 4 | 5 | [http://blazemeter.com/?utm_source=jmplinnerpages&utm_medium=cpc&utm_content=jmpininnerpgs&utm_campaign=JMeter%2BPlug%2BIn%2BWiki https://d3qmoqvtroy6p7.cloudfront.net/logo.png] 6 | 7 | 8 | These plugins was originally developed by _[http://blazemeter.com/?utm_source=jmplinnerpages&utm_medium=cpc&utm_content=jmpininnerpgs&utm_campaign=JMeter%2BPlug%2BIn%2BWiki BlazeMeter Inc.]_ and then generously donated to community as Open Source. 9 | Check out their [http://blazemeter.com/?utm_source=jmplinnerpages&utm_medium=cpc&utm_content=jmpininnerpgs&utm_campaign=JMeter%2BPlug%2BIn%2BWiki load testing service], 10 | there's a lot of value to load testing people. 11 | 12 | ==XMPP/Jabber testing capabilities== 13 | * [XMPPConnection XMPP Connection Config] 14 | * [XMPPSampler XMPP Sampler] 15 | 16 | Example test plan: [/editor/?utm_source=jpgc&utm_medium=openurl&utm_campaign=examples#/img/examples/XMPP.jmx XMPP.jmx] -------------------------------------------------------------------------------- /site/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/favicon.ico -------------------------------------------------------------------------------- /site/files/packages/index.php: -------------------------------------------------------------------------------- 1 | $file, 17 | 'size' => filesize($file)); 18 | array_push($list, $list3); 19 | } 20 | } 21 | } 22 | 23 | $return_array = array('files'=> $list); 24 | 25 | echo json_encode($return_array); 26 | } 27 | -------------------------------------------------------------------------------- /site/img/icons/advanced.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/icons/advanced.png -------------------------------------------------------------------------------- /site/img/icons/cart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/icons/cart.png -------------------------------------------------------------------------------- /site/img/icons/download-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/icons/download-icon.png -------------------------------------------------------------------------------- /site/img/icons/libs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/icons/libs.png -------------------------------------------------------------------------------- /site/img/icons/new_wog.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/icons/new_wog.gif -------------------------------------------------------------------------------- /site/img/icons/warning.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/icons/warning.gif -------------------------------------------------------------------------------- /site/img/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/logo.png -------------------------------------------------------------------------------- /site/img/site/JMeter_logo_big.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/site/JMeter_logo_big.png -------------------------------------------------------------------------------- /site/img/site/JMeterpluginsLogo5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/site/JMeterpluginsLogo5.png -------------------------------------------------------------------------------- /site/img/site/apache-hadoop-hdfs-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/site/apache-hadoop-hdfs-logo.png -------------------------------------------------------------------------------- /site/img/site/apc.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/site/apc.jpg -------------------------------------------------------------------------------- /site/img/site/holiday_lights.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/site/holiday_lights.gif -------------------------------------------------------------------------------- /site/img/site/jmeter-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/site/jmeter-logo.png -------------------------------------------------------------------------------- /site/img/site/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/site/logo.png -------------------------------------------------------------------------------- /site/img/site/logoSimple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/site/logoSimple.png -------------------------------------------------------------------------------- /site/img/site/logo_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/site/logo_small.png -------------------------------------------------------------------------------- /site/img/site/null.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/site/null.gif -------------------------------------------------------------------------------- /site/img/site/selenium-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/site/selenium-logo.png -------------------------------------------------------------------------------- /site/img/wiki/ArrivalsThreadGroup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/ArrivalsThreadGroup.png -------------------------------------------------------------------------------- /site/img/wiki/AutoStop1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/AutoStop1.png -------------------------------------------------------------------------------- /site/img/wiki/ConcurrencyThreadGroup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/ConcurrencyThreadGroup.png -------------------------------------------------------------------------------- /site/img/wiki/FlexibleFileWriter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/FlexibleFileWriter.png -------------------------------------------------------------------------------- /site/img/wiki/Formatted-xml1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/Formatted-xml1.png -------------------------------------------------------------------------------- /site/img/wiki/FreeFormArrivalsThreadGroup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/FreeFormArrivalsThreadGroup.png -------------------------------------------------------------------------------- /site/img/wiki/HBaseConnection1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/HBaseConnection1.png -------------------------------------------------------------------------------- /site/img/wiki/HBaseRowkey1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/HBaseRowkey1.png -------------------------------------------------------------------------------- /site/img/wiki/HBaseScan1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/HBaseScan1.png -------------------------------------------------------------------------------- /site/img/wiki/HDFSOperations1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/HDFSOperations1.png -------------------------------------------------------------------------------- /site/img/wiki/HadoopJobTracker2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/HadoopJobTracker2.png -------------------------------------------------------------------------------- /site/img/wiki/JMSreceive1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/JMSreceive1.png -------------------------------------------------------------------------------- /site/img/wiki/JMSsend1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/JMSsend1.png -------------------------------------------------------------------------------- /site/img/wiki/JSONPathExtractor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/JSONPathExtractor.png -------------------------------------------------------------------------------- /site/img/wiki/JSONToXML1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/JSONToXML1.png -------------------------------------------------------------------------------- /site/img/wiki/OAuth-Sampler.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/OAuth-Sampler.png -------------------------------------------------------------------------------- /site/img/wiki/PageDataExtractor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/PageDataExtractor.png -------------------------------------------------------------------------------- /site/img/wiki/PageDataExtractorServlet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/PageDataExtractorServlet.png -------------------------------------------------------------------------------- /site/img/wiki/PageDataExtractorTP.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/PageDataExtractorTP.png -------------------------------------------------------------------------------- /site/img/wiki/REST-Sampler.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/REST-Sampler.png -------------------------------------------------------------------------------- /site/img/wiki/UDPRequest.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/UDPRequest.png -------------------------------------------------------------------------------- /site/img/wiki/Unformattedxml1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/Unformattedxml1.png -------------------------------------------------------------------------------- /site/img/wiki/active_threads_over_time.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/active_threads_over_time.png -------------------------------------------------------------------------------- /site/img/wiki/active_threads_over_time_stepping.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/active_threads_over_time_stepping.png -------------------------------------------------------------------------------- /site/img/wiki/agent_architecture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/agent_architecture.png -------------------------------------------------------------------------------- /site/img/wiki/appeal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/appeal.png -------------------------------------------------------------------------------- /site/img/wiki/async_tutorial/undera-03c2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/async_tutorial/undera-03c2.png -------------------------------------------------------------------------------- /site/img/wiki/async_tutorial/undera-0a4f.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/async_tutorial/undera-0a4f.png -------------------------------------------------------------------------------- /site/img/wiki/async_tutorial/undera-0e30.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/async_tutorial/undera-0e30.png -------------------------------------------------------------------------------- /site/img/wiki/async_tutorial/undera-514d.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/async_tutorial/undera-514d.png -------------------------------------------------------------------------------- /site/img/wiki/async_tutorial/undera-d399.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/async_tutorial/undera-d399.png -------------------------------------------------------------------------------- /site/img/wiki/async_tutorial/undera-fe26.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/async_tutorial/undera-fe26.png -------------------------------------------------------------------------------- /site/img/wiki/build_env1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/build_env1.png -------------------------------------------------------------------------------- /site/img/wiki/bytes_throughput_over_time.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/bytes_throughput_over_time.png -------------------------------------------------------------------------------- /site/img/wiki/chartPopup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/chartPopup.png -------------------------------------------------------------------------------- /site/img/wiki/composite_chart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/composite_chart.png -------------------------------------------------------------------------------- /site/img/wiki/composite_selector.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/composite_selector.png -------------------------------------------------------------------------------- /site/img/wiki/config_active_thread_count.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/config_active_thread_count.png -------------------------------------------------------------------------------- /site/img/wiki/config_active_thread_count_button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/config_active_thread_count_button.png -------------------------------------------------------------------------------- /site/img/wiki/dbmon_samples_collector.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/dbmon_samples_collector.png -------------------------------------------------------------------------------- /site/img/wiki/dcerpcsampler.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/dcerpcsampler.png -------------------------------------------------------------------------------- /site/img/wiki/dns/screenshot1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/dns/screenshot1.png -------------------------------------------------------------------------------- /site/img/wiki/dns/screenshot10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/dns/screenshot10.png -------------------------------------------------------------------------------- /site/img/wiki/dns/screenshot11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/dns/screenshot11.png -------------------------------------------------------------------------------- /site/img/wiki/dns/screenshot12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/dns/screenshot12.png -------------------------------------------------------------------------------- /site/img/wiki/dns/screenshot13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/dns/screenshot13.png -------------------------------------------------------------------------------- /site/img/wiki/dns/screenshot14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/dns/screenshot14.png -------------------------------------------------------------------------------- /site/img/wiki/dns/screenshot2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/dns/screenshot2.png -------------------------------------------------------------------------------- /site/img/wiki/dns/screenshot3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/dns/screenshot3.png -------------------------------------------------------------------------------- /site/img/wiki/dns/screenshot4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/dns/screenshot4.png -------------------------------------------------------------------------------- /site/img/wiki/dns/screenshot5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/dns/screenshot5.png -------------------------------------------------------------------------------- /site/img/wiki/dns/screenshot6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/dns/screenshot6.png -------------------------------------------------------------------------------- /site/img/wiki/dns/screenshot7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/dns/screenshot7.png -------------------------------------------------------------------------------- /site/img/wiki/dns/screenshot8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/dns/screenshot8.png -------------------------------------------------------------------------------- /site/img/wiki/dns/screenshot9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/dns/screenshot9.png -------------------------------------------------------------------------------- /site/img/wiki/dotchart_graph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/dotchart_graph.png -------------------------------------------------------------------------------- /site/img/wiki/dummy_sampler.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/dummy_sampler.png -------------------------------------------------------------------------------- /site/img/wiki/graphs_filter_panel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/graphs_filter_panel.png -------------------------------------------------------------------------------- /site/img/wiki/graphs_period_filter_panel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/graphs_period_filter_panel.png -------------------------------------------------------------------------------- /site/img/wiki/graphs_period_filtered.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/graphs_period_filtered.png -------------------------------------------------------------------------------- /site/img/wiki/graphs_regex_filter_panel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/graphs_regex_filter_panel.png -------------------------------------------------------------------------------- /site/img/wiki/graphs_regex_filtered.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/graphs_regex_filtered.png -------------------------------------------------------------------------------- /site/img/wiki/graphs_unfiltered.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/graphs_unfiltered.png -------------------------------------------------------------------------------- /site/img/wiki/gui_rules1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/gui_rules1.png -------------------------------------------------------------------------------- /site/img/wiki/gui_rules2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/gui_rules2.png -------------------------------------------------------------------------------- /site/img/wiki/hits_per_seconds.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/hits_per_seconds.png -------------------------------------------------------------------------------- /site/img/wiki/http_simple_table_server.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/http_simple_table_server.png -------------------------------------------------------------------------------- /site/img/wiki/http_sts_add_request.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/http_sts_add_request.png -------------------------------------------------------------------------------- /site/img/wiki/http_sts_jmeter_archi_distributed_v4.0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/http_sts_jmeter_archi_distributed_v4.0.png -------------------------------------------------------------------------------- /site/img/wiki/http_sts_regex_extractor_read_login.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/http_sts_regex_extractor_read_login.png -------------------------------------------------------------------------------- /site/img/wiki/http_sts_regex_extractor_read_password.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/http_sts_regex_extractor_read_password.png -------------------------------------------------------------------------------- /site/img/wiki/http_sts_startup_gui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/http_sts_startup_gui.png -------------------------------------------------------------------------------- /site/img/wiki/jmxmon_samples_collector.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/jmxmon_samples_collector.png -------------------------------------------------------------------------------- /site/img/wiki/jmxmon_samples_collector_jconsole1_obj_name.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/jmxmon_samples_collector_jconsole1_obj_name.png -------------------------------------------------------------------------------- /site/img/wiki/jmxmon_samples_collector_jconsole2_attrib.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/jmxmon_samples_collector_jconsole2_attrib.png -------------------------------------------------------------------------------- /site/img/wiki/jmxmon_samples_collector_jconsole3_attrib_key.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/jmxmon_samples_collector_jconsole3_attrib_key.png -------------------------------------------------------------------------------- /site/img/wiki/json_path_assertion.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/json_path_assertion.png -------------------------------------------------------------------------------- /site/img/wiki/listener/GraphsGeneratorListener.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/listener/GraphsGeneratorListener.png -------------------------------------------------------------------------------- /site/img/wiki/loadJppm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/loadJppm.png -------------------------------------------------------------------------------- /site/img/wiki/lock_file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/lock_file.png -------------------------------------------------------------------------------- /site/img/wiki/merge_results_start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/merge_results_start.png -------------------------------------------------------------------------------- /site/img/wiki/merge_results_test1-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/merge_results_test1-2.png -------------------------------------------------------------------------------- /site/img/wiki/merge_results_test1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/merge_results_test1.png -------------------------------------------------------------------------------- /site/img/wiki/merge_results_test2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/merge_results_test2.png -------------------------------------------------------------------------------- /site/img/wiki/merge_results_ui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/merge_results_ui.png -------------------------------------------------------------------------------- /site/img/wiki/parameterizedcontroller.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/parameterizedcontroller.png -------------------------------------------------------------------------------- /site/img/wiki/perfmonCPUChart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/perfmonCPUChart.png -------------------------------------------------------------------------------- /site/img/wiki/perfmonDiskIOChart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/perfmonDiskIOChart.png -------------------------------------------------------------------------------- /site/img/wiki/perfmonMemChart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/perfmonMemChart.png -------------------------------------------------------------------------------- /site/img/wiki/perfmonNetIOChart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/perfmonNetIOChart.png -------------------------------------------------------------------------------- /site/img/wiki/perfmonSWAPChart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/perfmonSWAPChart.png -------------------------------------------------------------------------------- /site/img/wiki/pmgr/pmgr_dialog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/pmgr/pmgr_dialog.png -------------------------------------------------------------------------------- /site/img/wiki/pmgr/pmgr_menu_item.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/pmgr/pmgr_menu_item.png -------------------------------------------------------------------------------- /site/img/wiki/rawdatasource.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/rawdatasource.png -------------------------------------------------------------------------------- /site/img/wiki/rawrequest.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/rawrequest.png -------------------------------------------------------------------------------- /site/img/wiki/redis/RedisDataSet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/redis/RedisDataSet.png -------------------------------------------------------------------------------- /site/img/wiki/redis/TestPlanWithRedisList.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/redis/TestPlanWithRedisList.png -------------------------------------------------------------------------------- /site/img/wiki/response_codes_per_second.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/response_codes_per_second.png -------------------------------------------------------------------------------- /site/img/wiki/response_latencies_over_time.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/response_latencies_over_time.png -------------------------------------------------------------------------------- /site/img/wiki/response_times_distribution.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/response_times_distribution.png -------------------------------------------------------------------------------- /site/img/wiki/response_times_over_time.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/response_times_over_time.png -------------------------------------------------------------------------------- /site/img/wiki/response_times_percentiles.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/response_times_percentiles.png -------------------------------------------------------------------------------- /site/img/wiki/rowSelection.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/rowSelection.png -------------------------------------------------------------------------------- /site/img/wiki/servers_performance_monitoring.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/servers_performance_monitoring.png -------------------------------------------------------------------------------- /site/img/wiki/setVariablesAction.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/setVariablesAction.png -------------------------------------------------------------------------------- /site/img/wiki/settings/aggregated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/settings/aggregated.png -------------------------------------------------------------------------------- /site/img/wiki/settings/doubleClickToChangeColor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/settings/doubleClickToChangeColor.png -------------------------------------------------------------------------------- /site/img/wiki/settings/draw_current_x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/settings/draw_current_x.png -------------------------------------------------------------------------------- /site/img/wiki/settings/final_zeroing_lines.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/settings/final_zeroing_lines.png -------------------------------------------------------------------------------- /site/img/wiki/settings/labelToColorMapping.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/settings/labelToColorMapping.png -------------------------------------------------------------------------------- /site/img/wiki/settings/limit_nb_points.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/settings/limit_nb_points.png -------------------------------------------------------------------------------- /site/img/wiki/settings/noRelative.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/settings/noRelative.png -------------------------------------------------------------------------------- /site/img/wiki/settings/no_gradient.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/settings/no_gradient.png -------------------------------------------------------------------------------- /site/img/wiki/settings/normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/settings/normal.png -------------------------------------------------------------------------------- /site/img/wiki/settings/normal2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/settings/normal2.png -------------------------------------------------------------------------------- /site/img/wiki/settings/orangeSpectrum.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/settings/orangeSpectrum.png -------------------------------------------------------------------------------- /site/img/wiki/settings/outliers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/settings/outliers.png -------------------------------------------------------------------------------- /site/img/wiki/settings/outliers_fixed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/settings/outliers_fixed.png -------------------------------------------------------------------------------- /site/img/wiki/settings/rampup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/settings/rampup.png -------------------------------------------------------------------------------- /site/img/wiki/settings/relative.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/settings/relative.png -------------------------------------------------------------------------------- /site/img/wiki/settings/vsThreadNoLimit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/settings/vsThreadNoLimit.png -------------------------------------------------------------------------------- /site/img/wiki/settings/vsThreadWithLimit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/settings/vsThreadWithLimit.png -------------------------------------------------------------------------------- /site/img/wiki/settingsPanel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/settingsPanel.png -------------------------------------------------------------------------------- /site/img/wiki/stepping_thread_group1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/stepping_thread_group1.png -------------------------------------------------------------------------------- /site/img/wiki/synchronization.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/synchronization.png -------------------------------------------------------------------------------- /site/img/wiki/synthesis_report.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/synthesis_report.png -------------------------------------------------------------------------------- /site/img/wiki/throughput_over_time.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/throughput_over_time.png -------------------------------------------------------------------------------- /site/img/wiki/throughput_shaping_timer1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/throughput_shaping_timer1.png -------------------------------------------------------------------------------- /site/img/wiki/throughput_shaping_timer2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/throughput_shaping_timer2.png -------------------------------------------------------------------------------- /site/img/wiki/throughputvsthreads.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/throughputvsthreads.png -------------------------------------------------------------------------------- /site/img/wiki/timevsthreads.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/timevsthreads.png -------------------------------------------------------------------------------- /site/img/wiki/total_transactions_per_seconds.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/total_transactions_per_seconds.png -------------------------------------------------------------------------------- /site/img/wiki/transactions_per_seconds.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/transactions_per_seconds.png -------------------------------------------------------------------------------- /site/img/wiki/ultimate_thread_group1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/ultimate_thread_group1.png -------------------------------------------------------------------------------- /site/img/wiki/ultimate_thread_group2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/ultimate_thread_group2.png -------------------------------------------------------------------------------- /site/img/wiki/varsfromcsv1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/varsfromcsv1.png -------------------------------------------------------------------------------- /site/img/wiki/varsfromcsv2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/undera/jmeter-plugins/066536d955cb8c1d413c7fd4e22e4b04f1655819/site/img/wiki/varsfromcsv2.png -------------------------------------------------------------------------------- /site/index.php: -------------------------------------------------------------------------------- 1 | --output-file 5 | rem [ 6 | rem --success-filter (true : Only success samplers, false : all results by default) 7 | rem --include-labels 8 | rem --exclude-labels 9 | rem --include-label-regex 10 | rem --exclude-label-regex 11 | rem --start-offset 12 | rem --end-offset 13 | rem --save-as-xml (false : CSV format by default) " 14 | rem ] 15 | 16 | rem example 1 : 17 | rem jmeter\lib\ext\FilterResults.bat --output-file filteredout.csv --input-file inputfile.jtl --include-label-regex true --include-labels "P[1-3].*" 18 | 19 | rem example 2 : 20 | rem jmeter\lib\ext\FilterResults.bat --output-file filteredout.xml --input-file inputfile.csv --include-label-regex true --include-labels "P[1-3].*" --start-offset 2 --end-offset 180 --success-filter true --save-as-xml true 21 | 22 | rem May be you need to declare the path to the java binary 23 | java -jar %~dp0\..\lib\cmdrunner-2.2.jar --tool FilterResults %* 24 | -------------------------------------------------------------------------------- /tools/filterresults/src/main/resources/kg/apc/cmdtools/FilterResults.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # When you are running FilterResults tool with JMeterPluginsCMD use the following parameters 4 | # --input-file --output-file 5 | # [ 6 | # --success-filter (true : Only success samplers, false : all results by default) 7 | # --include-labels 8 | # --exclude-labels 9 | # --include-label-regex 10 | # --exclude-label-regex 11 | # --start-offset 12 | # --end-offset 13 | # --save-as-xml (false : CSV format by default) " 14 | # ] 15 | # 16 | # example 1 : 17 | # jmeter/lib/ext/FilterResults.sh --output-file filteredout.csv --input-file inputfile.jtl --include-label-regex true --include-labels "P[1-3].*" 18 | # 19 | # example 2 : 20 | # jmeter/lib/ext/FilterResults.sh --output-file filteredout.xml --input-file inputfile.csv --include-label-regex true --include-labels "P[1-3].*" --start-offset 2 --end-offset 180 --success-filter true --save-as-xml true 21 | # 22 | # May be you need to declare the path to the java binary 23 | java -Djava.awt.headless=true -jar $(dirname $0)/../lib/cmdrunner-2.2.jar --tool FilterResults "$@" 24 | -------------------------------------------------------------------------------- /tools/mergeresults/src/main/java/org/jmeterplugins/save/MergeResultsInstaller.java: -------------------------------------------------------------------------------- 1 | package org.jmeterplugins.save; 2 | 3 | import java.io.File; 4 | import java.io.IOException; 5 | import java.io.InputStream; 6 | import java.nio.file.Files; 7 | import java.nio.file.StandardCopyOption; 8 | 9 | public class MergeResultsInstaller { 10 | public static void main(String[] argv) throws IOException { 11 | writeOut("/org/jmeterplugins/save/merge-results.properties", false); 12 | } 13 | 14 | private static void writeOut(String resName, boolean executable) throws IOException { 15 | File self = new File(MergeResultsInstaller.class.getProtectionDomain().getCodeSource().getLocation().getFile()); 16 | File src = new File(resName); 17 | String home = self.getParentFile().getParentFile().getParent(); 18 | File dest = new File(home + File.separator + "bin" + File.separator + src.getName()); 19 | 20 | InputStream is = MergeResultsInstaller.class.getResourceAsStream(resName); 21 | Files.copy(is, dest.toPath(), StandardCopyOption.REPLACE_EXISTING); 22 | dest.setExecutable(executable); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /tools/plancheck/src/main/java/kg/apc/cmdtools/TestPlanCheckInstaller.java: -------------------------------------------------------------------------------- 1 | package kg.apc.cmdtools; 2 | 3 | import java.io.File; 4 | import java.io.IOException; 5 | import java.io.InputStream; 6 | import java.nio.file.Files; 7 | import java.nio.file.StandardCopyOption; 8 | 9 | public class TestPlanCheckInstaller { 10 | public static void main(String[] argv) throws IOException { 11 | writeOut("/kg/apc/cmdtools/TestPlanCheck.bat", false); 12 | writeOut("/kg/apc/cmdtools/TestPlanCheck.sh", true); 13 | } 14 | 15 | private static void writeOut(String resName, boolean executable) throws IOException { 16 | File self = new File(TestPlanCheckInstaller.class.getProtectionDomain().getCodeSource().getLocation().getFile()); 17 | File src = new File(resName); 18 | String home = self.getParentFile().getParentFile().getParent(); 19 | File dest = new File(home + File.separator + "bin" + File.separator + src.getName()); 20 | 21 | InputStream is = TestPlanCheckInstaller.class.getResourceAsStream(resName); 22 | Files.copy(is, dest.toPath(), StandardCopyOption.REPLACE_EXISTING); 23 | dest.setExecutable(executable); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /tools/plancheck/src/main/resources/kg/apc/cmdtools/TestPlanCheck.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | java -Dlog4j.configurationFile=%~dp0\log4j2.xml -jar %~dp0\..\lib\cmdrunner-2.2.jar --tool TestPlanCheck %* 4 | -------------------------------------------------------------------------------- /tools/plancheck/src/main/resources/kg/apc/cmdtools/TestPlanCheck.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | java -Djava.awt.headless=true -Dlog4j.configurationFile=$(dirname $0)/log4j2.xml -jar $(dirname $0)/../lib/cmdrunner-2.2.jar --tool TestPlanCheck "$@" 4 | -------------------------------------------------------------------------------- /tools/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 4.0.0 6 | 7 | kg.apc 8 | jmeter-plugins-tools 9 | 0.1 10 | pom 11 | 12 | 28 | 29 | 30 | cmd 31 | filterresults 32 | mergeresults 33 | plancheck 34 | table-server 35 | graphs-ggl 36 | pde 37 | synthesis 38 | 39 | 40 | -------------------------------------------------------------------------------- /tools/table-server/src/main/java/org/jmeterplugins/protocol/http/control/KeyWaiter.java: -------------------------------------------------------------------------------- 1 | package org.jmeterplugins.protocol.http.control; 2 | 3 | 4 | public interface KeyWaiter { 5 | public void waitForKey(); 6 | } 7 | -------------------------------------------------------------------------------- /tools/table-server/src/main/java/org/jmeterplugins/protocol/http/control/STSInstaller.java: -------------------------------------------------------------------------------- 1 | package org.jmeterplugins.protocol.http.control; 2 | 3 | import java.io.File; 4 | import java.io.IOException; 5 | import java.io.InputStream; 6 | import java.nio.file.Files; 7 | import java.nio.file.StandardCopyOption; 8 | 9 | public class STSInstaller { 10 | public static void main(String[] argv) throws IOException { 11 | writeOut("simple-table-server.bsh", false); 12 | writeOut("simple-table-server.groovy", false); 13 | writeOut("simple-table-server.cmd", false); 14 | writeOut("simple-table-server.sh", true); 15 | writeOut("NanoHttpd-2.1.0_License.txt", false); 16 | } 17 | 18 | private static void writeOut(String resName, boolean executable) throws IOException { 19 | resName = "/org/jmeterplugins/protocol/http/control/" + resName; 20 | File self = new File(STSInstaller.class.getProtectionDomain().getCodeSource().getLocation().getFile()); 21 | File src = new File(resName); 22 | String home = self.getParentFile().getParentFile().getParent(); 23 | File dest = new File(home + File.separator + "bin" + File.separator + src.getName()); 24 | 25 | InputStream is = STSInstaller.class.getResourceAsStream(resName); 26 | Files.copy(is, dest.toPath(), StandardCopyOption.REPLACE_EXISTING); 27 | dest.setExecutable(executable); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /tools/table-server/src/main/resources/org/jmeterplugins/protocol/http/control/NanoHttpd-2.1.0_License.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2012-2013 by Paul S. Hawke, 2001,2005-2013 by Jarno Elonen, 2010 by Konstantinos Togias All rights reserved. 2 | 3 | Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 4 | 5 | Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 6 | 7 | Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 8 | 9 | Neither the name of the NanoHttpd organization nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. -------------------------------------------------------------------------------- /tools/table-server/src/main/resources/org/jmeterplugins/protocol/http/control/simple-table-server.bsh: -------------------------------------------------------------------------------- 1 | print("Startup beanshell script running"); 2 | 3 | import org.apache.jmeter.util.JMeterUtils; 4 | import org.apache.jorphan.util.JMeterException; 5 | import org.apache.jorphan.reflect.ClassTools; 6 | import org.slf4j.Logger; 7 | import org.slf4j.LoggerFactory; 8 | 9 | private static final Logger log = LoggerFactory.getLogger("bsh.startup"); 10 | 11 | int simpleTablePort = JMeterUtils.getPropDefault( 12 | "jmeterPlugin.sts.port", 0); 13 | boolean loadAndRunOnStartup = JMeterUtils.getPropDefault( 14 | "jmeterPlugin.sts.loadAndRunOnStartup", false); 15 | 16 | if (simpleTablePort > 0 && loadAndRunOnStartup) { 17 | log.info("Starting Simple Table server (" + simpleTablePort + ")"); 18 | try { 19 | Object instance = ClassTools 20 | .construct("org.jmeterplugins.protocol.http.control.HttpSimpleTableControl" 21 | ); 22 | ClassTools.invoke(instance, "startHttpSimpleTable"); 23 | msg = "Simple Table Server is running on port : " + simpleTablePort; 24 | log.info(msg); 25 | print(msg); 26 | } catch (JMeterException e) { 27 | log.warn("Could not start Simple Table server", e); 28 | } 29 | } 30 | else { 31 | msg = "jmeterPlugin.sts.port == 0 OR jmeterPlugin.sts.loadAndRunOnStartup != true => Simple Table Server is NOT running"; 32 | log.info(msg); 33 | print(msg); 34 | } 35 | 36 | 37 | print("Startup beanshell script completed"); 38 | -------------------------------------------------------------------------------- /tools/table-server/src/test/java/org/jmeterplugins/protocol/http/control/STSInstallerTest.java: -------------------------------------------------------------------------------- 1 | package org.jmeterplugins.protocol.http.control; 2 | 3 | import org.apache.commons.io.FileUtils; 4 | import org.junit.Test; 5 | 6 | import java.io.File; 7 | 8 | public class STSInstallerTest { 9 | @Test 10 | public void name() throws Exception { 11 | File self = new File(STSInstaller.class.getProtectionDomain().getCodeSource().getLocation().getFile()); 12 | String home = self.getParentFile().getParentFile().getParent(); 13 | File dest = new File(home + File.separator + "bin"); 14 | dest.mkdirs(); 15 | 16 | STSInstaller.main(new String[0]); 17 | 18 | FileUtils.deleteDirectory(dest); 19 | } 20 | } -------------------------------------------------------------------------------- /tools/table-server/src/test/java/org/jmeterplugins/protocol/http/control/ServerRunnerTest.java: -------------------------------------------------------------------------------- 1 | package org.jmeterplugins.protocol.http.control; 2 | 3 | import org.apache.jmeter.util.JMeterUtils; 4 | import org.junit.*; 5 | 6 | public class ServerRunnerTest { 7 | 8 | public ServerRunnerTest() { 9 | } 10 | 11 | @BeforeClass 12 | public static void setUpClass() throws Exception { 13 | } 14 | 15 | @AfterClass 16 | public static void tearDownClass() throws Exception { 17 | } 18 | 19 | @Before 20 | public void setUp() { 21 | } 22 | 23 | @After 24 | public void tearDown() { 25 | } 26 | 27 | @Test 28 | public void testRun() throws InstantiationException, IllegalAccessException { 29 | System.out.println("run"); 30 | ServerRunner.run(HttpSimpleTableServerEmul.class); 31 | } 32 | 33 | @Test 34 | public void testExecuteInstance() throws Exception { 35 | System.out.println("executeInstance"); 36 | HttpSimpleTableServer serv = null; 37 | ServerRunner.executeInstance(serv); 38 | 39 | String charset = "UTF-8"; 40 | boolean isDaemon = false; 41 | 42 | serv = new HttpSimpleTableServerEmul(-1, false, JMeterUtils.getJMeterBinDir(), charset, charset, charset, isDaemon); 43 | serv.start(); 44 | ServerRunner.executeInstance(serv); 45 | serv.stopServer(); 46 | serv = null; 47 | } 48 | 49 | } 50 | -------------------------------------------------------------------------------- /tools/table-server/src/test/java/org/jmeterplugins/protocol/http/control/ServerSocketEmul.java: -------------------------------------------------------------------------------- 1 | package org.jmeterplugins.protocol.http.control; 2 | 3 | import java.io.IOException; 4 | 5 | public class ServerSocketEmul extends java.net.ServerSocket { 6 | public ServerSocketEmul() throws IOException { 7 | } 8 | 9 | @Override 10 | public boolean isClosed() { 11 | return false; 12 | } 13 | } 14 | --------------------------------------------------------------------------------