From cf7675dfac20bd5bc4b3c423939afec2c02f6665 Mon Sep 17 00:00:00 2001 From: Olof hagsand Date: Thu, 11 Apr 2019 12:45:31 +0200 Subject: [PATCH] Experimental customized error output strings, see [lib/clixon/clixon_err_string.h] --- CHANGELOG.md | 1 + lib/clixon/clixon_err_string.h | 48 ++++++++++++++ lib/src/clixon_proto_client.c | 5 +- test/lib.sh | 87 +++++++++++++------------ test/test_cli.sh | 2 +- test/test_feature.sh | 2 +- test/test_nacm_ext.sh | 6 +- test/test_type.sh | 102 ++++++++++++++--------------- test/test_type_nocache.sh | 116 ++++++++++++++++++--------------- test/test_union.sh | 2 +- 10 files changed, 218 insertions(+), 153 deletions(-) create mode 100644 lib/clixon/clixon_err_string.h diff --git a/CHANGELOG.md b/CHANGELOG.md index 8411e995..c3e66390 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -92,6 +92,7 @@ ``` ### Minor changes +* Experimental customized error output strings, see [lib/clixon/clixon_err_string.h] * Empty leaf values, eg are now checked at validation. * Empty values were skipped in validation. * They are now checked and invalid for ints, dec64, etc, but are treated as empty string "" for string types. diff --git a/lib/clixon/clixon_err_string.h b/lib/clixon/clixon_err_string.h new file mode 100644 index 00000000..1ab25d80 --- /dev/null +++ b/lib/clixon/clixon_err_string.h @@ -0,0 +1,48 @@ +/* + * + ***** BEGIN LICENSE BLOCK ***** + + Copyright (C) 2009-2019 Olof Hagsand and Benny Holmgren + + This file is part of CLIXON. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + Alternatively, the contents of this file may be used under the terms of + the GNU General Public License Version 3 or later (the "GPL"), + in which case the provisions of the GPL are applicable instead + of those above. If you wish to allow use of your version of this file only + under the terms of the GPL, and not to allow others to + use your version of this file under the terms of Apache License version 2, + indicate your decision by deleting the provisions above and replace them with + the notice and other provisions required by the GPL. If you do not delete + the provisions above, a recipient may use your version of this file under + the terms of any one of the Apache License version 2 or the GPL. + + ***** END LICENSE BLOCK ***** + + * First effort in customizing error output strings. + * Here just very simple constants that can be edited and recompiled by + * an integrator. + */ + +#ifndef _CLIXON_ERR_STRING_H_ +#define _CLIXON_ERR_STRING_H_ + +/* If internal netconf validation operation failed in the backend */ +#define CLIXON_ERRSTR_VALIDATE_FAILED "Validate failed. Edit and try again or discard changes" + +/* If internal netconf commit operation failed in the backend */ +#define CLIXON_ERRSTR_COMMIT_FAILED "Commit failed. Edit and try again or discard changes" + +#endif /* _CLIXON_ERR_STRING_H_ */ diff --git a/lib/src/clixon_proto_client.c b/lib/src/clixon_proto_client.c index 1bdcfb3e..9502dd64 100644 --- a/lib/src/clixon_proto_client.c +++ b/lib/src/clixon_proto_client.c @@ -70,6 +70,7 @@ #include "clixon_xpath.h" #include "clixon_proto.h" #include "clixon_err.h" +#include "clixon_err_string.h" #include "clixon_proto_client.h" /*! Send internal netconf rpc from client to backend @@ -689,7 +690,7 @@ clicon_rpc_validate(clicon_handle h, if (clicon_rpc_msg(h, msg, &xret, NULL) < 0) goto done; if ((xerr = xpath_first(xret, "//rpc-error")) != NULL){ - clicon_rpc_generate_error("Validate failed. Edit and try again or discard changes", xerr); + clicon_rpc_generate_error(CLIXON_ERRSTR_VALIDATE_FAILED, xerr); goto done; } retval = 0; @@ -721,7 +722,7 @@ clicon_rpc_commit(clicon_handle h) if (clicon_rpc_msg(h, msg, &xret, NULL) < 0) goto done; if ((xerr = xpath_first(xret, "//rpc-error")) != NULL){ - clicon_rpc_generate_error("Commit failed. Edit and try again or discard changes", xerr); + clicon_rpc_generate_error(CLIXON_ERRSTR_COMMIT_FAILED, xerr); goto done; } retval = 0; diff --git a/test/lib.sh b/test/lib.sh index 32b11f96..38a01380 100755 --- a/test/lib.sh +++ b/test/lib.sh @@ -202,52 +202,53 @@ new(){ # - expected stdout outcome, # - expected2 stdout outcome, expectfn(){ - cmd=$1 - retval=$2 - expect="$3" + cmd=$1 + retval=$2 + expect="$3" - if [ $# = 4 ]; then - expect2=$4 - else - expect2= - fi - ret=$($cmd) - r=$? -# echo "cmd:\"$cmd\"" -# echo "retval:\"$retval\"" -# echo "ret:\"$ret\"" -# echo "r:\"$r\"" - if [ $r != $retval ]; then - echo -e "\e[31m\nError ($r != $retval) in Test$testnr [$testname]:" - echo -e "\e[0m:" - exit -1 + if [ $# = 4 ]; then + expect2=$4 + else + expect2= fi - if [ $r != 0 ]; then - return + ret=$($cmd) + r=$? +# echo "cmd:\"$cmd\"" +# echo "retval:\"$retval\"" +# echo "expect:\"$expect\"" +# echo "ret:\"$ret\"" +# echo "r:\"$r\"" + if [ $r != $retval ]; then + echo -e "\e[31m\nError ($r != $retval) in Test$testnr [$testname]:" + echo -e "\e[0m:" + return + fi +# if [ $r != 0 ]; then +# return +# fi + # if [ $ret -ne $retval ]; then + # echo -e "\e[31m\nError in Test$testnr [$testname]:" + # echo -e "\e[0m:" + # exit -1 + # fi + # Match if both are empty string + if [ -z "$ret" -a -z "$expect" ]; then + return + fi + if [ -z "$ret" -a "$expect" = "^$" ]; then + return + fi + # grep extended grep + match=`echo $ret | grep -EZo "$expect"` + if [ -z "$match" ]; then + err "$expect" "$ret" + fi + if [ -n "$expect2" ]; then + match=`echo "$ret" | grep -EZo "$expect2"` + if [ -z "$match" ]; then + err $expect "$ret" + fi fi -# if [ $ret -ne $retval ]; then -# echo -e "\e[31m\nError in Test$testnr [$testname]:" -# echo -e "\e[0m:" -# exit -1 -# fi - # Match if both are empty string - if [ -z "$ret" -a -z "$expect" ]; then - return - fi - if [ -z "$ret" -a "$expect" = "^$" ]; then - return - fi - # grep extended grep - match=`echo $ret | grep -EZo "$expect"` - if [ -z "$match" ]; then - err "$expect" "$ret" - fi - if [ -n "$expect2" ]; then - match=`echo "$ret" | grep -EZo "$expect2"` - if [ -z "$match" ]; then - err $expect "$ret" - fi - fi } # Evaluate and return diff --git a/test/test_cli.sh b/test/test_cli.sh index 9030e6ed..90ddb28e 100755 --- a/test/test_cli.sh +++ b/test/test_cli.sh @@ -74,7 +74,7 @@ new "cli configure using encoded chars name <&" expectfn "$clixon_cli -1 -f $cfg set interfaces interface fddi&< type ianaift:ethernetCsmacd" 0 "" new "cli failed validate" -expectfn "$clixon_cli -1 -f $cfg -l o validate" 255 "Missing mandatory variable" +expectfn "$clixon_cli -1 -f $cfg -l o validate" 255 "Validate failed. Edit and try again or discard changes: application missing-element Mandatory variable type" new "cli configure more" expectfn "$clixon_cli -1 -f $cfg set interfaces interface eth/0/0 ipv4 address 1.2.3.4 prefix-length 24" 0 "^$" diff --git a/test/test_feature.sh b/test/test_feature.sh index 5bf5997a..463b0555 100755 --- a/test/test_feature.sh +++ b/test/test_feature.sh @@ -98,7 +98,7 @@ new "cli enabled feature in other module" expectfn "$clixon_cli -1f $cfg -y $fyang set routing router-id 1.2.3.4" 0 "" new "cli disabled feature in other module" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang set routing ribs rib default-rib false" 255 "CLI syntax error: \"set routing ribs rib default-rib\": Unknown command" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang set routing ribs rib default-rib false" 255 "CLI syntax error: \"set routing ribs rib default-rib false\": Unknown command" new "netconf discard-changes" expecteof "$clixon_netconf -qf $cfg -y $fyang" 0 "]]>]]>" "^]]>]]>$" diff --git a/test/test_nacm_ext.sh b/test/test_nacm_ext.sh index 5048a1e3..f873b11d 100755 --- a/test/test_nacm_ext.sh +++ b/test/test_nacm_ext.sh @@ -194,16 +194,16 @@ new "cli show conf as limited" expectfn "$clixon_cli -1 -U wilma -l o -f $cfg show conf" 0 "^x 1;$" new "cli show conf as guest" -expectfn "$clixon_cli -1 -U guest -l o -f $cfg show conf" 255 "protocol access-denied" +expectfn "$clixon_cli -1 -U guest -l o -f $cfg show conf" 255 "application access-denied" new "cli rpc as admin" expectfn "$clixon_cli -1 -U andy -l o -f $cfg rpc ipv4" 0 'ipv442' new "cli rpc as limited" -expectfn "$clixon_cli -1 -U wilma -l o -f $cfg rpc ipv4" 255 "protocol access-denied default deny" +expectfn "$clixon_cli -1 -U wilma -l o -f $cfg rpc ipv4" 255 "access-denied default deny" new "cli rpc as guest" -expectfn "$clixon_cli -1 -U guest -l o -f $cfg rpc ipv4" 255 "protocol access-denied access denied" +expectfn "$clixon_cli -1 -U guest -l o -f $cfg rpc ipv4" 255 "access-denied access denied" new "Kill restconf daemon" stop_restconf diff --git a/test/test_type.sh b/test/test_type.sh index 4a4c9bc3..381bc0a7 100755 --- a/test/test_type.sh +++ b/test/test_type.sh @@ -223,10 +223,10 @@ if [ $BE -ne 0 ]; then fi new "cli set transitive string. type is alpha followed by number and is defined in three levels of modules" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang set c talle x99" 0 "^$" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang set c talle x99" 0 '^$' new "cli set transitive string error. Wrong type" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang set c talle 9xx" 255 "^$" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang set c talle 9xx" 255 '^CLI syntax error: "set c talle 9xx": Unknown command$' new "netconf set transitive string error" expecteof "$clixon_netconf -qf $cfg -y $fyang" 0 '9xx]]>]]>' "^]]>]]>" @@ -238,22 +238,22 @@ new "netconf discard-changes" expecteof "$clixon_netconf -qf $cfg -y $fyang" 0 "]]>]]>" "^]]>]]>$" new "cli set transitive union int (ulle should accept 4.44|bounded|unbounded)" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang set c ulle 33" 0 "^$" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang set c ulle 33" 0 '^$' new "cli validate" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang -l o validate" 0 "^$" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang -l o validate" 0 '^$' new "cli set transitive union string" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang set c ulle unbounded" 0 "^$" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang set c ulle unbounded" 0 '^$' new "cli validate" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang -l o validate" 0 "^$" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang -l o validate" 0 '^$' new "cli set transitive union error. should fail" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang set c ulle kalle" 255 "" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang set c ulle kalle" 255 '^CLI syntax error: "set c ulle kalle": Unknown command$' new "cli set transitive union error int" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang set c ulle 55" 255 "" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang set c ulle 55" 255 '^CLI syntax error: "set c ulle 55": Unknown command$' new "netconf set transitive union error int" expecteof "$clixon_netconf -qf $cfg -y $fyang" 0 '55]]>]]>' "^]]>]]>" @@ -267,13 +267,13 @@ expecteof "$clixon_netconf -qf $cfg -y $fyang" 0 "] #----------- new "cli set ab" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang set list a.b.a.b" 0 "^$" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang set list a.b.a.b" 0 '^$' new "cli set cd" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang set list c.d.c.d" 0 "^$" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang set list c.d.c.d" 0 '^$' new "cli set ef" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang set list e.f.e.f" 0 "^$" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang set list e.f.e.f" 0 '^$' new "cli set ab fail" expectfn "$clixon_cli -1f $cfg -l o -y $fyang set list a&b&a&b" 255 "^CLI syntax error" @@ -282,10 +282,10 @@ new "cli set ad fail" expectfn "$clixon_cli -1f $cfg -l o -y $fyang set list a.b.c.d" 255 "^CLI syntax error" new "cli validate" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang -l o validate" 0 "^$" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang -l o validate" 0 '^$' new "cli commit" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang -l o commit" 0 "^$" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang -l o commit" 0 '^$' new "netconf validate ok" expecteof "$clixon_netconf -qf $cfg -y $fyang" 0 "]]>]]>" "^]]>]]>$" @@ -303,20 +303,20 @@ new "netconf commit" expecteof "$clixon_netconf -qf $cfg -y $fyang" 0 "]]>]]>" "^]]>]]>$" new "cli enum value" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang set status down" 0 "^$" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang set status down" 0 '^$' new "cli bits value" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang set mbits create" 0 "^$" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang set mbits create" 0 '^$' #XXX No, cli cant assign two bit values #new "cli bits two values" -#expectfn "$clixon_cli -1f $cfg -l o -y $fyang set mbits \"create read\"" 0 "^$" +#expectfn "$clixon_cli -1f $cfg -l o -y $fyang set mbits \"create read\"" 0 '^$' new "netconf bits two values" expecteof "$clixon_netconf -qf $cfg -y $fyang" 0 'create read]]>]]>' "^]]>]]>$" new "cli bits validate" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang validate" 0 "^$" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang validate" 0 '^$' #-------- num0 empty value @@ -332,13 +332,13 @@ expecteof "$clixon_netconf -qf $cfg -y $fyang" 0 "] #-------- num1 single range (1) new "cli range test num1 1 OK" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang set num1 1" 0 "^$" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang set num1 1" 0 '^$' #new "cli range test num1 -100 ok" # XXX -/minus cant be given as argv -#expectfn "$clixon_cli -1f $cfg -l o -y $fyang set num1 \-100" 0 "^$" +#expectfn "$clixon_cli -1f $cfg -l o -y $fyang set num1 \-100" 0 '^$' new "cli range test num1 2 error" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang set num1 2" 255 "^$" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang set num1 2" 255 '^CLI syntax error: "set num1 2": Unknown command$' new "netconf range set num1 -1" expecteof "$clixon_netconf -qf $cfg -y $fyang" 0 '-1]]>]]>' "^]]>]]>$" @@ -352,13 +352,13 @@ expecteof "$clixon_netconf -qf $cfg -y $fyang" 0 "] #-------- num2 range and blanks new "cli range test num2 3 error" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang set num2 3" 255 "^$" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang set num2 3" 255 '^CLI syntax error: "set num2 3": Number out of range: 3$' new "cli range test num2 1000 ok" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang set num2 1000" 0 "^$" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang set num2 1000" 0 '^$' new "cli range test num2 5000 error" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang set num2 5000" 255 "^$" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang set num2 5000" 255 '^CLI syntax error: "set num2 5000": Unknown command$' new "netconf range set num2 3 fail" expecteof "$clixon_netconf -qf $cfg -y $fyang" 0 '3]]>]]>' "^]]>]]>$" @@ -384,13 +384,13 @@ expecteof "$clixon_netconf -qf $cfg -y $fyang" 0 "] #-------- num3 min max range new "cli range test num3 42 ok" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang set num3 42" 0 "^$" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang set num3 42" 0 '^$' new "cli range test num3 260 fail" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang set num3 260" 255 "^$" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang set num3 260" 255 '^CLI syntax error: "set num3 260": Unknown command$' new "cli range test num3 -1 fail" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang set num3 -1" 255 "^$" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang set num3 -1" 255 '^CLI syntax error: "set num3": Incomplete command$' new "netconf range set num3 260 fail" expecteof "$clixon_netconf -qf $cfg -y $fyang" 0 '260]]>]]>' "^]]>]]>$" @@ -404,19 +404,19 @@ expecteof "$clixon_netconf -qf $cfg -y $fyang" 0 "] #-------- num4 multiple ranges 1..2 | 42..50 new "cli range test num4 multiple 0 fail" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang set num4 0" 255 "^$" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang set num4 0" 255 '^CLI syntax error: "set num4 0": Number out of range: 0$' new "cli range test num4 multiple 2 ok" -expectfn "$clixon_cli -1f $cfg -l e -y $fyang set num4 2" 0 "^$" +expectfn "$clixon_cli -1f $cfg -l e -y $fyang set num4 2" 0 '^$' new "cli range test num4 multiple 20 fail" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang set num4 20" 255 "^$" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang set num4 20" 255 '^CLI syntax error: "set num4 20": Unknown command$' new "cli range test num4 multiple 42 ok" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang set num4 42" 0 "^$" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang set num4 42" 0 '^$' new "cli range test num4 multiple 99 fail" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang set num4 99" 255 "^$" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang set num4 99" 255 '^CLI syntax error: "set num4 99": Unknown command$' new "netconf range set num4 multiple 2" expecteof "$clixon_netconf -qf $cfg -y $fyang" 0 '42]]>]]>' "^]]>]]>$" @@ -442,16 +442,16 @@ expecteof "$clixon_netconf -qf $cfg -y $fyang" 0 "] #-------- dec64 multiple ranges -3.5..-2.5 | 0.0 | 10.0..20.0 # XXX how to enter negative numbers in bash string and cli -1? new "cli range dec64 multiple 0 ok" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang set dec 0" 0 "^$" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang set dec 0" 0 '^$' new "cli range dec64 multiple 0.1 fail" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang set num4 0.1" 255 "^$" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang set num4 0.1" 255 '^CLI syntax error: "set num4 0.1": '"'"'0.1'"'"' is not a number$' new "cli range dec64 multiple 15.0 ok" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang set dec 15.0" 0 "^$" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang set dec 15.0" 0 '^$' new "cli range dec64 multiple 30.0 fail" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang set dec 30.0" 255 "^$" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang set dec 30.0" 255 '^CLI syntax error: "set dec 30.0": Unknown command$' new "dec64 discard-changes" expecteof "$clixon_netconf -qf $cfg -y $fyang" 0 "]]>]]>" "^]]>]]>$" @@ -496,13 +496,13 @@ expecteof "$clixon_netconf -qf $cfg -y $fyang" 0 "]]>]]>" "^]]>]]>$" @@ -516,10 +516,10 @@ expecteof "$clixon_netconf -qf $cfg -y $fyang" 0 "]]>]]>" "^]]>]]>$" @@ -527,36 +527,36 @@ expecteof "$clixon_netconf -qf $cfg -y $fyang" 0 "] #-------- len3 min max range new "cli range ptest len3 42 ok" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang set len3 hsakjdhkjsahdkjsahdksahdksajdhsakjhd" 0 "^$" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang set len3 hsakjdhkjsahdkjsahdksahdksajdhsakjhd" 0 '^$' #-------- len4 multiple ranges 2..3 | 20-29 new "cli length test len4 1 error" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang set len4 a" 255 "^$" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang set len4 a" 255 '^CLI syntax error: "set len4 a": String length not within limits: 1$' new "cli length test len4 2 ok" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang set len4 ab" 0 "^$" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang set len4 ab" 0 '^$' new "cli length test len4 10 error" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang set len4 abcdefghij" 255 "^$" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang set len4 abcdefghij" 255 '^CLI syntax error: "set len4 abcdefghij": Unknown command$' new "cli length test len4 20 ok" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang set len4 abcdefghijabcdefghija" 0 "^$" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang set len4 abcdefghijabcdefghija" 0 '^$' new "cli length test len4 30 error" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang set len4 abcdefghijabcdefghijabcdefghij" 255 "^$" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang set len4 abcdefghijabcdefghijabcdefghij" 255 '^CLI syntax error: "set len4 abcdefghijabcdefghijabcdefghij": Unknown command$' # XSD schema -> POSIX ECE translation new "cli yang pattern \d ok" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang set digit4 0123" 0 "^$" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang set digit4 0123" 0 '^$' new "cli yang pattern \d error" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang set digit4 01b2" 255 "^$" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang set digit4 01b2" 255 '^CLI syntax error: "set digit4 01b2": Unknown command$' new "cli yang pattern \w ok" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang set word4 abc9" 0 "^$" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang set word4 abc9" 0 '^$' new "cli yang pattern \w error" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang set word4 ab%3" 255 "^$" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang set word4 ab%3" 255 '^CLI syntax error: "set word4 ab%3": Unknown command$' new "netconf pattern \w" expecteof "$clixon_netconf -qf $cfg -y $fyang" 0 'aXG9]]>]]>' "^]]>]]>$" @@ -583,7 +583,7 @@ new "validate minus" expecteof "$clixon_netconf -qf $cfg -y $fyang" 0 "]]>]]>" "^]]>]]>$" #new "cli type with minus" -#expectfn "$clixon_cli -1f $cfg -l o -y $fyang set name my-name" 0 "^$" +#expectfn "$clixon_cli -1f $cfg -l o -y $fyang set name my-name" 0 '^$' if [ $BE -eq 0 ]; then exit # BE diff --git a/test/test_type_nocache.sh b/test/test_type_nocache.sh index 95a0e9af..bedff56d 100755 --- a/test/test_type_nocache.sh +++ b/test/test_type_nocache.sh @@ -124,6 +124,9 @@ module example{ enum down; } } + leaf num0 { + type int32; + } leaf num1 { type int32 { range "1"; @@ -221,10 +224,10 @@ if [ $BE -ne 0 ]; then fi new "cli set transitive string. type is alpha followed by number and is defined in three levels of modules" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang set c talle x99" 0 "^$" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang set c talle x99" 0 '^$' new "cli set transitive string error. Wrong type" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang set c talle 9xx" 255 "^$" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang set c talle 9xx" 255 '^CLI syntax error: "set c talle 9xx": Unknown command$' new "netconf set transitive string error" expecteof "$clixon_netconf -qf $cfg -y $fyang" 0 '9xx]]>]]>' "^]]>]]>" @@ -236,22 +239,22 @@ new "netconf discard-changes" expecteof "$clixon_netconf -qf $cfg -y $fyang" 0 "]]>]]>" "^]]>]]>$" new "cli set transitive union int (ulle should accept 4.44|bounded|unbounded)" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang set c ulle 33" 0 "^$" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang set c ulle 33" 0 '^$' new "cli validate" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang -l o validate" 0 "^$" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang -l o validate" 0 '^$' new "cli set transitive union string" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang set c ulle unbounded" 0 "^$" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang set c ulle unbounded" 0 '^$' new "cli validate" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang -l o validate" 0 "^$" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang -l o validate" 0 '^$' new "cli set transitive union error. should fail" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang set c ulle kalle" 255 "" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang set c ulle kalle" 255 '^CLI syntax error: "set c ulle kalle": Unknown command$' new "cli set transitive union error int" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang set c ulle 55" 255 "" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang set c ulle 55" 255 '^CLI syntax error: "set c ulle 55": Unknown command$' new "netconf set transitive union error int" expecteof "$clixon_netconf -qf $cfg -y $fyang" 0 '55]]>]]>' "^]]>]]>" @@ -265,13 +268,13 @@ expecteof "$clixon_netconf -qf $cfg -y $fyang" 0 "] #----------- new "cli set ab" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang set list a.b.a.b" 0 "^$" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang set list a.b.a.b" 0 '^$' new "cli set cd" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang set list c.d.c.d" 0 "^$" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang set list c.d.c.d" 0 '^$' new "cli set ef" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang set list e.f.e.f" 0 "^$" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang set list e.f.e.f" 0 '^$' new "cli set ab fail" expectfn "$clixon_cli -1f $cfg -l o -y $fyang set list a&b&a&b" 255 "^CLI syntax error" @@ -280,10 +283,10 @@ new "cli set ad fail" expectfn "$clixon_cli -1f $cfg -l o -y $fyang set list a.b.c.d" 255 "^CLI syntax error" new "cli validate" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang -l o validate" 0 "^$" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang -l o validate" 0 '^$' new "cli commit" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang -l o commit" 0 "^$" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang -l o commit" 0 '^$' new "netconf validate ok" expecteof "$clixon_netconf -qf $cfg -y $fyang" 0 "]]>]]>" "^]]>]]>$" @@ -301,31 +304,42 @@ new "netconf commit" expecteof "$clixon_netconf -qf $cfg -y $fyang" 0 "]]>]]>" "^]]>]]>$" new "cli enum value" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang set status down" 0 "^$" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang set status down" 0 '^$' new "cli bits value" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang set mbits create" 0 "^$" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang set mbits create" 0 '^$' #XXX No, cli cant assign two bit values #new "cli bits two values" -#expectfn "$clixon_cli -1f $cfg -l o -y $fyang set mbits \"create read\"" 0 "^$" +#expectfn "$clixon_cli -1f $cfg -l o -y $fyang set mbits \"create read\"" 0 '^$' new "netconf bits two values" expecteof "$clixon_netconf -qf $cfg -y $fyang" 0 'create read]]>]]>' "^]]>]]>$" new "cli bits validate" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang validate" 0 "^$" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang validate" 0 '^$' + +#-------- num0 empty value + +new "netconf num0 no value" +expecteof "$clixon_netconf -qf $cfg -y $fyang" 0 ']]>]]>' "^]]>]]>$" + +new "netconf validate no value wrong" +expecteof "$clixon_netconf -qf $cfg -y $fyang" 0 "]]>]]>" 'applicationbad-elementnum0errorInvalid NULL value]]>]]>' + +new "netconf discard-changes" +expecteof "$clixon_netconf -qf $cfg -y $fyang" 0 "]]>]]>" "^]]>]]>$" #-------- num1 single range (1) new "cli range test num1 1 OK" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang set num1 1" 0 "^$" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang set num1 1" 0 '^$' #new "cli range test num1 -100 ok" # XXX -/minus cant be given as argv -#expectfn "$clixon_cli -1f $cfg -l o -y $fyang set num1 \-100" 0 "^$" +#expectfn "$clixon_cli -1f $cfg -l o -y $fyang set num1 \-100" 0 '^$' new "cli range test num1 2 error" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang set num1 2" 255 "^$" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang set num1 2" 255 '^CLI syntax error: "set num1 2": Unknown command$' new "netconf range set num1 -1" expecteof "$clixon_netconf -qf $cfg -y $fyang" 0 '-1]]>]]>' "^]]>]]>$" @@ -339,13 +353,13 @@ expecteof "$clixon_netconf -qf $cfg -y $fyang" 0 "] #-------- num2 range and blanks new "cli range test num2 3 error" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang set num2 3" 255 "^$" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang set num2 3" 255 '^CLI syntax error: "set num2 3": Number out of range: 3$' new "cli range test num2 1000 ok" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang set num2 1000" 0 "^$" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang set num2 1000" 0 '^$' new "cli range test num2 5000 error" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang set num2 5000" 255 "^$" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang set num2 5000" 255 '^CLI syntax error: "set num2 5000": Unknown command$' new "netconf range set num2 3 fail" expecteof "$clixon_netconf -qf $cfg -y $fyang" 0 '3]]>]]>' "^]]>]]>$" @@ -371,13 +385,13 @@ expecteof "$clixon_netconf -qf $cfg -y $fyang" 0 "] #-------- num3 min max range new "cli range test num3 42 ok" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang set num3 42" 0 "^$" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang set num3 42" 0 '^$' new "cli range test num3 260 fail" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang set num3 260" 255 "^$" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang set num3 260" 255 '^CLI syntax error: "set num3 260": Unknown command$' new "cli range test num3 -1 fail" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang set num3 -1" 255 "^$" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang set num3 -1" 255 '^CLI syntax error: "set num3": Incomplete command$' new "netconf range set num3 260 fail" expecteof "$clixon_netconf -qf $cfg -y $fyang" 0 '260]]>]]>' "^]]>]]>$" @@ -391,19 +405,19 @@ expecteof "$clixon_netconf -qf $cfg -y $fyang" 0 "] #-------- num4 multiple ranges 1..2 | 42..50 new "cli range test num4 multiple 0 fail" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang set num4 0" 255 "^$" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang set num4 0" 255 '^CLI syntax error: "set num4 0": Number out of range: 0$' new "cli range test num4 multiple 2 ok" -expectfn "$clixon_cli -1f $cfg -l e -y $fyang set num4 2" 0 "^$" +expectfn "$clixon_cli -1f $cfg -l e -y $fyang set num4 2" 0 '^$' new "cli range test num4 multiple 20 fail" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang set num4 20" 255 "^$" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang set num4 20" 255 '^CLI syntax error: "set num4 20": Unknown command$' new "cli range test num4 multiple 42 ok" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang set num4 42" 0 "^$" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang set num4 42" 0 '^$' new "cli range test num4 multiple 99 fail" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang set num4 99" 255 "^$" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang set num4 99" 255 '^CLI syntax error: "set num4 99": Unknown command$' new "netconf range set num4 multiple 2" expecteof "$clixon_netconf -qf $cfg -y $fyang" 0 '42]]>]]>' "^]]>]]>$" @@ -429,16 +443,16 @@ expecteof "$clixon_netconf -qf $cfg -y $fyang" 0 "] #-------- dec64 multiple ranges -3.5..-2.5 | 0.0 | 10.0..20.0 # XXX how to enter negative numbers in bash string and cli -1? new "cli range dec64 multiple 0 ok" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang set dec 0" 0 "^$" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang set dec 0" 0 '^$' new "cli range dec64 multiple 0.1 fail" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang set num4 0.1" 255 "^$" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang set num4 0.1" 255 '^CLI syntax error: "set num4 0.1": '"'"'0.1'"'"' is not a number$' new "cli range dec64 multiple 15.0 ok" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang set dec 15.0" 0 "^$" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang set dec 15.0" 0 '^$' new "cli range dec64 multiple 30.0 fail" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang set dec 30.0" 255 "^$" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang set dec 30.0" 255 '^CLI syntax error: "set dec 30.0": Unknown command$' new "dec64 discard-changes" expecteof "$clixon_netconf -qf $cfg -y $fyang" 0 "]]>]]>" "^]]>]]>$" @@ -483,13 +497,13 @@ expecteof "$clixon_netconf -qf $cfg -y $fyang" 0 "]]>]]>" "^]]>]]>$" @@ -503,10 +517,10 @@ expecteof "$clixon_netconf -qf $cfg -y $fyang" 0 "]]>]]>" "^]]>]]>$" @@ -514,36 +528,36 @@ expecteof "$clixon_netconf -qf $cfg -y $fyang" 0 "] #-------- len3 min max range new "cli range ptest len3 42 ok" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang set len3 hsakjdhkjsahdkjsahdksahdksajdhsakjhd" 0 "^$" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang set len3 hsakjdhkjsahdkjsahdksahdksajdhsakjhd" 0 '^$' #-------- len4 multiple ranges 2..3 | 20-29 new "cli length test len4 1 error" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang set len4 a" 255 "^$" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang set len4 a" 255 '^CLI syntax error: "set len4 a": String length not within limits: 1$' new "cli length test len4 2 ok" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang set len4 ab" 0 "^$" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang set len4 ab" 0 '^$' new "cli length test len4 10 error" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang set len4 abcdefghij" 255 "^$" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang set len4 abcdefghij" 255 '^CLI syntax error: "set len4 abcdefghij": Unknown command$' new "cli length test len4 20 ok" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang set len4 abcdefghijabcdefghija" 0 "^$" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang set len4 abcdefghijabcdefghija" 0 '^$' new "cli length test len4 30 error" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang set len4 abcdefghijabcdefghijabcdefghij" 255 "^$" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang set len4 abcdefghijabcdefghijabcdefghij" 255 '^CLI syntax error: "set len4 abcdefghijabcdefghijabcdefghij": Unknown command$' # XSD schema -> POSIX ECE translation new "cli yang pattern \d ok" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang set digit4 0123" 0 "^$" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang set digit4 0123" 0 '^$' new "cli yang pattern \d error" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang set digit4 01b2" 255 "^$" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang set digit4 01b2" 255 '^CLI syntax error: "set digit4 01b2": Unknown command$' new "cli yang pattern \w ok" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang set word4 abc9" 0 "^$" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang set word4 abc9" 0 '^$' new "cli yang pattern \w error" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang set word4 ab%3" 255 "^$" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang set word4 ab%3" 255 '^CLI syntax error: "set word4 ab%3": Unknown command$' new "netconf pattern \w" expecteof "$clixon_netconf -qf $cfg -y $fyang" 0 'aXG9]]>]]>' "^]]>]]>$" @@ -570,7 +584,7 @@ new "validate minus" expecteof "$clixon_netconf -qf $cfg -y $fyang" 0 "]]>]]>" "^]]>]]>$" #new "cli type with minus" -#expectfn "$clixon_cli -1f $cfg -l o -y $fyang set name my-name" 0 "^$" +#expectfn "$clixon_cli -1f $cfg -l o -y $fyang set name my-name" 0 '^$' if [ $BE -eq 0 ]; then exit # BE diff --git a/test/test_union.sh b/test/test_union.sh index 01ef82e7..6326c5ab 100755 --- a/test/test_union.sh +++ b/test/test_union.sh @@ -98,7 +98,7 @@ new "cli set transitive union" expectfn "$clixon_cli -1f $cfg -l o -y $fyang set c ulle 33" 0 "^$" new "cli set transitive union error" -expectfn "$clixon_cli -1f $cfg -l o -y $fyang set c ulle kalle" 255 "" +expectfn "$clixon_cli -1f $cfg -l o -y $fyang set c ulle kalle" 255 '^CLI syntax error: "set c ulle kalle": Unknown command$' if [ $BE -eq 0 ]; then exit # BE