testconf is implemented in Node.js and supports testing of both NETCONF clients and NETCONF servers. That way developers can easily test new features, precision-test various requests, find out if there are any regressions and experiment with NETCONF in general. It can be used to run interoperability tests as well. In other words, testconf is an extensive testing tool which eases communication with NETCONF.

Extending testconf with your custom defined tests shortens the time spent on repetitive tasks and helps to pinpoint bugs. Docker container description of testconf can be found at here.

Project history

This project developed out of the NETCONF support for the OpenCPE project, more specifically out of the NETCONF model and data storage daemon (mand). As said, the daemon is model driven and is used for device management applications. The idea behind OpenCPE mand daemon was to be the binding and storage element between the connection protocol specific frontends (e.g. freenetconfd for NETCONF) and configuration agents that apply changes on a given target device.

In early 2016 - with the Sysrepo project beginning to use libyang as one of its most important dependencies - libyang was extended with unit testing features including testconf. As more and more 3rd party language bindings have been added to the Sysrepo project, the testconf project grew as well and now supports end-to-end application testing for Lua 5.2, Java, Python 3 and even end-to-end OpenSSH integration tests.

Configuration commands

testconf also has CLI and the commands, similarly to snmp commands, are get (get only last data node from NETCONF), set (set only one value node at a time) and walk (similar to get but will show all data nodes under xpath) commands. This section will show an example of those commands.