All Projects → apache → qpid-dispatch

apache / qpid-dispatch

Licence: Apache-2.0 License
Mirror of Apache Qpid Dispatch

Programming Languages

python
139335 projects - #7 most used programming language
c
50402 projects - #5 most used programming language
javascript
184084 projects - #8 most used programming language
C++
36643 projects - #6 most used programming language
CMake
9771 projects
CSS
56736 projects

Projects that are alternatives of or similar to qpid-dispatch

qpid-broker-j
Mirror of Apache Qpid Broker-J
Stars: ✭ 52 (-16.13%)
Mutual labels:  amqp, messaging, apache, network-server, amqp10, qpid, amqps
qpid-cpp
Mirror of Apache Qpid C++
Stars: ✭ 77 (+24.19%)
Mutual labels:  amqp, messaging, apache, network-server, amqp10, qpid, amqps
qpid-jms
Mirror of Apache Qpid JMS
Stars: ✭ 60 (-3.23%)
Mutual labels:  amqp, messaging, apache, amqp10, qpid, amqps
qpid-proton-j
Mirror of Apache Qpid Proton-J
Stars: ✭ 28 (-54.84%)
Mutual labels:  amqp, messaging, apache, amqp10, qpid
qpid-python
Mirror of Apache Qpid Python
Stars: ✭ 15 (-75.81%)
Mutual labels:  amqp, messaging, apache, qpid, amqps
Qpid Proton
Mirror of Apache Qpid Proton
Stars: ✭ 164 (+164.52%)
Mutual labels:  amqp, messaging, apache
azure-service-bus-go
Golang library for Azure Service Bus -- https://aka.ms/azsb
Stars: ✭ 67 (+8.06%)
Mutual labels:  amqp, messaging, amqp10
Azure Event Hubs
☁️ Cloud-scale telemetry ingestion from any stream of data with Azure Event Hubs
Stars: ✭ 233 (+275.81%)
Mutual labels:  amqp, messaging, apache
Activemq Artemis
Mirror of Apache ActiveMQ Artemis
Stars: ✭ 685 (+1004.84%)
Mutual labels:  amqp, messaging, apache
Enmasse
EnMasse - Self-service messaging on Kubernetes and OpenShift
Stars: ✭ 185 (+198.39%)
Mutual labels:  amqp, messaging
Azure Service Bus Dotnet
☁️ .NET Standard client library for Azure Service Bus
Stars: ✭ 237 (+282.26%)
Mutual labels:  amqp, messaging
aop
AMQP on Pulsar protocol handler
Stars: ✭ 93 (+50%)
Mutual labels:  amqp, messaging
Laravel Queue
Laravel Enqueue message queue extension. Supports AMQP, Amazon SQS, Kafka, Google PubSub, Redis, STOMP, Gearman, Beanstalk and others
Stars: ✭ 155 (+150%)
Mutual labels:  amqp, messaging
Garagemq
AMQP message broker implemented with golang
Stars: ✭ 153 (+146.77%)
Mutual labels:  amqp, messaging
Bunny
Bunny is a popular, easy to use, mature Ruby client for RabbitMQ
Stars: ✭ 1,224 (+1874.19%)
Mutual labels:  amqp, messaging
azure-service-bus-java
☁️ Java client library for Azure Service Bus
Stars: ✭ 61 (-1.61%)
Mutual labels:  amqp, messaging
couchdb-pkg
Apache CouchDB Packaging support files
Stars: ✭ 24 (-61.29%)
Mutual labels:  apache, network-server
gobroker
golang wrapper for all (to-be) kinds of message brokers
Stars: ✭ 15 (-75.81%)
Mutual labels:  amqp, messaging
amqv7-workshop
No description or website provided.
Stars: ✭ 22 (-64.52%)
Mutual labels:  messaging, qpid-dispatch-router
Rabbitmq Server
Open source RabbitMQ: core server and tier 1 (built-in) plugins
Stars: ✭ 9,064 (+14519.35%)
Mutual labels:  amqp, messaging

Qpid Dispatch

GitHub Actions Travis License

Qpid Dispatch is a high-performance, lightweight AMQP 1.0 message router. It provides flexible and scalable interconnect between any AMQP endpoints, whether they be clients, brokers or other AMQP-enabled services.

Building and testing

Note
Dispatch will not build on Windows.

Dependencies

To build dispatch on a yum-based Linux system, you will need the following packages installed:

  • qpid-proton-c-devel

  • python3-qpid-proton

  • cmake

  • make

  • gcc

  • python3-devel

  • cyrus-sasl-plain

  • cyrus-sasl-devel

  • asciidoc (for building docs)

  • asciidoctor (for building docs)

To build formatted documentation (man pages, HTML, PDF) see the requirements in doc/README.adoc

Build

From the qpid-dispatch directory:

$ mkdir my_build    # or directory of your choice.
$ cd my_build
$ cmake ..
$ make

Running The Tests

From the <build> directory you can run all the system- and unit-tests with:

$ ctest -VV

ctest uses the script <build>/test/run.py to set up the correct environment for tests. You can use it to run tests individually from the <build>/tests directory.

Example
$ ./run.py unit_tests_size 3
$ ./run.py -m unittest system_tests_qdstat

Run it without arguments to get a summary of how it can be used:

$ ./run.py

Test-only dependencies

Websocket system tests use the Python websockets asyncio module.

Install websockets
pip3 install --user websockets

The system tests are implemented using Python’s unittest library. This library is used to run the tests by default. The tests can be also run using xmlrunner or pytest. Pytest can generate a JUnit-compatible XML report containing an entry for each Python test method. After running the tests, all XML reports will be found under tests/junitxmls in your build directory:

cmake .. -DPYTHON_TEST_COMMAND='-m;pytest;-vs;--junit-xml=junitxmls/${py_test_module}.xml;--pyargs;${py_test_module}'

Test Suite Code Coverage (GNU tools only)

Use coverage analysis to ensure that all code paths are exercised by the test suite. To run the tests and perform code coverage analysis:

  1. install the lcov package

    $ yum install lcov
  2. configure and build for the Coverage build type (from the <build> directory):

    $ cmake -DCMAKE_BUILD_TYPE=Coverage .. && make
  3. run the test suite and generate the coverage html output

    $ ctest && make coverage
  4. then point your browser at <build>/coverage_results/html/index.html

Clean build, install and test

$ source config.sh; test.sh
Warning
Any preexisting directories 'build' and 'install' will be deleted.

This script then does the following:

  • Do a fresh cmake and make in directory 'build'

  • Run unit tests (not system tests) in 'build'

  • Do 'make install' into the directory 'install'

  • Run system tests on the installation in 'install'.

Run Time Validation

The CTest test suite can be configured to enable extra run time validation checks against the dispatch router.

Since run time validation slows down qdrouter considerably it is disabled by default. It can be enabled by setting the RUNTIME_CHECK build flag via the cmake command.

Note
Depending on your environment the ctest suite may time out if validation is enabled due to the additional run time overhead it adds. You can extend the default test time via the ctest --timeout option.
Example
ctest --timeout 1500 -VV

The Qpid Dispatch Router test suite supports the following run time validation tools:

Valgrind Memcheck

Runs qdrouterd under Valgrind’s memcheck leak checker during the CTest suite. This will cause tests to fail if a memory error is encountered. Use the grinder tool (in the bin directory) to create a summary of the errors found during the test run.

The valgrind toolset must be installed in order to use memcheck.

To enable memcheck set the RUNTIME_CHECK build flag to "memcheck":

cmake .. -DRUNTIME_CHECK=memcheck

If valgrind detects errors the qdrouterd process will exit with an exit code of 42. This will be displayed in the CTest output. For example:

RuntimeError: Errors during teardown:
Process XXXX error: exit code 42, expected 0

GCC/Clang Thread Sanitizer (TSAN)

This option turns on extra run time threading verification.

Note
Applicable only to GCC versions >= 7.4 and Clang versions >= 6.0.

To enable the thread sanitizer set the RUNTIME_CHECK build flag to "tsan":

cmake .. -DRUNTIME_CHECK=tsan

The TSAN library (libtsan) must be installed in order to use this option.

If threading violations are detected during the CTest suite the qdrouterd process will exit with an exit code of 66. This will be displayed in the CTest output. For example:

RuntimeError: Errors during teardown:
Process XXXX error: exit code 66, expected 0

False positives can be suppressed via the tsan.supp file in the tests directory.

GCC/Clang Address Sanitizer (ASAN)

This option turns on extra run time memory verification, including leak checks.

Note
Applicable only to GCC versions >= 5.4 and Clang versions >= 6.0.

To enable the address sanitizer set the RUNTIME_CHECK build flag to "asan":

cmake .. -DCMAKE_C_FLAGS=-DQD_MEMORY_DEBUG -DRUNTIME_CHECK=asan

On Aarch64, a hardware-assisted address sanitizer is enabled with "hwasan":

cmake .. -DCMAKE_C_FLAGS=-DQD_MEMORY_DEBUG -DRUNTIME_CHECK=hwasan

The ASAN (libasan) and UBSAN (libubsan) libraries must be installed in order to use this option.

Note
Memory pool will produce false leak reports unless QD_MEMORY_DEBUG is also defined.

False positive leak errors can be suppressed via the lsan.supp file in the tests directory.

CMake Build Options

Use cmake-gui to explore the CMake build options available. Existing build directory can be opened with cmake-gui -S .. -B .

CMake option Description

-DCMAKE_BUILD_TYPE=

Dispatch defaults to building with the RelWithDebInfo CMake preset. Other options include Debug (disables optimizations) and Coverage.

-DQD_ENABLE_ASSERTIONS=

Seting this to ON enables asserts irrespective of CMAKE_BUILD_TYPE.

-DCONSOLE_INSTALL=

Web console will not be built if this is set to OFF.

-DRUNTIME_CHECK=

Enables C/C++ runtime checkers.See "Run Time Validation" chapter above.

-DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON

With CMake 3.9+, compiles the project with LTO (Link Time Optimization) enabled. Older CMake will only honor this option with the Intel compiler on Linux.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].