grs / qpid-dispatch Goto Github PK
View Code? Open in Web Editor NEWThis project forked from apache/qpid-dispatch
Mirror of Apache Qpid Dispatch
License: Apache License 2.0
This project forked from apache/qpid-dispatch
Mirror of Apache Qpid Dispatch
License: Apache License 2.0
Qpid Dispatch ============= A lightweight AMQP router for building scalable, available, and performant messaging interconnect. Dependencies ============ To build dispatch on a yum-based Linux system, you will need the following packages installed: - qpid-proton-c-devel - python-qpid-proton - cmake - make - gcc - python-devel - cyrus-sasl-plain - cyrus-sasl-devel - asciidoc (for building docs) - asciidoctor (for building docs) The unit tests are implemented using Python's unittest library. Python versions prior to 2.7 do not have this library. In order to run the unit tests using older versions of python the "unittest2" module must be installed. This may be available from your Linux distribution or via pip: pip install unittest2 The command line arguments parsing is done using Python's argparse library. Python versions prior to 2.7 do not have this library. Similar to what happend with unittest2, this may be fixed via pip: pip install argparse Dispatch will not build on Windows. To build formatted documentation (man pages, HTML, PDF) see the requirements in doc/README Building and testing ==================== From the 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 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, for 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 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: # install the lcov package $ yum install lcov # configure and build for the Coverage build type (from the <build> directory): $ cmake -DCMAKE_BUILD_TYPE=Coverage .. && make # run the test suite and generate the coverage html output $ ctest && make coverage # Then point your browser at: <build>/coverage_results/html/index.html Clean build, install and test ============================= $ source config.sh; test.sh This does the following: - NOTE: delete any existing directories 'build' and 'install' - 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 well: 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. 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. 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 .. -DRUNTIME_CHECK=asan The ASAN (libasan) and UBSAN (libubsan) libraries must be installed in order to use this option. False positive leak errors can be suppressed via the lsan.supp file in the tests directory.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.