#!/bin/bash # Order test. test ordered-by user and ordered-by system. # For each leaf and leaf-lists, there are two lists, # one ordered-by user and one ordered by system. # The ordered-by user MUST be the order it is entered. # No test of ordered-by system is done yet # (we may want to sort them alphabetically for better performance). APPNAME=example # include err() and new() functions and creates $dir . ./lib.sh cfg=$dir/conf_yang.xml fyang=$dir/order.yang # For memcheck # clixon_netconf="valgrind --leak-check=full --show-leak-kinds=all clixon_netconf" dbdir=$dir/order new "Set up $dbdir" rm -rf $dbdir if [ ! -d $dbdir ]; then mkdir $dbdir fi cat < $cfg /tmp/conf_yang.xml /usr/local/share/$APPNAME/yang /usr/local/share/clixon example /usr/local/lib/$APPNAME/clispec /usr/local/lib/$APPNAME/cli $APPNAME /usr/local/var/$APPNAME/$APPNAME.sock /usr/local/var/$APPNAME/$APPNAME.pidfile 1 $dbdir /usr/local/lib/xmldb/text.so true EOF cat < $fyang module example{ yang-version 1.1; namespace "urn:example:clixon"; prefix ex; container c{ leaf d{ type string; } } leaf l{ type string; } leaf-list y0 { ordered-by user; type string; } leaf-list y1 { ordered-by system; type string; } list y2 { ordered-by user; key "k"; leaf k { type string; } leaf a { type string; } } list y3 { ordered-by system; key "k"; leaf k { type string; } leaf a { type string; } } } EOF cat < $dbdir/running_db d d dbar dbar b b hej c c abar abar hopp a a cbar cbar bbar bbar EOF new "test params: -f $cfg -y $fyang" if [ $BE -ne 0 ]; then new "kill old backend" sudo clixon_backend -zf $cfg -y $fyang if [ $? -ne 0 ]; then err fi new "start backend" sudo $clixon_backend -s running -f $cfg -y $fyang -D $DBG if [ $? -ne 0 ]; then err fi fi # Check as file new "verify running from start, should be: l,c,y0,y1,y2,y3; y1 and y3 sorted. Note this fails if XML_SORT set to false" expecteof "$clixon_netconf -qf $cfg -y $fyang" 0 "]]>]]>" "^hejhoppdbcaabcddbarabarcbarbbarabarbbarcbardbar]]>]]>$" new "get each ordered-by user leaf-list" expecteof "$clixon_netconf -qf $cfg -y $fyang" 0 "]]>]]>" "^abar]]>]]>$" new "get each ordered-by user leaf-list" expecteof "$clixon_netconf -qf $cfg -y $fyang" 0 "]]>]]>" "^abar]]>]]>$" new "get each ordered-by user leaf-list" expecteof "$clixon_netconf -qf $cfg -y $fyang" 0 "]]>]]>" "^bbar]]>]]>$" new "get each ordered-by user leaf-list" expecteof "$clixon_netconf -qf $cfg -y $fyang" 0 "]]>]]>" "^bbar]]>]]>$" new "delete candidate" expecteof "$clixon_netconf -qf $cfg" 0 "]]>]]>" "^]]>]]>$" # LEAF_LISTS new "add two entries to leaf-list user order" expecteof "$clixon_netconf -qf $cfg -y $fyang" 0 "cb]]>]]>" "^]]>]]>$" new "add one entry to leaf-list user order" expecteof "$clixon_netconf -qf $cfg -y $fyang" 0 "a]]>]]>" "^]]>]]>$" new "netconf commit" expecteof "$clixon_netconf -qf $cfg -y $fyang" 0 "]]>]]>" "^]]>]]>$" new "add one entry to leaf-list user order after commit" expecteof "$clixon_netconf -qf $cfg -y $fyang" 0 "0]]>]]>" "^]]>]]>$" new "netconf commit" expecteof "$clixon_netconf -qf $cfg -y $fyang" 0 "]]>]]>" "^]]>]]>$" new "verify leaf-list user order in running (as entered)" expecteof "$clixon_netconf -qf $cfg -y $fyang" 0 "]]>]]>" "^cba0]]>]]>$" # LISTS new "add two entries to list user order" expecteof "$clixon_netconf -qf $cfg -y $fyang" 0 "cbarbfoo]]>]]>" "^]]>]]>$" new "add one entry to list user order" expecteof "$clixon_netconf -qf $cfg -y $fyang" 0 "afie]]>]]>" "^]]>]]>$" new "verify list user order (as entered)" expecteof "$clixon_netconf -qf $cfg -y $fyang" 0 "]]>]]>" "^cbarbfooafie]]>]]>$" if [ $BE -ne 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 sudo clixon_backend -z -f $cfg if [ $? -ne 0 ]; then err "kill backend" fi rm -rf $dir