Merge "[VOL-4237] Creating keyword to collect kubernetes components log removing log-collector.sh from voltha-dt-physical-functional-tests.groovy"
diff --git a/jjb/pipeline/voltha-tt-physical-functional-tests.groovy b/jjb/pipeline/voltha-tt-physical-functional-tests.groovy
index e7250aa..35b034a 100644
--- a/jjb/pipeline/voltha-tt-physical-functional-tests.groovy
+++ b/jjb/pipeline/voltha-tt-physical-functional-tests.groovy
@@ -217,15 +217,13 @@
steps {
sh """
mkdir -p $ROBOT_LOGS_DIR
- if [ "${params.branch}" == "master" ]; then
- if [ ${params.enableMultiUni} = false ]; then
- if ( ${powerSwitch} ); then
- export ROBOT_MISC_ARGS="--removekeywords wuks -L TRACE -i functionalTT -i PowerSwitch -e bbsim -e notready -d $ROBOT_LOGS_DIR -v POD_NAME:${configFileName} -v KUBERNETES_CONFIGS_DIR:$WORKSPACE/${configBaseDir}/${configKubernetesDir} -v container_log_dir:$WORKSPACE -v OLT_ADAPTER_APP_LABEL:${oltAdapterAppLabel} -V $ROBOT_TEST_INPUT_FILE"
- else
- export ROBOT_MISC_ARGS="--removekeywords wuks -L TRACE -i functionalTT -e PowerSwitch -e bbsim -e notready -d $ROBOT_LOGS_DIR -v POD_NAME:${configFileName} -v KUBERNETES_CONFIGS_DIR:$WORKSPACE/${configBaseDir}/${configKubernetesDir} -v container_log_dir:$WORKSPACE -v OLT_ADAPTER_APP_LABEL:${oltAdapterAppLabel} -V $ROBOT_TEST_INPUT_FILE"
- fi
- make -C $WORKSPACE/voltha-system-tests voltha-tt-test || true
+ if [ ${params.enableMultiUni} = false ]; then
+ if ( ${powerSwitch} ); then
+ export ROBOT_MISC_ARGS="--removekeywords wuks -L TRACE -i functionalTT -i PowerSwitch -e bbsim -e notready -d $ROBOT_LOGS_DIR -v POD_NAME:${configFileName} -v KUBERNETES_CONFIGS_DIR:$WORKSPACE/${configBaseDir}/${configKubernetesDir} -v container_log_dir:$WORKSPACE -v OLT_ADAPTER_APP_LABEL:${oltAdapterAppLabel} -V $ROBOT_TEST_INPUT_FILE"
+ else
+ export ROBOT_MISC_ARGS="--removekeywords wuks -L TRACE -i functionalTT -e PowerSwitch -e bbsim -e notready -d $ROBOT_LOGS_DIR -v POD_NAME:${configFileName} -v KUBERNETES_CONFIGS_DIR:$WORKSPACE/${configBaseDir}/${configKubernetesDir} -v container_log_dir:$WORKSPACE -v OLT_ADAPTER_APP_LABEL:${oltAdapterAppLabel} -V $ROBOT_TEST_INPUT_FILE"
fi
+ make -C $WORKSPACE/voltha-system-tests voltha-tt-test || true
fi
"""
}
diff --git a/jjb/pipeline/voltha/master/physical-build.groovy b/jjb/pipeline/voltha/master/physical-build.groovy
index ee49e55..079ba91 100644
--- a/jjb/pipeline/voltha/master/physical-build.groovy
+++ b/jjb/pipeline/voltha/master/physical-build.groovy
@@ -282,24 +282,11 @@
for(int i=0; i < deployment_config.olts.size(); i++) {
// NOTE what is oltDebVersion23? is that for VOLTHA-2.3? do we still need this differentiation?
sh returnStdout: true, script: """
- if [[ "${branch}" != "master" ]] && [[ "${params.inBandManagement}" == "true" ]]; then
- ssh-keyscan -H ${deployment_config.olts[i].sship} >> ~/.ssh/known_hosts
+ ssh-keyscan -H ${deployment_config.olts[i].sship} >> ~/.ssh/known_hosts
+ if [ "${params.inBandManagement}" == "true" ]; then
sshpass -p ${deployment_config.olts[i].pass} ssh -l ${deployment_config.olts[i].user} ${deployment_config.olts[i].sship} 'kill -9 `pgrep -f "[b]ash /opt/openolt/openolt_dev_mgmt_daemon_process_watchdog"` || true'
- sshpass -p ${deployment_config.olts[i].pass} ssh -l ${deployment_config.olts[i].user} ${deployment_config.olts[i].sship} "dpkg --install ${deployment_config.olts[i].oltDebVersion23}"
fi
- if [[ "${branch}" != "master" ]] && [[ "${params.inBandManagement}" == "false" ]]; then
- ssh-keyscan -H ${deployment_config.olts[i].sship} >> ~/.ssh/known_hosts
- sshpass -p ${deployment_config.olts[i].pass} ssh -l ${deployment_config.olts[i].user} ${deployment_config.olts[i].sship} "dpkg --install ${deployment_config.olts[i].oltDebVersion23}"
- fi
- if [[ "${branch}" == "master" ]] && [[ "${params.inBandManagement}" == "true" ]]; then
- ssh-keyscan -H ${deployment_config.olts[i].sship} >> ~/.ssh/known_hosts
- sshpass -p ${deployment_config.olts[i].pass} ssh -l ${deployment_config.olts[i].user} ${deployment_config.olts[i].sship} 'kill -9 `pgrep -f "[b]ash /opt/openolt/openolt_dev_mgmt_daemon_process_watchdog"` || true'
- sshpass -p ${deployment_config.olts[i].pass} ssh -l ${deployment_config.olts[i].user} ${deployment_config.olts[i].sship} "dpkg --install ${deployment_config.olts[i].oltDebVersion}"
- fi
- if [[ "${branch}" == "master" ]] && [[ "${params.inBandManagement}" == "false" ]]; then
- ssh-keyscan -H ${deployment_config.olts[i].sship} >> ~/.ssh/known_hosts
- sshpass -p ${deployment_config.olts[i].pass} ssh -l ${deployment_config.olts[i].user} ${deployment_config.olts[i].sship} "dpkg --install ${deployment_config.olts[i].oltDebVersion}"
- fi
+ sshpass -p ${deployment_config.olts[i].pass} ssh -l ${deployment_config.olts[i].user} ${deployment_config.olts[i].sship} "dpkg --install ${deployment_config.olts[i].oltDebVersion}"
sleep 10
"""
timeout(5) {
diff --git a/jjb/pipeline/voltha/master/voltha-scale-test.groovy b/jjb/pipeline/voltha/master/voltha-scale-test.groovy
index d730f1d..6a8535b 100644
--- a/jjb/pipeline/voltha/master/voltha-scale-test.groovy
+++ b/jjb/pipeline/voltha/master/voltha-scale-test.groovy
@@ -323,9 +323,6 @@
sshpass -e ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 30115 karaf@127.0.0.1 cfg set org.onosproject.net.flowobjective.impl.FlowObjectiveManager numThreads ${flowObjWorkerThreads}
sshpass -e ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 30115 karaf@127.0.0.1 cfg set org.onosproject.net.flowobjective.impl.InOrderFlowObjectiveManager objectiveTimeoutMs 300000
- #SR is not needed in scale tests and not currently used by operators in production, can be disabled.
- sshpass -e ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 30115 karaf@127.0.0.1 app deactivate org.onosproject.segmentrouting
-
if [ ${withFlows} = false ]; then
sshpass -e ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 30115 karaf@127.0.0.1 app deactivate org.opencord.olt
fi
@@ -474,6 +471,9 @@
return params.withIgmp
}
}
+ options {
+ timeout(time: 11, unit: 'MINUTES')
+ }
steps {
sh returnStdout: false, script: """
# sshpass -e ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 30115 karaf@127.0.0.1 log:set DEBUG org.onosproject.store.group.impl
@@ -484,28 +484,43 @@
cd $WORKSPACE/voltha-system-tests
make vst_venv
'''
- timeout(time: 11, unit: 'MINUTES') {
- sh '''
- ROBOT_PARAMS="--exitonfailure \
- -v olt:${olts} \
- -v pon:${pons} \
- -v onu:${onus} \
- -v workflow:${workflow} \
- -v withEapol:${withEapol} \
- -v withDhcp:${withDhcp} \
- -v withIgmp:${withIgmp} \
- -v ONOS_SSH_PORT:30115 \
- -v ONOS_REST_PORT:30120 \
- --noncritical non-critical \
- -i igmp \
- -e setup -e activation -e flow-before \
- -e authentication -e provision -e flow-after \
- -e dhcp -e teardown "
- cd $WORKSPACE/voltha-system-tests
- source ./vst_venv/bin/activate
- robot -d $ROBOT_LOGS_DIR \
- $ROBOT_PARAMS tests/scale/Voltha_Scale_Tests.robot
- '''
+ script {
+ Exception caughtException = null
+
+ catchError(buildResult: 'SUCCESS', stageResult: 'ABORTED') {
+ try {
+ sh '''
+ ROBOT_PARAMS="--exitonfailure \
+ -v olt:${olts} \
+ -v pon:${pons} \
+ -v onu:${onus} \
+ -v workflow:${workflow} \
+ -v withEapol:${withEapol} \
+ -v withDhcp:${withDhcp} \
+ -v withIgmp:${withIgmp} \
+ -v ONOS_SSH_PORT:30115 \
+ -v ONOS_REST_PORT:30120 \
+ --noncritical non-critical \
+ -i igmp \
+ -e setup -e activation -e flow-before \
+ -e authentication -e provision -e flow-after \
+ -e dhcp -e teardown "
+ cd $WORKSPACE/voltha-system-tests
+ source ./vst_venv/bin/activate
+ robot -d $ROBOT_LOGS_DIR \
+ $ROBOT_PARAMS tests/scale/Voltha_Scale_Tests.robot
+ '''
+ } catch (org.jenkinsci.plugins.workflow.steps.FlowInterruptedException e) {
+ // if the error is a timeout don't mark the build as failed
+ println "IGMP test timed out"
+ } catch (Throwable e) {
+ caughtException = e
+ }
+ }
+
+ if (caughtException) {
+ error caughtException.message
+ }
}
}
}
diff --git a/jjb/pipeline/voltha/voltha-2.8/physical-build.groovy b/jjb/pipeline/voltha/voltha-2.8/physical-build.groovy
index f26fd4a..5244628 100644
--- a/jjb/pipeline/voltha/voltha-2.8/physical-build.groovy
+++ b/jjb/pipeline/voltha/voltha-2.8/physical-build.groovy
@@ -149,9 +149,8 @@
if ( params.configurePod && params.profile != "Default" ) {
for(int i=0; i < deployment_config.olts.size(); i++) {
def tech_prof_directory = "XGS-PON"
- // If no debian package is specified we default to GPON for the ADTRAN OLT.
- if (!deployment_config.olts[i].containsKey("oltDebVersion") || deployment_config.olts[i].oltDebVersion.contains("asgvolt64")){
- tech_prof_directory = "GPON"
+ if (deployment_config.olts[i].containsKey("board_technology")){
+ tech_prof_directory = deployment_config.olts[i]["board_technology"]
}
timeout(1) {
sh returnStatus: true, script: """
@@ -283,24 +282,11 @@
for(int i=0; i < deployment_config.olts.size(); i++) {
// NOTE what is oltDebVersion23? is that for VOLTHA-2.3? do we still need this differentiation?
sh returnStdout: true, script: """
- if [[ "${branch}" != "master" ]] && [[ "${params.inBandManagement}" == "true" ]]; then
- ssh-keyscan -H ${deployment_config.olts[i].sship} >> ~/.ssh/known_hosts
+ ssh-keyscan -H ${deployment_config.olts[i].sship} >> ~/.ssh/known_hosts
+ if [ "${params.inBandManagement}" == "true" ]; then
sshpass -p ${deployment_config.olts[i].pass} ssh -l ${deployment_config.olts[i].user} ${deployment_config.olts[i].sship} 'kill -9 `pgrep -f "[b]ash /opt/openolt/openolt_dev_mgmt_daemon_process_watchdog"` || true'
- sshpass -p ${deployment_config.olts[i].pass} ssh -l ${deployment_config.olts[i].user} ${deployment_config.olts[i].sship} "dpkg --install ${deployment_config.olts[i].oltDebVersion23}"
fi
- if [[ "${branch}" != "master" ]] && [[ "${params.inBandManagement}" == "false" ]]; then
- ssh-keyscan -H ${deployment_config.olts[i].sship} >> ~/.ssh/known_hosts
- sshpass -p ${deployment_config.olts[i].pass} ssh -l ${deployment_config.olts[i].user} ${deployment_config.olts[i].sship} "dpkg --install ${deployment_config.olts[i].oltDebVersion23}"
- fi
- if [[ "${branch}" == "master" ]] && [[ "${params.inBandManagement}" == "true" ]]; then
- ssh-keyscan -H ${deployment_config.olts[i].sship} >> ~/.ssh/known_hosts
- sshpass -p ${deployment_config.olts[i].pass} ssh -l ${deployment_config.olts[i].user} ${deployment_config.olts[i].sship} 'kill -9 `pgrep -f "[b]ash /opt/openolt/openolt_dev_mgmt_daemon_process_watchdog"` || true'
- sshpass -p ${deployment_config.olts[i].pass} ssh -l ${deployment_config.olts[i].user} ${deployment_config.olts[i].sship} "dpkg --install ${deployment_config.olts[i].oltDebVersion}"
- fi
- if [[ "${branch}" == "master" ]] && [[ "${params.inBandManagement}" == "false" ]]; then
- ssh-keyscan -H ${deployment_config.olts[i].sship} >> ~/.ssh/known_hosts
- sshpass -p ${deployment_config.olts[i].pass} ssh -l ${deployment_config.olts[i].user} ${deployment_config.olts[i].sship} "dpkg --install ${deployment_config.olts[i].oltDebVersion}"
- fi
+ sshpass -p ${deployment_config.olts[i].pass} ssh -l ${deployment_config.olts[i].user} ${deployment_config.olts[i].sship} "dpkg --install ${deployment_config.olts[i].oltDebVersion}"
sleep 10
"""
timeout(5) {
diff --git a/jjb/pipeline/voltha/voltha-2.8/voltha-scale-test.groovy b/jjb/pipeline/voltha/voltha-2.8/voltha-scale-test.groovy
index d8185e4..82fbf27 100644
--- a/jjb/pipeline/voltha/voltha-2.8/voltha-scale-test.groovy
+++ b/jjb/pipeline/voltha/voltha-2.8/voltha-scale-test.groovy
@@ -321,9 +321,6 @@
sshpass -e ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 30115 karaf@127.0.0.1 cfg set org.onosproject.net.flowobjective.impl.FlowObjectiveManager numThreads ${flowObjWorkerThreads}
sshpass -e ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 30115 karaf@127.0.0.1 cfg set org.onosproject.net.flowobjective.impl.InOrderFlowObjectiveManager objectiveTimeoutMs 300000
- #SR is not needed in scale tests and not currently used by operators in production, can be disabled.
- sshpass -e ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 30115 karaf@127.0.0.1 app deactivate org.onosproject.segmentrouting
-
if [ ${withFlows} = false ]; then
sshpass -e ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 30115 karaf@127.0.0.1 app deactivate org.opencord.olt
fi
@@ -463,50 +460,6 @@
}
}
}
- stage('Run Igmp Tests') {
- environment {
- ROBOT_LOGS_DIR="$WORKSPACE/RobotLogs/IgmpTests"
- }
- when {
- expression {
- return params.withIgmp
- }
- }
- steps {
- sh returnStdout: false, script: """
- # sshpass -e ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 30115 karaf@127.0.0.1 log:set DEBUG org.onosproject.store.group.impl
- """
- sh '''
- set +e
- mkdir -p $ROBOT_LOGS_DIR
- cd $WORKSPACE/voltha-system-tests
- make vst_venv
- '''
- timeout(time: 11, unit: 'MINUTES') {
- sh '''
- ROBOT_PARAMS="--exitonfailure \
- -v olt:${olts} \
- -v pon:${pons} \
- -v onu:${onus} \
- -v workflow:${workflow} \
- -v withEapol:${withEapol} \
- -v withDhcp:${withDhcp} \
- -v withIgmp:${withIgmp} \
- -v ONOS_SSH_PORT:30115 \
- -v ONOS_REST_PORT:30120 \
- --noncritical non-critical \
- -i igmp \
- -e setup -e activation -e flow-before \
- -e authentication -e provision -e flow-after \
- -e dhcp -e teardown "
- cd $WORKSPACE/voltha-system-tests
- source ./vst_venv/bin/activate
- robot -d $ROBOT_LOGS_DIR \
- $ROBOT_PARAMS tests/scale/Voltha_Scale_Tests.robot
- '''
- }
- }
- }
}
post {
always {
diff --git a/jjb/voltha-test/voltha.yaml b/jjb/voltha-test/voltha.yaml
index 2420897..5e2353c 100644
--- a/jjb/voltha-test/voltha.yaml
+++ b/jjb/voltha-test/voltha.yaml
@@ -261,6 +261,7 @@
- 'build_voltha_pod_manual':
build-node: 'menlo-soak-pod'
config-pod: 'onf-soak-pod'
+ disable-job: true
bbsimReplicas: 1
profile: '1T8GEM'
name-extension: '_DT'
@@ -275,7 +276,7 @@
- 'build_voltha_pod_manual_test':
build-node: 'menlo-soak-pod'
config-pod: 'onf-soak-pod'
- disable-job: false
+ disable-job: true
profile: '1T8GEM'
branch: 'master'
release: 'master'
@@ -290,7 +291,7 @@
- 'build_voltha_pod_soak_test':
build-node: 'menlo-soak-pod'
config-pod: 'onf-soak-pod'
- 'disable-job': false
+ 'disable-job': true
profile: '1T8GEM'
branch: 'master'
release: 'master'
@@ -306,7 +307,7 @@
- 'build_voltha_pod_soak_test':
build-node: 'menlo-soak-pod'
config-pod: 'onf-soak-pod'
- 'disable-job': false
+ 'disable-job': true
profile: '1T8GEM'
branch: 'master'
release: 'master'
@@ -317,7 +318,71 @@
pipeline-script: 'voltha-physical-soak-dt-tests.groovy'
time-trigger: "H H * * 6"
- # Certification (Radisys) pod with olt/onu - master versions timer based job , two OLTs
+ # ONF Menlo Soak POD build job - voltha-2.8 branch
+ - 'build_voltha_pod_manual':
+ build-node: 'menlo-soak-pod'
+ config-pod: 'onf-soak-pod'
+ disable-job: false
+ branch: 'voltha-2.8'
+ release: '2.8'
+ bbsimReplicas: 1
+ profile: '1T8GEM'
+ name-extension: '_DT'
+ work-flow: 'DT'
+ reinstall-olt: true
+ num-of-onus: 32
+ num-of-ponports: 16
+ logLevel: 'WARN'
+ pipeline-script: 'voltha/voltha-2.8/physical-build.groovy'
+
+ # ONF Menlo Soak POD test job - voltha-2.8 branch
+ # Run tests manually triggering the job
+ - 'build_voltha_pod_manual_test':
+ build-node: 'menlo-soak-pod'
+ config-pod: 'onf-soak-pod'
+ disable-job: false
+ profile: '1T8GEM'
+ branch: 'voltha-2.8'
+ release: '2.8'
+ work-flow: 'DT'
+ name-extension: '_DT_soak_Func'
+ test-type: 'Functional'
+ test-repo: 'voltha-system-tests'
+ pipeline-script: 'voltha-physical-soak-dt-tests.groovy'
+
+ # ONF Menlo Soak POD test job - voltha-2.8 branch
+ # Run failure/recovery tests every Wednesday
+ - 'build_voltha_pod_soak_test':
+ build-node: 'menlo-soak-pod'
+ config-pod: 'onf-soak-pod'
+ 'disable-job': false
+ profile: '1T8GEM'
+ branch: 'voltha-2.8'
+ release: '2.8'
+ work-flow: 'DT'
+ name-extension: '_DT_soak_Fail'
+ test-type: 'Failure'
+ test-repo: 'voltha-system-tests'
+ pipeline-script: 'voltha-physical-soak-dt-tests.groovy'
+ time-trigger: "H H * * 3"
+
+ # ONF Menlo Soak POD test job - voltha-2.8 branch
+ # Run dataplane tests every Saturday
+ - 'build_voltha_pod_soak_test':
+ build-node: 'menlo-soak-pod'
+ config-pod: 'onf-soak-pod'
+ 'disable-job': false
+ profile: '1T8GEM'
+ branch: 'voltha-2.8'
+ release: '2.8'
+ work-flow: 'DT'
+ name-extension: '_DT_soak_DP'
+ test-type: 'Dataplane'
+ test-repo: 'voltha-system-tests'
+ pipeline-script: 'voltha-physical-soak-dt-tests.groovy'
+ time-trigger: "H H * * 6"
+
+ # Certification (Radisys) pod with olt/onu - master versions timer based job
- 'build_voltha_pod_release_timer':
build-node: 'menlo-certification-pod'
config-pod: 'menlo-certification-pod-radisys-gpon'
@@ -330,7 +395,7 @@
num-of-atomix: '3'
time: '1'
- # Certification (Radisys) POD test job - master versions: uses tech profile on voltha branch
+ # Certification (Radisys) POD test job - master versions: uses 1T8GEM tech profile on voltha branch
- 'build_voltha_pod_test':
build-node: 'menlo-certification-pod'
config-pod: 'menlo-certification-pod-radisys-gpon'
@@ -344,6 +409,36 @@
power-switch: True
pipeline-script: 'voltha/master/voltha-dt-physical-functional-tests.groovy'
+ # Certification (Radisys) pod with olt/onu - 2.8 version timer based job
+ - 'build_voltha_pod_release_timer':
+ build-node: 'menlo-certification-pod'
+ config-pod: 'menlo-certification-pod-radisys-gpon'
+ disable-job: false
+ reinstall-olt: false
+ release: '2.8'
+ branch: 'voltha-2.8'
+ name-extension: '_DT'
+ work-flow: 'DT'
+ profile: '1T8GEM'
+ num-of-onos: '3'
+ num-of-atomix: '3'
+ time: '7'
+ pipeline-script: 'voltha/voltha-2.8/physical-build.groovy'
+
+ # Certification (Radisys) POD test job - master versions: uses 1T8GEM tech profile on voltha branch
+ - 'build_voltha_pod_test':
+ build-node: 'menlo-certification-pod'
+ config-pod: 'menlo-certification-pod-radisys-gpon'
+ disable-job: false
+ release: '2.8'
+ branch: 'voltha-2.8'
+ name-extension: '_DT'
+ work-flow: 'DT'
+ test-repo: 'voltha-system-tests'
+ profile: '1T8GEM'
+ power-switch: True
+ pipeline-script: 'voltha-dt-physical-functional-tests.groovy'
+
# Certification (Radisys) pod with olt/onu - master versions timer based job , two OLTs
- 'build_voltha_pod_release_timer':
build-node: 'menlo-certification-pod'
diff --git a/vars/volthaStackDeploy.groovy b/vars/volthaStackDeploy.groovy
index 9e27d33..9979cd9 100644
--- a/vars/volthaStackDeploy.groovy
+++ b/vars/volthaStackDeploy.groovy
@@ -53,6 +53,9 @@
def bbsimCfg = readYaml file: "$WORKSPACE/voltha-helm-charts/examples/${cfg.workflow}-values.yaml"
// NOTE we assume that the only service that needs a different s_tag is the first one in the list
bbsimCfg["servicesConfig"]["services"][0]["s_tag"] = startingStag + i
+ // remove the ONOS config that is defined in the values file
+ // it's not relevant for BBSim (it won't break anything, but it will clustter the console output)
+ bbsimCfg.remove('onos')
println "Using BBSim Service config ${bbsimCfg}"
writeYaml file: "$WORKSPACE/bbsimCfg${cfg.stackId}${i}.yaml", data: bbsimCfg
} else {