X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=README.md;h=a8f9a350cf16892c3d89c97d4aff20c235093301;hb=HEAD;hp=96d751e7b6bbef2a4404e579089cf38f3593d8fa;hpb=ef2bf51d04aaf01fa0cabdcaf905b23423067662;p=ric-plt%2Fsdl.git diff --git a/README.md b/README.md index 96d751e..a8f9a35 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,9 @@ ## Documentation -Documentation is generated with `doxygen` tool. +Documentation is generated with `doxygen` tool. Dependency to `doxygen` +tool is optional. If not installed, then `doxygen-doc` target will not +be created to Makefile. By default `make doxygen-doc` creates HTML, PDF and PS documents (if the needed tools are available). The documents are created to: @@ -33,10 +35,34 @@ directory named `shareddatalayer`. ### Dependencies -Currently, the following libraries are required while building: +Build-time dependencies: - boost-devel - hiredis-devel + libboost (system, filesystem, program-options) + hiredis + rpm + valgrind + autoconf-archive + doxygen (optional) + +Commands to install dependent packages in Fedora: + + sudo dnf install boost-devel + sudo dnf install hiredis-devel + sudo dnf install rpm + sudo dnf install valgrind + sudo dnf install autoconf-archive + sudo dnf install doxygen + +Commands to install dependent packages in Debian/Ubuntu: + + sudo apt install libboost-filesystem-dev + sudo apt install libboost-program-options-dev + sudo apt install libboost-system-dev + sudo apt install libhiredis-dev + sudo apt install rpm + sudo apt install valgrind + sudo apt install autoconf-archive + sudo apt install doxygen ### Compilation in the source directory @@ -61,7 +87,11 @@ By default the shared library is installed to `/usr/local/lib` and headers into to `/usr/local/include`. If this is not desired, then provide different path when running `configure`, for example: - ./configure --prefix=$HOME + ./configure --prefix=$HOME/usr/local + +In above example SDL pkg-config .pc file is installed to `$HOME/usr/local/lib/pkgconfig` +directory. This directory should be included to `PKG_CONFIG_PATH` while building +the application which is using the SDL API library. Note that `configure` command allows plethora of additional options. For more info: @@ -72,6 +102,11 @@ After configuration has been done, run: make install +In some cases dynamic linker cache needs to be manually refreshed after SDL API +has been re-installed: + + ldconfig + ### Redis modules When Redis is used, SDL requires that the following Redis extension commands @@ -148,6 +183,43 @@ line options gtest supports, for example: make testrunner ./testrunner --help +## Running unit tests with gcov + +Enable unit test gcov code coverage analysis by configuring gcov reporting +directory: + + ./configure --with-gcov-report-dir=DIR + +Directory can be an absolute path or a relative path to an SDL source root. +Unit test build creates directory if it does not exist. + +Build and run unit tests with code coverage analysis: + + make test_gcov + +After successful unit test run code coverage (.gcov) result files are in +a directory, what was defined by '--with-gcov-report-dir' configure option. + +In addition, graphical gcov front-ends such as lcov can be used for coverage +analysis: + + lcov --directory tst/ --directory src --capture --output-file coverage.info + genhtml coverage.info --output-directory out + +Open the out/index.html using any web browser. + +## Docker Tests + +It's also possible to test SDL compilation, run unit tests and test building of +rpm and Debian packages in a Docker: + + docker build --no-cache -f docker_test/Dockerfile-Test -t sdltest:latest . + +If needed, ready rpm and Debian packages can be copied from Docker to host. In +below example packages are copied to host's /tmp/sdltest-packages directory: + + docker run -v /tmp/sdltest-packages:/export sdltest:latest /export + ## Using SDL in application pod SDL is not yet available in O-RAN-SC PackageCloud.io repository.