- Changed master to 5.2.0.PRE

- Modified Makefiles for static linkage and coverage
- test namespace abstractions
This commit is contained in:
Olof hagsand 2021-04-17 14:52:42 +02:00
parent f9f533834b
commit 7ebb538ebf
18 changed files with 112 additions and 109 deletions

View file

@ -1,5 +1,6 @@
# Clixon Changelog # Clixon Changelog
* [5.2.0](#520) Expected: June 2021
* [5.1.0](#510) 15 April 2021 * [5.1.0](#510) 15 April 2021
* [5.0.0](#500) 27 February 2021 * [5.0.0](#500) 27 February 2021
* [5.0.1](#501) 10 March 2021 * [5.0.1](#501) 10 March 2021
@ -28,6 +29,9 @@
* [3.3.2](#332) Aug 27 2017 * [3.3.2](#332) Aug 27 2017
* [3.3.1](#331) June 7 2017 * [3.3.1](#331) June 7 2017
## 5.2.0
Expected: June 2021
## 5.1.0 ## 5.1.0
15 April 2021 15 April 2021

View file

@ -138,6 +138,7 @@ configure: configure.ac
cd $(srcdir) && autoconf cd $(srcdir) && autoconf
clean: clean:
rm -f *.gcov
for i in $(SUBDIRS) doc example util docker; \ for i in $(SUBDIRS) doc example util docker; \
do (cd $$i && $(MAKE) $(MFLAGS) $@); done; do (cd $$i && $(MAKE) $(MFLAGS) $@); done;

View file

@ -39,13 +39,11 @@ top_srcdir = @top_srcdir@
CC = @CC@ CC = @CC@
CFLAGS = @CFLAGS@ CFLAGS = @CFLAGS@
LINKAGE = @LINKAGE@ LINKAGE = @LINKAGE@
ifeq ($(LINKAGE),static)
CPPFLAGS = @CPPFLAGS@ CPPFLAGS = @CPPFLAGS@
SH_SUFFIX = a ifeq ($(LINKAGE),dynamic)
else CPPFLAGS += -fPIC
CPPFLAGS = @CPPFLAGS@ -fPIC
SH_SUFFIX = @SH_SUFFIX@
endif endif
SH_SUFFIX = @SH_SUFFIX@
INSTALLFLAGS = @INSTALLFLAGS@ INSTALLFLAGS = @INSTALLFLAGS@
LDFLAGS = @LDFLAGS@ LDFLAGS = @LDFLAGS@
@ -65,7 +63,7 @@ CLIXON_MINOR = @CLIXON_VERSION_MINOR@
# Use this clixon lib for linking # Use this clixon lib for linking
ifeq ($(LINKAGE),static) ifeq ($(LINKAGE),static)
CLIXON_LIB = libclixon.a CLIXON_LIB = libclixon$(SH_SUFFIX)
else else
CLIXON_LIB = libclixon$(SH_SUFFIX).$(CLIXON_MAJOR).$(CLIXON_MINOR) CLIXON_LIB = libclixon$(SH_SUFFIX).$(CLIXON_MAJOR).$(CLIXON_MINOR)
endif endif

View file

@ -39,17 +39,15 @@ top_srcdir = @top_srcdir@
CC = @CC@ CC = @CC@
CFLAGS = @CFLAGS@ CFLAGS = @CFLAGS@
LINKAGE = @LINKAGE@ LINKAGE = @LINKAGE@
ifeq ($(LINKAGE),dynamic)
CPPFLAGS = @CPPFLAGS@ -fPIC
else
CPPFLAGS = @CPPFLAGS@ CPPFLAGS = @CPPFLAGS@
ifeq ($(LINKAGE),dynamic)
CPPFLAGS += -fPIC
endif endif
SH_SUFFIX = @SH_SUFFIX@ SH_SUFFIX = @SH_SUFFIX@
INSTALLFLAGS = @INSTALLFLAGS@ INSTALLFLAGS = @INSTALLFLAGS@
ifeq ($(LINKAGE),dynamic)
LDFLAGS = @LDFLAGS@ LDFLAGS = @LDFLAGS@
else ifeq ($(LINKAGE),static)
LDFLAGS = @LDFLAGS@ -rdynamic -L. LDFLAGS += -rdynamic -L.
endif endif
prefix = @prefix@ prefix = @prefix@

View file

@ -92,7 +92,6 @@ APPL = clixon_restconf
# Common source - not accessible from plugin - independent of restconf package (fcgi|native) # Common source - not accessible from plugin - independent of restconf package (fcgi|native)
APPSRC = APPSRC =
APPSRC += restconf_api.c # maybe empty APPSRC += restconf_api.c # maybe empty
APPSRC += restconf_api_$(with_restconf).c
APPSRC += restconf_err.c APPSRC += restconf_err.c
APPSRC += restconf_methods.c APPSRC += restconf_methods.c
APPSRC += restconf_methods_post.c APPSRC += restconf_methods_post.c
@ -114,6 +113,7 @@ APPOBJ = $(APPSRC:.c=.o)
# are not in the lib. # are not in the lib.
LIBSRC = restconf_lib.c LIBSRC = restconf_lib.c
LIBSRC += restconf_handle.c LIBSRC += restconf_handle.c
LIBSRC += restconf_api_$(with_restconf).c
LIBOBJ = $(LIBSRC:.c=.o) LIBOBJ = $(LIBSRC:.c=.o)

View file

@ -1773,7 +1773,7 @@ main(int argc,
) < 0) ) < 0)
goto done; goto done;
clicon_debug_init(dbg, NULL); clicon_debug_init(dbg, NULL);
clicon_log(LOG_NOTICE, "%s openssl: %u Started", __PROGRAM__, getpid()); clicon_log(LOG_NOTICE, "%s native %u Started", __PROGRAM__, getpid());
if (set_signal(SIGTERM, restconf_sig_term, NULL) < 0){ if (set_signal(SIGTERM, restconf_sig_term, NULL) < 0){
clicon_err(OE_DAEMON, errno, "Setting signal"); clicon_err(OE_DAEMON, errno, "Setting signal");
goto done; goto done;

10
configure vendored
View file

@ -2259,9 +2259,9 @@ ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
CLIXON_VERSION_MAJOR="5" CLIXON_VERSION_MAJOR="5"
CLIXON_VERSION_MINOR="1" CLIXON_VERSION_MINOR="2"
CLIXON_VERSION_PATCH="0" CLIXON_VERSION_PATCH="0"
CLIXON_VERSION="\"${CLIXON_VERSION_MAJOR}.${CLIXON_VERSION_MINOR}.${CLIXON_VERSION_PATCH}\"" CLIXON_VERSION="\"${CLIXON_VERSION_MAJOR}.${CLIXON_VERSION_MINOR}.${CLIXON_VERSION_PATCH}.PRE\""
# Check CLIgen # Check CLIgen
if test "$prefix" = "NONE"; then if test "$prefix" = "NONE"; then
@ -4547,7 +4547,13 @@ if test "$prefix" = "NONE"; then
prefix=${ac_default_prefix} prefix=${ac_default_prefix}
fi fi
if test "$LINKAGE" = "dynamic" ; then
SH_SUFFIX=".so" SH_SUFFIX=".so"
elif test "$LINKAGE" = "static" ; then
SH_SUFFIX=".a"
else
as_fn_error $? "No such linkage: ${LINKAGE}" "$LINENO" 5
fi
# This is for cligen # This is for cligen

View file

@ -49,9 +49,9 @@ AC_INIT(lib/clixon/clixon.h.in)
AC_CONFIG_AUX_DIR(config-aux) AC_CONFIG_AUX_DIR(config-aux)
CLIXON_VERSION_MAJOR="5" CLIXON_VERSION_MAJOR="5"
CLIXON_VERSION_MINOR="1" CLIXON_VERSION_MINOR="2"
CLIXON_VERSION_PATCH="0" CLIXON_VERSION_PATCH="0"
CLIXON_VERSION="\"${CLIXON_VERSION_MAJOR}.${CLIXON_VERSION_MINOR}.${CLIXON_VERSION_PATCH}\"" CLIXON_VERSION="\"${CLIXON_VERSION_MAJOR}.${CLIXON_VERSION_MINOR}.${CLIXON_VERSION_PATCH}.PRE\""
# Check CLIgen # Check CLIgen
if test "$prefix" = "NONE"; then if test "$prefix" = "NONE"; then
@ -148,7 +148,13 @@ if test "$prefix" = "NONE"; then
prefix=${ac_default_prefix} prefix=${ac_default_prefix}
fi fi
if test "$LINKAGE" = "dynamic" ; then
SH_SUFFIX=".so" SH_SUFFIX=".so"
elif test "$LINKAGE" = "static" ; then
SH_SUFFIX=".a"
else
AC_MSG_ERROR([No such linkage: ${LINKAGE}])
fi
# This is for cligen # This is for cligen
AC_ARG_WITH([cligen], AS_HELP_STRING([--with-cligen=dir],[Use CLIGEN installation in this dir])) AC_ARG_WITH([cligen], AS_HELP_STRING([--with-cligen=dir],[Use CLIGEN installation in this dir]))

View file

@ -194,3 +194,10 @@ Use MAXPATHLEN (not PATH_MAX) in sys/param.h
socat PTY,link=/tmp/clixon-tty,rawer EXEC:"/usr/local/bin/clixon_cli -f /usr/local/etc/example.xml",pty,stderr & socat PTY,link=/tmp/clixon-tty,rawer EXEC:"/usr/local/bin/clixon_cli -f /usr/local/etc/example.xml",pty,stderr &
screen /tmp/clixon-tty screen /tmp/clixon-tty
## Coverage
```
LDFLAGS=-coverage LINKAGE=static CFLAGS="-O2 -Wall -coverage" ./configure
bash <(curl -s https://codecov.io/bash) -t <token>
```

View file

@ -56,7 +56,12 @@ INSTALLFLAGS = @INSTALLFLAGS@
with_restconf = @with_restconf@ with_restconf = @with_restconf@
INCLUDES = -I$(includedir) @INCLUDES@ INCLUDES = -I$(includedir) @INCLUDES@
CPPFLAGS = @CPPFLAGS@ -fPIC LDFLAGS = @LDFLAGS@
CPPFLAGS = @CPPFLAGS@
ifeq ($(LINKAGE),dynamic)
CPPFLAGS += -fPIC
endif
LINKAGE = @LINKAGE@
BE_PLUGIN = $(APPNAME)_backend.so BE_PLUGIN = $(APPNAME)_backend.so
BE2_PLUGIN = $(APPNAME)_backend_nacm.so BE2_PLUGIN = $(APPNAME)_backend_nacm.so
@ -87,32 +92,52 @@ YANGSPECS = clixon-example@2020-12-01.yang
BE_SRC = $(APPNAME)_backend.c BE_SRC = $(APPNAME)_backend.c
BE_OBJ = $(BE_SRC:%.c=%.o) BE_OBJ = $(BE_SRC:%.c=%.o)
$(BE_PLUGIN): $(BE_OBJ) $(BE_PLUGIN): $(BE_OBJ)
$(CC) -Wall -shared -o $@ -lc $< ifeq ($(LINKAGE),static)
$(CC) -Wall -shared $(LDFLAGS) -o $@ -lc $< -lclixon -lclixon_backend
else
$(CC) -Wall -shared $(LDFLAGS) -o $@ -lc $< -lclixon -lclixon_backend
endif
# Secondary NACM backend plugin # Secondary NACM backend plugin
BE2_SRC = $(APPNAME)_backend_nacm.c BE2_SRC = $(APPNAME)_backend_nacm.c
BE2_OBJ = $(BE2_SRC:%.c=%.o) BE2_OBJ = $(BE2_SRC:%.c=%.o)
$(BE2_PLUGIN): $(BE2_OBJ) $(BE2_PLUGIN): $(BE2_OBJ)
$(CC) -Wall -shared -o $@ -lc $< ifeq ($(LINKAGE),static)
$(CC) -Wall -shared $(LDFLAGS) -o $@ -lc $< -lclixon -lclixon_backend
else
$(CC) -Wall -shared $(LDFLAGS) -o $@ -lc $< -lclixon -lclixon_backend
endif
# CLI frontend plugin # CLI frontend plugin
CLI_SRC = $(APPNAME)_cli.c CLI_SRC = $(APPNAME)_cli.c
CLI_OBJ = $(CLI_SRC:%.c=%.o) CLI_OBJ = $(CLI_SRC:%.c=%.o)
$(CLI_PLUGIN): $(CLI_OBJ) $(CLI_PLUGIN): $(CLI_OBJ)
$(CC) -Wall -shared -o $@ -lc $^ ifeq ($(LINKAGE),static)
$(CC) -Wall -shared $(LDFLAGS) -o $@ -lc $^ -lclixon -L ../../apps/cli/ -lclixon_cli
else
$(CC) -Wall -shared $(LDFLAGS) -o $@ -lc $^ -lclixon -lclixon_cli
endif
# NETCONF frontend plugin # NETCONF frontend plugin
NETCONF_SRC = $(APPNAME)_netconf.c NETCONF_SRC = $(APPNAME)_netconf.c
NETCONF_OBJ = $(NETCONF_SRC:%.c=%.o) NETCONF_OBJ = $(NETCONF_SRC:%.c=%.o)
$(NETCONF_PLUGIN): $(NETCONF_OBJ) $(NETCONF_PLUGIN): $(NETCONF_OBJ)
$(CC) -Wall -shared -o $@ -lc $^ ifeq ($(LINKAGE),static)
$(CC) -Wall -shared $(LDFLAGS) -o $@ -lc $^ -lclixon -L ../../apps/netconf/ -lclixon_netconf
else
$(CC) -Wall -shared $(LDFLAGS) -o $@ -lc $^ -lclixon -lclixon_netconf
endif
# See configure.ac # See configure.ac
# RESTCONF frontend plugin # RESTCONF frontend plugin
RESTCONF_SRC = $(APPNAME)_restconf.c RESTCONF_SRC = $(APPNAME)_restconf.c
RESTCONF_OBJ = $(RESTCONF_SRC:%.c=%.o) RESTCONF_OBJ = $(RESTCONF_SRC:%.c=%.o)
$(RESTCONF_PLUGIN): $(RESTCONF_OBJ) $(RESTCONF_PLUGIN): $(RESTCONF_OBJ)
$(CC) -Wall -shared -o $@ -lc $^ ifeq ($(LINKAGE),static)
$(CC) -Wall -shared $(LDFLAGS) -o $@ -lc $^ -lclixon -L ../../apps/restconf/ -lclixon_restconf
else
$(CC) -Wall -shared $(LDFLAGS) -o $@ -lc $^ -lclixon -lclixon_restconf
endif
SRC = $(BE_SRC) $(BE2_SRC) $(CLI_SRC) $(NETCONF_SRC) SRC = $(BE_SRC) $(BE2_SRC) $(CLI_SRC) $(NETCONF_SRC)
SRC += $(RESTCONF_SRC) SRC += $(RESTCONF_SRC)

View file

@ -53,10 +53,9 @@ CLIXON_MINOR = @CLIXON_VERSION_MINOR@
VPATH = @srcdir@ VPATH = @srcdir@
CC = @CC@ CC = @CC@
LINKAGE = @LINKAGE@ LINKAGE = @LINKAGE@
ifeq ($(LINKAGE),static)
CFLAGS = @CFLAGS@ CFLAGS = @CFLAGS@
else ifeq ($(LINKAGE),dynamic)
CFLAGS = -fPIC @CFLAGS@ CFLAGS += -fPIC
endif endif
SH_SUFFIX = @SH_SUFFIX@ SH_SUFFIX = @SH_SUFFIX@
INSTALL = @INSTALL@ INSTALL = @INSTALL@

View file

@ -209,7 +209,7 @@ plugin_load_one(clicon_handle h,
dlerror(); /* Clear any existing error */ dlerror(); /* Clear any existing error */
if ((handle = dlopen(file, dlflags)) == NULL) { if ((handle = dlopen(file, dlflags)) == NULL) {
error = (char*)dlerror(); error = (char*)dlerror();
clicon_err(OE_PLUGIN, errno, "dlopen: %s", error ? error : "Unknown error"); clicon_err(OE_PLUGIN, errno, "dlopen(%s): %s", file, error ? error : "Unknown error");
goto done; goto done;
} }
/* call plugin_init() if defined, eg CLIXON_PLUGIN_INIT or CLIXON_BACKEND_INIT */ /* call plugin_init() if defined, eg CLIXON_PLUGIN_INIT or CLIXON_BACKEND_INIT */
@ -692,6 +692,24 @@ typedef struct {
/* List of rpc callback entries XXX hang on handle */ /* List of rpc callback entries XXX hang on handle */
static rpc_callback_t *rpc_cb_list = NULL; static rpc_callback_t *rpc_cb_list = NULL;
#if 0 /* Debugging */
static int
rpc_callback_dump(clicon_handle h,
FILE *f)
{
rpc_callback_t *rc;
if ((rc = rpc_cb_list) != NULL)
do {
fprintf(f, "%s %s\n", __FUNCTION__, rc->rc_name);
rc = NEXTQ(rpc_callback_t *, rc);
} while (rc != rpc_cb_list);
fprintf(f, "%s--------------\n", __FUNCTION__);
return 0;
}
#endif
/*! Register a RPC callback by appending a new RPC to the list /*! Register a RPC callback by appending a new RPC to the list
* *
* @param[in] h clicon handle * @param[in] h clicon handle

View file

@ -398,68 +398,6 @@ clixon_process_argv_get(clicon_handle h,
return 0; return 0;
} }
#ifdef NYI
/*! Make a copy of process-entry struct
*
* @param[in] pe0 Original process-entry
* @param[in] pnew New copy of pe0
*/
static int
clixon_process_register_dup(process_entry_t *pe0,
process_entry_t **pnew)
{
int retval = -1;
process_entry_t *pe1 = NULL;
int i;
if (pe0 == NULL){
clicon_err(OE_DB, EINVAL, "pe0 is NULL");
goto done;
}
if (pnew == NULL){
clicon_err(OE_DB, EINVAL, "pnew is NULL");
goto done;
}
if ((pe1 = malloc(sizeof(process_entry_t))) == NULL) {
clicon_err(OE_DB, errno, "malloc");
goto done;
}
memset(pe1, 0, sizeof(*pe1));
memcpy(pe1, pe0, sizeof(process_entry_t)); /* Note lots of malloced memory that needs to be handled after this copy*/
pe1->pe_exiting = 0;
pe1->pe_clone = 0;
if ((pe1->pe_name = strdup(pe0->pe_name)) == NULL){
clicon_err(OE_DB, errno, "strdup name");
goto done;
}
if (pe0->pe_description && (pe1->pe_description = strdup(pe0->pe_description)) == NULL){
clicon_err(OE_DB, errno, "strdup name");
goto done;
}
if (pe0->pe_netns && (pe1->pe_netns = strdup(pe0->pe_netns)) == NULL){
clicon_err(OE_DB, errno, "strdup netns");
goto done;
}
if ((pe1->pe_argv = calloc(pe0->pe_argc, sizeof(char *))) == NULL){
clicon_err(OE_UNIX, errno, "calloc");
goto done;
}
for (i=0; i<pe0->pe_argc; i++){
if (pe0->pe_argv[i] != NULL &&
(pe1->pe_argv[i] = strdup(pe0->pe_argv[i])) == NULL){
clicon_err(OE_UNIX, errno, "strdup");
goto done;
}
}
ADDQ(pe1, _proc_entry_list);
*pnew = pe1;
retval = 0;
done:
/* dealloc pe1 on error */
return retval;
}
#endif
/*! Register an internal process /*! Register an internal process
* *
* @param[in] h Clixon handle * @param[in] h Clixon handle

View file

@ -69,7 +69,7 @@ DATASTORE_TOP="config"
# clixon yang revisions occuring in tests # clixon yang revisions occuring in tests
CLIXON_LIB_REV="2021-03-08" CLIXON_LIB_REV="2021-03-08"
CLIXON_CONFIG_REV="2021-03-08" CLIXON_CONFIG_REV="2021-03-08"
CLIXON_RESTCONF_REV="2020-12-30" CLIXON_RESTCONF_REV="2021-03-08"
CLIXON_EXAMPLE_REV="2020-12-01" CLIXON_EXAMPLE_REV="2020-12-01"
# Length of TSL RSA key # Length of TSL RSA key

View file

@ -75,6 +75,9 @@ testname=
# Namespace: netconf base # Namespace: netconf base
BASENS='urn:ietf:params:xml:ns:netconf:base:1.0' BASENS='urn:ietf:params:xml:ns:netconf:base:1.0'
# Namespace: Clixon config
CONFNS='xmlns="http://clicon.org/config"'
# Namespace: Clixon lib # Namespace: Clixon lib
LIBNS='xmlns="http://clicon.org/lib"' LIBNS='xmlns="http://clicon.org/lib"'
@ -315,12 +318,12 @@ function stop_backend(){
# Wait for restconf to stop sending 502 Bad Gateway # Wait for restconf to stop sending 502 Bad Gateway
function wait_backend(){ function wait_backend(){
reply=$(echo '<rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="101"><ping xmlns="http://clicon.org/lib"/></rpc>]]>]]>' | $clixon_netconf -qef $cfg 2> /dev/null) reply=$(echo "<rpc $DEFAULTNS><ping $LIBNS/></rpc>]]>]]>" | $clixon_netconf -qef $cfg 2> /dev/null)
let i=0; let i=0;
while [[ $reply != "<rpc-reply"* ]]; do while [[ $reply != "<rpc-reply"* ]]; do
# echo "sleep $DEMSLEEP" # echo "sleep $DEMSLEEP"
sleep $DEMSLEEP sleep $DEMSLEEP
reply=$(echo '<rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="101" xmlns="http://clicon.org/lib"><ping/></rpc>]]>]]>' | clixon_netconf -qef $cfg 2> /dev/null) reply=$(echo "<rpc $ÐEFAULTSNS $LIBNS><ping/></rpc>]]>]]>" | clixon_netconf -qef $cfg 2> /dev/null)
# echo "reply:$reply" # echo "reply:$reply"
let i++; let i++;
# echo "wait_backend $i" # echo "wait_backend $i"

View file

@ -28,7 +28,7 @@ else
EXTRACONF="" EXTRACONF=""
fi fi
cat <<EOF > $cfg cat <<EOF > $cfg
<clixon-config xmlns="http://clicon.org/config"> <clixon-config $CONFNS>
<CLICON_CONFIGFILE>$cfg</CLICON_CONFIGFILE> <CLICON_CONFIGFILE>$cfg</CLICON_CONFIGFILE>
<CLICON_FEATURE>ietf-netconf:startup</CLICON_FEATURE> <CLICON_FEATURE>ietf-netconf:startup</CLICON_FEATURE>
<CLICON_FEATURE>clixon-restconf:allow-auth-none</CLICON_FEATURE> <!-- Use auth-type=none --> <CLICON_FEATURE>clixon-restconf:allow-auth-none</CLICON_FEATURE> <!-- Use auth-type=none -->
@ -81,7 +81,7 @@ function rpcstatus()
ret=$($clixon_netconf -qf $cfg<<EOF ret=$($clixon_netconf -qf $cfg<<EOF
$DEFAULTHELLO $DEFAULTHELLO
<rpc $DEFAULTNS> <rpc $DEFAULTNS>
<process-control xmlns="http://clicon.org/lib"> <process-control $LIBNS>
<name>restconf</name> <name>restconf</name>
<operation>status</operation> <operation>status</operation>
</process-control> </process-control>
@ -89,7 +89,7 @@ $DEFAULTHELLO
EOF EOF
) )
# Check pid # Check pid
expect="<pid xmlns=\"http://clicon.org/lib\">[0-9]*</pid>" expect="<pid $LIBNS>[0-9]*</pid>"
match=$(echo "$ret" | grep --null -Go "$expect") match=$(echo "$ret" | grep --null -Go "$expect")
if [ -z "$match" ]; then if [ -z "$match" ]; then
pid=0 pid=0
@ -120,7 +120,7 @@ function rpcoperation()
sleep $DEMSLEEP sleep $DEMSLEEP
new "send rpc $operation" new "send rpc $operation"
expecteof "$clixon_netconf -qf $cfg" 0 "$DEFAULTHELLO<rpc $DEFAULTNS><process-control xmlns=\"http://clicon.org/lib\"><name>restconf</name><operation>$operation</operation></process-control></rpc>]]>]]>" "^<rpc-reply $DEFAULTNS><ok xmlns=\"http://clicon.org/lib\"/></rpc-reply>]]>]]>$" expecteof "$clixon_netconf -qf $cfg" 0 "$DEFAULTHELLO<rpc $DEFAULTNS><process-control $LIBNS><name>restconf</name><operation>$operation</operation></process-control></rpc>]]>]]>" "^<rpc-reply $DEFAULTNS><ok $LIBNS/></rpc-reply>]]>]]>$"
sleep $DEMSLEEP sleep $DEMSLEEP
} }

View file

@ -41,7 +41,7 @@ else
fi fi
cat <<EOF > $cfg cat <<EOF > $cfg
<clixon-config xmlns="http://clicon.org/config"> <clixon-config $CONFNS>
<CLICON_CONFIGFILE>$cfg</CLICON_CONFIGFILE> <CLICON_CONFIGFILE>$cfg</CLICON_CONFIGFILE>
<CLICON_FEATURE>ietf-netconf:startup</CLICON_FEATURE> <CLICON_FEATURE>ietf-netconf:startup</CLICON_FEATURE>
<CLICON_FEATURE>clixon-restconf:allow-auth-none</CLICON_FEATURE> <!-- Use auth-type=none --> <CLICON_FEATURE>clixon-restconf:allow-auth-none</CLICON_FEATURE> <!-- Use auth-type=none -->
@ -95,7 +95,7 @@ function rpcstatus()
ret=$($clixon_netconf -qf $cfg<<EOF ret=$($clixon_netconf -qf $cfg<<EOF
$DEFAULTHELLO $DEFAULTHELLO
<rpc $DEFAULTNS> <rpc $DEFAULTNS>
<process-control xmlns="http://clicon.org/lib"> <process-control $LIBNS>
<name>restconf</name> <name>restconf</name>
<operation>status</operation> <operation>status</operation>
</process-control> </process-control>
@ -103,7 +103,7 @@ $DEFAULTHELLO
EOF EOF
) )
# Check pid # Check pid
expect="<pid xmlns=\"http://clicon.org/lib\">[0-9]*</pid>" expect="<pid $LIBNS>[0-9]*</pid>"
match=$(echo "$ret" | grep --null -Go "$expect") match=$(echo "$ret" | grep --null -Go "$expect")
if [ -z "$match" ]; then if [ -z "$match" ]; then
pid=0 pid=0

View file

@ -38,7 +38,7 @@ module trans{
EOF EOF
cat <<EOF > $cfg cat <<EOF > $cfg
<clixon-config xmlns="http://clicon.org/config"> <clixon-config $CONFNS>
<CLICON_CONFIGFILE>$cfg</CLICON_CONFIGFILE> <CLICON_CONFIGFILE>$cfg</CLICON_CONFIGFILE>
<CLICON_YANG_DIR>/usr/local/share/clixon</CLICON_YANG_DIR> <CLICON_YANG_DIR>/usr/local/share/clixon</CLICON_YANG_DIR>
<CLICON_YANG_MAIN_FILE>$fyang</CLICON_YANG_MAIN_FILE> <CLICON_YANG_MAIN_FILE>$fyang</CLICON_YANG_MAIN_FILE>
@ -115,7 +115,7 @@ xml="<table xmlns=\"urn:example:clixon\"><parameter><name>0</name></parameter></
checklog "$nr nacm_end add: $xml" $line checklog "$nr nacm_end add: $xml" $line
new "Send restart nacm plugin" new "Send restart nacm plugin"
expecteof "$clixon_netconf -qf $cfg" 0 "$DEFAULTHELLO<rpc $DEFAULTNS><restart-plugin xmlns=\"http://clicon.org/lib\"><plugin>example_backend_nacm</plugin></restart-plugin></rpc>]]>]]>" "^<rpc-reply $DEFAULTNS><ok/></rpc-reply>]]>]]>" expecteof "$clixon_netconf -qf $cfg" 0 "$DEFAULTHELLO<rpc $DEFAULTNS><restart-plugin $LIBNS><plugin>example_backend_nacm</plugin></restart-plugin></rpc>]]>]]>" "^<rpc-reply $DEFAULTNS><ok/></rpc-reply>]]>]]>"
# Now analyze log: # Now analyze log:
# all transactions come from nacm plugin only. # all transactions come from nacm plugin only.
@ -129,7 +129,7 @@ done
# Negative test: restart a plugin that does not exist # Negative test: restart a plugin that does not exist
new "Send restart to nonexistatn plugin expect fail" new "Send restart to nonexistatn plugin expect fail"
expecteof "$clixon_netconf -qf $cfg" 0 "$DEFAULTHELLO<rpc $DEFAULTNS><restart-plugin xmlns=\"http://clicon.org/lib\"><plugin>xxx</plugin></restart-plugin></rpc>]]>]]>" "^<rpc-reply $DEFAULTNS><rpc-error><error-type>application</error-type><error-tag>bad-element</error-tag><error-info><bad-element>plugin</bad-element></error-info><error-severity>error</error-severity><error-message>No such plugin</error-message></rpc-error></rpc-reply>]]>]]>$" expecteof "$clixon_netconf -qf $cfg" 0 "$DEFAULTHELLO<rpc $DEFAULTNS><restart-plugin $LIBNS><plugin>xxx</plugin></restart-plugin></rpc>]]>]]>" "^<rpc-reply $DEFAULTNS><rpc-error><error-type>application</error-type><error-tag>bad-element</error-tag><error-info><bad-element>plugin</bad-element></error-info><error-severity>error</error-severity><error-message>No such plugin</error-message></rpc-error></rpc-reply>]]>]]>$"
if [ $BE -ne 0 ]; then if [ $BE -ne 0 ]; then
new "Kill backend" new "Kill backend"