Bus Clients Testing Framework

Jun 1, 2020 - Oct 1, 2020

Overview

To work with message bus you needed to use a library for your software language. Our mostly used in company were C++, php, golang and js. So we needed to verify that libraries are up to date with the message bus itself and with updates of either client libraries or bus, nothing would break.

 

We had a set of typescript tests that controlled the client library via adapters and GRPC protocol, receiving all updates by grpc streaming. These adapters were the second component allowing to use of client libraries independent from their languages.

System Diagram

Autotest System

My Role

  • Designed a testing framework to accommodate the asynchronous nature of the message bus and client libraries.

    • Developed golang adapter to plug-in golang library for message bus.

    • Developed a universal suite of tests in typescript.

    • Developed major part of the testing framework.

    • Created infrastructure to run these tests in CI.

     

  • Some things to highlight:

    • Utilized GRPC streaming and TypeScript's asynchronous support to overcome the challenge of highly async nature of message bus communication.

    • Enabled running identical tests in various programming languages.

    • Reduced code duplication by avoiding the need to write separate tests for each client library.

    • Maintained test consistency across different clients and ensured proper functionality.

    • Similar approach to "playwright" with lightweight client libraries and standardized communication using GRPC protocol.