[VOL-2821] Verify meters in ONOS
Change-Id: I8fcb173c939fe1c5be3262d3d726329f4ebd0c13
diff --git a/libraries/onos.robot b/libraries/onos.robot
index 9ba04c4..4012033 100755
--- a/libraries/onos.robot
+++ b/libraries/onos.robot
@@ -185,6 +185,109 @@
... flows -s ADDED ${olt_of_id} | grep -v deviceId | grep -v ETH_TYPE:lldp | wc -l
Should Be Equal As Integers ${access_flows_added} ${expected_flows}
+Get Programmed Subscribers
+ [Arguments] ${ip} ${port} ${olt_of_id} ${onu_port}
+ [Documentation] Retrieves the subscriber details at a given location
+ ${sub_location}= Catenate SEPARATOR=/ ${olt_of_id} ${onu_port}
+ ${programmed_sub}= Execute ONOS CLI Command ${ip} ${port}
+ ... volt-programmed-subscribers | grep ${sub_location}
+ [Return] ${programmed_sub}
+
+Get Upstream and Downstream Bandwidth Profile Name
+ [Arguments] ${programmed_sub}
+ [Documentation] Retrieves the upstream and downstream bandwidth profile name
+ ... from the programmed subscriber
+ @{programmed_sub_array}= Split String ${programmed_sub} ,
+ # Get upstream bandwidth profile name for the subscriber
+ @{param_val_pair}= Split String ${programmed_sub_array[9]} =
+ ${programmed_sub_param}= Set Variable ${param_val_pair[0]}
+ ${programmed_sub_val}= Set Variable ${param_val_pair[1]}
+ ${us_bw_profile}= Run Keyword If '${programmed_sub_param}' == ' upstreamBandwidthProfile'
+ ... Set Variable ${programmed_sub_val}
+ Log ${us_bw_profile}
+ # Get downstream bandwidth profile name for the subscriber
+ @{param_val_pair}= Split String ${programmed_sub_array[10]} =
+ ${programmed_sub_param}= Set Variable ${param_val_pair[0]}
+ ${programmed_sub_val}= Set Variable ${param_val_pair[1]}
+ ${ds_bw_profile}= Run Keyword If '${programmed_sub_param}' == ' downstreamBandwidthProfile'
+ ... Set Variable ${programmed_sub_val}
+ Log ${ds_bw_profile}
+ [Return] ${us_bw_profile} ${ds_bw_profile}
+
+Get Bandwidth Profile Details
+ [Arguments] ${ip} ${port} ${bw_profile}
+ [Documentation] Retrieves the details of the given bandwidth profile
+ ${bw_profile_values}= Execute ONOS CLI Command ${ONOS_SSH_IP} ${ONOS_SSH_PORT}
+ ... bandwidthprofile ${bw_profile}
+ @{bw_profile_array}= Split String ${bw_profile_values} ,
+ @{param_val_pair}= Split String ${bw_profile_array[1]} =
+ ${bw_param}= Set Variable ${param_val_pair[0]}
+ ${bw_val}= Set Variable ${param_val_pair[1]}
+ ${cir} Run Keyword If '${bw_param}' == ' committedInformationRate'
+ ... Set Variable ${bw_val}
+ @{param_val_pair}= Split String ${bw_profile_array[2]} =
+ ${bw_param}= Set Variable ${param_val_pair[0]}
+ ${bw_val}= Set Variable ${param_val_pair[1]}
+ ${cbs} Run Keyword If '${bw_param}' == ' committedBurstSize'
+ ... Set Variable ${bw_val}
+ @{param_val_pair}= Split String ${bw_profile_array[3]} =
+ ${bw_param}= Set Variable ${param_val_pair[0]}
+ ${bw_val}= Set Variable ${param_val_pair[1]}
+ ${eir} Run Keyword If '${bw_param}' == ' exceededInformationRate'
+ ... Set Variable ${bw_val}
+ @{param_val_pair}= Split String ${bw_profile_array[4]} =
+ ${bw_param}= Set Variable ${param_val_pair[0]}
+ ${bw_val}= Set Variable ${param_val_pair[1]}
+ ${ebs} Run Keyword If '${bw_param}' == ' exceededBurstSize'
+ ... Set Variable ${bw_val}
+ @{param_val_pair}= Split String ${bw_profile_array[5]} =
+ ${bw_param}= Set Variable ${param_val_pair[0]}
+ ${bw_val}= Set Variable ${param_val_pair[1]}
+ @{bw_val_air}= Split String ${bw_val} }
+ ${air} Run Keyword If '${bw_param}' == ' assuredInformationRate'
+ ... Set Variable ${bw_val_air[0]}
+ [Return] ${cir} ${cbs} ${eir} ${ebs} ${air}
+
+Verify Meters in ONOS
+ [Arguments] ${ip} ${port} ${olt_of_id} ${onu_port}
+ [Documentation] Verifies the meters
+ # Get programmed subscriber
+ ${programmed_sub}= Get Programmed Subscribers ${ip} ${port}
+ ... ${olt_of_id} ${onu_port}
+ Log ${programmed_sub}
+ ${us_bw_profile} ${ds_bw_profile} Get Upstream and Downstream Bandwidth Profile Name
+ ... ${programmed_sub}
+ # Get upstream bandwidth profile details
+ ${us_cir} ${us_cbs} ${us_eir} ${us_ebs} ${us_air} Get Bandwidth Profile Details
+ ... ${ip} ${port} ${us_bw_profile}
+ Sleep 1s
+ # Verify meter for upstream bandwidth profile
+ ${us_meter_cmd}= Catenate SEPARATOR=
+ ... meters ${olt_of_id} | grep state=ADDED | grep rate=${us_cir} | grep burst-size=${us_cbs}
+ ... | grep rate=${us_eir} | grep burst-size=${us_ebs} | grep rate=${us_air} | wc -l
+ ${upstream_meter_added}= Execute ONOS CLI Command ${ip} ${port}
+ ... ${us_meter_cmd}
+ Should Be Equal As Integers ${upstream_meter_added} 1
+ Sleep 1s
+ # Get downstream bandwidth profile details
+ ${ds_cir} ${ds_cbs} ${ds_eir} ${ds_ebs} ${ds_air} Get Bandwidth Profile Details
+ ... ${ip} ${port} ${ds_bw_profile}
+ Sleep 1s
+ # Verify meter for downstream bandwidth profile
+ ${ds_meter_cmd}= Catenate SEPARATOR=
+ ... meters ${olt_of_id} | grep state=ADDED | grep rate=${ds_cir} | grep burst-size=${ds_cbs}
+ ... | grep rate=${ds_eir} | grep burst-size=${ds_ebs} | grep rate=${ds_air} | wc -l
+ ${downstream_meter_added}= Execute ONOS CLI Command ${ip} ${port}
+ ... ${ds_meter_cmd}
+ Should Be Equal As Integers ${downstream_meter_added} 1
+
+Verify Default Meter Present in ONOS
+ [Arguments] ${ip} ${port} ${olt_of_id}
+ [Documentation] Verifies the single default meter entry is present
+ ${meter_added}= Execute ONOS CLI Command ${ip} ${port}
+ ... meters ${olt_of_id} | grep state=ADDED | wc -l
+ Should Be Equal As Integers ${meter_added} 1
+
Verify Device Flows Removed
[Arguments] ${ip} ${port} ${olt_of_id}
[Documentation] Verifies all flows are removed from the device