GithubHelp home page GithubHelp logo

message-bus-performance-testing's Introduction

Build Status

KBS-ASD

message-bus-performance-testing's People

Contributors

arne-jan avatar azure-pipelines[bot] avatar bramblepie avatar gerwinvbeek avatar leroykorterink avatar rubenpannen avatar

Watchers

 avatar  avatar  avatar

Forkers

gerwinvbeek

message-bus-performance-testing's Issues

Cleanup BenchmarkContext

We can remove the TelemetryClient from the BenchmarkContext because it's only used in MessageCaptureContext.

[Faux-applications Send Messages] As tester, I want faux-applications that can send and receive messages through a message broker, so I can perform tests

Actors

  • Tester
  • Faux-application
  • Message Broker

Prerequisite and/or assumptions

  • Message broker is accessible

Acceptance criteria

  • Must be scalable (so it is able to generate more messages when needed)
  • Must be compatible with RabbitMQ and Azure Service Bus
  • At least functional with in-memory
  • Message frequency is random in small variations
  • Message frequency is noise like at large

Description

  • To run a test there has to be something to test on. In this case pretend applications (faux-applications) that will send and receive messages through MassTransit.

Exceptions

  • Can not connect to message broker
    Faux-apps are stopped
    Error message is visible to the tester

[Faux-applications Send Messages] As tester, I want faux-applications which send messages through a message broker, so I can perform tests.

To run a test there has to be something to test on. In this case pretend applications (faux-applications) that will send and receive messages through MassTransit.

Actors

  • Tester
  • Faux-application
  • Message Broker

Prerequisite and/or assumptions

  • The application is automatically deployed
  • A message broker is accessible

Acceptance criteria

  • Must be scalable (so it is able to generate more messages when needed)
  • Must be compatible with RabbitMQ and Azure Service Bus
  • Message frequency is customizable by providing easing function
  • Message size is customizable

Description
To run a test there has to be something to test on. We need an applications (faux-applications) that will send and receive messages through MassTransit.

Exceptions

  • The request will fail when incorrect parameters are given

Additional information

This paragraph should contain any additional information like diagrams, images, datasets etc.

[Start Tests] As a tester, I want an application that can start a new tests with a custom configuration so I can easily and automatically collect reliable and meaningful information.

Actors

  • Tester

Prerequisite and/or assumptions

  • The tester wants to test a MassTransit configuration.

Acceptance criteria

  • I can start a new test using a web interface
  • I can customize the amount of messages
  • I can customize the filler size
  • I can customize the amount of clients
  • I can customize the timeout duration
  • I can customize the type of the testcase
  • I can customize the type of the transport
  • I can customize the timeout duration of the Azure service bus operation.

Description
As a tester you want to be able to start a test from an application. This application must connect to the TestSuite. By doing this the tester can easily start a test without having to do a lot of configurations, this makes testing faster and more reliable.

Exceptions

[Gather test results] As a tester, I want to gather test results in MassTransit, so I have information to analyse performance.

Test results will be collected while the faux-apps are running. Telemetry data will be collected on certain points in the application flow, this data will be stored in a database.

Tasks

  • Implement measurement tools to measure message broker performance #52
  • Store test results #51

Actors

  • Tester
  • Faux-application
  • Azure

Prerequisite and/or assumptions

  • Application can send messages to a message broker
  • Application can receive messages from a message broker

Post conditions

  • Application has gathered test results that can be analysed
  • Results are stored and ready to be analyzed

Acceptance criteria

  • Should minimally impact application performance
  • Should measure according to the details described in the research rapport
  • Should store ready to analyse results for later use

Main scenario

  1. Test wordt gestart in de faux application
  2. The application gathers telemetry data during a test (1)
  3. Results are stored

Exceptions

  1. A test will be terminated when an error occurs during a test

Additional information

This paragraph should contain any additional information like diagrams, images, datasets etc.

[Automatically create test environments] As a tester, I want to automatically create new tests, so there is no need for manual operations when testing a service bus

Actors

  • KBS.Controller
  • Azure App Service webjobs

Prerequisite and/or assumptions

  • The application is automatically deployed with Azure DevOps
  • The webjob that is used to run the benchmark is deployed

Acceptance criteria

  • The test will run with the configuration that is passed through in the body of a POST request.
  • Configuration in the body of the POST request is validated

Description
A webjob with the correct arguments is started when calling an api request on KBS.Controller. The webjob will do its thing and eventually save data in the background. The data can later be retrieved by the frontend where it can be analysed.

Exceptions

  • Invalid configuration, there won't webjob shouldn't be triggered

Additional information

This paragraph should contain any additional information like diagrams, images, datasets etc.

Rename methods in infrastructure manager

I think we should rename the methods in the infrastructure manager.

namespace KBS.Infrastructure
{
    public enum SortType
    {
        CreatedDate = 0,
    }

    public interface IManager
    {
        /// <summary>
        /// Get currently running tests
        /// </summary>
        /// <param name="sort"></param>
        /// <param name="isRunning"></param>
        TestEnvironment GetTests(SortType sort = SortType.CreatedDate, bool isRunning = false);

        /// <summary>
        /// Gets test status of test with given identifier
        /// </summary>
        /// <param name="identifier"></param>
        TestEnvironment GetTest(int identifier);

        /// <summary>
        /// Creates a test environment with the given configuration
        /// </summary>
        /// <param name="configuration"></param>
        void CreateTest(Configuration configuration);
    }
}

Create projects according to the package diagram

List of projects to create:

  • KBS.MessageBus (ClassLibrary)
  • KBS.MessageBusTests (XUnit)
  • KBS.Messages (ClassLibrary)
  • KBS.Controller (ASP .NET Application)
  • KBS.ControllerTests (XUnit)
  • KBS.Infrastructure (ClassLibrary)
  • KBS.InfrastructureTests (XUnit)
  • KBS.FauxApplication (ConsoleApplication)
  • KBS.FauxApplicationTests (XUnit)

[Receive parameters] As a faux-application, I want to be able to follow all received parameters, so I know how to use the message broker.

Actors

  • Faux-application

Prerequisite and/or assumptions

  • The application is automatically deployed with AppVeyor
  • ...

Acceptance criteria

  • Requirement 1
  • ...

Description
This paragraph should contain a detailed description of this story

Exceptions

  • The request will fail when incorrect parameters are given

Additional information

This paragraph should contain any additional information like diagrams, images, datasets etc.

Build cache is not working

The build cache is not working because packages are not cached in the packages directory when using .NET Core.

[Analyse Data] As a tester, I want to be able to analyse data, so I can see which configurations and services are the best for my use case.

Actors

  • Actor 1
  • ...

Prerequisite and/or assumptions

  • The application is automatically deployed with AppVeyor
  • ...

Acceptance criteria

  • Requirement 1
  • ...

Description
This paragraph should contain a detailed description of this story

Exceptions

  • The request will fail when incorrect parameters are given

Additional information

This paragraph should contain any additional information like diagrams, images, datasets etc.

#24 MassTransit has some statics

Describe the bug
The MassTransit framework uses statics classes and methods in the background. Meaning multithreading within the same application can't be easily done.

To Reproduce
Steps to reproduce the behavior:

  1. Just run on any service bus

Expected behavior
Error log: "Another update request is in progress..."

Different Azure Service Bus implemenations

Is your feature request related to a problem? Please describe.
We only use the .NET Core version of Azure Service Bus. It would be interesting to see what the differences are between the MassTransit.Azure.ServiceBus.Core and other Azure service bus implementations.

Describe the solution you'd like
Create new transports for other Azure message bus implementations in KBS.MessageBus.Transports.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.