Releases: epam/Wilma
V2.5.493
This release is focusing on bugfixes and improvements:
- Bugfixes and enhancement at response formatting - update of response status code and reason phrase are possible now.
- Bugfixes and enhancement at JsonPathChecker and JsonResponseFormatter classes.
- New usage example in Extras: Mock JSON Service - see more details here.
- New usage example in Extras: Response Auto Fixer - see more details here.
- Upgrade Wilma proxy part to use the latest version of mitmJavaProxy. Please also note that as a consequence of this upgrade, the Wilma certificate had to be upgraded, this also means in case you use HTTPS support, then updating the Wilma certificate file is necessary at your environment.
- Mass upgrade of 3rd party libraries, including test libraries.
- New version of Java API for Wilma V2.5.493 has been released.
- New version of .NET API for Wilma V2.5.1 has been released.
Pls see changelog:
Full Changelog: V2.3.480...V2.5.493
V2.3.480
- Wilma interceptor package name changed (non-backward compatible change) now the package name is: com.epam.wilma.mitmproxy.interceptor
- Bug with negate flag on conditions in stub configuration is fixed
- Gradle build upgraded to 7.4.2
- mitmjavaproxy lib upgraded to its latest version
- JDK 15 is in use
There was no update on Java and .NET supporting libraries.
V2.2.461
This release contains enhancement: brotli content encoding is supported by Wilma from now on.
There was no update on Java and .NET supporting libraries.
V2.1.460
This is a maintenance update for Wilma - with this version the V2.x can be considered as stable.
The main change is that its internal proxy is upgraded, and with this change majority of the known HTTPS issues were fixed.
Other changes are:
- upgrades and consolidation of the used libraries
- form now on using gradle 7.0 for build
- example plugins reviewed
There was no update on Java and .NET supporting libraries.
V2.0.459
This is the brand new V2.0 release of Wilma with lots of changes since V1.6. The list of mayor changes:
- The proxy engine (that was tailored originally from BrowserMob Proxy to support 2-way-SSL and other features of Wilma, like response volatility) had to be renewed with a version that supports Java >8, and supports the new TLS (1.2, 1.3) protocols. From now on the used proxy is MITM Java Proxy.
- Supports OpenJdk 11, 13.
- Gradle is upgraded to version 6.7.
- The most important change is that we moved away from the XML based configuration to a JSON based configuration. See more details here.
- The Java API lib to work with this release is: V2.0.451 from here
- The .NET API lib to work with this release is: V2.0.0 from here.
V1.6.229 - Maintenance Release
This V1.6 release of Wilma is focusing on documentation, code quality and on example usages.
- Several example plugins are developed. These plug-ins can be found as sources under "wilma-extras" folder:
- Plugin: Look-And-Say - see details here: https://en.wikipedia.org/wiki/Look-and-say_sequence nothing special, just to show that Wilma is able to provide an independent web service. Issue: #78. See details here.
- Plugin: ShortCircuit - in case a request has happened before, and the answer is known, Wilma uses the previously recorded answer (so stub it), otherwise act as proxy and record the answer - next time can be used. So technically this is a cache plugin. Issue: #71. See more details here.
- Plugin: Replicator - an example that shows how to send the original request (meanwhile normally proxying it) to another target too -> later the 2 request and response can be compared. Good for comparing the behavior of 2 different (maybe just in version) component that receives the same request. Good to deliver a request to both a legacy and a new service. Issue: #79. See more details here.
- Plugin: Bulkhead - An example implementation of using Wilma as a Bulkhead. What is Bulkhead? Bulkhead takes its name from a principle of ship design where walls or barriers separate the ship into watertight compartments so that, if the hull is breached, the failure is limited to a specific compartment and prevents (or delays) the ship from sinking. The "water" in this analogy is heavy request load saturating the system entry points (a component entry points) or the failure of a dependent service. In cloud application architecture or microservices architecture, using bulkheads between components/microservices of the system means protecting specific components/microservices from heavy lead/when it is replaced, etc.. Issue: #72. See more details here.
- Plugin: Random Error Generator - The Random Error Generator's job is to touch the responses randomly and instead of letting the original response arriving, cause: E404, E500s and request timeouts. The idea is very close to Chaos Monkey of Netflix - just not for instances, but for services. Issue: #70. See more details here.
- Plugin: Circuit Breaker - If you are familiar with microservices, then you know what "Circuit Breaker" means. This plugin is an example implementation. Issue: #60. See more details here.
- Plugin: Reverse Proxy - An example implementation of Reverse Proxy functionality by using Wilma. Issue: #73. See more details here.
- Further improvements:
- Brand new Postman collection is available to give example on majority of Wilma API calls, and for example plugins (only works when the plugin is loaded properly).
- Visibility of active interceptors is added to the UI - However it is easy to get information about the active interceptors via API and/or by checking the source of the stub configuration, it would be a little bit better to see them listed on UI too. Issue: #74 - implemented.
- Using all built-in condition classes with their short names - In the past, it was possibble to use several built-in condition classes only by using their full class name. With this enhancement, using their short class name is enough. See more details at issues #95.
- Further code quality enhancements - see issue: #9, #97.
- Gradle build was upgraded to version 4.9, SonarQube to 7.2.1
- This release is supposed to be the latest release using Oracle Java 8.
As usual, the release is available as docker images too.
V1.5.195 - Service Endpoint Extension for plugins and Stub Configuration via Service API
This V1.5 release of Wilma is focusing on brand new features you would love for sure. See related tickets: #65, #77, #78.
In Details:
- A new feature was added to Wilma: by implementing ExternalWilmaService interface, it is possible to communicate with your external plugins directly by using HTTP/REST calls. The list of available such external plugin services are available here:
http://wilma_host:wilma_port/config/public/services
- see further details here and here. - Java Service API is extended with the possibility of configuring Wilma stub via method calls, and without using any XML-s. See more details here. The Java Service API version is: 1.5.177.
- HTTPS connection enhancement - Some clients identified those expect that the CONNECT requests are not closed in case of a HTTPS call. By default Wilma closes those requests, but by setting the
proxy.connect.keepalive
property totrue
, such requests will not be closed. One of the known clients those might need this feature is: .NET Web Application. - New Example, a special plug-in for Wilma: Look-and-Say Service - A new example plugin was created to show the extensibility feature of Wilma. Read more about this example plug-in here.
- New Example: Short Circuit - an example solution on how to implement a Short Circuit with Wilma. What is Short Circuit? A proxy that records request/responses, puts them into an internal cache, and if a request arrives that was previously requested, then answer will be responded by Wilma ( = use response from the cache). The cache content can be listed, saved to a folder, and an old cache can be loaded as well. See details here.
- Additional built-in Condition Checkers added to check request method (check if the request was a GET, POST, PUT, DELETE, HEAD or OPTIONS method). See details here.
- Wilma configuration and remote monitoring is enhanced by allowing to overwrite the internal RMI port by specifying the "com.sun.management.jmxremote.rmi.port" system property.
V1.4.137 - Real-time request/response message substitution implemented
This V1.4.137 release of Wilma is focusing on a brand new feature: real-time message substitution, meaning that the request or response message that would go through the proxy/stub can be altered, even replaced completely. The addressed issue is #67. See details on how to do the real-time message substitution here.
Further improvements:
- The name generation of the logged messages was changed. It is possible to add a prefix of every Wilma instance. You may set it by specifying a new Wilma property:
wilma.instance.prefix
. If it is empty, nothing changes, but when there is a value, that value will be added to the front of the logged messages. Also it is possible to add a custom postfix to the name, by using interceptors. See more details on this feature here - The content structure of the logged messages was changed a bit, as the headers can be altered, now it explicitly shows what headers were removed and what headers were added/changed
- Buggy custom (plugged-in) interceptors may cause exceptions in Wilma resulting in dropping the specific request/response. Now it is fixed: Exception caused by the bad interceptor is logged, but no message lost
- It is now possible to configure the Wilma -> Wilma Message Search ActiveMQ communication properties (hostname and port) that opens the possibility of having numerous Wilma instance working with a single Wilma Message Search. Also it is possible to have Wilma instance and Wilma Message Search on different (virtual) machines
Service API is extended to handle the new Response Volatility settings (status/on/off). (Java: V1.4.137, .NET: V1.4.5853.30788)
In case you upgrade, Wilma jars and the wilma.conf.properties file should be updated.
As usual, the release is available as docker images too.
V1.3.111 - New Service Lib for .NET & Microservice Support
This V1.3.111 release of Wilma is focusing on the new .NET service library and more support to use Wilma in microservice environment.
- A new library is created to support Wilma users in .NET environment. From now on you may use Wilma and configure it easily even if you use .NET environment (C# language). See details here. The addressed issue is #58.
- To make Wilma more usable in microservice environment, an important architecture change was applied. There is a message marker part in Wilma, that is responsible to generate ID for every request and response pairs, and this ID is used to pair the messages, to identify the message when a stub response is generated by the internal web application, and when the messages are saved onto disk. This part was moved from Wilma code base to the proxy code base. With this change, the message marking become more reliable, and the performance limit (as there was a max of 9999 message per second) eliminated (including the related property values). A new property is added "message.marking" that is off in the default configuration file. In case you would like to get Wilma-Message-ID information added to the header (rare situation), turn it on. The addressed issue is #64.
- Service API is extended to handle the new Message Marking (status/on/off) property. (Java: V1.3.100, .NET: V1.3.5806.30725)
In case you upgrade, Wilma jars and the wilma.conf.properties file should be updated.
V1.2.83
This V1.2.83 release of Wilma is focusing on stability.
- Travis CI is now in use, you may see build results always here: https://travis-ci.org/epam/Wilma
- The release is available as Docker images too, from Docker Hub. See details: https://github.com/epam/Wilma/wiki/Docker-image-of-Wilma (see #61)
- Further stability improvements implemented within Wilma (around ActiveMQ memory and DLQ handling) ensuring Wilma stability even in extreme load circumstances (see #62)
- Bugfix to handle image/svg+xml content types correctly and improve JSON file pretty printing (see #63)
- About 8 Mbyte smaller Wilma jar size reached by huge code optimization in proxy part (big amount of unused codes and libs were removed) (see #59, #14)