Introduction to Wilma

What problems does it solve?

For application/component tests, sometimes it is necessary to test a component in a separated environment without the availability of the surrounding components.
In that case we need to emulate the missing components by using stubs.

On the other hand sometimes such surrounding components exist, but either buggy, not reliable, or does not provide the expected messages.
In these situations the connection between the components should be established, and we need to exchange the messages on-the-fly (i.e. instead of proxying the message, a stub response need to be generated).

What the tool/product does?

  • Acts as Transparent Proxy between components those use http(s) communication. (Even 2-way SSL.)
  • Captures, decodes and saves the traffic, and based on the decoded messages, - if that is necessary - it is able to give self-generated answer for a request (i.e. can act as a Stub Service).
  • The stub part is configurable, on-the-fly, to ensure its usage for both automated and manual tests.
  • By using message interceptors, it is possible to alter the messages, real-time, and on-the-fly.
  • By using the provided interfaces, product specific expansions (special stub response creators, stub response formatters) can easily be added to the tool.
  • As the messages are stored, can be used for trouble shooting too (even if only the proxy feature is in use).
  • And a lots of other things, please see full list of features that Wilma can do for you here...

How it works?

As it is a combined proxy and service stub. The component that sends the request to another component, should use Wilma as a simple HTTP/HTTPS proxy. By evaluating the captured request Wilma decides whether need to act as proxy - then simply forward the request to the original target - or need to act as stub - in this case generates a response. 
Configuring its behavior happens via JSON config, that can be uploaded (therefore changed) via UI or via service on the fly. Wilma can be used as proxy and stub for several components/services in parallel, and can be used in test environment that contains microservices.

So how does it help me?

Several ways:

  • in case there is an app that communicates to other components (SOA environment or by simply using 3rd party services/microservices) but need to be tested without the availability of other components, Wilma can act as stub. It can be - among others - a local development environment or a CI environment
  • in similar case, if some of the components are available but some not, Wilma can stub the missing ones, meanwhile proxying the request to the available components
  • also if there is a new feature in a 3rd party component/service, that will be developed later, and not yet available, and if the IF is defined, Wilma can emulate the new feature of the 3rd party component/service, and the feature in your component can be developed without waiting for the implementation of the feature in the 3rd party component/service
  • also it is possible to emulate special behavior of 3rd party components/services like: timeouts, slow or bad answers, special error answers/error codes - without doing special test environment setup changes, and even if forcing the 3rd party component/service to produce such special answers would be hard/impossible
  • also - as it can log the messages - it helps testers/developers in troubleshooting, since the logged messages can be analysed - also such recorded messages can be used as base of stub responses

Is it an application or a framework?

It consists of two standalone applications:

  • Wilma application
  • Wilma Message Search application

Wilma application acts as a proxy between two components/services those are communicating over HTTP/HTTPS.
Note: Many components/services can use the same Wilma instance. In optimal case, all components in a test environment use the same Wilma instance. It logs all the messages, and makes it possible to stub responses based on configuration defined in JSON file(s). It can be used/configured immediately. But accepts further add-ons:

  • you may create your own class (even jar) to be used during request message evaluation if proxy or stub response should be used (by implementing the necessary condition-checker interface)
  • you may create your own class (even jar) to format/generate stub responses (by implementing the necessary template-formatter interface)
  • you may create your own class (even jar) to intercept and analyse the request/response messages on the fly (by implementing the necessary interceptor interface)
  • and yes, everything can be uploaded via UI / service on-the-fly
Wilma Message Search application is a high performance search engine, offers searching of the request-response pairs those were logged by Wilma application.

Where I can get further info? 

  • For Wilma developers and contributors (and whoever is interested in insights), please continue here...
  • As a Wilma End-User, please continue here...
  • If you are interested in tricky situations the end-users faced with, please continue here...