Skip to content
Snippets Groups Projects
Forked from asapo / asapo
403 commits behind the upstream repository.
  • Marc-Olivier Andrez's avatar
    64b99e3b
    build: use `GTest` CMake module to handle dependencies on gtest · 64b99e3b
    Marc-Olivier Andrez authored
    As a consequence, we can remove code in CMake files to handle these
    dependencies on `gtest` and `gmock`, which fixes the following error
    when running CMake:
    
    ```sh
    $ cmake -G Ninja ../.. -DPython_EXECUTABLE=python3.7 -DBUILD_TESTS=ON -DENABLE_COVERAGE=ON -DBUILD_CPP_DOCS=ON -DBUILD_PYTHON_DOCS=ON
    ...
    CMake Error at CMakeModules/testing_cpp.cmake:47 (IF):
      if given arguments:
    
        "WIN32" "AND" "STREQUAL" "Debug"
    
      Unknown arguments specified
    Call Stack (most recent call first):
      common/cpp/src/common/CMakeLists.txt:11 (add_plain_unit_test)
    ```
    64b99e3b
    History
    build: use `GTest` CMake module to handle dependencies on gtest
    Marc-Olivier Andrez authored
    As a consequence, we can remove code in CMake files to handle these
    dependencies on `gtest` and `gmock`, which fixes the following error
    when running CMake:
    
    ```sh
    $ cmake -G Ninja ../.. -DPython_EXECUTABLE=python3.7 -DBUILD_TESTS=ON -DENABLE_COVERAGE=ON -DBUILD_CPP_DOCS=ON -DBUILD_PYTHON_DOCS=ON
    ...
    CMake Error at CMakeModules/testing_cpp.cmake:47 (IF):
      if given arguments:
    
        "WIN32" "AND" "STREQUAL" "Debug"
    
      Unknown arguments specified
    Call Stack (most recent call first):
      common/cpp/src/common/CMakeLists.txt:11 (add_plain_unit_test)
    ```

ASAP::O - High performance distributed streaming platform

The client packages are located here. Use the following token to get them: f3Q1jP6z8wZy85TUsD8R.

Example:

pip install asapo-consumer --index-url https://\_\_token\_\_:f3Q1jP6z8wZy85TUsD8R@gitlab.desy.de/api/v4/projects/2236/packages/pypi/simple

Folder structure

Microservices

  • authorizer - authorization (Go)
  • broker - server for consumer clients (Go)
  • discovery - discovery service (Go)
  • file_transfer - file transfer service to deliver files to clients that have no access to storage (Go)
  • receiver - server for producer clients to send data to, also contains data server that is contacted by consumer clients to get data from cache (C++)

Client libraries

  • producer - producer libraries (C++, C, Python)
  • consumer - consumer libraries (C++, C, Python)

Docs & Tests

  • docs - doxygen,sphinx and site documentation
  • tests - automatic integration/e2e tests
  • docs/site/examples - examples used for site
  • examples - some outdated examples, also used for automated tests, (todo: move it somewhere)

Auxiliary folders

  • common - stuff to be shared between microservices
  • CMakeIncludes, CMakeModules, install - CMake stuff
  • config - to store various config files, also nomad jobs for tests
  • deploy - Docker files for various images, Helm files, Nomad&Consul files

Building

Prepare dependencies

depending on configuration, you might need need curllib, mongoc, google tests

  • cd 3d_party/mongo-c-driver

  • ./install.sh $(pwd)

  • sudo make -C mongo-c-driver-1.17.2 install

  • back in the asapo-dir:

  • mkdir build

  • (cd build; cmake ..)

With documentation

Need Doxygen >= 1.8.10 and sphinx

  • mkdir build
  • cd build
  • cmake -DBUILD_CPP_DOCS=ON _DBUILD_PYTHON_DOCS ..

With tests

Need googletest >= 1.8.0

  • mkdir build
  • cd build
  • cmake -DBUILD_TESTS=ON ..

The software is MIT licensed (see LICENSE.txt) and uses third party libraries that are distributed under their own terms (see LICENSE-3RD-PARTY.txt)

with non-standard 3rd party libraries paths

  • cmake -Dlibmongoc-static-1.0_DIR=... -Dlibbson-static-1.0_DIR=... -DLIBCURL_DIR=... ...

compile

  • make -j 4

or compile specific target only, e.g.

  • make -j 4 receiver