#!/usr/bin/env bash # Yang deviate tests # See RFC 7950 5.6.3 and 7.20.3 # Four examples: not supported, add, replace, delete # Magic line must be first in script (see README.md) s="$_" ; . ./lib.sh || if [ "$s" = "$0" ]; then exit 0; else return 0; fi APPNAME=example cfg=$dir/conf_yang.xml fyangbase=$dir/example-base.yang fyangdev=$dir/example-deviations.yang cat < $cfg $cfg /usr/local/share/clixon $dir $IETFRFC $dir /usr/local/lib/$APPNAME/clispec /usr/local/lib/$APPNAME/cli $APPNAME /usr/local/var/$APPNAME/$APPNAME.sock /usr/local/var/$APPNAME/$APPNAME.pidfile /usr/local/var/$APPNAME true EOF cat < $fyangbase module example-base{ yang-version 1.1; prefix base; namespace "urn:example:base"; container system { must "daytime or time"; leaf daytime{ type string; } list name-server { key name; leaf name { type string; } } list user { key name; leaf name { type string; } leaf type { type string; } } } } EOF # Example from RFC 7950 Sec 7.20.3.3 cat < $fyangdev module $APPNAME{ yang-version 1.1; prefix md; namespace "urn:example:deviations"; import example-base { prefix base; } deviation /base:system/base:daytime { deviate not-supported; } deviation /base:system/base:user/base:type { deviate add { default "admin"; // new users are 'admin' by default } } deviation /base:system { deviate delete { must "daytime or time"; } } } EOF new "test params: -f $cfg" if [ "$BE" -ne 0 ]; then new "kill old backend" sudo clixon_backend -zf "$cfg" if [ $? -ne 0 ]; then err fi new "start backend -s init -f $cfg" start_backend -s init -f "$cfg" new "waiting" wait_backend fi if [ "$BE" -eq 0 ]; then exit # BE fi new "Kill backend" # Check if premature kill pid=$(pgrep -u root -f clixon_backend) if [ -z "$pid" ]; then err "backend already dead" fi # kill backend stop_backend -f "$cfg" rm -rf "$dir" new "endtest" endtest