#!/bin/bash # Scaling test if [ $# = 0 ]; then number=1000 elif [ $# = 1 ]; then number=$1 else echo "Usage: $0 []" exit 1 fi fyang=/tmp/scaling.yang fconfig=/tmp/config # include err() and new() functions . ./lib.sh # For memcheck # clixon_netconf="valgrind --leak-check=full --show-leak-kinds=all clixon_netconf" # clixon_netconf="valgrind --tool=callgrind clixon_netconf clixon_netconf=clixon_netconf cat < $fyang module ietf-ip{ container x { list y { key "a"; leaf a { type string; } leaf b { type string; } } leaf-list c { type string; } } } EOF # kill old backend (if any) new "kill old backend" echo "clixon_backend -zf $clixon_cf -y $fyang" sudo clixon_backend -zf $clixon_cf -y $fyang if [ $? -ne 0 ]; then err fi new "start backend" # start new backend sudo clixon_backend -If $clixon_cf -y $fyang if [ $? -ne 0 ]; then err fi new "generate large list config" echo -n "" > $fconfig for (( i=0; i<$number; i++ )); do echo -n "$i$i" >> $fconfig done echo "]]>]]>" >> $fconfig new "netconf edit large config" expecteof_file "time -p $clixon_netconf -qf $clixon_cf -y $fyang" "$fconfig" "^]]>]]>$" new "netconf edit large config again" expecteof_file "time -p $clixon_netconf -qf $clixon_cf -y $fyang" "$fconfig" "^]]>]]>$" rm $fconfig new "netconf commit large config" expecteof "time -p $clixon_netconf -qf $clixon_cf -y $fyang" "]]>]]>" "^]]>]]>$" new "netconf add small config" expecteof "time -p $clixon_netconf -qf $clixon_cf -y $fyang" "xy]]>]]>" "^]]>]]>$" new "netconf commit small config" expecteof "time -p $clixon_netconf -qf $clixon_cf -y $fyang" "]]>]]>" "^]]>]]>$" new "netconf get large config" expecteof "time -p $clixon_netconf -qf $clixon_cf -y $fyang" "]]>]]>" "^0011" new "generate large leaf-list config" echo -n "replace" > $fconfig for (( i=0; i<$number; i++ )); do echo -n "$i" >> $fconfig done echo "]]>]]>" >> $fconfig new "netconf replace large list-leaf config" expecteof_file "time -p $clixon_netconf -qf $clixon_cf -y $fyang" "$fconfig" "^]]>]]>$" rm $fconfig new "netconf commit large leaf-list config" expecteof "time -p $clixon_netconf -qf $clixon_cf -y $fyang" "]]>]]>" "^]]>]]>$" new "netconf add small leaf-list config" expecteof "time -p $clixon_netconf -qf $clixon_cf -y $fyang" "x]]>]]>" "^]]>]]>$" new "netconf commit small leaf-list config" expecteof "time -p $clixon_netconf -qf $clixon_cf -y $fyang" "]]>]]>" "^]]>]]>$" new "netconf get large leaf-list config" expecteof "time -p $clixon_netconf -qf $clixon_cf -y $fyang" "]]>]]>" "^01" new "Kill backend" # Check if still alive pid=`pgrep clixon_backend` if [ -z "$pid" ]; then err "backend already dead" fi # kill backend sudo clixon_backend -zf $clixon_cf if [ $? -ne 0 ]; then err "kill backend" fi