Measuring auth and dhcp in voltha scale test
Change-Id: Ie8a40b33ac6822a9e6d9013e45a99d5c646fecbb
diff --git a/jjb/pipeline/voltha-scale-measurements.groovy b/jjb/pipeline/voltha-scale-measurements.groovy
index 105bb9c..03d5e01 100644
--- a/jjb/pipeline/voltha-scale-measurements.groovy
+++ b/jjb/pipeline/voltha-scale-measurements.groovy
@@ -288,6 +288,83 @@
'''
}
}
+ stage('Wait for subscribers to authenticate') {
+ steps {
+ sh '''
+ if [ ${withOnosApps} = false ] ; then
+ echo "ONOS Apps are not enabled, nothing to check"
+ elif [ ${bbsimAuth} = false ] ; then
+ echo "Authentication is disabled, nothing to check"
+ else
+ # wait until all subscribers authenticate
+ z=$(sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 30115 karaf@127.0.0.1 aaa-users | grep AUTHORIZED_STATE | wc -l)
+ until [ $z -eq ${expectedOnus} ]
+ do
+ echo "${z} of ${expectedOnus} subscribers in AUTHORIZED_STATE state (time: $SECONDS)"
+ sleep ${pollInterval}
+ z=$(sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 30115 karaf@127.0.0.1 aaa-users | grep AUTHORIZED_STATE | wc -l)
+ done
+ echo "${expectedOnus} subscribers in AUTHORIZED_STATE (time: $SECONDS)"
+
+ echo $SECONDS > temp.txt
+ paste onos-flows-time-num.txt temp.txt | awk '{print ($1 + $2)}' > onos-auth-time-num.txt
+
+ echo "ONOS Authentication Duration(s)" > onos-auth-time.txt
+ cat onos-auth-time-num.txt >> onos-auth-time.txt
+ fi
+ '''
+ }
+ }
+ stage('Provision subscribers') {
+ steps {
+ sh '''
+ if [ ${withOnosApps} = false ] ; then
+ echo "ONOS Apps are not enabled, nothing to do"
+ elif [ ${bbsimAuth} = false ] ; then
+ echo "Authentication is disabled, nothing to do"
+ else
+ # provision all authenticated subscribers
+ subs=$(sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 30115 karaf@127.0.0.1 aaa-users | grep AUTHORIZED_STATE | grep -o -E "of:[a-z0-9]+/[0-9]+")
+ echo $subs
+ subs=($subs)
+
+ for s in "${subs[@]}"
+ do
+ IFS=/ read -r device port <<< $s
+ echo -e "\n Authenticating subscriber on device $device and port $port "
+ sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 30115 karaf@127.0.0.1 volt-add-subscriber-access $device $port
+ done
+ fi
+ '''
+ }
+ }
+ stage('Wait for subscribers to DHCP') {
+ steps {
+ sh '''
+ if [ ${withOnosApps} = false ] ; then
+ echo "ONOS Apps are not enabled, nothing to check"
+ elif [ ${bbsimDhcp} = false ] ; then
+ echo "DHCP is disabled, nothing to check"
+ else
+ # wait until all subscribers DHCP
+ z=$(sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 30115 karaf@127.0.0.1 dhcpl2relay-allocations | grep DHCPACK | wc -l)
+ until [ $z -eq ${expectedOnus} ]
+ do
+ echo "${z} of ${expectedOnus} subscribers received DHCPACK (time: $SECONDS)"
+ sleep ${pollInterval}
+ z=$(sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 30115 karaf@127.0.0.1 dhcpl2relay-allocations | grep DHCPACK | wc -l)
+ done
+ echo "${expectedOnus} subscribers received DHCPACK (time: $SECONDS)"
+
+ echo $SECONDS > temp.txt
+ paste onos-auth-time-num.txt temp.txt | awk '{print ($1 + $2)}' > onos-dhcp-time-num.txt
+
+ echo "ONOS DHCP Duration(s)" > onos-dhcp-time.txt
+ cat onos-dhcp-time-num.txt >> onos-dhcp-time.txt
+ fi
+ '''
+ }
+ }
}
}
}
@@ -300,6 +377,8 @@
[displayTableFlag: false, exclusionValues: '', file: 'onos-ports-time.txt', inclusionFlag: 'OFF', url: ''],
[displayTableFlag: false, exclusionValues: '', file: 'voltha-flows-time.txt', inclusionFlag: 'OFF', url: ''],
[displayTableFlag: false, exclusionValues: '', file: 'onos-flows-time.txt', inclusionFlag: 'OFF', url: '']
+ [displayTableFlag: false, exclusionValues: '', file: 'onos-auth-time.txt', inclusionFlag: 'OFF', url: '']
+ [displayTableFlag: false, exclusionValues: '', file: 'onos-dhcp-time.txt', inclusionFlag: 'OFF', url: '']
],
group: 'Voltha-Scale-Numbers', numBuilds: '20', style: 'line', title: "Time (${BBSIMdelay}s Delay)", yaxis: 'Time (s)', useDescr: true
])
@@ -320,6 +399,18 @@
echo "#-of-flows" > onos-flows-count.txt
echo $(sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 30115 karaf@127.0.0.1 flows -s | grep ADDED | wc -l) >> onos-flows-count.txt
'''
+ // dump the authenticated users
+ sh '''
+ if [ ${withOnosApps} = true ] && [ ${bbsimAuth} ] ; then
+ echo $(sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 30115 karaf@127.0.0.1 aaa-users) >> onos-aaa-users.txt
+ fi
+ '''
+ // dump the dhcp users
+ sh '''
+ if [ ${withOnosApps} = true ] && [ ${bbsimAuth} ] ; then
+ echo $(sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 30115 karaf@127.0.0.1 dhcpl2relay-allocations) >> onos-dhcp-allocations.txt
+ fi
+ '''
// check which containers were used in this build
sh '''
kubectl get pods --all-namespaces -o jsonpath="{range .items[*].status.containerStatuses[*]}{.image}{'\\n'}" | sort | uniq