Making it easy to play with Maestro

Maestro is a collection of tools that can be used for distributed performance testing. It is oriented towards testing of messaging oriented middleware (MOM), such as Apache ActiveMQ and its successor Apache Artemis , but can be extended to other performance test use cases.

Because Maestro forms a test cluster, it requires several components to run and deploying it can be tricky.

In order to simplify the development process as well as simplify it for users hoping to play with and run local tests, I created a set of containers (handled by Docker Compose) that can deploy a Maestro Test Cluster for local testing.

The process is extremely simple and you can go from 0 to the actual test execution in 3 commands (supposing docker-compose is already installed on your system):

1. Build and run the containers:

2.Run the client:

3. Execute a test (within the client):

After the test is completed, just point the browser to http://localhost:8000/ to read the report and view the details.

Additional details about this, such as how to tweak the tests or use a different messaging project, are available in this document within the Maestro Java source code.

 

MQTT Cheat Sheet

The MQTT (Message Queue Telemetry Transport) messaging protocol is a lightweight protocol well suited for the Internet of Things. It is a simple protocol and an ISO standard. It comes with an extensible reference documentation.

To help me learn about it and simplify my work flow, I created this cheat sheet (warning: PDF) which highlights the most relevant details about the protocol. You can also see it online here.

 

EOY 2016 links

Some links about interesting things I’ve read or watched by the end of 2016. Further comments are provided on each item of the list.

 

About Quality Engineering

For the most part of my professional life I worked as an IT Specialist in Brazil. An IT specialist is a professional that designs, develops, employs or maintains information technology systems. It is a pretty broad term that may encompass several different different job roles (from database administrators to software engineers to production support analysts). In my case, I was engaged with 2 primary activities: software development and application architecture.

All of that changed 3 months when I left my IT Specialist job in Brazil and moved to Czech Republic to work as a Software Quality Engineer (aka Quality Engineer) for Middleware Messaging products. Since then, a few friends had come to me to ask: a) what I am doing, b) what exactly a Quality Engineer does and c) do you write code. With that said, I think I have answered question ‘a’. Since question ‘a’ is already answered,  let me explain what is a Software Quality Engineer (SQE) and it does.

A SQE is a specialized type of engineer that works on all phases of development to design, develop and execute tools, process and strategies to ensure that software products meet or exceed desired levels of quality (with quality being defined as the degree of excellence of an item or product).

A SQE usually:

  • Design, develop and maintain tools to perform automated testing
  • Develop and maintain automated test cases
  • Elaborate and implement Continuous Integration (CI) and Continuous Delivery (CD) strategies including its infrastructure and support tools
  • Help to investigate and verify security issues
  • Elaborate and execute test plans
  • Define and implement software quality metrics and design, develop and maintain tools to collect them
  • Review product documentation

Whether an SQE writes code depends on what type of products it works with. For example, in my case I work with tools for messaging and enterprise application integration, therefore I tend to write code quite frequently, as most of these products are used by software developers, IT specialists and IT architects to integrate disparate systems.

References:

 

 

 

Simplifying JMS testing with embeddable brokers

Ever hoped for an easy way to run embed brokers and simulate a full cycle JMS messaging cycle? Well, this pet project of mine may be useful for you (or, at least, give you an idea for an implementation). It works on top of JUnit, by providing a JUnit test runner, a JMS provider, a set of JMS-related annotations that will inject object instances and additional utility classes to simplify dealing with JMS. At the moment it works only with ActiveMQ, but adding additional providers should be fairly easy.

Here’s example of the a test class that sends and receives data through an embeddable ActiveMQ broker:

It’s pretty simple as of now, but I can see some interesting uses for running certain types of tests.

You can find the project page here.