5.12.0 — 26 May 2020
Features
- New property that allows configuring how IBM® MQ queues will be accessed
trafficparrot.ibmmq.connect.options.accessQueue.output=MQOO_OUTPUT|MQOO_FAIL_IF_QUIESCING
- New property that allows to skip logging message body for native IBM® MQ
trafficparrot.ibmmq.logger.logMessageBody=true
- Native IBM® MQ now respects the existing properties that allow for caching mappings in memory
trafficparrot.virtualservice.mapping.cache.milliseconds=0
trafficparrot.virtualservice.mapping.cache.populate.on.startup=false
- You can now configure per connection to an IBM® MQ broker how many read and how many write connections to open.
You do it in the ibm-mq-connections.json. For example:
"readConnectionsToOpen": 5,
"writeConnectionsToOpen": 5
- The Native IBM® MQ mapping allows for configuring how many threads should be used to access the queue, for example:
"receiveThreads" : 5,
"sendThreads" : 1
- You can define in the mapping how many messages the Native IBM® MQ connector will be keeping in memory at once, which will be relevant for scenarios when sending delayd messages, for example:
"maxMessagesInProgress": 1000000
- You can start the Native IBM® MQ replay with a script, for example:
#
# This is a sample comment 1
#
RequestQueueManager:'Request QM1'
ResponseQueueManager:'Response QM1'
RequestQueueNames:'REQ_1_A','REQ_1_B'
#
# This is a sample comment 2
#
RequestQueueManager:'Request QM2'
ResponseQueueManager:'Response QM2'
RequestQueueNames:'REQ_2_A','REQ_2_B'
- Handlebar templates are cached allowing for better performance
Changes
- There has been performance improvements made to the Native IBM® MQ connector.
See the performance benchmarks for more details.
- Native IBM® MQ response messages during a replay have the replyToQueueEmpty and replyToQueueManager
set to the connected queue manager if they did not have any of these attributes set on the request message
- Native IBM® MQ sends the queue manager name along with queue name when sending a message.
This is applicable in scenarios with multiple queue managers set up in a cluster without the cluster sender and cluster receiver channels
- Logging more runtime information on startup
- Additional logging when connections to IBM® MQ fail
5.11.1 — 06 Apr 2020
Changes
- Updated VS HTTPS certificates with new 3 year validity period
5.10.0 — 17 Jan 2020
Features
Fixes
- Ensure IBM®MQ channel connections are always released after use
5.9.0 — 16 Dec 2019
Features
-
Improvements to gRPC mappings list user interface:
- Edit mapping tags that can be used to organize and search mappings
- Added new tags column which is hidden by default
Fixes
-
WireMock compatible HTTP APIs are now hosted on both:
- http://localhost:8080/api/http/__admin/*
- http://localhost:8080/api/http/*
This means that the standard WireMock client libraries can be used when connecting to
the API port e.g. when using WireMock.configureFor("localhost", 8080, "/api/http");
Custom HTTP clients or a browser may continue to drop the /__admin section
of the path so that API calls such as http://localhost:8080/api/http/mappings
can be made
5.8.0 — 02 Dec 2019
Features
-
Improvements to gRPC mappings list user interface:
- Added sorting to columns
- Added a button to pause auto reload
- Added a button to select which columns to display
- Added two new columns which are hidden by default: id and name
Fixes
-
Pause gRPC mappings list auto reload when highlighting text so that it is
possible to highlight and copy text without the auto reload clearing the highlight
- Allow spaces in gRPC mapping file name template
5.7.3 — 25 Nov 2019
Features
5.6.0 — 11 Nov 2019
Features
Fixes
- Fixed support for reserved fields in gRPC proto files
- Errors when compiling proto files are now reported in the logs
- Swagger/OpenAPI example dates are now considered when performing an import
Changes
-
New toggle trafficparrot.virtualservice.grpc.check.mapping.schema.allow.missing.fields
that can be set to true to allow gRPC mapping files to have fields
missing when compared to the proto schema. This is to allow for usages where
there are fields that are intentionally omitted to pick up on the default.
5.5.3 — 25 Oct 2019
Fixes
- Fixed support for gRPC error mappings in the new static analysis check
- Fixed support for gRPC dynamic response mappings in the new static analysis check
- Fixed support for gRPC mappings with repeated fields in the new static analysis check
- More consistent error reporting format for errors in dynamic responses, to make it clear which helper had a problem
- Always print log file in the Maven/Gradle plugin console if Traffic Parrot fails to start
Features
5.5.1 — 14 Oct 2019
Features
-
Traffic Parrot can now check that gRPC mapping files match proto schema on
startup. You can enable this check to prevent startup if mapping files are
out of date when compared to the proto schema.
- The following property enables the feature: trafficparrot.virtualservice.grpc.check.mapping.schema.on.startup=true
- Currently supports checking gRPC mapping equalToJson request matchers
- Currently supports checking gRPC mapping response
- This feature is currently in public beta and is subject to change
- Please let us know your feedback feedback@trafficparrot.com and help us improve this feature
Changes
-
Traffic Parrot now only requires a single port for the UI:
- trafficparrot.gui.http.port=8080
The following ports are no longer used by the UI:
- trafficparrot.virtualservice.http.management.port=8083
- trafficparrot.virtualservice.jms.management.port=9093
- trafficparrot.virtualservice.http.port=8081
Please note that these ports are still required by the Traffic Parrot backend.
5.4.5 — 07 Oct 2019
Fixes
-
gRPC mapping files will now be written with the correct status code of 0 to
represent a successful response status. gRPC mapping files with status code 200
will continue to be interpreted as status code 0 to preserve backwards compatibility.
5.4.4 — 09 Sep 2019
Changes
-
The HTTPS client used for making outbound HTTPS connections now trusts all
server certificates by default. This means that it is no longer necessary to
specify a javax.net.ssl.trustStore when connecting to HTTPS servers
that are not already trusted by the system during recording or proxying.
Fixes
-
Using the javax.net.ssl.keyStore system property will now
completely override the HTTPS client key store used for making
outbound HTTPS connections
for mutual authentication scenarios during recording or proxying.
5.4.0 — 16 Aug 2019
Features
-
Added JMS REST API to count the number of requests made that match the given
criteria using POST /api/jms/requests/count and reset the count
using DELETE /api/jms/requests
-
See the OpenAPI documentation or import
the Postman workspace for more information.
Fixes
- Fixed usage of {{ anyNumber }} to match numbers within JSON string fields
5.3.2 — 07 Aug 2019
Fixes
- Fixed a memory leak in the user interface
5.3.1 — 05 Aug 2019
Features
-
New operating system specific release with bundled JRE:
- Any operating system with no bundled JRE: trafficparrot-no-jre-5.3.1.zip
- 64-bit Linux with bundled JRE: trafficparrot-linux-x64-jre-5.3.1.zip
- 64-bit Mac with bundled JRE: trafficparrot-mac-x64-jre-5.3.1.zip
- 64-bit Windows with bundled JRE: trafficparrot-windows-x64-jre-5.3.1.zip
- 32-bit Windows with bundled JRE: trafficparrot-windows-x86-32-jre-5.3.1.zip
-
New state management REST API for global state:
- Create or update state using PUT /api/state/global/{name}
- Get state using GET /api/state/global/{name}
- Reset all state using DELETE /api/state
-
See the OpenAPI documentation or import
the Postman workspace for more
information on the API usage
- {{ manageState 'example' 'set' 1234 }} to set a variable in a response template
- {{ manageState 'example' 'get' }} to get a variable in a response template
5.2.0 — 19 Jul 2019
Features
-
WireMock 2.10.1 compatible REST API is now mounted on /api/http/*
on the Traffic Parrot UI/API port (default 8080) for example POST /api/http/requests/count
can be used to count requests
-
Added gRPC REST API to count the number of requests made that match the given
criteria using POST /api/grpc/requests/count and reset the count
using DELETE /api/grpc/requests
-
See the OpenAPI documentation or import
the Postman workspace for more information.
Fixes
- Fix scenarios dropdown UI on Windows browsers
Changes
- Rename "request body" to "request message payload" in the gRPC UI
5.1.1 — 15 Jul 2019
Fixes
- Fixed support gRPC status details. We now support using both the status key and proto key header conventions.
- Fixed support for well known gRPC error details types
Changes
- Additional logging when a gRPC request fails to match any mappings
- Specify text representation of month in license logs to make it more clear when the start date is
5.1.0 — 08 Jul 2019
Features
-
gRPC improvements
- Import gRPC proto files using the import button on the gRPC Add/Edit page
- Convert OpenAPI files to gRPC proto files with openapi2proto using the import button on the gRPC Add/Edit page
-
Use the trafficparrot.virtualservice.grpc.openapi2proto.plugin.location property to configure the openapi2proto binary location,
which can be either AUTO_DETECT (which searches the system environment path, go/bin directory and Traffic Parrot plugins directory) or a specific location
- Configure HTTP proxy mappings on the HTTP Add/Edit page to allow routing some calls to the virtual service and some calls to real services
-
Added support for database queries in responses
- New {{ databaseQuery }} helper
- Configure JDBC connections in the database-connections.json file
- Provide the JDBC driver JAR files for your database in the lib/external folder
- Added support for default value when using {{ select }} to look up values in CSV files
- Added support for the IBM®MQ Message ID as Correlation ID pattern
Fixes
- When a property is missing from trafficparrot.properties we now report which key is missing in the logs
- PDF files can now be correctly recorded and replayed as HTTP multipart/related attachments
Changes
- Removed equal to matcher from gRPC edit mapping form (equal to JSON always makes more sense to use than equal to)
- New toggle trafficparrot.virtualservice.grpc.message.field.naming to choose whether to define gRPC mappings using CAMEL_CASE field names or using the ORIGINAL field name case used in the proto files
- Binary (non plain text) HTTP responses are now recorded in .bin files
5.0.3 — 17 Jun 2019
Fixes
-
Added support for google.protobuf.Any fields when working with gRPC
skeletons. For more details on how this field is serialized see here.
5.0.2 — 14 Jun 2019
Fixes
- Correct links to latest documentation pages
5.0.1 — 12 Jun 2019
Changes
-
Added a new property trafficparrot.openapi.import.mode that acts as
a toggle for the different ways Traffic Parrot supports for importing OpenAPI
files. The default MATCHING_RESPONSE_CODE will use the response
status in request matchers convention and SKELETON will template
the mapping with the request and response structure.
5.0.0 — 10 Jun 2019
Features
-
New HTTP skeletons feature:
-
OpenAPI specifications
are used to generate a list of HTTP skeletons
that can be used to help design HTTP mappings in the Traffic Parrot user interface
-
Place OpenAPI specifications in the openapi configuration
directory to populate the dropdown menu or use the upload button on the
HTTP Add/Edit page next to the dropdown
-
This replaces the old scenarios.js dropdown, which has been
removed (see changes section below for migration instructions)
-
Maven plugin improvements:
-
New trafficparrot:check-environment goal to run in the
pre-clean phase to check nothing is preventing a successful
start of Traffic Parrot
-
Check that there is not an existing Traffic Parrot instance running
-
Check for locked files or directories that are unable to be cleaned on
Windows (typically this is because a file is open in a text editor or
command prompt)
-
Improved speed when cacheDownload is enabled by also
caching the extracted zip file
-
Accept either file:/// or file:// syntax when
specifying file URLs
-
Remember to upgrade your plugin version to 5.0.0
Fixes
-
The randomInteger and randomDouble helpers
now return a number type instead of a string, so that they can be combined with
other helpers that require a number. For example when combined with the
stringFormat helper: {{stringFormat '%02d:%02d' (randomInteger 0 59) (randomInteger 0 59)}}
Changes
-
The scenarios.js HTTP dropdown has been removed.
-
We recommend migrating to an OpenAPI specification file which can be used to
produce a similar dropdown via the new HTTP skeletons functionality
-
Please email support@trafficparrot.com
with your scenarios.js file and we will translate it to
an OpenAPI file for you
- Removed unused property trafficparrot.gui.scenarios.resource.name
-
Improved reporting of port clashes and how to change ports in trafficparrot.properties
4.7.2 — 13 May 2019
Features
-
gRPC improvements
-
Support specifying a status details object in exception responses
-
Support for matching by simple key: value request headers.
The property trafficparrot.virtualservice.grpc.exclude.request.headers.from.matching=content-type,user-agent,grpc-accept-encoding
can be used to choose which headers are considered for matching during replay.
-
New properties for performance tuning:
- trafficparrot.virtualservice.grpc.server.replay.proto.cache.populate.on.startup will populate the proto cache when starting up
- trafficparrot.virtualservice.grpc.server.warmup.on.startup will warm up the JVM to improve gRPC performance when starting up
- trafficparrot.virtualservice.mapping.cache.milliseconds will cache mapping files for both gRPC and HTTP for the specified duration
- trafficparrot.virtualservice.mapping.cache.populate.on.startup will populate the mapping file cache for both gRPC and HTTP when starting up
- New constant NUMBER_OF_PROCESSORS can be used in the existing trafficparrot.virtualservice.grpc.server.boss.threads and trafficparrot.virtualservice.grpc.server.worker.threads properties
- Use proto cache settings when loading gRPC skeletons
-
Amazon SQS virtualization improvements:
- Added support for the PurgeQueue command
- Added a user interface to view outstanding messages and receipt handles
Fixes
- gRPC performance improved by approximately 80%
- Trim extra empty lines from jvm.args file to avoid a start issue
- Amazon SQS ReceiveMessage now correctly only peeks a message rather than deleting it; deleting is done via the receipt handle to DeleteMessage
Changes
-
Amazon SQS virtualization changes:
-
Support is now enabled via the
trafficparrot.virtualservice.amazon.sqs.enabled=true property
instead of the trafficparrot.http.responsetransformers property
-
The virtual service is now hosted under the URL path
/aws/sqs instead of directly under the root path
- Removed unused property trafficparrot.virtualservice.inMemoryFileSystemBackedStubMappings
4.6.1 — 07 May 2019
Fixes
-
Search %PATH% and %JAVA_HOME% on Windows as possible
locations to find a Java installation. This is in addition to checking the
standard registry entries that are populated when using the official Java
installer. The standard registry entries take precedence over other locations.
4.6.0 — 19 Apr 2019
Features
-
Added support for mapping priority to distinguish between many matching mappings.
The default priority is 5 and 1 is the highest.
4.5.4 — 16 Apr 2019
Features
- New tray icon is displayed when running in a non-headless environment (e.g. on your laptop)
- New jvm.args file allows setting JVM arguments for the main Traffic Parrot process (e.g. to tune memory options)
- New configuration property trafficparrot.virtualservice.http.no.mapping.found.code to allow changing the no mappping found HTTP response code
- New start.exe and stop.exe launchers for Windows users
- Support JMS connections to an external Azure AMQP Service Bus broker in jms-connections.json
- Support Amazon SQS queue simulation and verification over the SQS HTTP REST APIs via the com.trafficparrot.virtualservice.extensions.responsetransformer.AmazonSQSTransformer which can be enabled via the trafficparrot.http.responsetransformers property
- Additional diagnostic information is printed when starting up and shutting down
-
Maven and Gradle plugin improvements:
-
Allow specifying a trafficparrot.properties file location
in the propertiesFile plugin property; this file is
combined with the default properties file and any plugin overrides
-
Store a copy of the traffic files root in the build directory so that
mappings imported dynamically e.g. from OpenAPI specifications do not
pollute the source traffic files root
-
Print the startup and shutdown logs inline to make the build output
easier to navigate
-
Remember to upgrade your plugin version to 4.5.4
Fixes
-
The default gRPC ports have changed to
trafficparrot.virtualservice.grpc.tls.port=5551
and trafficparrot.virtualservice.grpc.non.tls.port=5552
so that they no longer overlap with the typical Windows ephemeral port range
Changes
- When starting and stopping, the console output is appended to the tp.out file
- When running in the background, only file appenders in trafficparrotserver.log4j.properties are used; any console appenders are switched off
- When running in the foreground, both file and console appenders are used
4.4.2 — 24 Mar 2019
Fixes
-
New trafficparrot.properties properties to help with gRPC server performance tuning:
-
Configure how long to cache the proto files during replay using the
trafficparrot.virtualservice.grpc.server.replay.proto.cache.milliseconds
property.
A value of 0 means do not cache at all.
-
Configure the number of boss and worker threads of the gRPC server using the
trafficparrot.virtualservice.grpc.server.boss.threads and
trafficparrot.virtualservice.grpc.server.worker.threads
properties.
The special value DOUBLE_NUMBER_OF_PROCESSORS means
use double the number of processors.
4.4.1 — 08 Mar 2019
Fixes
-
Added gRPC message skeleton support for:
- Self referential types e.g. google.protobuf.Struct
- Messages that use the oneof feature
4.4.0 — 25 Jan 2019
Features
Fixes
- Adding a new JMS mapping now correctly saves the properties
Changes
- Always use DeliveryMode.PERSISTENT when sending JMS messages
- The Maven/Gradle plugin properties printLogs and deleteAfterStop are now also respected if Traffic Parrot fails to start up
- The jms-mappings, ibm-mq-mappings and file-mappings directories will be created on start up if they do not exist
4.3.x — 15 Jan 2019
Features
- Support for importing a ZIP file of HTTP mappings
- More verbose logging when there are port binding issues
- More verbose logging of start up configuration
- Pretty print JSON responses when importing Swagger/OpenAPI
Fixes
- Take into account basePath when importing Swagger/OpenAPI
Changes
- Consider only the name of the mapping file when setting the HTTP mapping name, not the entire path
4.2.x — 23 Sep 2018
Features
- Added support for gRPC StatusRuntimeException
- New page to download HTTP mappings
- New Gradle plugin for teams that prefer to use Gradle over Maven
- New examples added including Gradle examples
- New Postman workspace file that you can import to demonstrate some of the common Traffic Parrot management APIs
- Import mappings using Swagger/OpenAPI definitions using the Maven or Gradle plugin
- Better diagnostic logging if Traffic Parrot fails to start up due to e.g. an existing port already in use
- New {{randomInteger min max}} helper to generate random numbers in a range
Fixes
- Fix various unclosed file handles
- Stopping Traffic Parrot now properly waits for gRPC proxy server shutdown
- Cache busting strategy implemented to cope with browsers that like to e.g. cache JavaScript files forever
- The data directory is now considered to be under the trafficparrot.virtualservice.trafficFilesRootUrl
4.1.x — 07 Sep 2018
Features
- New matchesJson matcher
- Import mappings using Swagger/OpenAPI definitions
- Record multiple HTTP URLs at the same time
- Enable redirect handling during HTTP recording using property trafficparrot.virtualservice.enableRedirectHandling=true
- Initial support for Java 9 and 10 in the start scripts
Changes
- HTTP mappings are now sorted by last modified date in the UI
Fixes
- Improve file extension detection for recorded HTTP body files
- Windows start script now correctly passes on system properties
4.0.x — 09 Jul 2018
Features
- Support for mocking and virtualizing gRPC APIs and services
- Visual XML editor
- Extended support for SOAP - matching on request body SOAP values
- New matchesXml matcher
- HTTP(S) stateful scenarios available via the Web UI
- Signing SOAP messages
- Duplicate mapping button for HTTP
Changes
- Traffic Parrot 4.x now requires Java 8 (Java 7 is supported by 3.13.x)
- gRPC support requires a 64bit JVM
- Virtual service runs in the same process at the Web UI
- These properties have been removed:
- trafficparrot.gui.virtualservice.classpath
- trafficparrot.virtualservice.jvm.Xmx
- trafficparrot.virtualservice.virtualServerLog4jPropertiesFilename
Fixes
- Configuration files now have Windows style line endings
3.13.x — 23 Apr 2018
Features
- Support native IBM®MQ ReplyToQMgr during recording
- Importing RAML v0.8 into HTTP mappings
- The Maven plugin has a new cacheDownload property which can be used to choose whether to cache the download in the java.io.tmpdir or not
- New HTTP Management API that can be used to remotely start/stop the record/replay of IBM®MQ, JMS and File Message protocols
3.12.x — 12 Feb 2018
Features
- Recording and replaying native IBM®MQ RFH headers with message format MQFMT_RF_HEADER_1 or MQFMT_RF_HEADER_2
- Support MQFMT_NONE MQ message format
- Recording and replaying native IBM®MQ responses using dynamic MQ model queues
- Support native IBM®MQ ReplyToQ during record and replay
- Support configuring the IBM®MQ MQCSP authentication mode
Fixes
- When you connect to a wrong IBM MQ channel or with wrong IBM MQ username/password you do not see it in the logs
- Spaces in the path to the Traffic Parrot installation directory are now supported
3.11.x — 26 Jan 2018
Features
- Recording and editing JMS Properties
- During File mocking, request files are now deleted after processing
- More user friendly (easier to read and follow) logs for JMS and File stubbing
Fixes
- Windows start script start.cmd now works even if system32 directory is not on the %PATH%
- The dynamic HTTPS Proxy does not spin up so many threads any more and does not consume so much RAM
- Better error messages in failure scenarios when using several Handlebars
- More rigid stopping
Changes
- Default selection on replay page is now based on the type of mappings that are present (e.g. Queue will be ticked if there are any Queue mappings)
3.10.x — 10 Dec 2017
Features
- Support for virtualizing services that read and write files (currently in beta)
- Support JMS byte messages (any bytes message, with special support for java.io.Serializable objects)
- Upgraded WireMock to 2.10.1
- New handlebar helpers xPath, xPathList, jsonPath, jsonPathList, regex, equal, ifEven, size
- JMS is not in beta any more
- IBM®MQ native MQ support is not in alpha any more
- New Maven plugin for replaying HTTP/JMS/MQ traffic during integration tests
Fixes
- Fixed missing pages in community edition
- Fixed links on help page
Changes
- Do not escape characters < > " ' ` & if they are produced by handlebars helpers
- Handlebars each helper now only iterates over iterable arguments
- Recorded cookies format has changed
- com.trafficparrot.sdk.jms.Equal moved to com.trafficparrot.sdk.handlebars.Equal
- com.trafficparrot.sdk.jms.MissingHelper moved to com.trafficparrot.sdk.handlebars.MissingHelper
3.9.x — 11 Nov 2017
Features
Earlier versions
Available on request.
Old version warning!
This documentation is for an old version of Traffic Parrot. There is a more recent Traffic Parrot version available for download at trafficparrot.com
Browse documentation for recent version