tests: Shorten paths to the NETCONF listening socket

On any Unix, there's a limit on the maximal length of a UNIX socket
path. Linux defines that to 108 characters (`UNIX_PATH_MAX` in
`<linux/un.h>`, [1]), and of course that was too long for my particular
build setup:

 >>> len('/home/jkt/work/prog/_build/czechlight-clang-11/netconf-cli/test_netopeer_files/test_datastore_access_netconf.sock')
 113

Because the build dir prefix is outside of our control, let's just use
a relative path. Tests are supposed [2] to run from the
`CMAKE_CURRENT_BINARY_DIR`, so this should be safe.

The awesome bit about this is that it's actually "mostly OK" to use
these longer path names because they appear to be silently truncated.
The tests still run, a socket gets created, and the test manages to
connect just fine. The failure is only visible when a `*_cleanup` test
runs which tries to `rm` a non-existing path.

[1] https://github.com/torvalds/linux/blob/master/include/uapi/linux/un.h
[2] https://cmake.org/cmake/help/latest/prop_test/WORKING_DIRECTORY.html#prop_test:WORKING_DIRECTORY

Change-Id: Ibd96fc779d0ec6174e081b41004a15a6afb8eb35
1 file changed
tree: f6d5bc7f1ff695e3fa0c71e0abc1b649ed1d7c87
  1. .clang-format
  2. .gitmodules
  3. .zuul.CzechLight-internal.yaml
  4. .zuul.public.yaml
  5. CMakeLists.txt
  6. Doxyfile.in
  7. LICENSE
  8. LICENSE.md
  9. README.md
  10. ci/
  11. cmake/
  12. docs/
  13. src/
  14. submodules/
  15. tests/
README.md

Console interface to NETCONF servers

This program provides an interactive console for working with YANG data. It can connect to NETCONF servers, and also talk to sysrepo locally.

Installation

For building, one needs:

  • A C++17 compiler
  • Boost version 1.69
  • cmake for managing the build
  • libyang for working with YANG models
  • libnetconf2 for connecting to NETCONF servers
  • sysrepo version 1.4.x for the local sysrepo backend, and for the comprehensive test suite
  • replxx which provides interactive line prompts
  • docopt for CLI option parsing
  • pkg-config for building
  • Doctest as a C++ unit test framework
  • trompeloeil for mock objects in C++

Use an exact commit of any dependencies as specified in submodules/dependencies/*.

The build process uses CMake. A quick-and-dirty build with no fancy options can be as simple as mkdir build && cd build && cmake .. && make && make install.

Bug Reporting

Issue reporting and feature requests are welcome via Taiga.io.

Development

We are using Gerrit for patch submission, code review and Continuous Integration (CI). Development roadmap and planning happens over Taiga.io.

Credits

Copyright © CESNET, https://www.cesnet.cz/ . Portions copyright © Faculty of Information Technology, Czech Technical University in Prague, https://fit.cvut.cz/ . Most of the code was written by Václav Kubernát (CESNET, formerly FIT ČVUT) and Jan Kundrát (CESNET). The project is distributed under the terms of the Apache 2.0 license.