├── .gitignore
├── .travis.settings.xml
├── .travis.yml
├── LICENSE
├── README.MD
├── docker
└── Dockerfile
├── docs
├── Gemfile
├── _config.yml
├── _data
│ ├── links.yaml
│ ├── menuHeader.yaml
│ └── sitemap.yaml
├── _layouts
│ └── grinder.html
├── development
│ └── contributing.html
├── download.html
├── faq.html
├── favicon.ico
├── guide
│ ├── agents-and-workers.html
│ ├── clojure.html
│ ├── console-service.html
│ ├── console.html
│ ├── coordination.html
│ ├── features.html
│ ├── garbage-collection.html
│ ├── getting-started.html
│ ├── http-plugin.html
│ ├── instrumentation.html
│ ├── jython.html
│ ├── logging.html
│ ├── properties.html
│ ├── script-gallery.html
│ ├── scripts.html
│ ├── setting-up-a-project.html
│ ├── ssl-support.html
│ ├── statistics.html
│ ├── tcpproxy.html
│ ├── tutorial-perks.html
│ ├── tutorial-weight-distribution.html
│ └── webconsole.html
├── images
│ ├── banner.png
│ ├── book-cover.jpg
│ ├── console-distribute-files.png
│ ├── console-es-g3.png
│ ├── console-sample-controls.png
│ ├── console-screenshot-g3.png
│ ├── console-select-properties.png
│ ├── console-start-and-reset.png
│ ├── grinder-analyzer.png
│ ├── grinder.png
│ ├── ie-cache-settings.png
│ ├── processes.png
│ ├── proxy-preferences.png
│ ├── tcpproxy-console.png
│ ├── tcpproxy-proxy.gif
│ ├── tcpproxy-ssl.gif
│ ├── tcpproxy.gif
│ ├── tcpproxy.vsd
│ ├── webconsole-graph.png
│ ├── webconsole-process-control-stop.png
│ ├── webconsole-process-control.png
│ ├── webconsole-screenshot.png
│ └── webconsole-select-properties.png
├── index.html
├── license.html
├── links.html
└── support.html
├── documentation
├── .gitignore
├── README
├── build.xml
├── etc
│ ├── .gitignore
│ ├── changes2xml.py
│ ├── localpaths.properties
│ ├── outline2xml.py
│ └── scripts2XML.py
├── forrest.properties
└── src
│ └── documentation
│ ├── add-image-to-title.xsl
│ ├── changes2doc.xsl
│ ├── classes
│ └── CatalogManager.properties
│ ├── conf
│ └── cli.xconf
│ ├── content
│ ├── locationmap.xml
│ └── xdocs
│ │ ├── development
│ │ └── contributing.xml
│ │ ├── download.xml
│ │ ├── faq.xml
│ │ ├── g2
│ │ ├── console.xml
│ │ ├── getting-started.xml
│ │ ├── http-plugin.xml
│ │ ├── junit-plugin.xml
│ │ ├── manual.ihtml
│ │ ├── properties.xml
│ │ └── tcpsniffer.xml
│ │ ├── g3
│ │ ├── agents-and-workers.xml
│ │ ├── clojure.xml
│ │ ├── console-service.xml
│ │ ├── console.xml
│ │ ├── coordination.xml
│ │ ├── features.xml
│ │ ├── garbage-collection.xml
│ │ ├── getting-started.xml
│ │ ├── http-plugin.xml
│ │ ├── instrumentation.xml
│ │ ├── jython.xml
│ │ ├── logging.xml
│ │ ├── properties.xml
│ │ ├── scripts.xml
│ │ ├── setting-up-a-project.xml
│ │ ├── ssl-support.xml
│ │ ├── statistics.xml
│ │ ├── tcpproxy.xml
│ │ ├── tutorial-perks.xml
│ │ └── tutorial-weight-distribution.xml
│ │ ├── index.xml
│ │ ├── license.xml
│ │ ├── links.xml
│ │ ├── site.xml
│ │ ├── support.xml
│ │ └── tabs.xml
│ ├── resources
│ ├── image-sources
│ │ ├── console-service.svg
│ │ ├── distribute-files.svg
│ │ ├── fuzzy-border-settings.png
│ │ ├── grinder-logo.xcf
│ │ ├── pastedpic_09282008_091054.png
│ │ ├── pastedpic_09282008_095323.png
│ │ ├── processes.svg
│ │ ├── sample-controls.svg
│ │ └── start-and-reset.svg
│ └── images
│ │ ├── PythonPoweredSmall.gif
│ │ ├── book-cover.jpg
│ │ ├── console-distribute-files.png
│ │ ├── console-es-g3.png
│ │ ├── console-es.png
│ │ ├── console-sample-controls.png
│ │ ├── console-screenshot-g3.png
│ │ ├── console-screenshot.png
│ │ ├── console-select-properties.png
│ │ ├── console-start-and-reset.png
│ │ ├── grinder-analyzer.png
│ │ ├── grinder-logo.png
│ │ ├── grinder.gif
│ │ ├── grinder3.jpg
│ │ ├── ie-cache-settings.png
│ │ ├── logo.png
│ │ ├── processes.png
│ │ ├── proxy-preferences.png
│ │ ├── tcpproxy-console.png
│ │ ├── tcpproxy-proxy.gif
│ │ ├── tcpproxy-ssl.gif
│ │ ├── tcpproxy.gif
│ │ └── tcpproxy.vsd
│ ├── scripts2doc.xsl
│ ├── sitemap.xmap
│ ├── skinconf.xml
│ ├── skins
│ ├── common
│ │ └── images
│ │ │ └── fade.png
│ └── pelt-grinder
│ │ ├── css
│ │ ├── basic.css
│ │ ├── print.css
│ │ ├── profile.css.xslt
│ │ ├── screen.css
│ │ ├── shCore.css
│ │ ├── shCoreDefault.css
│ │ ├── shCoreDjango.css
│ │ ├── shCoreEclipse.css
│ │ ├── shCoreEmacs.css
│ │ ├── shCoreFadeToGrey.css
│ │ ├── shCoreMDUltra.css
│ │ ├── shCoreMidnight.css
│ │ ├── shCoreRDark.css
│ │ ├── shThemeDefault.css
│ │ ├── shThemeDjango.css
│ │ ├── shThemeEclipse.css
│ │ ├── shThemeEmacs.css
│ │ ├── shThemeFadeToGrey.css
│ │ ├── shThemeMDUltra.css
│ │ ├── shThemeMidnight.css
│ │ └── shThemeRDark.css
│ │ ├── images
│ │ ├── chapter.gif
│ │ ├── chapter_open.gif
│ │ ├── current.gif
│ │ ├── error.png
│ │ ├── header_white_line.gif
│ │ ├── info.png
│ │ ├── instruction_arrow.png
│ │ ├── label.gif
│ │ ├── page.gif
│ │ ├── pdfdoc.gif
│ │ ├── printer.gif
│ │ ├── success.png
│ │ ├── warning.png
│ │ └── xmldoc.gif
│ │ ├── note.txt
│ │ ├── scripts
│ │ ├── sh
│ │ ├── shAutoloader.js
│ │ ├── shBrushAS3.js
│ │ ├── shBrushAppleScript.js
│ │ ├── shBrushBash.js
│ │ ├── shBrushCSharp.js
│ │ ├── shBrushClojure.js
│ │ ├── shBrushColdFusion.js
│ │ ├── shBrushCpp.js
│ │ ├── shBrushCss.js
│ │ ├── shBrushDelphi.js
│ │ ├── shBrushDiff.js
│ │ ├── shBrushErlang.js
│ │ ├── shBrushGroovy.js
│ │ ├── shBrushJScript.js
│ │ ├── shBrushJava.js
│ │ ├── shBrushJavaFX.js
│ │ ├── shBrushPerl.js
│ │ ├── shBrushPhp.js
│ │ ├── shBrushPlain.js
│ │ ├── shBrushPowerShell.js
│ │ ├── shBrushPython.js
│ │ ├── shBrushRuby.js
│ │ ├── shBrushSass.js
│ │ ├── shBrushScala.js
│ │ ├── shBrushSql.js
│ │ ├── shBrushVb.js
│ │ ├── shBrushXml.js
│ │ ├── shCore.js
│ │ └── shLegacy.js
│ │ ├── skinconf.xsl
│ │ └── xslt
│ │ ├── fo
│ │ └── document-to-fo.xsl
│ │ └── html
│ │ ├── book-to-menu.xsl
│ │ ├── document-to-html.xsl
│ │ ├── site-to-xhtml.xsl
│ │ └── tab-to-menu.xsl
│ └── todo2doc.xsl
├── grinder-console-service
├── .gitignore
├── pom.xml
├── resources
│ └── META-INF
│ │ └── net.grinder.console
├── src
│ └── net
│ │ └── grinder
│ │ └── console
│ │ ├── model
│ │ ├── DistributionResult.java
│ │ ├── Files.java
│ │ ├── Processes.java
│ │ ├── Properties.java
│ │ ├── Recording.java
│ │ └── Report.java
│ │ └── service
│ │ ├── Bootstrap.java
│ │ └── RestController.java
└── test
│ └── net
│ └── grinder
│ └── test
│ └── console
│ ├── model
│ ├── TestFiles.java
│ ├── TestProcesses.java
│ ├── TestProperties.java
│ ├── TestRecording.java
│ └── Wrapper.java
│ └── service
│ └── RestControllerTest.java
├── grinder-core
├── .gitignore
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── net
│ │ │ └── grinder
│ │ │ ├── Console.java
│ │ │ ├── Grinder.java
│ │ │ ├── common
│ │ │ ├── AbstractTestSemantics.java
│ │ │ ├── Closer.java
│ │ │ ├── GrinderBuild.java
│ │ │ ├── GrinderException.java
│ │ │ ├── GrinderProperties.java
│ │ │ ├── SSLContextFactory.java
│ │ │ ├── SkeletonThreadLifeCycleListener.java
│ │ │ ├── Test.java
│ │ │ ├── ThreadLifeCycleListener.java
│ │ │ ├── UncheckedGrinderException.java
│ │ │ ├── UncheckedInterruptedException.java
│ │ │ ├── package.html
│ │ │ └── processidentity
│ │ │ │ ├── AgentIdentity.java
│ │ │ │ ├── AgentProcessReport.java
│ │ │ │ ├── ProcessAddress.java
│ │ │ │ ├── ProcessIdentity.java
│ │ │ │ ├── ProcessReport.java
│ │ │ │ ├── WorkerIdentity.java
│ │ │ │ ├── WorkerProcessReport.java
│ │ │ │ └── package.html
│ │ │ ├── communication
│ │ │ ├── AbstractFanOutSender.java
│ │ │ ├── AbstractSender.java
│ │ │ ├── Acceptor.java
│ │ │ ├── Address.java
│ │ │ ├── AddressAwareMessage.java
│ │ │ ├── BlockingSender.java
│ │ │ ├── ClientReceiver.java
│ │ │ ├── ClientSender.java
│ │ │ ├── CloseCommunicationMessage.java
│ │ │ ├── CommunicationDefaults.java
│ │ │ ├── CommunicationException.java
│ │ │ ├── ConnectionIdentity.java
│ │ │ ├── ConnectionType.java
│ │ │ ├── Connector.java
│ │ │ ├── FanOutServerSender.java
│ │ │ ├── FanOutStreamSender.java
│ │ │ ├── IdleAwareSocketWrapper.java
│ │ │ ├── IgnoreShutdownSender.java
│ │ │ ├── KeepAliveMessage.java
│ │ │ ├── Message.java
│ │ │ ├── MessageDispatchRegistry.java
│ │ │ ├── MessageDispatchSender.java
│ │ │ ├── MessagePump.java
│ │ │ ├── MessageQueue.java
│ │ │ ├── MessageRequiringResponse.java
│ │ │ ├── NoResponseMessage.java
│ │ │ ├── QueuedSender.java
│ │ │ ├── QueuedSenderDecorator.java
│ │ │ ├── Receiver.java
│ │ │ ├── ResourcePool.java
│ │ │ ├── ResourcePoolImplementation.java
│ │ │ ├── Sender.java
│ │ │ ├── ServerReceiver.java
│ │ │ ├── SocketWrapper.java
│ │ │ ├── StreamReceiver.java
│ │ │ ├── StreamSender.java
│ │ │ ├── TeeSender.java
│ │ │ └── package.html
│ │ │ ├── console
│ │ │ ├── ConsoleFoundation.java
│ │ │ ├── SpringConsoleFoundation.java
│ │ │ ├── client
│ │ │ │ ├── ConsoleConnection.java
│ │ │ │ ├── ConsoleConnectionException.java
│ │ │ │ ├── ConsoleConnectionFactory.java
│ │ │ │ ├── ConsoleConnectionImplementation.java
│ │ │ │ └── package.html
│ │ │ ├── common
│ │ │ │ ├── ConsoleException.java
│ │ │ │ ├── DisplayMessageConsoleException.java
│ │ │ │ ├── ErrorHandler.java
│ │ │ │ ├── ErrorQueue.java
│ │ │ │ ├── ProcessReportDescriptionFactory.java
│ │ │ │ ├── Resources.java
│ │ │ │ ├── ResourcesImplementation.java
│ │ │ │ └── package.html
│ │ │ ├── communication
│ │ │ │ ├── ConsoleCommunication.java
│ │ │ │ ├── ConsoleCommunicationImplementation.java
│ │ │ │ ├── DistributionControl.java
│ │ │ │ ├── DistributionControlImplementation.java
│ │ │ │ ├── ProcessControl.java
│ │ │ │ ├── ProcessControlImplementation.java
│ │ │ │ ├── ProcessStatusImplementation.java
│ │ │ │ ├── package.html
│ │ │ │ └── server
│ │ │ │ │ ├── DispatchClientCommands.java
│ │ │ │ │ ├── messages
│ │ │ │ │ ├── GetNumberOfAgentsMessage.java
│ │ │ │ │ ├── ResetRecordingMessage.java
│ │ │ │ │ ├── ResetWorkerProcessesMessage.java
│ │ │ │ │ ├── ResultMessage.java
│ │ │ │ │ ├── StartRecordingMessage.java
│ │ │ │ │ ├── StartWorkerProcessesMessage.java
│ │ │ │ │ ├── StopAgentAndWorkerProcessesMessage.java
│ │ │ │ │ ├── StopRecordingMessage.java
│ │ │ │ │ ├── SuccessMessage.java
│ │ │ │ │ └── package.html
│ │ │ │ │ └── package.html
│ │ │ ├── distribution
│ │ │ │ ├── AgentCacheState.java
│ │ │ │ ├── AgentCacheStateImplementation.java
│ │ │ │ ├── AgentSet.java
│ │ │ │ ├── CacheParameters.java
│ │ │ │ ├── CacheParametersImplementation.java
│ │ │ │ ├── FileChangeWatcher.java
│ │ │ │ ├── FileDistribution.java
│ │ │ │ ├── FileDistributionHandler.java
│ │ │ │ ├── FileDistributionHandlerImplementation.java
│ │ │ │ ├── FileDistributionImplementation.java
│ │ │ │ ├── UpdateableAgentCacheState.java
│ │ │ │ ├── WireFileDistribution.java
│ │ │ │ └── package.html
│ │ │ ├── editor
│ │ │ │ ├── AbstractTextSource.java
│ │ │ │ ├── Buffer.java
│ │ │ │ ├── BufferImplementation.java
│ │ │ │ ├── EditorException.java
│ │ │ │ ├── EditorModel.java
│ │ │ │ ├── ExternalEditor.java
│ │ │ │ ├── TextSource.java
│ │ │ │ └── package.html
│ │ │ ├── model
│ │ │ │ ├── ConsoleProperties.java
│ │ │ │ ├── ModelTestIndex.java
│ │ │ │ ├── SampleAccumulator.java
│ │ │ │ ├── SampleListener.java
│ │ │ │ ├── SampleModel.java
│ │ │ │ ├── SampleModelImplementation.java
│ │ │ │ ├── SampleModelViews.java
│ │ │ │ ├── SampleModelViewsImplementation.java
│ │ │ │ └── package.html
│ │ │ ├── package.html
│ │ │ ├── synchronisation
│ │ │ │ ├── ConsoleBarrierGroups.java
│ │ │ │ ├── ProcessBarrierGroups.java
│ │ │ │ ├── WireDistributedBarriers.java
│ │ │ │ └── package.html
│ │ │ └── textui
│ │ │ │ ├── TextUI.java
│ │ │ │ └── package.html
│ │ │ ├── engine
│ │ │ ├── agent
│ │ │ │ ├── AbstractProcessIdentityImplementation.java
│ │ │ │ ├── AbstractWorkerFactory.java
│ │ │ │ ├── Agent.java
│ │ │ │ ├── AgentDaemon.java
│ │ │ │ ├── AgentIdentityImplementation.java
│ │ │ │ ├── AgentImplementation.java
│ │ │ │ ├── CommandLine.java
│ │ │ │ ├── DebugThreadWorker.java
│ │ │ │ ├── DebugThreadWorkerFactory.java
│ │ │ │ ├── FileStore.java
│ │ │ │ ├── IsolatedGrinderProcessRunner.java
│ │ │ │ ├── ProcessWorker.java
│ │ │ │ ├── ProcessWorkerFactory.java
│ │ │ │ ├── Worker.java
│ │ │ │ ├── WorkerFactory.java
│ │ │ │ ├── WorkerLauncher.java
│ │ │ │ ├── WorkerProcessCommandLine.java
│ │ │ │ └── package.html
│ │ │ ├── common
│ │ │ │ ├── ConnectorFactory.java
│ │ │ │ ├── EngineException.java
│ │ │ │ ├── ScriptLocation.java
│ │ │ │ └── package.html
│ │ │ ├── communication
│ │ │ │ ├── ConsoleListener.java
│ │ │ │ └── package.html
│ │ │ ├── messages
│ │ │ │ ├── InitialiseGrinderMessage.java
│ │ │ │ └── package.html
│ │ │ ├── package.html
│ │ │ └── process
│ │ │ │ ├── DataLogArguments.java
│ │ │ │ ├── DispatchContext.java
│ │ │ │ ├── DispatchResultReporter.java
│ │ │ │ ├── ExternalLogger.java
│ │ │ │ ├── GrinderProcess.java
│ │ │ │ ├── GrinderThread.java
│ │ │ │ ├── MasterInstrumenter.java
│ │ │ │ ├── PluginRegistryImplementation.java
│ │ │ │ ├── ProcessLifeCycleListener.java
│ │ │ │ ├── RegisteredPlugin.java
│ │ │ │ ├── SSLControlImplementation.java
│ │ │ │ ├── ScriptContextImplementation.java
│ │ │ │ ├── ScriptEngineContainer.java
│ │ │ │ ├── ScriptStatisticsImplementation.java
│ │ │ │ ├── ShutdownException.java
│ │ │ │ ├── StatisticsForTestImplementation.java
│ │ │ │ ├── StopWatch.java
│ │ │ │ ├── StopWatchImplementation.java
│ │ │ │ ├── TestData.java
│ │ │ │ ├── TestRegistryImplementation.java
│ │ │ │ ├── TestStatisticsHelper.java
│ │ │ │ ├── TestStatisticsHelperImplementation.java
│ │ │ │ ├── ThreadContext.java
│ │ │ │ ├── ThreadContextImplementation.java
│ │ │ │ ├── ThreadContextLocator.java
│ │ │ │ ├── ThreadDataLogger.java
│ │ │ │ ├── ThreadStarter.java
│ │ │ │ ├── ThreadStopper.java
│ │ │ │ ├── WorkerProcessEntryPoint.java
│ │ │ │ ├── WorkerRunnableFactory.java
│ │ │ │ ├── WorkerThreadSynchronisation.java
│ │ │ │ ├── dcr
│ │ │ │ ├── DCRContextImplementation.java
│ │ │ │ ├── RecorderLocator.java
│ │ │ │ ├── RecorderRegistry.java
│ │ │ │ └── package.html
│ │ │ │ └── package.html
│ │ │ ├── messages
│ │ │ ├── agent
│ │ │ │ ├── CacheHighWaterMark.java
│ │ │ │ ├── ClearCacheMessage.java
│ │ │ │ ├── DistributeFileMessage.java
│ │ │ │ ├── DistributionCacheCheckpointMessage.java
│ │ │ │ ├── ResetGrinderMessage.java
│ │ │ │ ├── StartGrinderMessage.java
│ │ │ │ ├── StopGrinderMessage.java
│ │ │ │ └── package.html
│ │ │ └── console
│ │ │ │ ├── AgentAddress.java
│ │ │ │ ├── AgentAndCacheReport.java
│ │ │ │ ├── AgentProcessReportMessage.java
│ │ │ │ ├── CacheStatusReport.java
│ │ │ │ ├── RegisterExpressionViewMessage.java
│ │ │ │ ├── RegisterTestsMessage.java
│ │ │ │ ├── ReportStatisticsMessage.java
│ │ │ │ ├── WorkerAddress.java
│ │ │ │ ├── WorkerProcessReportMessage.java
│ │ │ │ └── package.html
│ │ │ ├── package.html
│ │ │ ├── plugininterface
│ │ │ ├── GrinderPlugin.java
│ │ │ ├── PluginException.java
│ │ │ ├── PluginProcessContext.java
│ │ │ ├── PluginRegistry.java
│ │ │ ├── PluginThreadContext.java
│ │ │ ├── PluginThreadListener.java
│ │ │ └── package.html
│ │ │ ├── script
│ │ │ ├── Barrier.java
│ │ │ ├── CancelledBarrierException.java
│ │ │ ├── Grinder.java
│ │ │ ├── InternalScriptContext.java
│ │ │ ├── InvalidContextException.java
│ │ │ ├── NoSuchStatisticException.java
│ │ │ ├── NonInstrumentableTypeException.java
│ │ │ ├── NotWrappableTypeException.java
│ │ │ ├── SSLControl.java
│ │ │ ├── Statistics.java
│ │ │ ├── Test.java
│ │ │ ├── TestRegistry.java
│ │ │ ├── overview.html
│ │ │ └── package.html
│ │ │ ├── scriptengine
│ │ │ ├── AbstractDCRInstrumenter.java
│ │ │ ├── CompositeInstrumenter.java
│ │ │ ├── DCRContext.java
│ │ │ ├── Instrumenter.java
│ │ │ ├── Recorder.java
│ │ │ ├── ScriptEngineService.java
│ │ │ ├── ScriptExecutionException.java
│ │ │ ├── clojure
│ │ │ │ ├── ClojureScriptEngine.java
│ │ │ │ ├── ClojureScriptEngineService.java
│ │ │ │ └── package.html
│ │ │ ├── java
│ │ │ │ ├── JavaDCRInstrumenter.java
│ │ │ │ ├── JavaScriptEngineService.java
│ │ │ │ └── package.html
│ │ │ ├── jython
│ │ │ │ ├── JythonScriptEngine.java
│ │ │ │ ├── JythonScriptEngineService.java
│ │ │ │ ├── JythonScriptExecutionException.java
│ │ │ │ ├── instrumentation
│ │ │ │ │ └── dcr
│ │ │ │ │ │ ├── AbstractJythonDCRInstrumenter.java
│ │ │ │ │ │ ├── Jython22Instrumenter.java
│ │ │ │ │ │ ├── Jython25Instrumenter.java
│ │ │ │ │ │ └── package.html
│ │ │ │ └── package.html
│ │ │ └── package.html
│ │ │ ├── statistics
│ │ │ ├── CommonStatisticsViews.java
│ │ │ ├── ExpressionView.java
│ │ │ ├── ImmutableStatisticsSet.java
│ │ │ ├── PeakStatisticExpression.java
│ │ │ ├── StatisticExpression.java
│ │ │ ├── StatisticExpressionFactory.java
│ │ │ ├── StatisticExpressionFactoryImplementation.java
│ │ │ ├── StatisticsException.java
│ │ │ ├── StatisticsIndexMap.java
│ │ │ ├── StatisticsServices.java
│ │ │ ├── StatisticsServicesImplementation.java
│ │ │ ├── StatisticsSet.java
│ │ │ ├── StatisticsSetFactory.java
│ │ │ ├── StatisticsSetImplementation.java
│ │ │ ├── StatisticsTable.java
│ │ │ ├── StatisticsView.java
│ │ │ ├── TestStatisticsMap.java
│ │ │ ├── TestStatisticsQueries.java
│ │ │ └── package.html
│ │ │ ├── synchronisation
│ │ │ ├── AbstractBarrierGroups.java
│ │ │ ├── BarrierGroup.java
│ │ │ ├── BarrierGroups.java
│ │ │ ├── BarrierIdentityGenerator.java
│ │ │ ├── BarrierImplementation.java
│ │ │ ├── ClientBarrierGroups.java
│ │ │ ├── LocalBarrierGroups.java
│ │ │ ├── messages
│ │ │ │ ├── AbstractBarrierGroupMessage.java
│ │ │ │ ├── AddBarrierMessage.java
│ │ │ │ ├── AddWaiterMessage.java
│ │ │ │ ├── BarrierIdentity.java
│ │ │ │ ├── CancelWaiterMessage.java
│ │ │ │ ├── OpenBarrierMessage.java
│ │ │ │ ├── RemoveBarriersMessage.java
│ │ │ │ └── package.html
│ │ │ └── package.html
│ │ │ └── util
│ │ │ ├── AbstractMainClass.java
│ │ │ ├── AbstractMultiLineFormatter.java
│ │ │ ├── AllocateLowestNumber.java
│ │ │ ├── AllocateLowestNumberImplementation.java
│ │ │ ├── AttributeStringParser.java
│ │ │ ├── AttributeStringParserImplementation.java
│ │ │ ├── BlockingClassLoader.java
│ │ │ ├── BooleanProperty.java
│ │ │ ├── ClassLoaderUtilities.java
│ │ │ ├── DelayedCreationFileWriter.java
│ │ │ ├── Directory.java
│ │ │ ├── FileContents.java
│ │ │ ├── FileExtensionMatcher.java
│ │ │ ├── FixedWidthFormatter.java
│ │ │ ├── InsecureSSLContextFactory.java
│ │ │ ├── JVM.java
│ │ │ ├── LessInsecureSSLContextFactory.java
│ │ │ ├── ListenerSupport.java
│ │ │ ├── MultiLineFormatter.java
│ │ │ ├── NullMultiLineFormatter.java
│ │ │ ├── Pair.java
│ │ │ ├── Serialiser.java
│ │ │ ├── SignificantFigureFormat.java
│ │ │ ├── SimpleStringEscaper.java
│ │ │ ├── Sleeper.java
│ │ │ ├── SleeperImplementation.java
│ │ │ ├── StandardTimeAuthority.java
│ │ │ ├── StreamCopier.java
│ │ │ ├── StringEscaper.java
│ │ │ ├── TerminalColour.java
│ │ │ ├── TimeAuthority.java
│ │ │ ├── UnexpectedIOException.java
│ │ │ ├── UniqueIdentityGenerator.java
│ │ │ ├── WeakValueHashMap.java
│ │ │ ├── html
│ │ │ ├── AbstractHTMLNode.java
│ │ │ ├── HTMLDocument.java
│ │ │ ├── HTMLElement.java
│ │ │ ├── HTMLText.java
│ │ │ └── package.html
│ │ │ ├── logback
│ │ │ ├── BufferedEchoMessageEncoder.java
│ │ │ ├── RollOnStartUp.java
│ │ │ └── package.html
│ │ │ ├── package.html
│ │ │ ├── thread
│ │ │ ├── BooleanCondition.java
│ │ │ ├── Condition.java
│ │ │ ├── ExecutorFactory.java
│ │ │ ├── InterruptibleRunnable.java
│ │ │ ├── InterruptibleRunnableAdapter.java
│ │ │ └── package.html
│ │ │ └── weave
│ │ │ ├── Weaver.java
│ │ │ ├── WeavingException.java
│ │ │ ├── j2se6
│ │ │ ├── ASMTransformerFactory.java
│ │ │ ├── DCRWeaver.java
│ │ │ ├── PointCutRegistry.java
│ │ │ ├── WeavingDetails.java
│ │ │ └── package.html
│ │ │ └── package.html
│ └── resources
│ │ ├── META-INF
│ │ └── net.grinder.scriptengine
│ │ ├── grinderBanner.txt
│ │ ├── logback-worker.xml
│ │ ├── logback.xml
│ │ └── net
│ │ └── grinder
│ │ ├── common
│ │ └── resources
│ │ │ └── build.properties
│ │ ├── console
│ │ └── common
│ │ │ └── resources
│ │ │ ├── Console.properties
│ │ │ ├── Console_de.properties
│ │ │ ├── Console_es.properties
│ │ │ ├── Console_fr.properties
│ │ │ ├── Console_it.properties
│ │ │ ├── Console_nl.properties
│ │ │ ├── Console_pl.properties
│ │ │ ├── Console_ru.properties
│ │ │ ├── Console_zh.properties
│ │ │ ├── about.html
│ │ │ ├── close-file-rollover.png
│ │ │ ├── close-file.png
│ │ │ ├── deselect-properties-rollover.png
│ │ │ ├── deselect-properties.png
│ │ │ ├── directory-rollover.png
│ │ │ ├── directory.png
│ │ │ ├── distribute-files-rollover.png
│ │ │ ├── distribute-files.png
│ │ │ ├── files-small.xcf
│ │ │ ├── graphs.png
│ │ │ ├── grinder-2.xcf
│ │ │ ├── grinder.svg
│ │ │ ├── grinder.xcf
│ │ │ ├── icons.xcf
│ │ │ ├── logo-large.png
│ │ │ ├── logo.png
│ │ │ ├── marked-properties-small.png
│ │ │ ├── marked-python-small.png
│ │ │ ├── marked-script-small.png
│ │ │ ├── new-file-rollover.png
│ │ │ ├── new-file.png
│ │ │ ├── open-file-external-rollover.png
│ │ │ ├── open-file-external.png
│ │ │ ├── open-file-rollover.png
│ │ │ ├── open-file.png
│ │ │ ├── options-rollover.png
│ │ │ ├── options.png
│ │ │ ├── process-status.png
│ │ │ ├── properties-small.png
│ │ │ ├── python-script-small.png
│ │ │ ├── reset-processes-rollover.png
│ │ │ ├── reset-processes.png
│ │ │ ├── save-file-as-rollover.png
│ │ │ ├── save-file-as.png
│ │ │ ├── save-file-rollover.png
│ │ │ ├── save-file.png
│ │ │ ├── save-results-rollover.png
│ │ │ ├── save-results.png
│ │ │ ├── script-small.png
│ │ │ ├── script.png
│ │ │ ├── select-properties-rollover.png
│ │ │ ├── select-properties.png
│ │ │ ├── start-processes-rollover.png
│ │ │ ├── start-processes.png
│ │ │ ├── start-rollover.png
│ │ │ ├── start.png
│ │ │ ├── stop-processes-rollover.png
│ │ │ ├── stop-processes.png
│ │ │ ├── stop-rollover.png
│ │ │ ├── stop.png
│ │ │ └── summary.png
│ │ └── engine
│ │ └── agent
│ │ └── resources
│ │ └── FileStoreReadme.txt
│ └── test
│ ├── java
│ ├── grinder
│ │ └── test
│ │ │ ├── Adder.java
│ │ │ ├── MyClass.java
│ │ │ └── MyExtendedClass.java
│ └── net
│ │ └── grinder
│ │ ├── common
│ │ ├── StubTest.java
│ │ ├── TestAbstractTestSemantics.java
│ │ ├── TestCloser.java
│ │ ├── TestGrinderBuild.java
│ │ ├── TestGrinderExceptions.java
│ │ ├── TestGrinderProperties.java
│ │ └── TestSSLContextFactory.java
│ │ ├── communication
│ │ ├── AbstractSenderAndReceiverSocketTests.java
│ │ ├── AbstractSenderAndReceiverTests.java
│ │ ├── BlockingActionThread.java
│ │ ├── BlockingSenderWrapper.java
│ │ ├── SendToEveryoneAddress.java
│ │ ├── SimpleMessage.java
│ │ ├── SocketAcceptorThread.java
│ │ ├── StubAddress.java
│ │ ├── StubConnector.java
│ │ ├── TestAcceptor.java
│ │ ├── TestClientReceiver.java
│ │ ├── TestClientSender.java
│ │ ├── TestClientSenderAndServerReceiver.java
│ │ ├── TestCommunicationDefaults.java
│ │ ├── TestConnectionIdentity.java
│ │ ├── TestConnectionType.java
│ │ ├── TestConnector.java
│ │ ├── TestFanOutServerSender.java
│ │ ├── TestFanOutServerSenderAndClientReceiver.java
│ │ ├── TestFanOutStreamSender.java
│ │ ├── TestFanOutStreamSenderAndStreamReceiver.java
│ │ ├── TestIdleAwareSocketWrapper.java
│ │ ├── TestIgnoreShutdownSender.java
│ │ ├── TestInternalMessages.java
│ │ ├── TestMessageDispatchSender.java
│ │ ├── TestMessagePump.java
│ │ ├── TestMessageQueue.java
│ │ ├── TestQueuedSenderDecorator.java
│ │ ├── TestResourcePool.java
│ │ ├── TestResponseSender.java
│ │ ├── TestServerReceiver.java
│ │ ├── TestSocketWrapper.java
│ │ ├── TestStreamReceiver.java
│ │ ├── TestStreamSender.java
│ │ ├── TestStreamSenderAndStreamReceiver.java
│ │ └── TestTeeSender.java
│ │ ├── console
│ │ ├── TestConsoleFoundation.java
│ │ ├── client
│ │ │ ├── TestConsoleConnectionFactory.java
│ │ │ └── TestConsoleConnectionImplementation.java
│ │ ├── common
│ │ │ ├── StubResources.java
│ │ │ ├── TestDisplayMessageConsoleException.java
│ │ │ ├── TestErrorQueue.java
│ │ │ ├── TestProcessReportDescriptionFactory.java
│ │ │ ├── TestResources.java
│ │ │ └── processidentity
│ │ │ │ ├── StubAgentProcessReport.java
│ │ │ │ ├── StubWorkerProcessReport.java
│ │ │ │ └── TestProcessReport.java
│ │ ├── communication
│ │ │ ├── StubProcessReports.java
│ │ │ ├── TestConsoleCommunicationImplementation.java
│ │ │ ├── TestProcessControl.java
│ │ │ ├── TestProcessControlImplementation.java
│ │ │ ├── TestProcessStatusImplementation.java
│ │ │ └── server
│ │ │ │ └── TestDispatchClientCommands.java
│ │ ├── distribution
│ │ │ ├── TestAgentCacheStateImplementation.java
│ │ │ ├── TestCacheParametersImplementation.java
│ │ │ ├── TestFileDistribution.java
│ │ │ ├── TestFileDistributionHandlerImplementation.java
│ │ │ └── TestWireFileDistribution.java
│ │ ├── editor
│ │ │ ├── StringTextSource.java
│ │ │ ├── TestAbstractTextSource.java
│ │ │ ├── TestBuffer.java
│ │ │ ├── TestEditorModel.java
│ │ │ ├── TestExternalEditor.java
│ │ │ └── TouchClass.java
│ │ ├── model
│ │ │ ├── TestConsoleProperties.java
│ │ │ ├── TestModelTestIndex.java
│ │ │ ├── TestSampleModelImplementation.java
│ │ │ └── TestSampleModelViewsImplementation.java
│ │ ├── synchronisation
│ │ │ ├── TestConsoleBarrierGroups.java
│ │ │ ├── TestDistributedBarriers.java
│ │ │ └── TestWireDistributedBarriers.java
│ │ └── textui
│ │ │ └── TestTextUI.java
│ │ ├── engine
│ │ ├── agent
│ │ │ ├── EchoClass.java
│ │ │ ├── MyCommandLine.java
│ │ │ ├── ReadMessageEchoClass.java
│ │ │ ├── StubAgentIdentity.java
│ │ │ ├── TestAgentDaemon.java
│ │ │ ├── TestAgentIdentityImplementation.java
│ │ │ ├── TestAgentImplementation.java
│ │ │ ├── TestDebugThreadWorker.java
│ │ │ ├── TestDebugThreadWorkerFactory.java
│ │ │ ├── TestFileStore.java
│ │ │ ├── TestProcessWorker.java
│ │ │ ├── TestProcessWorkerFactory.java
│ │ │ ├── TestWorkerLauncher.java
│ │ │ └── TestWorkerProcessCommandLine.java
│ │ ├── common
│ │ │ └── TestScriptLocation.java
│ │ ├── communication
│ │ │ └── TestConsoleListener.java
│ │ ├── messages
│ │ │ └── TestWorkerMessages.java
│ │ └── process
│ │ │ ├── ExternalLoggerScopeTunnel.java
│ │ │ ├── ScriptEngineContainerScopeTunnel.java
│ │ │ ├── StubTestRegistry.java
│ │ │ ├── StubThreadContextLocator.java
│ │ │ ├── TestExternalLogger.java
│ │ │ ├── TestGrinderProcess.java
│ │ │ ├── TestGrinderThread.java
│ │ │ ├── TestMasterInstrumenter.java
│ │ │ ├── TestPluginRegistryImplementation.java
│ │ │ ├── TestRegisteredPlugin.java
│ │ │ ├── TestSSLControlImplementation.java
│ │ │ ├── TestScriptContextImplementation.java
│ │ │ ├── TestScriptEngineContainer.java
│ │ │ ├── TestScriptStatisticsImplementation.java
│ │ │ ├── TestStatisticsForTestImplementation.java
│ │ │ ├── TestStopWatchImplementation.java
│ │ │ ├── TestTestData.java
│ │ │ ├── TestTestRegistry.java
│ │ │ ├── TestTestStatisticsHelperImplementation.java
│ │ │ ├── TestThreadContextImplementation.java
│ │ │ ├── TestThreadDataLogger.java
│ │ │ └── dcr
│ │ │ ├── AnotherClass.java
│ │ │ ├── RecorderLocatorAccess.java
│ │ │ ├── TestDCRContextImplementation.java
│ │ │ └── TestRecorderLocator.java
│ │ ├── messages
│ │ ├── agent
│ │ │ ├── StubCacheHighWaterMark.java
│ │ │ └── TestAgentMessages.java
│ │ └── console
│ │ │ ├── TestAgentAddress.java
│ │ │ └── TestConsoleMessages.java
│ │ ├── plugininterface
│ │ ├── StubGrinderPlugin.java
│ │ └── TestPluginException.java
│ │ ├── script
│ │ └── TestTest.java
│ │ ├── scriptengine
│ │ ├── TestCompositeInstrumenter.java
│ │ ├── clojure
│ │ │ ├── TestClojureScriptEngine.java
│ │ │ └── TestClojureScriptEngineService.java
│ │ ├── java
│ │ │ ├── TestJavaDCRInstrumenter.java
│ │ │ └── TestJavaScriptEngineService.java
│ │ └── jython
│ │ │ ├── AbstractJythonScriptEngineServiceTests.java
│ │ │ ├── TestJythonScriptEngine.java
│ │ │ ├── TestJythonScriptEngineService.java
│ │ │ ├── TestJythonScriptEngineServiceWithJython25.java
│ │ │ ├── TestJythonScriptEngineWithJython25.java
│ │ │ ├── TestJythonScriptExecutionException.java
│ │ │ └── instrumentation
│ │ │ ├── AbstractJythonInstrumenterTestCase.java
│ │ │ └── dcr
│ │ │ ├── AbstractJythonDCRInstrumenterTestCase.java
│ │ │ ├── TestJython22Instrumenter.java
│ │ │ └── TestJython25Instrumenter.java
│ │ ├── statistics
│ │ ├── StatisticsServicesTestFactory.java
│ │ ├── TestCommonStatisticsViews.java
│ │ ├── TestExpressionView.java
│ │ ├── TestStatisticExpressionFactory.java
│ │ ├── TestStatisticsIndexMap.java
│ │ ├── TestStatisticsSetFactory.java
│ │ ├── TestStatisticsSetImplementation.java
│ │ ├── TestStatisticsTable.java
│ │ ├── TestStatisticsView.java
│ │ ├── TestTestStatisticsMap.java
│ │ ├── TestTestStatisticsQueries.java
│ │ └── testdata
│ │ ├── synchronisation
│ │ ├── TestBarrierIdentityGenerator.java
│ │ ├── TestBarrierImplementation.java
│ │ ├── TestClientBarrierGroups.java
│ │ ├── TestLocalBarrierGroups.java
│ │ └── messages
│ │ │ └── TestBarrierGroupMessages.java
│ │ ├── testutility
│ │ ├── Jython21_22Runner.java
│ │ ├── Jython25Runner.java
│ │ └── JythonVersionRunner.java
│ │ └── util
│ │ ├── AnIsolatedClass.java
│ │ ├── TestAbstractMainClass.java
│ │ ├── TestAllocateLowestNumberImplementation.java
│ │ ├── TestAttributeStringParserImplementation.java
│ │ ├── TestBlockingClassLoader.java
│ │ ├── TestBooleanProperty.java
│ │ ├── TestClassLoaderUtilities.java
│ │ ├── TestDelayedCreationFileWriter.java
│ │ ├── TestDirectory.java
│ │ ├── TestFileContents.java
│ │ ├── TestFileExtensionMatcher.java
│ │ ├── TestFixedWidthFormatter.java
│ │ ├── TestInsecureSSLContextFactory.java
│ │ ├── TestJVM.java
│ │ ├── TestListenerSupport.java
│ │ ├── TestPair.java
│ │ ├── TestSerialiser.java
│ │ ├── TestSignificantFigureFormat.java
│ │ ├── TestSimpleStringEscaper.java
│ │ ├── TestSleeper.java
│ │ ├── TestUnexpectedIOException.java
│ │ ├── TestUniqueIdentityGenerator.java
│ │ ├── TestWeakValueHashMap.java
│ │ ├── TimeAuthorityStubFactory.java
│ │ ├── html
│ │ └── TestHTML.java
│ │ ├── logback
│ │ ├── TestBufferedEchoMessageEncoder.java
│ │ └── TestRollOnStartUp.java
│ │ ├── thread
│ │ ├── TestBooleanCondition.java
│ │ └── TestMonitor.java
│ │ └── weave
│ │ └── j2se6
│ │ ├── TestASMTransformerFactory.java
│ │ └── TestDCRWeaver.java
│ └── resources
│ ├── TestResources.properties
│ └── net
│ └── grinder
│ ├── console
│ └── common
│ │ ├── TestDisplayMessageConsoleException.properties
│ │ ├── TestResources.properties
│ │ └── resources
│ │ ├── helloworld.txt
│ │ └── image.png
│ └── engine
│ └── process
│ └── default.keystore
├── grinder-dcr-agent
├── .gitignore
├── pom.xml
└── src
│ └── main
│ └── java
│ └── net
│ └── grinder
│ └── util
│ └── weave
│ └── agent
│ ├── ExposeInstrumentation.java
│ └── package.html
├── grinder-http
├── .gitignore
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── net
│ │ │ └── grinder
│ │ │ ├── TCPProxy.java
│ │ │ ├── package.html
│ │ │ ├── plugin
│ │ │ └── http
│ │ │ │ ├── HTTPConnectionWrapper.java
│ │ │ │ ├── HTTPPlugin.java
│ │ │ │ ├── HTTPPluginConnection.java
│ │ │ │ ├── HTTPPluginConnectionDefaults.java
│ │ │ │ ├── HTTPPluginControl.java
│ │ │ │ ├── HTTPPluginThreadState.java
│ │ │ │ ├── HTTPRequest.java
│ │ │ │ ├── HTTPUtilities.java
│ │ │ │ ├── HTTPUtilitiesImplementation.java
│ │ │ │ ├── SlowClientBandwidthLimiterFactory.java
│ │ │ │ ├── TimeoutException.java
│ │ │ │ ├── URLException.java
│ │ │ │ ├── package.html
│ │ │ │ └── tcpproxyfilter
│ │ │ │ ├── ConnectionCache.java
│ │ │ │ ├── ConnectionHandler.java
│ │ │ │ ├── ConnectionHandlerFactory.java
│ │ │ │ ├── ConnectionHandlerFactoryImplementation.java
│ │ │ │ ├── ConnectionHandlerImplementation.java
│ │ │ │ ├── HTTPFilterEventListener.java
│ │ │ │ ├── HTTPRecording.java
│ │ │ │ ├── HTTPRecordingImplementation.java
│ │ │ │ ├── HTTPRecordingParameters.java
│ │ │ │ ├── HTTPRecordingResultProcessor.java
│ │ │ │ ├── HTTPRequestFilter.java
│ │ │ │ ├── HTTPResponseFilter.java
│ │ │ │ ├── IntGenerator.java
│ │ │ │ ├── ParametersFromProperties.java
│ │ │ │ ├── ProcessHTTPRecordingWithXSLT.java
│ │ │ │ ├── ProcessRecording.java
│ │ │ │ ├── RegularExpressions.java
│ │ │ │ ├── RegularExpressionsImplementation.java
│ │ │ │ ├── XSLTHelper.java
│ │ │ │ └── package.html
│ │ │ ├── tools
│ │ │ └── tcpproxy
│ │ │ │ ├── AbstractFilterDecorator.java
│ │ │ │ ├── AbstractTCPProxyEngine.java
│ │ │ │ ├── CommentSource.java
│ │ │ │ ├── CommentSourceImplementation.java
│ │ │ │ ├── CompositeFilter.java
│ │ │ │ ├── ConnectionDetails.java
│ │ │ │ ├── EchoFilter.java
│ │ │ │ ├── EndPoint.java
│ │ │ │ ├── HTTPMethodAbsoluteURIFilterDecorator.java
│ │ │ │ ├── HTTPMethodRelativeURIFilterDecorator.java
│ │ │ │ ├── HTTPProxyTCPProxyEngine.java
│ │ │ │ ├── HTTPResponse.java
│ │ │ │ ├── NullFilter.java
│ │ │ │ ├── PortForwarderTCPProxyEngine.java
│ │ │ │ ├── TCPProxyConsole.java
│ │ │ │ ├── TCPProxyEngine.java
│ │ │ │ ├── TCPProxyFilter.java
│ │ │ │ ├── TCPProxySSLSocketFactory.java
│ │ │ │ ├── TCPProxySSLSocketFactoryImplementation.java
│ │ │ │ ├── TCPProxySocketFactory.java
│ │ │ │ ├── TCPProxySocketFactoryImplementation.java
│ │ │ │ ├── UpdatableCommentSource.java
│ │ │ │ ├── VerboseConnectException.java
│ │ │ │ └── package.html
│ │ │ └── util
│ │ │ └── http
│ │ │ ├── URIParser.java
│ │ │ ├── URIParserImplementation.java
│ │ │ └── package.html
│ └── resources
│ │ └── net
│ │ └── grinder
│ │ ├── plugin
│ │ └── http
│ │ │ └── tcpproxyfilter
│ │ │ └── resources
│ │ │ ├── httpToClojureScript.xsl
│ │ │ ├── httpToJythonScript.xsl
│ │ │ ├── httpToJythonScriptOldInstrumentation.xsl
│ │ │ └── httpToXML.xsl
│ │ └── tools
│ │ └── tcpproxy
│ │ └── resources
│ │ └── default.keystore
│ └── test
│ ├── java
│ ├── HTTPClient
│ │ ├── StubHTTPConnection.java
│ │ ├── TestCookie.java
│ │ └── TestDefaultBandwidthLimiter.java
│ └── net
│ │ └── grinder
│ │ ├── TestTCPProxy.java
│ │ ├── plugin
│ │ └── http
│ │ │ ├── HTTPRequestHandler.java
│ │ │ ├── TestHTTPConnectionWrapper.java
│ │ │ ├── TestHTTPPlugin.java
│ │ │ ├── TestHTTPPluginConnectionDefaults.java
│ │ │ ├── TestHTTPPluginControl.java
│ │ │ ├── TestHTTPPluginThreadState.java
│ │ │ ├── TestHTTPRequest.java
│ │ │ ├── TestHTTPUtilitiesImplementation.java
│ │ │ ├── TestSlowClientBandwidthLimiterFactory.java
│ │ │ └── tcpproxyfilter
│ │ │ ├── TestConnectionCache.java
│ │ │ ├── TestConnectionHandlerFactoryImplementation.java
│ │ │ ├── TestConnectionHandlerImplementation.java
│ │ │ ├── TestHTTPRecordingImplementation.java
│ │ │ ├── TestHTTPRequestFilter.java
│ │ │ ├── TestHTTPResponseFilter.java
│ │ │ ├── TestParametersFromProperties.java
│ │ │ ├── TestProcessHTTPRecordingWithXSLT.java
│ │ │ ├── TestRegularExpressionsImplementation.java
│ │ │ └── TestXSLTHelper.java
│ │ ├── testutility
│ │ └── XMLBeansUtilities.java
│ │ ├── tools
│ │ └── tcpproxy
│ │ │ ├── MyFilterStubFactory.java
│ │ │ ├── TestCommentSourceImplementation.java
│ │ │ ├── TestCompositeFilter.java
│ │ │ ├── TestConnectionDetails.java
│ │ │ ├── TestEchoFilter.java
│ │ │ ├── TestEndPoint.java
│ │ │ ├── TestHTTPMethodAbsoluteURIFilterDecorator.java
│ │ │ ├── TestHTTPMethodRelativeURIFilterDecorator.java
│ │ │ ├── TestHTTPProxyTCPProxyEngine.java
│ │ │ ├── TestHTTPResponse.java
│ │ │ ├── TestNullFilter.java
│ │ │ ├── TestPortForwarderTCPProxyEngine.java
│ │ │ ├── TestTCPProxyConsole.java
│ │ │ └── TestTCPProxySocketFactories.java
│ │ └── util
│ │ └── http
│ │ ├── TestAbstractParseListener.java
│ │ └── TestURIParserImplementation.java
│ └── resources
│ └── net
│ └── grinder
│ └── plugin
│ └── http
│ ├── data
│ ├── goodGET1
│ ├── goodGET2
│ └── goodPOST1
│ └── tcpproxyfilter
│ └── resources
│ └── identity.xsl
├── grinder-httpclient
├── .gitignore
├── pom.xml
└── src
│ └── main
│ ├── java
│ └── HTTPClient
│ │ ├── AuthSchemeNotImplException.java
│ │ ├── AuthorizationHandler.java
│ │ ├── AuthorizationInfo.java
│ │ ├── AuthorizationModule.java
│ │ ├── AuthorizationPrompter.java
│ │ ├── BufferedInputStream.java
│ │ ├── CIHashtable.java
│ │ ├── ChunkedInputStream.java
│ │ ├── Codecs.java
│ │ ├── ContentEncodingModule.java
│ │ ├── ContentMD5Module.java
│ │ ├── Cookie.java
│ │ ├── Cookie2.java
│ │ ├── CookieModule.java
│ │ ├── CookiePolicyHandler.java
│ │ ├── DefaultAuthHandler.java
│ │ ├── DefaultModule.java
│ │ ├── FilenameMangler.java
│ │ ├── GlobalConstants.java
│ │ ├── HTTPClientModule.java
│ │ ├── HTTPClientModuleConstants.java
│ │ ├── HTTPConnection.java
│ │ ├── HTTPResponse.java
│ │ ├── HashVerifier.java
│ │ ├── HttpHeaderElement.java
│ │ ├── HttpOutputStream.java
│ │ ├── HttpURLConnection.java
│ │ ├── IdempotentSequence.java
│ │ ├── LinkedList.java
│ │ ├── Log.java
│ │ ├── MD5.java
│ │ ├── MD5InputStream.java
│ │ ├── ModuleException.java
│ │ ├── NVPair.java
│ │ ├── ParseException.java
│ │ ├── ProtocolNotSuppException.java
│ │ ├── RedirectionModule.java
│ │ ├── Request.java
│ │ ├── RespInputStream.java
│ │ ├── Response.java
│ │ ├── ResponseHandler.java
│ │ ├── RetryException.java
│ │ ├── RetryModule.java
│ │ ├── RoRequest.java
│ │ ├── RoResponse.java
│ │ ├── SocksClient.java
│ │ ├── SocksException.java
│ │ ├── StreamDemultiplexor.java
│ │ ├── TransferEncodingModule.java
│ │ ├── URI.java
│ │ ├── UncompressInputStream.java
│ │ ├── Util.java
│ │ ├── http
│ │ └── Handler.java
│ │ ├── https
│ │ └── Handler.java
│ │ ├── package.html
│ │ └── shttp
│ │ └── Handler.java
│ └── resources
│ └── META-INF
│ └── LICENSE
├── grinder-swing-console
├── .gitignore
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── net
│ │ │ └── grinder
│ │ │ └── console
│ │ │ └── swingui
│ │ │ ├── BufferTreeModel.java
│ │ │ ├── Colours.java
│ │ │ ├── CompositeTreeModel.java
│ │ │ ├── ConsoleUI.java
│ │ │ ├── CumulativeStatisticsTableModel.java
│ │ │ ├── CustomAction.java
│ │ │ ├── CustomJButton.java
│ │ │ ├── DynamicStatisticsTableModel.java
│ │ │ ├── Editor.java
│ │ │ ├── EditorControls.java
│ │ │ ├── ErrorDialogHandler.java
│ │ │ ├── FileTree.java
│ │ │ ├── FileTreeModel.java
│ │ │ ├── FrameBounds.java
│ │ │ ├── Graph.java
│ │ │ ├── IntegerField.java
│ │ │ ├── JOptionPaneDialog.java
│ │ │ ├── LabelledGraph.java
│ │ │ ├── LookAndFeel.java
│ │ │ ├── MnemonicHeuristics.java
│ │ │ ├── OptionalConfirmDialog.java
│ │ │ ├── OptionsDialogHandler.java
│ │ │ ├── ProcessStatusTableModel.java
│ │ │ ├── SampleStatisticsTableModel.java
│ │ │ ├── SamplingControlPanel.java
│ │ │ ├── SwingDispatcherFactory.java
│ │ │ ├── SwingDispatcherFactoryImplementation.java
│ │ │ ├── Table.java
│ │ │ ├── TeeAction.java
│ │ │ ├── TestGraphPanel.java
│ │ │ └── package.html
│ └── resources
│ │ └── META-INF
│ │ └── net.grinder.console
│ └── test
│ └── java
│ └── net
│ └── grinder
│ └── console
│ └── swingui
│ ├── TestBufferTreeModel.java
│ ├── TestCompositeTreeModel.java
│ ├── TestCumulativeStatisticsTableModel.java
│ ├── TestCustomAction.java
│ ├── TestCustomJButton.java
│ ├── TestFileTree.java
│ ├── TestFileTreeModel.java
│ ├── TestFrameBounds.java
│ ├── TestGraph.java
│ ├── TestIntegerField.java
│ ├── TestMnemonicHeuristics.java
│ ├── TestProcessStatusTableModel.java
│ ├── TestSampleStatisticsTableModel.java
│ ├── TestSwingDispatcherFactory.java
│ └── TestTeeAction.java
├── grinder-test-support
├── .gitignore
├── pom.xml
└── src
│ └── main
│ ├── java
│ └── net
│ │ └── grinder
│ │ └── testutility
│ │ ├── AbstractFileTestCase.java
│ │ ├── AbstractJUnit4FileTestCase.java
│ │ ├── AbstractStubFactory.java
│ │ ├── AssertUtilities.java
│ │ ├── CallAssertions.java
│ │ ├── CallData.java
│ │ ├── CallRecorder.java
│ │ ├── CountingInputStream.java
│ │ ├── DelegatingStubFactory.java
│ │ ├── FileUtilities.java
│ │ ├── IsolatedObjectFactory.java
│ │ ├── MockingUtilities.java
│ │ ├── OverrideInvocationHandlerDecorator.java
│ │ ├── RandomObjectFactory.java
│ │ ├── RandomStubFactory.java
│ │ ├── RedirectStandardStreams.java
│ │ ├── Serializer.java
│ │ ├── SimpleEqualityDecoration.java
│ │ ├── SocketUtilities.java
│ │ ├── StreamCopier.java
│ │ ├── StubPrintStream.java
│ │ ├── StubPrintWriter.java
│ │ ├── StubRelationshipsInvocationHandlerDecorator.java
│ │ ├── StubTimer.java
│ │ ├── TemporaryDirectory.java
│ │ └── Time.java
│ └── resources
│ └── net
│ └── grinder
│ └── testutility
│ └── resources
│ └── SimpleObject.clazz
├── grinder-web-console
├── .gitignore
├── pom.xml
└── src
│ └── main
│ ├── java
│ └── net
│ │ └── grinder
│ │ └── console
│ │ └── webui
│ │ ├── ReverseLineInputStream.java
│ │ ├── ServletConfig.java
│ │ └── WebConsoleEndPoint.java
│ └── resources
│ ├── application.properties
│ └── static
│ ├── css
│ └── grinder.css
│ ├── favicon.ico
│ ├── img
│ ├── agent_grinder.png
│ ├── back.png
│ ├── delete.png
│ ├── download.png
│ ├── file.png
│ ├── folder.png
│ ├── grinder-logo.png
│ ├── logo.png
│ ├── nav-bg.gif
│ ├── ori_select-properties-rollover.png
│ ├── refresh.png
│ ├── reset_grinder.png
│ ├── select-properties-rollover.png
│ ├── setPath.png
│ ├── start_grinder.png
│ └── stop_grinder.png
│ ├── index.html
│ ├── js
│ ├── Chart.min.js
│ ├── grinder.js
│ ├── javascript
│ │ ├── index.html
│ │ ├── javascript.js
│ │ ├── json-ld.html
│ │ ├── test.js
│ │ └── typescript.html
│ └── jquery.min.js
│ └── lib
│ ├── codemirror.css
│ └── codemirror.js
├── grinder-xmlbeans
├── .gitignore
├── pom.xml
└── src
│ └── main
│ ├── xsd
│ └── tcpproxy-http.xsd
│ └── xsdconfig
│ └── tcpproxy-http.xsdconfig
├── grinder
├── .gitignore
├── CHANGES
├── TODO.MD
├── contrib
│ └── mq
│ │ ├── AUTHORS
│ │ ├── LICENSE
│ │ ├── MQConnector.java
│ │ ├── MQMsg.java
│ │ ├── README
│ │ ├── mq.py
│ │ └── org.rextency.mq.jar
├── docs
│ ├── .gitignore
│ ├── Console.svg
│ └── HTTPS and TCPProxyEngine.svg
├── examples
│ ├── amazon.py
│ ├── console.py
│ ├── cookies.py
│ ├── digestauthentication.py
│ ├── ejb.py
│ ├── email.py
│ ├── fba.py
│ ├── form.py
│ ├── grinder.properties
│ ├── helloworld.clj
│ ├── helloworld.py
│ ├── helloworldfunctions.py
│ ├── http.py
│ ├── httpg2.py
│ ├── httpunit.py
│ ├── jaxrpc.py
│ ├── jdbc.py
│ ├── jmsreceiver.py
│ ├── jmssender.py
│ ├── parallel.py
│ ├── proportion.py
│ ├── scenario.py
│ ├── scriptlifecycle.py
│ ├── sequence.py
│ ├── slowClient.py
│ ├── statistics.py
│ ├── sync.py
│ ├── threadrampup.py
│ └── xml-rpc.py
├── lib
│ ├── LICENSE-ASM
│ ├── LICENSE-Jython
│ ├── LICENSE-PicoContainer
│ ├── LICENSE-Ring
│ ├── LICENSE-SLF4J
│ ├── LICENSE-Spring
│ ├── LICENSE-clj-json
│ ├── LICENSE-jEditSyntax
│ └── License-ring-json-params
├── pom.xml
└── src
│ └── main
│ └── assembly
│ └── assembly.xml
└── pom.xml
/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 | /cachedir
3 | /target/
4 | /.i*
5 | /.g*
6 | /**/*.iml
7 | !/.gitignore
8 | .project
9 | .settings
10 | .vscode
11 | key
12 |
13 |
--------------------------------------------------------------------------------
/.travis.settings.xml:
--------------------------------------------------------------------------------
1 | The Grinder can be downloaded from SourceForge.net.
11 | The source code is also available.
12 | The Grinder is distributed as two zip files which you should expand
15 | using To run The Grinder: Java Standard Edition6, equivalent, or later Some users will find it preferable to use Maven to manage The
35 | Grinder. On release, the jar files are deployed to the Sonatype OSS Nexus repository, and
37 | will be synchronised to Maven
38 | Central soon afterwards. You can choose either to depend on
39 | the the zip file, which should be identical to the Sourceforge
40 | download, or the individual jar files. Released Download The Grinder
8 |
9 | unzip
, WinZip or
16 | similar. Everything required to run The Grinder is in the zip file labelled
17 | grinder-
version.zip
. The remaining
18 | files that are needed to build The Grinder are distributed in the zip file
19 | labelled grinder-
version-src.zip
;
20 | these are mainly of interest to developers wanting to
21 | extend The Grinder.
22 | What else do I need?
27 |
28 | Downloading The Grinder using Maven
33 |
34 |
This is the user manual for the current stable version of The 9 | Grinder, The Grinder 2. It is incomplete and much of the 10 | material is still in note form. It will mature as and when I get time 11 | to write more.
12 | 13 |In the meantime I refer you to the full tutorial on The Grinder 14 | given in the book. The book 15 | contains complete documentation of the console and is currently the 16 | only source on writing plug-ins for The Grinder.
17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /documentation/src/documentation/resources/image-sources/fuzzy-border-settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cossme/grinder/bec249fa126f6ecf8e34003967f87d1a60b73b86/documentation/src/documentation/resources/image-sources/fuzzy-border-settings.png -------------------------------------------------------------------------------- /documentation/src/documentation/resources/image-sources/grinder-logo.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cossme/grinder/bec249fa126f6ecf8e34003967f87d1a60b73b86/documentation/src/documentation/resources/image-sources/grinder-logo.xcf -------------------------------------------------------------------------------- /documentation/src/documentation/resources/image-sources/pastedpic_09282008_091054.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cossme/grinder/bec249fa126f6ecf8e34003967f87d1a60b73b86/documentation/src/documentation/resources/image-sources/pastedpic_09282008_091054.png -------------------------------------------------------------------------------- /documentation/src/documentation/resources/image-sources/pastedpic_09282008_095323.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cossme/grinder/bec249fa126f6ecf8e34003967f87d1a60b73b86/documentation/src/documentation/resources/image-sources/pastedpic_09282008_095323.png -------------------------------------------------------------------------------- /documentation/src/documentation/resources/images/PythonPoweredSmall.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cossme/grinder/bec249fa126f6ecf8e34003967f87d1a60b73b86/documentation/src/documentation/resources/images/PythonPoweredSmall.gif -------------------------------------------------------------------------------- /documentation/src/documentation/resources/images/book-cover.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cossme/grinder/bec249fa126f6ecf8e34003967f87d1a60b73b86/documentation/src/documentation/resources/images/book-cover.jpg -------------------------------------------------------------------------------- /documentation/src/documentation/resources/images/console-distribute-files.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cossme/grinder/bec249fa126f6ecf8e34003967f87d1a60b73b86/documentation/src/documentation/resources/images/console-distribute-files.png -------------------------------------------------------------------------------- /documentation/src/documentation/resources/images/console-es-g3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cossme/grinder/bec249fa126f6ecf8e34003967f87d1a60b73b86/documentation/src/documentation/resources/images/console-es-g3.png -------------------------------------------------------------------------------- /documentation/src/documentation/resources/images/console-es.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cossme/grinder/bec249fa126f6ecf8e34003967f87d1a60b73b86/documentation/src/documentation/resources/images/console-es.png -------------------------------------------------------------------------------- /documentation/src/documentation/resources/images/console-sample-controls.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cossme/grinder/bec249fa126f6ecf8e34003967f87d1a60b73b86/documentation/src/documentation/resources/images/console-sample-controls.png -------------------------------------------------------------------------------- /documentation/src/documentation/resources/images/console-screenshot-g3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cossme/grinder/bec249fa126f6ecf8e34003967f87d1a60b73b86/documentation/src/documentation/resources/images/console-screenshot-g3.png -------------------------------------------------------------------------------- /documentation/src/documentation/resources/images/console-screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cossme/grinder/bec249fa126f6ecf8e34003967f87d1a60b73b86/documentation/src/documentation/resources/images/console-screenshot.png -------------------------------------------------------------------------------- /documentation/src/documentation/resources/images/console-select-properties.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cossme/grinder/bec249fa126f6ecf8e34003967f87d1a60b73b86/documentation/src/documentation/resources/images/console-select-properties.png -------------------------------------------------------------------------------- /documentation/src/documentation/resources/images/console-start-and-reset.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cossme/grinder/bec249fa126f6ecf8e34003967f87d1a60b73b86/documentation/src/documentation/resources/images/console-start-and-reset.png -------------------------------------------------------------------------------- /documentation/src/documentation/resources/images/grinder-analyzer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cossme/grinder/bec249fa126f6ecf8e34003967f87d1a60b73b86/documentation/src/documentation/resources/images/grinder-analyzer.png -------------------------------------------------------------------------------- /documentation/src/documentation/resources/images/grinder-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cossme/grinder/bec249fa126f6ecf8e34003967f87d1a60b73b86/documentation/src/documentation/resources/images/grinder-logo.png -------------------------------------------------------------------------------- /documentation/src/documentation/resources/images/grinder.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cossme/grinder/bec249fa126f6ecf8e34003967f87d1a60b73b86/documentation/src/documentation/resources/images/grinder.gif -------------------------------------------------------------------------------- /documentation/src/documentation/resources/images/grinder3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cossme/grinder/bec249fa126f6ecf8e34003967f87d1a60b73b86/documentation/src/documentation/resources/images/grinder3.jpg -------------------------------------------------------------------------------- /documentation/src/documentation/resources/images/ie-cache-settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cossme/grinder/bec249fa126f6ecf8e34003967f87d1a60b73b86/documentation/src/documentation/resources/images/ie-cache-settings.png -------------------------------------------------------------------------------- /documentation/src/documentation/resources/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cossme/grinder/bec249fa126f6ecf8e34003967f87d1a60b73b86/documentation/src/documentation/resources/images/logo.png -------------------------------------------------------------------------------- /documentation/src/documentation/resources/images/processes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cossme/grinder/bec249fa126f6ecf8e34003967f87d1a60b73b86/documentation/src/documentation/resources/images/processes.png -------------------------------------------------------------------------------- /documentation/src/documentation/resources/images/proxy-preferences.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cossme/grinder/bec249fa126f6ecf8e34003967f87d1a60b73b86/documentation/src/documentation/resources/images/proxy-preferences.png -------------------------------------------------------------------------------- /documentation/src/documentation/resources/images/tcpproxy-console.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cossme/grinder/bec249fa126f6ecf8e34003967f87d1a60b73b86/documentation/src/documentation/resources/images/tcpproxy-console.png -------------------------------------------------------------------------------- /documentation/src/documentation/resources/images/tcpproxy-proxy.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cossme/grinder/bec249fa126f6ecf8e34003967f87d1a60b73b86/documentation/src/documentation/resources/images/tcpproxy-proxy.gif -------------------------------------------------------------------------------- /documentation/src/documentation/resources/images/tcpproxy-ssl.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cossme/grinder/bec249fa126f6ecf8e34003967f87d1a60b73b86/documentation/src/documentation/resources/images/tcpproxy-ssl.gif -------------------------------------------------------------------------------- /documentation/src/documentation/resources/images/tcpproxy.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cossme/grinder/bec249fa126f6ecf8e34003967f87d1a60b73b86/documentation/src/documentation/resources/images/tcpproxy.gif -------------------------------------------------------------------------------- /documentation/src/documentation/resources/images/tcpproxy.vsd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cossme/grinder/bec249fa126f6ecf8e34003967f87d1a60b73b86/documentation/src/documentation/resources/images/tcpproxy.vsd -------------------------------------------------------------------------------- /documentation/src/documentation/skins/common/images/fade.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cossme/grinder/bec249fa126f6ecf8e34003967f87d1a60b73b86/documentation/src/documentation/skins/common/images/fade.png -------------------------------------------------------------------------------- /documentation/src/documentation/skins/pelt-grinder/css/print.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one or more 3 | * contributor license agreements. See the NOTICE file distributed with 4 | * this work for additional information regarding copyright ownership. 5 | * The ASF licenses this file to You under the Apache License, Version 2.0 6 | * (the "License"); you may not use this file except in compliance with 7 | * the License. You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | body { 18 | font-family: Georgia, Palatino, serif; 19 | font-size: 12pt; 20 | background: white; 21 | } 22 | 23 | #tabs, 24 | #menu, 25 | #content .toc { 26 | display: none; 27 | } 28 | 29 | #content { 30 | width: auto; 31 | padding: 0; 32 | float: none !important; 33 | color: black; 34 | background: inherit; 35 | } 36 | 37 | a:link, a:visited { 38 | color: #336699; 39 | background: inherit; 40 | text-decoration: underline; 41 | } 42 | 43 | #top .logo { 44 | padding: 0; 45 | margin: 0 0 2em 0; 46 | } 47 | 48 | #footer { 49 | margin-top: 4em; 50 | } 51 | 52 | acronym { 53 | border: 0; 54 | } 55 | -------------------------------------------------------------------------------- /documentation/src/documentation/skins/pelt-grinder/images/chapter.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cossme/grinder/bec249fa126f6ecf8e34003967f87d1a60b73b86/documentation/src/documentation/skins/pelt-grinder/images/chapter.gif -------------------------------------------------------------------------------- /documentation/src/documentation/skins/pelt-grinder/images/chapter_open.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cossme/grinder/bec249fa126f6ecf8e34003967f87d1a60b73b86/documentation/src/documentation/skins/pelt-grinder/images/chapter_open.gif -------------------------------------------------------------------------------- /documentation/src/documentation/skins/pelt-grinder/images/current.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cossme/grinder/bec249fa126f6ecf8e34003967f87d1a60b73b86/documentation/src/documentation/skins/pelt-grinder/images/current.gif -------------------------------------------------------------------------------- /documentation/src/documentation/skins/pelt-grinder/images/error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cossme/grinder/bec249fa126f6ecf8e34003967f87d1a60b73b86/documentation/src/documentation/skins/pelt-grinder/images/error.png -------------------------------------------------------------------------------- /documentation/src/documentation/skins/pelt-grinder/images/header_white_line.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cossme/grinder/bec249fa126f6ecf8e34003967f87d1a60b73b86/documentation/src/documentation/skins/pelt-grinder/images/header_white_line.gif -------------------------------------------------------------------------------- /documentation/src/documentation/skins/pelt-grinder/images/info.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cossme/grinder/bec249fa126f6ecf8e34003967f87d1a60b73b86/documentation/src/documentation/skins/pelt-grinder/images/info.png -------------------------------------------------------------------------------- /documentation/src/documentation/skins/pelt-grinder/images/instruction_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cossme/grinder/bec249fa126f6ecf8e34003967f87d1a60b73b86/documentation/src/documentation/skins/pelt-grinder/images/instruction_arrow.png -------------------------------------------------------------------------------- /documentation/src/documentation/skins/pelt-grinder/images/label.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cossme/grinder/bec249fa126f6ecf8e34003967f87d1a60b73b86/documentation/src/documentation/skins/pelt-grinder/images/label.gif -------------------------------------------------------------------------------- /documentation/src/documentation/skins/pelt-grinder/images/page.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cossme/grinder/bec249fa126f6ecf8e34003967f87d1a60b73b86/documentation/src/documentation/skins/pelt-grinder/images/page.gif -------------------------------------------------------------------------------- /documentation/src/documentation/skins/pelt-grinder/images/pdfdoc.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cossme/grinder/bec249fa126f6ecf8e34003967f87d1a60b73b86/documentation/src/documentation/skins/pelt-grinder/images/pdfdoc.gif -------------------------------------------------------------------------------- /documentation/src/documentation/skins/pelt-grinder/images/printer.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cossme/grinder/bec249fa126f6ecf8e34003967f87d1a60b73b86/documentation/src/documentation/skins/pelt-grinder/images/printer.gif -------------------------------------------------------------------------------- /documentation/src/documentation/skins/pelt-grinder/images/success.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cossme/grinder/bec249fa126f6ecf8e34003967f87d1a60b73b86/documentation/src/documentation/skins/pelt-grinder/images/success.png -------------------------------------------------------------------------------- /documentation/src/documentation/skins/pelt-grinder/images/warning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cossme/grinder/bec249fa126f6ecf8e34003967f87d1a60b73b86/documentation/src/documentation/skins/pelt-grinder/images/warning.png -------------------------------------------------------------------------------- /documentation/src/documentation/skins/pelt-grinder/images/xmldoc.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cossme/grinder/bec249fa126f6ecf8e34003967f87d1a60b73b86/documentation/src/documentation/skins/pelt-grinder/images/xmldoc.gif -------------------------------------------------------------------------------- /documentation/src/documentation/skins/pelt-grinder/note.txt: -------------------------------------------------------------------------------- 1 | Notes for developer: 2 | 3 | --Legend------------------- 4 | TODO -> blocker 5 | DONE -> blocker 6 | ToDo -> enhancement bug 7 | done -> enhancement bug 8 | 9 | --Issues------------------- 10 | - the corner images should be rendered through svg with the header color. 11 | -> DONE 12 | -> ToDo: get rid of the images and use only divs! 13 | 14 | - the menu points should be displayed "better". 15 | -> DONE 16 | -- Use the krysalis-site menu approach for the overall menu display. 17 | -> DONE 18 | -- Use the old lenya innermenu approch to further enhance the menu . 19 | -> DONE 20 | 21 | - the content area needs some attention. 22 | -> DONE 23 | -- introduce the heading scheme from krysalis (Package scope.
29 | * 30 | * @author Philip Aston 31 | */ 32 | class NoResponseMessage implements Message { 33 | private static final long serialVersionUID = 1; 34 | } 35 | -------------------------------------------------------------------------------- /grinder-core/src/main/java/net/grinder/communication/QueuedSender.java: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2000 - 2011 Philip Aston 2 | // All rights reserved. 3 | // 4 | // This file is part of The Grinder software distribution. Refer to 5 | // the file LICENSE which is part of The Grinder distribution for 6 | // licensing details. The Grinder distribution is available on the 7 | // Internet at http://grinder.sourceforge.net/ 8 | // 9 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 10 | // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 11 | // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 12 | // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 13 | // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 14 | // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 15 | // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 16 | // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 17 | // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 18 | // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 19 | // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 20 | // OF THE POSSIBILITY OF SUCH DAMAGE. 21 | 22 | package net.grinder.communication; 23 | 24 | 25 | /** 26 | * {@code Sender} that queues its messages. 27 | * 28 | * @author Philip Aston 29 | */ 30 | public interface QueuedSender extends Sender { 31 | 32 | /** 33 | * Send any pending messages queued with {@link #send}. 34 | * 35 | * @throws CommunicationException If an error occurs. 36 | */ 37 | void flush() throws CommunicationException; 38 | } 39 | -------------------------------------------------------------------------------- /grinder-core/src/main/java/net/grinder/communication/Sender.java: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2000 - 2011 Philip Aston 2 | // All rights reserved. 3 | // 4 | // This file is part of The Grinder software distribution. Refer to 5 | // the file LICENSE which is part of The Grinder distribution for 6 | // licensing details. The Grinder distribution is available on the 7 | // Internet at http://grinder.sourceforge.net/ 8 | // 9 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 10 | // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 11 | // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 12 | // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 13 | // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 14 | // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 15 | // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 16 | // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 17 | // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 18 | // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 19 | // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 20 | // OF THE POSSIBILITY OF SUCH DAMAGE. 21 | 22 | package net.grinder.communication; 23 | 24 | 25 | /** 26 | * Interface for classes that manage the sending of messages. 27 | * 28 | * @author Philip Aston 29 | */ 30 | public interface Sender { 31 | 32 | /** 33 | * Send the given message. 34 | * 35 | * @param message A {@link Message}. 36 | * @throws CommunicationException If an error occurs. 37 | */ 38 | void send(Message message) throws CommunicationException; 39 | 40 | /** 41 | * Cleanly shut down theSender
.
42 | */
43 | void shutdown();
44 | }
45 |
--------------------------------------------------------------------------------
/grinder-core/src/main/java/net/grinder/communication/package.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | The Grinder communication subsystem.
5 |
6 |
7 |
--------------------------------------------------------------------------------
/grinder-core/src/main/java/net/grinder/console/client/package.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Client API for The Grinder console.
5 |
6 | The current implementation builds up the standard grinder communications 7 | package, which can run over streams including process input/output streams and 8 | a custom TCP/IP socket protocol layer. The communication package uses Java 9 | Serialization for marshalling. To implement the client API, the communications 10 | package was extended to support a "blocking send" over TCP/IP. (Previously, 11 | only "one-way", asynchronous messaging had been required).
12 | 13 |I decided that the console API required synchronous interaction since 14 | this provides a more natural API. In the future, I may extend it to include 15 | an asynchronus event channel for pushing data back to "subscribing" clients. 16 |
17 | 18 |Some notes about the alternatives I rejected: 19 | 20 |
rmic
.ThreadContext
for the current
34 | * thread.
35 | *
36 | * @return The ThreadContext
, or null
if
37 | * no appropriate context could be found.
38 | */
39 | ThreadContext get();
40 | }
41 |
--------------------------------------------------------------------------------
/grinder-core/src/main/java/net/grinder/engine/process/ThreadStarter.java:
--------------------------------------------------------------------------------
1 | // Copyright (C) 2008 Philip Aston
2 | // All rights reserved.
3 | //
4 | // This file is part of The Grinder software distribution. Refer to
5 | // the file LICENSE which is part of The Grinder distribution for
6 | // licensing details. The Grinder distribution is available on the
7 | // Internet at http://grinder.sourceforge.net/
8 | //
9 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
10 | // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
11 | // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
12 | // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
13 | // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
14 | // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
15 | // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
16 | // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
17 | // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
18 | // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
19 | // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
20 | // OF THE POSSIBILITY OF SUCH DAMAGE.
21 |
22 | package net.grinder.engine.process;
23 |
24 | import net.grinder.engine.common.EngineException;
25 | import net.grinder.script.InvalidContextException;
26 |
27 |
28 | /**
29 | * Something that can start threads.
30 | *
31 | * @author Philip Aston
32 | */
33 | interface ThreadStarter {
34 | int startThread(Object testRunner)
35 | throws EngineException, InvalidContextException;
36 | }
37 |
--------------------------------------------------------------------------------
/grinder-core/src/main/java/net/grinder/engine/process/ThreadStopper.java:
--------------------------------------------------------------------------------
1 | // Copyright (C) 2008 Philip Aston
2 | // All rights reserved.
3 | //
4 | // This file is part of The Grinder software distribution. Refer to
5 | // the file LICENSE which is part of The Grinder distribution for
6 | // licensing details. The Grinder distribution is available on the
7 | // Internet at http://grinder.sourceforge.net/
8 | //
9 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
10 | // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
11 | // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
12 | // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
13 | // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
14 | // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
15 | // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
16 | // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
17 | // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
18 | // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
19 | // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
20 | // OF THE POSSIBILITY OF SUCH DAMAGE.
21 |
22 | package net.grinder.engine.process;
23 |
24 |
25 | /**
26 | * Something that can stop threads.
27 | *
28 | * @author Philip Aston
29 | */
30 | interface ThreadStopper {
31 | boolean stopThread(int threadNumber);
32 | }
33 |
--------------------------------------------------------------------------------
/grinder-core/src/main/java/net/grinder/engine/process/dcr/package.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Instrumentation agents based on Dynamic Class Retransformation.
5 |
6 |
7 |
--------------------------------------------------------------------------------
/grinder-core/src/main/java/net/grinder/engine/process/package.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Worker process implementation.
5 |
6 |
7 |
--------------------------------------------------------------------------------
/grinder-core/src/main/java/net/grinder/messages/agent/ClearCacheMessage.java:
--------------------------------------------------------------------------------
1 | // Copyright (C) 2004 - 2008 Philip Aston
2 | // All rights reserved.
3 | //
4 | // This file is part of The Grinder software distribution. Refer to
5 | // the file LICENSE which is part of The Grinder distribution for
6 | // licensing details. The Grinder distribution is available on the
7 | // Internet at http://grinder.sourceforge.net/
8 | //
9 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
10 | // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
11 | // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
12 | // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
13 | // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
14 | // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
15 | // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
16 | // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
17 | // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
18 | // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
19 | // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
20 | // OF THE POSSIBILITY OF SUCH DAMAGE.
21 |
22 | package net.grinder.messages.agent;
23 |
24 | import net.grinder.communication.Message;
25 |
26 |
27 | /**
28 | * Message that instructs the agent to clear its file cache.
29 | *
30 | * @author Philip Aston
31 | */
32 | public final class ClearCacheMessage implements Message {
33 |
34 | private static final long serialVersionUID = 6451850661282525463L;
35 |
36 | /**
37 | * Constructor.
38 | */
39 | public ClearCacheMessage() {
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/grinder-core/src/main/java/net/grinder/messages/agent/ResetGrinderMessage.java:
--------------------------------------------------------------------------------
1 | // Copyright (C) 2000 - 2008 Philip Aston
2 | // All rights reserved.
3 | //
4 | // This file is part of The Grinder software distribution. Refer to
5 | // the file LICENSE which is part of The Grinder distribution for
6 | // licensing details. The Grinder distribution is available on the
7 | // Internet at http://grinder.sourceforge.net/
8 | //
9 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
10 | // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
11 | // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
12 | // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
13 | // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
14 | // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
15 | // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
16 | // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
17 | // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
18 | // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
19 | // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
20 | // OF THE POSSIBILITY OF SUCH DAMAGE.
21 |
22 | package net.grinder.messages.agent;
23 |
24 | import net.grinder.communication.Message;
25 |
26 |
27 | /**
28 | * Message used to reset the Grinder processes.
29 | *
30 | * @author Philip Aston
31 | */
32 | public final class ResetGrinderMessage implements Message {
33 | private static final long serialVersionUID = 7654366493026824236L;
34 | }
35 |
--------------------------------------------------------------------------------
/grinder-core/src/main/java/net/grinder/messages/agent/StopGrinderMessage.java:
--------------------------------------------------------------------------------
1 | // Copyright (C) 2000 Paco Gomez
2 | // Copyright (C) 2000 - 2008 Philip Aston
3 | // All rights reserved.
4 | //
5 | // This file is part of The Grinder software distribution. Refer to
6 | // the file LICENSE which is part of The Grinder distribution for
7 | // licensing details. The Grinder distribution is available on the
8 | // Internet at http://grinder.sourceforge.net/
9 | //
10 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
11 | // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
12 | // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
13 | // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
14 | // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
15 | // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
16 | // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
17 | // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
18 | // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
19 | // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
20 | // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
21 | // OF THE POSSIBILITY OF SUCH DAMAGE.
22 |
23 | package net.grinder.messages.agent;
24 |
25 | import net.grinder.communication.Message;
26 |
27 |
28 | /**
29 | * Message used to stop the Grinder processes.
30 | *
31 | * @author Philip Aston
32 | */
33 | public final class StopGrinderMessage implements Message {
34 | private static final long serialVersionUID = -8016761595308568610L;
35 | }
36 |
--------------------------------------------------------------------------------
/grinder-core/src/main/java/net/grinder/messages/agent/package.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Messages that can be sent to the agent process.
5 |
6 |
7 |
--------------------------------------------------------------------------------
/grinder-core/src/main/java/net/grinder/messages/console/CacheStatusReport.java:
--------------------------------------------------------------------------------
1 | // Copyright (C) 2008 Philip Aston
2 | // All rights reserved.
3 | //
4 | // This file is part of The Grinder software distribution. Refer to
5 | // the file LICENSE which is part of The Grinder distribution for
6 | // licensing details. The Grinder distribution is available on the
7 | // Internet at http://grinder.sourceforge.net/
8 | //
9 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
10 | // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
11 | // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
12 | // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
13 | // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
14 | // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
15 | // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
16 | // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
17 | // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
18 | // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
19 | // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
20 | // OF THE POSSIBILITY OF SUCH DAMAGE.
21 |
22 | package net.grinder.messages.console;
23 |
24 | import net.grinder.messages.agent.CacheHighWaterMark;
25 |
26 |
27 | /**
28 | * Report of the cache status.
29 | *
30 | * @author Philip Aston
31 | */
32 | public interface CacheStatusReport {
33 |
34 | /**
35 | * Accessor for the cache status.
36 | *
37 | * @return The cache status.
38 | */
39 | CacheHighWaterMark getCacheHighWaterMark();
40 | }
41 |
42 |
--------------------------------------------------------------------------------
/grinder-core/src/main/java/net/grinder/messages/console/package.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Messages that can be sent to the console.
5 |
6 |
7 |
--------------------------------------------------------------------------------
/grinder-core/src/main/java/net/grinder/package.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Top level package for The Grinder source. Contains all the classes
5 | that have main()
entry methods.
6 |
7 |
8 |
--------------------------------------------------------------------------------
/grinder-core/src/main/java/net/grinder/plugininterface/PluginThreadListener.java:
--------------------------------------------------------------------------------
1 | // Copyright (C) 2000 Paco Gomez
2 | // Copyright (C) 2000 - 2007 Philip Aston
3 | // All rights reserved.
4 | //
5 | // This file is part of The Grinder software distribution. Refer to
6 | // the file LICENSE which is part of The Grinder distribution for
7 | // licensing details. The Grinder distribution is available on the
8 | // Internet at http://grinder.sourceforge.net/
9 | //
10 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
11 | // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
12 | // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
13 | // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
14 | // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
15 | // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
16 | // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
17 | // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
18 | // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
19 | // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
20 | // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
21 | // OF THE POSSIBILITY OF SUCH DAMAGE.
22 |
23 | package net.grinder.plugininterface;
24 |
25 | import net.grinder.common.ThreadLifeCycleListener;
26 |
27 |
28 | /**
29 | * This interface defines the callbacks that an individual Grinder
30 | * thread can make on a plugin.
31 | *
32 | * @author Philip Aston
33 | */
34 | public interface PluginThreadListener extends ThreadLifeCycleListener { }
35 |
--------------------------------------------------------------------------------
/grinder-core/src/main/java/net/grinder/plugininterface/package.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Interface that plugins should implement.
5 |
6 |
7 |
--------------------------------------------------------------------------------
/grinder-core/src/main/java/net/grinder/script/CancelledBarrierException.java:
--------------------------------------------------------------------------------
1 | // Copyright (C) 2011 Philip Aston
2 | // All rights reserved.
3 | //
4 | // This file is part of The Grinder software distribution. Refer to
5 | // the file LICENSE which is part of The Grinder distribution for
6 | // licensing details. The Grinder distribution is available on the
7 | // Internet at http://grinder.sourceforge.net/
8 | //
9 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
10 | // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
11 | // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
12 | // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
13 | // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
14 | // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
15 | // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
16 | // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
17 | // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
18 | // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
19 | // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
20 | // OF THE POSSIBILITY OF SUCH DAMAGE.
21 |
22 | package net.grinder.script;
23 |
24 | import net.grinder.common.GrinderException;
25 |
26 |
27 | /**
28 | * Exception thrown when attempting to wait on a cancelled barrier.
29 | *
30 | * @author Philip Aston
31 | * @since 3.6
32 | */
33 | public class CancelledBarrierException extends GrinderException {
34 | /**
35 | * Creates a new {@code CancelledBarrierException} instance.
36 | *
37 | * @param m Exception message.
38 | */
39 | public CancelledBarrierException(String m) {
40 | super(m);
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/grinder-core/src/main/java/net/grinder/script/InternalScriptContext.java:
--------------------------------------------------------------------------------
1 | // Copyright (C) 2008 Philip Aston
2 | // All rights reserved.
3 | //
4 | // This file is part of The Grinder software distribution. Refer to
5 | // the file LICENSE which is part of The Grinder distribution for
6 | // licensing details. The Grinder distribution is available on the
7 | // Internet at http://grinder.sourceforge.net/
8 | //
9 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
10 | // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
11 | // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
12 | // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
13 | // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
14 | // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
15 | // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
16 | // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
17 | // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
18 | // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
19 | // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
20 | // OF THE POSSIBILITY OF SUCH DAMAGE.
21 |
22 | package net.grinder.script;
23 |
24 | import net.grinder.script.Grinder.ScriptContext;
25 |
26 |
27 | /**
28 | * Script context that should not be publicly documented.
29 | *
30 | * @author Philip Aston
31 | */
32 | public interface InternalScriptContext extends ScriptContext {
33 |
34 | /**
35 | * Access to the test registry.
36 | *
37 | * @return The test registry.
38 | */
39 | TestRegistry getTestRegistry();
40 | }
41 |
--------------------------------------------------------------------------------
/grinder-core/src/main/java/net/grinder/script/NoSuchStatisticException.java:
--------------------------------------------------------------------------------
1 | // Copyright (C) 2006 Philip Aston
2 | // All rights reserved.
3 | //
4 | // This file is part of The Grinder software distribution. Refer to
5 | // the file LICENSE which is part of The Grinder distribution for
6 | // licensing details. The Grinder distribution is available on the
7 | // Internet at http://grinder.sourceforge.net/
8 | //
9 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
10 | // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
11 | // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
12 | // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
13 | // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
14 | // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
15 | // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
16 | // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
17 | // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
18 | // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
19 | // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
20 | // OF THE POSSIBILITY OF SUCH DAMAGE.
21 |
22 | package net.grinder.script;
23 |
24 | import net.grinder.common.GrinderException;
25 |
26 |
27 | /**
28 | * Exception thrown if the requested statistic does not exist.
29 | *
30 | * @author Philip Aston
31 | */
32 | public class NoSuchStatisticException extends GrinderException {
33 | /**
34 | * Creates a new NoSuchStatisticException
instance.
35 | *
36 | * @param s Exception message.
37 | */
38 | public NoSuchStatisticException(String s) {
39 | super(s);
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/grinder-core/src/main/java/net/grinder/script/overview.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Classes and interfaces that allow user scripts to obtain services from The Grinder.
5 |6 | New script authors investigating the API are recommended to start 7 | with the following classes, in order: 8 | 9 |
This currently provides the Java DCR instrumentation. In the future, it might 7 | dynamically compile and execute .java files.
8 | 9 | 10 | -------------------------------------------------------------------------------- /grinder-core/src/main/java/net/grinder/scriptengine/jython/instrumentation/dcr/package.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Jython instrumentation agents based on Dynamic Class Retransformation. 5 | 6 | 7 | -------------------------------------------------------------------------------- /grinder-core/src/main/java/net/grinder/scriptengine/jython/package.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Jython script engine. 5 | 6 | 7 | -------------------------------------------------------------------------------- /grinder-core/src/main/java/net/grinder/scriptengine/package.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Common interface used by the worker process implementation and script engines. 5 | 6 | 7 | -------------------------------------------------------------------------------- /grinder-core/src/main/java/net/grinder/statistics/StatisticsException.java: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2005 Philip Aston 2 | // All rights reserved. 3 | // 4 | // This file is part of The Grinder software distribution. Refer to 5 | // the file LICENSE which is part of The Grinder distribution for 6 | // licensing details. The Grinder distribution is available on the 7 | // Internet at http://grinder.sourceforge.net/ 8 | // 9 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 10 | // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 11 | // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 12 | // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 13 | // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 14 | // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 15 | // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 16 | // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 17 | // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 18 | // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 19 | // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 20 | // OF THE POSSIBILITY OF SUCH DAMAGE. 21 | 22 | package net.grinder.statistics; 23 | 24 | import net.grinder.common.GrinderException; 25 | 26 | 27 | /** 28 | * Base type for exceptions raised by the statistics package. 29 | * 30 | * @author Philip Aston 31 | */ 32 | public abstract class StatisticsException extends GrinderException { 33 | 34 | /** 35 | * Constructor. 36 | * 37 | * @param message Exception message. 38 | */ 39 | public StatisticsException(String message) { 40 | super(message); 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /grinder-core/src/main/java/net/grinder/statistics/package.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | The Grinder statistics engine. 5 | 6 |Statistics are attributes of the test results that appear in the 7 | console and the data logs.
8 | 9 |This is an internal package. Scripts should use the 10 | the script API ({@link net.grinder.script.Statistics}).
11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /grinder-core/src/main/java/net/grinder/synchronisation/BarrierGroups.java: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2011 Philip Aston 2 | // All rights reserved. 3 | // 4 | // This file is part of The Grinder software distribution. Refer to 5 | // the file LICENSE which is part of The Grinder distribution for 6 | // licensing details. The Grinder distribution is available on the 7 | // Internet at http://grinder.sourceforge.net/ 8 | // 9 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 10 | // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 11 | // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 12 | // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 13 | // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 14 | // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 15 | // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 16 | // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 17 | // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 18 | // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 19 | // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 20 | // OF THE POSSIBILITY OF SUCH DAMAGE. 21 | 22 | package net.grinder.synchronisation; 23 | 24 | 25 | /** 26 | * Collection of barrier groups. 27 | * 28 | * @author Philip Aston 29 | */ 30 | public interface BarrierGroups { 31 | 32 | /** 33 | * Obtain a barrier group. 34 | * 35 | * @param name Group name. 36 | * @return The barrier group. 37 | */ 38 | BarrierGroup getGroup(String name); 39 | } 40 | -------------------------------------------------------------------------------- /grinder-core/src/main/java/net/grinder/synchronisation/messages/AddBarrierMessage.java: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2011 Philip Aston 2 | // All rights reserved. 3 | // 4 | // This file is part of The Grinder software distribution. Refer to 5 | // the file LICENSE which is part of The Grinder distribution for 6 | // licensing details. The Grinder distribution is available on the 7 | // Internet at http://grinder.sourceforge.net/ 8 | // 9 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 10 | // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 11 | // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 12 | // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 13 | // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 14 | // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 15 | // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 16 | // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 17 | // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 18 | // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 19 | // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 20 | // OF THE POSSIBILITY OF SUCH DAMAGE. 21 | 22 | package net.grinder.synchronisation.messages; 23 | 24 | 25 | /** 26 | * Barrier group message requesting that a barrier be added. 27 | * 28 | * @author Philip Aston 29 | */ 30 | public class AddBarrierMessage extends AbstractBarrierGroupMessage { 31 | 32 | private static final long serialVersionUID = 1L; 33 | 34 | /** 35 | * Constructor. 36 | * 37 | * @param name Barrier name. 38 | */ 39 | public AddBarrierMessage(String name) { 40 | super(name); 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /grinder-core/src/main/java/net/grinder/synchronisation/messages/package.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Messages used by distributed implementations of the synchronisation classes. 5 | 6 | 7 | -------------------------------------------------------------------------------- /grinder-core/src/main/java/net/grinder/synchronisation/package.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Synchronisation classes. 5 | 6 | 7 | -------------------------------------------------------------------------------- /grinder-core/src/main/java/net/grinder/util/html/package.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Simple HTML document model. 5 | 6 | 7 | -------------------------------------------------------------------------------- /grinder-core/src/main/java/net/grinder/util/logback/package.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Utility classes for use with the Logback logging framework. 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /grinder-core/src/main/java/net/grinder/util/package.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Miscellaneous utility classes. 5 | 6 |These classes should only depend the
7 | net.grinder.common
package.
This package should probably be deprecated in favour of JSR 166 / 7 | 8 | backport-util-concurrent..
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /grinder-core/src/main/java/net/grinder/util/weave/j2se6/package.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Weaving implementation that uses Java 6 dynamic class retransformation. 5 | 6 | 7 | -------------------------------------------------------------------------------- /grinder-core/src/main/java/net/grinder/util/weave/package.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Code to apply instrumentation to test classes using AOP style "weaving". 5 | 6 | 7 | -------------------------------------------------------------------------------- /grinder-core/src/main/resources/META-INF/net.grinder.scriptengine: -------------------------------------------------------------------------------- 1 | # Script engine implementations. 2 | # 3 | # The order of lines is important; see net.grinder.scriptengine.ScriptEngine. 4 | 5 | net.grinder.scriptengine.jython.JythonScriptEngineService 6 | net.grinder.scriptengine.clojure.ClojureScriptEngineService 7 | net.grinder.scriptengine.java.JavaScriptEngineService 8 | -------------------------------------------------------------------------------- /grinder-core/src/main/resources/logback-worker.xml: -------------------------------------------------------------------------------- 1 |29 | * Needs to be outside of the {@code net.grinder} package so it can be 30 | * instrumented. 31 | *
32 | */ 33 | public class MyExtendedClass extends MyClass { 34 | 35 | public static MyClass create() { 36 | return new MyExtendedClass(); 37 | } 38 | 39 | public int addOne(int i) { 40 | return i + 2; 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /grinder-core/src/test/java/net/grinder/communication/SendToEveryoneAddress.java: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2008 Philip Aston 2 | // All rights reserved. 3 | // 4 | // This file is part of The Grinder software distribution. Refer to 5 | // the file LICENSE which is part of The Grinder distribution for 6 | // licensing details. The Grinder distribution is available on the 7 | // Internet at http://grinder.sourceforge.net/ 8 | // 9 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 10 | // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 11 | // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 12 | // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 13 | // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 14 | // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 15 | // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 16 | // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 17 | // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 18 | // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 19 | // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 20 | // OF THE POSSIBILITY OF SUCH DAMAGE. 21 | 22 | package net.grinder.communication; 23 | 24 | 25 | /** 26 | * Stub implementation of {@link Address}. 27 | * 28 | * @author Philip Aston 29 | */ 30 | public final class SendToEveryoneAddress implements Address { 31 | public boolean includes(Address address) { 32 | return true; 33 | } 34 | } -------------------------------------------------------------------------------- /grinder-core/src/test/java/net/grinder/communication/TestInternalMessages.java: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2004 - 2009 Philip Aston 2 | // All rights reserved. 3 | // 4 | // This file is part of The Grinder software distribution. Refer to 5 | // the file LICENSE which is part of The Grinder distribution for 6 | // licensing details. The Grinder distribution is available on the 7 | // Internet at http://grinder.sourceforge.net/ 8 | // 9 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 10 | // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 11 | // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 12 | // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 13 | // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 14 | // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 15 | // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 16 | // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 17 | // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 18 | // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 19 | // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 20 | // OF THE POSSIBILITY OF SUCH DAMAGE. 21 | 22 | package net.grinder.communication; 23 | 24 | import junit.framework.TestCase; 25 | import net.grinder.testutility.Serializer; 26 | 27 | 28 | /** 29 | * Unit test case for application messages. 30 | * 31 | * @author Philip Aston 32 | */ 33 | public class TestInternalMessages extends TestCase { 34 | 35 | public void testCloseCommunicationMessage() throws Exception { 36 | Serializer.serialize(new CloseCommunicationMessage()); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /grinder-core/src/test/java/net/grinder/engine/agent/StubAgentIdentity.java: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2005 - 2008 Philip Aston 2 | // All rights reserved. 3 | // 4 | // This file is part of The Grinder software distribution. Refer to 5 | // the file LICENSE which is part of The Grinder distribution for 6 | // licensing details. The Grinder distribution is available on the 7 | // Internet at http://grinder.sourceforge.net/ 8 | // 9 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 10 | // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 11 | // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 12 | // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 13 | // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 14 | // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 15 | // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 16 | // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 17 | // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 18 | // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 19 | // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 20 | // OF THE POSSIBILITY OF SUCH DAMAGE. 21 | 22 | package net.grinder.engine.agent; 23 | 24 | 25 | 26 | /** 27 | * An AgentIdentityImplementation that is public so unit tests from other 28 | * packages can use it. 29 | * 30 | * @author Philip Aston 31 | */ 32 | public final class StubAgentIdentity extends AgentIdentityImplementation { 33 | 34 | public StubAgentIdentity(String name) { 35 | super(name); 36 | } 37 | 38 | public WorkerIdentityImplementation createWorkerIdentity() { 39 | return super.createWorkerIdentity(); 40 | } 41 | } -------------------------------------------------------------------------------- /grinder-core/src/test/java/net/grinder/engine/process/ExternalLoggerScopeTunnel.java: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2011 Philip Aston 2 | // All rights reserved. 3 | // 4 | // This file is part of The Grinder software distribution. Refer to 5 | // the file LICENSE which is part of The Grinder distribution for 6 | // licensing details. The Grinder distribution is available on the 7 | // Internet at http://grinder.sourceforge.net/ 8 | // 9 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 10 | // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 11 | // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 12 | // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 13 | // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 14 | // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 15 | // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 16 | // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 17 | // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 18 | // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 19 | // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 20 | // OF THE POSSIBILITY OF SUCH DAMAGE. 21 | 22 | package net.grinder.engine.process; 23 | 24 | import org.slf4j.Logger; 25 | 26 | 27 | /** 28 | * Allow unit tests in other packages to create an ExternalLogger. 29 | * 30 | * @author Philip Aston 31 | */ 32 | public class ExternalLoggerScopeTunnel { 33 | 34 | public static Logger getExternalLogger(Logger processLogger) { 35 | final StubThreadContextLocator threadContextLocator = 36 | new StubThreadContextLocator(); 37 | 38 | return new ExternalLogger(processLogger, threadContextLocator); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /grinder-core/src/test/java/net/grinder/engine/process/dcr/AnotherClass.java: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2009 - 2011 Philip Aston 2 | // All rights reserved. 3 | // 4 | // This file is part of The Grinder software distribution. Refer to 5 | // the file LICENSE which is part of The Grinder distribution for 6 | // licensing details. The Grinder distribution is available on the 7 | // Internet at http://grinder.sourceforge.net/ 8 | // 9 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 10 | // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 11 | // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 12 | // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 13 | // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 14 | // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 15 | // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 16 | // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 17 | // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 18 | // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 19 | // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 20 | // OF THE POSSIBILITY OF SUCH DAMAGE. 21 | 22 | package net.grinder.engine.process.dcr; 23 | 24 | 25 | /** 26 | * Test class for {@link TestJavaDCRInstrumenter}. 27 | * 28 | * @author Philip Aston 29 | */ 30 | public class AnotherClass { 31 | public static int getOne() { 32 | return 1; 33 | } 34 | 35 | public int getTwo() { 36 | return 2; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /grinder-core/src/test/java/net/grinder/engine/process/dcr/RecorderLocatorAccess.java: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2011 Philip Aston 2 | // All rights reserved. 3 | // 4 | // This file is part of The Grinder software distribution. Refer to 5 | // the file LICENSE which is part of The Grinder distribution for 6 | // licensing details. The Grinder distribution is available on the 7 | // Internet at http://grinder.sourceforge.net/ 8 | // 9 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 10 | // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 11 | // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 12 | // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 13 | // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 14 | // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 15 | // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 16 | // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 17 | // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 18 | // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 19 | // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 20 | // OF THE POSSIBILITY OF SUCH DAMAGE. 21 | 22 | package net.grinder.engine.process.dcr; 23 | 24 | import net.grinder.engine.process.dcr.RecorderLocator; 25 | 26 | 27 | /** 28 | * Scope tunnel. 29 | */ 30 | public final class RecorderLocatorAccess { 31 | 32 | public static void clearRecorders() { 33 | RecorderLocator.clearRecorders(); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /grinder-core/src/test/java/net/grinder/statistics/testdata: -------------------------------------------------------------------------------- 1 | A B A plus B A divided by 2 | B 3 | Test 3 1 2 3 0.50 "Test 3" 4 | Test 9 0 1 1 0.00 "Test 9" 5 | Test 113 2 3 5 0.67 "Another test" 6 | 7 | Totals 3 6 9 0.50 8 | -------------------------------------------------------------------------------- /grinder-core/src/test/java/net/grinder/util/AnIsolatedClass.java: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2005 Philip Aston 2 | // All rights reserved. 3 | // 4 | // This file is part of The Grinder software distribution. Refer to 5 | // the file LICENSE which is part of The Grinder distribution for 6 | // licensing details. The Grinder distribution is available on the 7 | // Internet at http://grinder.sourceforge.net/ 8 | // 9 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 10 | // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 11 | // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 12 | // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 13 | // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 14 | // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 15 | // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 16 | // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 17 | // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 18 | // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 19 | // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 20 | // OF THE POSSIBILITY OF SUCH DAMAGE. 21 | 22 | package net.grinder.util; 23 | 24 | public class AnIsolatedClass { 25 | 26 | } 27 | -------------------------------------------------------------------------------- /grinder-core/src/test/java/net/grinder/util/TestUnexpectedIOException.java: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2012 Philip Aston 2 | // All rights reserved. 3 | // 4 | // This file is part of The Grinder software distribution. Refer to 5 | // the file LICENSE which is part of The Grinder distribution for 6 | // licensing details. The Grinder distribution is available on the 7 | // Internet at http://grinder.sourceforge.net/ 8 | // 9 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 10 | // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 11 | // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 12 | // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 13 | // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 14 | // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 15 | // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 16 | // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 17 | // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 18 | // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 19 | // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 20 | // OF THE POSSIBILITY OF SUCH DAMAGE. 21 | 22 | package net.grinder.util; 23 | 24 | import static org.junit.Assert.assertSame; 25 | 26 | import java.io.IOException; 27 | 28 | import org.junit.Test; 29 | 30 | /** 31 | * Unit tests for {@link UnexpectedIOException}. 32 | * 33 | * @author Philip Aston 34 | */ 35 | public class TestUnexpectedIOException { 36 | 37 | @Test 38 | public void testConstruction() { 39 | final IOException cause = new IOException(); 40 | 41 | assertSame(cause, 42 | new UnexpectedIOException(cause).getCause()); 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /grinder-core/src/test/resources/TestResources.properties: -------------------------------------------------------------------------------- 1 | # Used by TestResources.java 2 | 3 | resourceFile=file2 4 | 5 | -------------------------------------------------------------------------------- /grinder-core/src/test/resources/net/grinder/console/common/TestDisplayMessageConsoleException.properties: -------------------------------------------------------------------------------- 1 | # Used by TestDisplayMessageConsoleException.java 2 | 3 | helloworld=Hello world 4 | 5 | sum={0} plus {1} is {2} 6 | numberOfFiles=There {0,choice,0#are no files|1#is one file|1main()
entry methods.
6 |
7 |
8 |
--------------------------------------------------------------------------------
/grinder-http/src/main/java/net/grinder/plugin/http/package.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | HTTP plug-in that provides a pool of connections per worker thread.
5 |
6 | See the documentation for more information.
7 | 8 | 9 | -------------------------------------------------------------------------------- /grinder-http/src/main/java/net/grinder/plugin/http/tcpproxyfilter/ConnectionHandlerFactory.java: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2006 Philip Aston 2 | // All rights reserved. 3 | // 4 | // This file is part of The Grinder software distribution. Refer to 5 | // the file LICENSE which is part of The Grinder distribution for 6 | // licensing details. The Grinder distribution is available on the 7 | // Internet at http://grinder.sourceforge.net/ 8 | // 9 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 10 | // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 11 | // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 12 | // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 13 | // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 14 | // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 15 | // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 16 | // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 17 | // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 18 | // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 19 | // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 20 | // OF THE POSSIBILITY OF SUCH DAMAGE. 21 | 22 | package net.grinder.plugin.http.tcpproxyfilter; 23 | 24 | import net.grinder.tools.tcpproxy.ConnectionDetails; 25 | 26 | 27 | /** 28 | * Factory for {@link ConnectionHandler}s. 29 | * 30 | * @author Philip Aston 31 | */ 32 | public interface ConnectionHandlerFactory { 33 | 34 | /** 35 | * Factory method. 36 | * 37 | * @param connectionDetails Connection details. 38 | * @return A new ConnectionHandler. 39 | */ 40 | ConnectionHandler create(ConnectionDetails connectionDetails); 41 | } 42 | -------------------------------------------------------------------------------- /grinder-http/src/main/java/net/grinder/plugin/http/tcpproxyfilter/IntGenerator.java: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2005 Philip Aston 2 | // All rights reserved. 3 | // 4 | // This file is part of The Grinder software distribution. Refer to 5 | // the file LICENSE which is part of The Grinder distribution for 6 | // licensing details. The Grinder distribution is available on the 7 | // Internet at http://grinder.sourceforge.net/ 8 | // 9 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 10 | // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 11 | // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 12 | // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 13 | // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 14 | // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 15 | // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 16 | // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 17 | // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 18 | // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 19 | // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 20 | // OF THE POSSIBILITY OF SUCH DAMAGE. 21 | 22 | package net.grinder.plugin.http.tcpproxyfilter; 23 | 24 | 25 | /** 26 | * Simple ID generator. 27 | * 28 | * @author Philip Aston 29 | */ 30 | final class IntGenerator { 31 | private int m_value = -1; 32 | 33 | public synchronized int next() { 34 | return ++m_value; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /grinder-http/src/main/java/net/grinder/plugin/http/tcpproxyfilter/package.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | TCPProxy filters for the HTTP plug in. 5 | 6 | 7 | -------------------------------------------------------------------------------- /grinder-http/src/main/java/net/grinder/tools/tcpproxy/TCPProxyEngine.java: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2000 Phil Dawes 2 | // Copyright (C) 2000, 2001, 2002, 2003 Philip Aston 3 | // Copyright (C) 2003 Bertrand Ave 4 | // All rights reserved. 5 | // 6 | // This file is part of The Grinder software distribution. Refer to 7 | // the file LICENSE which is part of The Grinder distribution for 8 | // licensing details. The Grinder distribution is available on the 9 | // Internet at http://grinder.sourceforge.net/ 10 | // 11 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 12 | // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 13 | // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 14 | // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 15 | // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 16 | // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 17 | // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 18 | // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 19 | // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 20 | // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 21 | // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 22 | // OF THE POSSIBILITY OF SUCH DAMAGE. 23 | 24 | package net.grinder.tools.tcpproxy; 25 | 26 | /** 27 | * Interface for TCPProxy engines. 28 | * 29 | * @author Philip Aston 30 | * @author Bertrand Ave 31 | */ 32 | public interface TCPProxyEngine extends Runnable { 33 | 34 | // void run(); 35 | 36 | /** 37 | * Stop the engine. 38 | */ 39 | void stop(); 40 | } 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /grinder-http/src/main/java/net/grinder/tools/tcpproxy/package.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | TCPProxy implementation. 5 | 6 | 7 | -------------------------------------------------------------------------------- /grinder-http/src/main/java/net/grinder/util/http/package.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Utility classes for the HTTP plugin. 5 | 6 | 7 | -------------------------------------------------------------------------------- /grinder-http/src/main/resources/net/grinder/plugin/http/tcpproxyfilter/resources/httpToXML.xsl: -------------------------------------------------------------------------------- 1 | 2 | 3 |