Release notes and changelog

« Back to documentation home

5.23.0 — 01 Feb 2021

Features

  • Initial release of Traffic Parrot workstation client (beta):
    • The workstation (beta) is part of a new client-server product offering for customers
    • Traffic Parrot workstation clients create virtual services and save configuration files
    • Traffic Parrot servers run virtual services using the configuration files created by the clients
    • Configuration files can be stored and retrieved from version control systems or artifact repositories
  • Initial support for using multiple HTTP/HTTPS ports linked to separate mappings (beta):
    • New virtual services (beta) page to view/add/edit/delete virtual services
    • A distinct HTTP/HTTPS port may be assigned per virtual service
    • Only one virtual service can be edited at a time by selecting from the dropdown
    • The home page now lists all virtual service names and ports
    • Configuration is currently stored in scenarios/VirtualServiceName/service.properties directory structure
    • Increasing the number of virtual services will have a direct impact on memory usage of the server
    • Consider increasing your jvm.args configuration heap size -Xmx128m if you plan to use multiple virtual services per Traffic Parrot instance
  • New arithmetic operations in dynamic responses

Fixes

  • Fixed an issue where the navigation bar overlapped the main content on some smaller screen sizes
  • Fixed an issue where transformer names would be duplicated in mapping files on save

5.22.3 — 11 Nov 2020

Fixes

  • Minor fixes to UI text
  • Ensure mapping name when edited via the UI ends in .json

5.22.0 — 19 Oct 2020

Features

  • Made mapping name editable in the UI for all mapping types

Fixes

  • Ensure internal server errors log the full stack trace

Changes

  • Native IBM® MQ connections will now warn once in the logs the first time that a connection is shared between multiple threads, which can degrade performance. The mapping fields receiveThreads and sendThreads control the number of threads per queue. The ibm-mq-connections.json configuration controls the total readConnectionsToOpen and writeConnectionsToOpen per queue manager.

5.21.6 — 12 Oct 2020

Features

  • New property trafficparrot.virtualservice.http.monitorPerformance can be used to enable HTTP response timings in the logs:
    2020-10-07 20:09:32,330 INFO  Request to 'GET /test123' was received on '2020-10-07T19:09:32.326Z' from '127.0.0.1'. Response was sent on '2020-10-07T19:09:32.397Z' to '127.0.0.1'. Total processing time 71ms
  • Added new PassthroughMessage MQ proxy example to the SDK workspace

Fixes

  • Fixed support for OpenAPI array examples specified as a comma separated string
  • Ensure startup error causes are recorded in the logs

Changes

  • Upgraded bundled JRE from 8u262 to 8u265
  • Display system tray in a background thread to improve startup times on some systems
  • Valid JSON bodies in mapping files will be persisted as inline JSON rather than an escaped string

5.20.2 — 25 Sep 2020

Features

  • Mappings list user interface improvements for all protocols:
    • Added support for customizing which columns are displayed in the mappings list in the UI. The selected settings are stored in the browser to allow different Traffic Parrot users to set different preferences.
    • Display mapping file name when editing a mapping
  • Mappings list user interface improvements for HTTP protocol:
    • Edit mapping tags that can be used to organize and search mappings
    • Added new tags column which is hidden by default
  • Added mapping file name to the logs when reporting request match status for MQ/JMS/Files mappings

Fixes

  • Switching scenario with mappings caches enabled now resets the caches
  • Traffic Parrot now shuts down gracefully on Windows when the stop script is run
  • Fixed an issue where the HTTP virtual service would not respond if a mapping file was deleted while the request was being served

5.19.4 — 14 Sep 2020

Features

  • Added support for configuring gRPC delays via fixedDelayMilliseconds or distributionDelay in the mapping files
  • Exposed new properties for tuning gRPC performance:
    • trafficparrot.virtualservice.grpc.server.receiveThreads=DOUBLE_NUMBER_OF_PROCESSORS
    • trafficparrot.virtualservice.grpc.server.sendThreads=DOUBLE_NUMBER_OF_PROCESSORS
    • trafficparrot.virtualservice.grpc.server.replay.maxMessagesWaitingToBeSent=1000

Fixes

  • Traffic Parrot now shuts down gracefully when the launcher process is killed (e.g. during a docker stop)

Changes

  • Only consider TCP ports when printing diagnostic information when there is a port clash on startup

5.18.0 — 05 Sep 2020

Features

Fixes

  • Fixes to the gRPC mappings list editing and search mechanism
  • Fixed a bug where the edit modal would incorrectly close automatically if closed and reopened too quickly
  • Fixed a bug where the edit modal would show the previous flash message if closed and reopened too quickly
  • Fixes for JMS java.io.Serializable object support
  • Fixes for port in use diagnostic message when multiple PIDs are involved

Changes

  • The property trafficparrotserver.log4j.properties.filename has been replaced by trafficparrotserver.logging.properties.filename.
  • Logging properties file names indicate which type of logging configuration to use:
    • Names like *.log4j.* are assumed to be Log4j version 1 configuration
    • Names like *.log4j2.* are assumed to be Log4j version 2 configuration
  • The MQ message putDateTime log line now has a millisecond (instead of second) resolution to help investigate performance issues when working with Native IBM MQ

5.17.0 — 25 Aug 2020

Features

  • Internal release that was used for training purposes

5.16.0 — 10 Aug 2020

Features

  • Select handlebars helper CSV file caching. When you set
    trafficparrot.virtualservice.handlebars.select.indexAndCacheCsvFiles=true
    the CSV file loading performance will be significantly improved.
  • Supporting large number of CPU cores. When you run Traffic Parrot on many cores (40 or more) it would fail to start and report an error
    javax.servlet.ServletException: java.lang.IllegalStateException: Insufficient configured threads: required=212 < max=200 for QueuedThreadPool[qtp318353283]@12f9af83{STARTED,8<=168<=200,i=0,r=20,q=0}[ReservedThreadExecutor@71b3bc45{s=0/20,p=0}]
    The fix is to increase the number of threads Jetty can spin up. This was done by exposing two properties to configure HTTP Jetty server thread queues:
    trafficparrot.gui.http.queuedThreadPool.maxThreads=200
    trafficparrot.gui.http.queuedThreadPool.minThreads=8

Changes

  • Performance improvements to dynamic responses
  • Upgraded bundled JRE from 8u222 to 8u262
  • Upgraded WireMock from 2.25.1 to 2.27.1

5.15.0 — 16 Jul 2020

Features

  • Traffic Parrot can now connect to IBM MQ queue managers via SSL channels. You can do this via Native IBM MQ. We have added two new ibm-mq-connections.json properties to support Native IBM MQ SSL connections:
    "sslCipherSuite": "TLS_RSA_WITH_AES_128_CBC_SHA",
    "sslPeerName": "OU=TP IBM MQ"
    To provide the server and client certificates you can add the following config to jvm.args:
    -Djavax.net.ssl.trustStore=certificates/ca-chain.jks
    -Djavax.net.ssl.trustStorePassword=trafficparrot
    -Djavax.net.ssl.keyStore=certificates/mq-client.jks
    -Djavax.net.ssl.keyStorePassword=trafficparrot
    -Dcom.ibm.mq.cfg.useIBMCipherMappings=false

    For more details see Connect to the queue manager via SSL/TLS channels

5.14.1 — 10 Jul 2020

Features

  • A new property that allows to force logging Native IBM MQ message bodys as printable characters instead of UTF8
    trafficparrot.ibmmq.logger.logMessageBodyAsPrintableCharacters=false

Fixes

  • The Native IBM MQ messages can now contain UTF-8 characters, for example Arabic text
  • The Native IBM MQ logs are now correctly displaying UTF-8 characters, for example Arabic text
  • The JMS IBM MQ tutorial example fruit ordering system now supports UTF8 characters, for example Arabic text

5.13.0 — 07 Jul 2020

Features

  • New environment variable that allows configuring how long the startup scripts will wait for TP to start up use TP_STARTUP_WAIT_MILLIS, for example:
    test@test-pcs:~/Downloads/trafficparrot-no-jre-5.x.y$ export TP_STARTUP_WAIT_MILLIS=180000
    test@test-pcs:~/Downloads/trafficparrot-no-jre-5.x.y$ ./start.sh
    /optf/programs/jdk1.8.0_181/bin/java
    Picked up environment startup timeout in milliseconds 180000
  • A new property that allows to specify a replay Native IBM MQ script that will be run on startup
    trafficparrot.ibmmq.start.queue.replay.on.startup.script=classpath:start-ibmmq-queue-replay-on-startup.txt

Changes

  • The SDK Workspace allows now for Native IBM MQ message transformers to specify an MQMessage directly. This allows for creating transforming proxies of messages. A sample has been provided in the SDK workspace.

Fixes

  • Users were unable to update Native IBM MQ mappings in renamed files.

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

  • Added support for IBM®MQ message delays in replay mode
  • Added support for specifying multiple IBM®MQ queues, using queue manager names from ibm-mq-connections.json to record using syntax in script tab in the UI:
    #
    # This is a sample comment
    #
    QueueManager:'Local Docker MQ 9'
    ProxyRequestQueue:'PROXY_PROCESS_PAYMENT'
    LiveRequestQueue:'PROCESS_PAYMENT'
    LiveResponseQueue:'PAYMENT_PROCESSESED'
    ProxyResponseQueue:'PROXY_PAYMENT_PROCESSESED'
    
    
    #
    # This is a sample comment
    #
    QueueManager:'Local Docker MQ 9'
    ProxyRequestQueue:'PROXY_CREATE_ORDER'
    LiveRequestQueue:'CREATE_ORDER'
    LiveResponseQueue:'ORDER_CREATED'
    ProxyResponseQueue:'PROXY_ORDER_CREATED'

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

  • gRPC mapping file name templates when saving mappings via the UI can now be customized with the following properties:
    #
    # Template used for gRPC mapping file names
    #
    # Available properties:
    # {{ mapping.id }}
    # {{ mapping.package }}
    # {{ mapping.service }}
    # {{ mapping.method }}
    # {{ mapping.isSuccess }}
    # {{ mapping.status.name }}
    # {{ mapping.status.code }}
    #
    # Available commands:
    # {{ countGrpcMappings package=mapping.package service=mapping.service method=mapping.method success=true offset=1 format='%02d' }}
    trafficparrot.virtualservice.grpc.saved.mapping.file.name.template={{ mapping.package }}.{{ countGrpcMappings package=mapping.package offset=1 format='%02d' }}.{{ mapping.service }}-{{ mapping.method }}[{{ mapping.status.name }}]
    trafficparrot.virtualservice.grpc.saved.mapping.file.name.collision.suffix.template=-{{ mapping.id }}
                                            
  • When editing a gRPC mapping in the UI you can now choose whether to keep the existing file name or generate a new one according to the template properties when the mapping is saved

5.6.0 — 11 Nov 2019

Features

  • gRPC unmatched requests now display the closest match in both the logs and error response description. For example:
    UNKNOWN: Traffic Parrot Virtual Service: No responses matched the given request. See the Traffic Parrot logs for more details.
                                                   Request was not matched
                                                   =======================
    
    -----------------------------------------------------------------------------------------------------------------------
    | Closest stub                                             | Request                                                  |
    -----------------------------------------------------------------------------------------------------------------------
                                                               |
    helloworldgreetersayhello-38d8ac56-38fe-4a57-89b3-5af8368  |
    874a5.json                                                 |
                                                               |
    ANY                                                        | ANY
    helloworld.Greeter/SayHello                                | helloworld.Greeter/SayHello
                                                               |
    Protocol: GRPC                                             | Protocol: GRPC
                                                               |
    {                                                          | {                                                   <<<<< Body does not match [equalToJson]
      "inputName" : "example"                                  |   "inputName" : "not matching"
    }                                                          | }
                                                               |
    -----------------------------------------------------------------------------------------------------------------------
  • Upgraded WireMock to 2.25.0
  • Upgraded Proto compiler to 3.10.1

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

  • New state management examples added to the examples project

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