summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--docker/Dockerfile (renamed from ci/docker/Dockerfile)0
-rw-r--r--docs/releasenotes/index.rst13
-rw-r--r--docs/releasenotes/release-notes.rst156
-rwxr-xr-xtestsuites/rubbos/run_rubbos.py257
-rwxr-xr-xtestsuites/vstf/run_vstf.py173
-rwxr-xr-xtestsuites/vstf/vstf_collector.py29
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/__init__.py1
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/agent/agent.py24
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/agent/env/__init__.py1
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/agent/env/basic/__init__.py1
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/agent/env/basic/collect.py44
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/agent/env/basic/commandline.py1
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/agent/env/basic/device_manager.py13
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/agent/env/basic/image_manager.py52
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/agent/env/basic/source_manager.py1
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/agent/env/basic/vm9pfs.py17
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/agent/env/basic/vm_manager.py37
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/agent/env/basic/vm_xml_help.py5
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/agent/env/builder.py1
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/agent/env/driver_plugins/__init__.py2
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/agent/env/driver_plugins/manager.py4
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/agent/env/driver_plugins/model.py6
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/agent/env/driver_plugins/origin_driver.py4
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/agent/env/fsmonitor/FSMonitor.py62
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/agent/env/fsmonitor/constant.py2
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/agent/env/fsmonitor/utils.py10
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/agent/env/plugins/libvirt_plugin.py1
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/agent/env/plugins/tester_env_plugin.py1
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/agent/env/vswitch_plugins/bridge_plugin.py5
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/agent/env/vswitch_plugins/manager.py4
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/agent/env/vswitch_plugins/model.py2
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/agent/env/vswitch_plugins/ovs_plugin.py43
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/agent/equalizer/__init__.py1
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/agent/equalizer/equalizer.py10
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/agent/equalizer/get_info.py19
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/agent/equalizer/optimize.py13
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/agent/perf/__init__.py1
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/agent/perf/affctl.py1
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/agent/perf/iperf.py16
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/agent/perf/netmap.py16
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/agent/perf/netns.py6
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/agent/perf/netperf.py16
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/agent/perf/pktgen.py15
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/agent/perf/qperf.py16
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/agent/perf/sar.py10
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/agent/perf/utils.py4
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/agent/perf/vnstat.py5
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/agent/perf/vstfperf.py6
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/agent/softagent.py14
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/agent/spirent/spirent.py267
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/agent/spirent/tools.py424
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/agent/spirentagent.py1
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/common/__init__.py1
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/common/candy_text.py4
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/common/cfgparser.py1
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/common/cliutil.py3
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/common/cmds.py4
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/common/daemon.py32
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/common/decorator.py11
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/common/log.py5
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/common/pyhtml.py133
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/common/rsync.py93
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/common/saltstack.py50
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/common/ssh.py33
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/common/test_func.py2
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/common/unix.py34
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/common/utils.py16
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/common/vstfcli.py13
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/controller/__init__.py1
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/controller/api_server.py75
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/controller/database/__init__.py1
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/controller/database/dbinterface.py388
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/controller/database/tables.py13
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/controller/env_build/cfg_intent_parse.py5
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/controller/env_build/env_build.py6
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/controller/env_build/env_collect.py1
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/controller/fabricant.py34
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/controller/reporters/__init__.py1
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/controller/reporters/mail/__init__.py1
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/controller/reporters/mail/mail.py10
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/controller/reporters/mail/sendmail.py9
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/controller/reporters/report/__init__.py2
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/controller/reporters/report/candy_generator.py10
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/controller/reporters/report/data_factory.py155
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/controller/reporters/report/html/__init__.py1
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/controller/reporters/report/html/html_base.py1
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/controller/reporters/report/html/htmlcreator.py6
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/controller/reporters/report/pdf/__init__.py1
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/controller/reporters/report/pdf/element.py70
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/controller/reporters/report/pdf/pdfcreator.py6
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/controller/reporters/report/pdf/pdftemplate.py88
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/controller/reporters/report/pdf/story.py50
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/controller/reporters/report/provider/html_provider.py8
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/controller/reporters/report/provider/pdf_provider.py8
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/controller/reporters/reporter.py11
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/controller/settings/cpu_settings.py24
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/controller/settings/device_settings.py1
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/controller/settings/flows_settings.py44
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/controller/settings/forwarding_settings.py1
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/controller/settings/html_settings.py16
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/controller/settings/mail_settings.py29
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/controller/settings/perf_settings.py21
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/controller/settings/settings.py79
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/controller/settings/template_settings.py1
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/controller/settings/tester_settings.py1
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/controller/settings/tool_settings.py23
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/controller/spirent/__init__.py1
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/controller/spirent/appliance.py10
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/controller/spirent/common/model.py168
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/controller/spirent/common/result_analysis.py10
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/controller/sw_perf/__init__.py1
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/controller/sw_perf/flow_producer.py11
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/controller/sw_perf/model.py16
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/controller/sw_perf/perf_provider.py52
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/controller/sw_perf/performance.py54
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/controller/sw_perf/raw_data.py14
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/controller/unittest/__init__.py1
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/controller/unittest/configuration.py2
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/controller/unittest/model.py2
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/controller/unittest/test_cfg_intent_parse.py3
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/controller/unittest/test_collect.py36
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/controller/unittest/test_driver_function.py17
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/controller/unittest/test_env_build.py27
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/controller/unittest/test_perf.py14
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/controller/unittest/test_ssh.py6
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/controller/vstfadm.py115
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/rpc_frame_work/__init__.py2
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/rpc_frame_work/rpc_consumer.py31
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/rpc_frame_work/rpc_producer.py34
-rw-r--r--utils/dashboard/process_data.py41
-rwxr-xr-xutils/dashboard/rubbos_collector.py22
-rwxr-xr-xutils/dashboard/uploader.py8
-rw-r--r--utils/dispatcher/func.py2
-rwxr-xr-xutils/infra_setup/heat/common.py38
-rwxr-xr-xutils/infra_setup/heat/consts/files.py1
-rwxr-xr-xutils/infra_setup/heat/manager.py12
-rwxr-xr-xutils/infra_setup/heat/template.py5
-rwxr-xr-xutils/infra_setup/heat/tests/generate_template_test.py9
138 files changed, 2970 insertions, 1265 deletions
diff --git a/ci/docker/Dockerfile b/docker/Dockerfile
index f5ac0e86..f5ac0e86 100644
--- a/ci/docker/Dockerfile
+++ b/docker/Dockerfile
diff --git a/docs/releasenotes/index.rst b/docs/releasenotes/index.rst
new file mode 100644
index 00000000..455cc95b
--- /dev/null
+++ b/docs/releasenotes/index.rst
@@ -0,0 +1,13 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+.. (c) Huawei Technologies Co.,Ltd and others.
+
+=========================
+Bottlenecks Release Notes
+=========================
+
+.. toctree::
+ :maxdepth: 2
+
+ release-notes
+
diff --git a/docs/releasenotes/release-notes.rst b/docs/releasenotes/release-notes.rst
new file mode 100644
index 00000000..17238801
--- /dev/null
+++ b/docs/releasenotes/release-notes.rst
@@ -0,0 +1,156 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+.. (c) Huawei Technologies Co.,Ltd and others.
+
+
+============================================
+OPNFV Colorado Release Notes for Bottlenecks
+============================================
+
+.. _Bottlenecks: https://wiki.opnfv.org/display/bottlenecks
+
+
+Abstract
+========
+
+This document describes the release notes of Bottlenecks project.
+
+
+License
+=======
+
+OPNFV Colorado release notes for Bottlenecks Docs
+are licensed under a Creative Commons Attribution 4.0 International License.
+You should have received a copy of the license along with this.
+If not, see <http://creativecommons.org/licenses/by/4.0/>.
+
+The *Bottlenecks software* is opensource software, licensed under the terms of the
+Apache License, Version 2.0.
+
+
+Version History
+===============
+
++----------------+--------------------+---------------------------------+
+| *Date* | *Version* | *Comment* |
+| | | |
++----------------+--------------------+---------------------------------+
+| Sept 22nd, 2016| 1.0 | Bottlenecks for Colorado release|
+| | | |
++----------------+--------------------+---------------------------------+
+
+
+Summary
+=======
+
+* Documentation generated with Sphinx
+
+ * User guide
+
+ * Installation Procedure
+
+ * Release Notes (this document)
+
+ * Platform Overview
+
+ * Configuration Guide
+
+* Bottlenecks test suite
+
+ * Jenkins Jobs for OPNFV community labs
+
+* Bottlenecks framework
+
+* Bottlenecks test cases
+
+The *Bottlenecks software* is developed in the OPNFV community, by the
+Bottlenecks_ team.
+
+Release Data
+============
+
++--------------------------------------+--------------------------------------+
+| **Project** | Bottlenecks |
+| | |
++--------------------------------------+--------------------------------------+
+| **Repo/tag** | Bottlenecks/colorado.1.0 |
+| | |
++--------------------------------------+--------------------------------------+
+| **Bottlenecks Docker image tag** | colorado.1.0 |
+| | |
++--------------------------------------+--------------------------------------+
+| **Release designation** | Colorado base release |
+| | |
++--------------------------------------+--------------------------------------+
+| **Release date** | September 22 2016 |
+| | |
++--------------------------------------+--------------------------------------+
+| **Purpose of the delivery** | Colorado base release |
+| | |
++--------------------------------------+--------------------------------------+
+
+
+Deliverables
+============
+
+Software Deliverables
+---------------------
+
+**Bottlenecks source code <colorado.1.0>**
+
+* TODO
+
+Documentatiion Deliverables
+---------------------------
+
+**Bottlenecks documentation <colorado.1.0>**
+
+* TODO
+
+Reason for Version
+==================
+
+* TODO
+
+
+Colorado known restrictions/issues
+==================================
+
+* TODO
+
+
+Test results
+============
+
+Test results are available in:
+
+ - jenkins logs on CI: https://build.opnfv.org/ci/view/bottlenecks/
+
+
+Open JIRA tickets
+=================
+
++------------------+-----------------------------------------------+
+| JIRA | Description |
++==================+===============================================+
++------------------+-----------------------------------------------+
++------------------+-----------------------------------------------+
++------------------+-----------------------------------------------+
++------------------+-----------------------------------------------+
++------------------+-----------------------------------------------+
+
+
+Useful links
+============
+
+ - WIKI project page: https://wiki.opnfv.org/display/Bottlenecks
+
+ - Bottlenecks jira page: https://jira.opnfv.org/projects/BOTTLENECK/issues/
+
+ - Bottlenecks repo: https://git.opnfv.org/cgit/bottlenecks/
+
+ - Bottlenecks CI dashboard: https://build.opnfv.org/ci/view/bottlenecks
+
+ - Bottlenecks IRC chanel: #opnfv-bottlenecks
+
+
diff --git a/testsuites/rubbos/run_rubbos.py b/testsuites/rubbos/run_rubbos.py
index 455b3e58..63b9ae07 100755
--- a/testsuites/rubbos/run_rubbos.py
+++ b/testsuites/rubbos/run_rubbos.py
@@ -24,9 +24,11 @@ from novaclient.client import Client as NovaClient
# parser for configuration files in each test case
# ------------------------------------------------------
parser = argparse.ArgumentParser()
-parser.add_argument("-c", "--conf",
- help="configuration files for the testcase, in yaml format",
- default="/home/opnfv/bottlenecks/testsuites/rubbos/testcase_cfg/rubbos_basic.yaml")
+parser.add_argument(
+ "-c",
+ "--conf",
+ help="configuration files for the testcase, in yaml format",
+ default="/home/opnfv/bottlenecks/testsuites/rubbos/testcase_cfg/rubbos_basic.yaml")
args = parser.parse_args()
#--------------------------------------------------
@@ -37,31 +39,40 @@ logger = logging.getLogger(__name__)
def _get_keystone_client():
keystone_client = KeystoneClient(
- auth_url=os.environ.get('OS_AUTH_URL'),
- username=os.environ.get('OS_USERNAME'),
- password=os.environ.get('OS_PASSWORD'),
- tenant_name=os.environ.get('OS_TENANT_NAME'),
- cacert=os.environ.get('OS_CACERT'))
+ auth_url=os.environ.get('OS_AUTH_URL'),
+ username=os.environ.get('OS_USERNAME'),
+ password=os.environ.get('OS_PASSWORD'),
+ tenant_name=os.environ.get('OS_TENANT_NAME'),
+ cacert=os.environ.get('OS_CACERT'))
return keystone_client
+
def _get_heat_client():
keystone = _get_keystone_client()
- heat_endpoint = keystone.service_catalog.url_for(service_type='orchestration')
- heat_client = HeatClient('1', endpoint=heat_endpoint, token=keystone.auth_token)
+ heat_endpoint = keystone.service_catalog.url_for(
+ service_type='orchestration')
+ heat_client = HeatClient(
+ '1',
+ endpoint=heat_endpoint,
+ token=keystone.auth_token)
return heat_client
+
def _get_glance_client():
keystone = _get_keystone_client()
- glance_endpoint = keystone.service_catalog.url_for(service_type='image', endpoint_type='publicURL')
+ glance_endpoint = keystone.service_catalog.url_for(
+ service_type='image', endpoint_type='publicURL')
return GlanceClient(glance_endpoint, token=keystone.auth_token)
+
def _get_nova_client():
nova_client = NovaClient("2", os.environ.get('OS_USERNAME'),
- os.environ.get('OS_PASSWORD'),
- os.environ.get('OS_TENANT_NAME'),
- os.environ.get('OS_AUTH_URL'))
+ os.environ.get('OS_PASSWORD'),
+ os.environ.get('OS_TENANT_NAME'),
+ os.environ.get('OS_AUTH_URL'))
return nova_client
+
def _download_url(src_url, dest_dir):
''' Download a file to a destination path given a URL'''
file_name = src_url.rsplit('/')[-1]
@@ -76,21 +87,27 @@ def _download_url(src_url, dest_dir):
return dest
-def rubbos_stack_satisfy(name="bottlenecks_rubbos_stack", status="CREATE_COMPLETE"):
+def rubbos_stack_satisfy(
+ name="bottlenecks_rubbos_stack",
+ status="CREATE_COMPLETE"):
heat = _get_heat_client()
for stack in heat.stacks.list():
- if status == None and stack.stack_name == name:
+ if status is None and stack.stack_name == name:
# Found target stack
print "Found stack, name=" + str(stack.stack_name)
return True
- elif stack.stack_name == name and stack.stack_status==status:
+ elif stack.stack_name == name and stack.stack_status == status:
print "Found stack, name=" + str(stack.stack_name) + ", status=" + str(stack.stack_status)
return True
return False
+
def rubbos_env_prepare(template=None):
print "========== Prepare rubbos environment =========="
- logger.info("Generate heat template for the testcase based on template '%s'." % template)
+ logger.info(
+ "Generate heat template for the testcase based on template '%s'." %
+ template)
+
def rubbos_env_cleanup():
print "========== Cleanup rubbos environment =========="
@@ -119,25 +136,33 @@ def rubbos_env_cleanup():
heat.stacks.delete(stack.id)
timeInProgress = 0
- while rubbos_stack_satisfy(name="bottlenecks_rubbos_stack", status=None) and timeInProgress < 60:
+ while rubbos_stack_satisfy(
+ name="bottlenecks_rubbos_stack",
+ status=None) and timeInProgress < 60:
time.sleep(5)
timeInProgress = timeInProgress + 5
- if rubbos_stack_satisfy(name="bottlenecks_rubbos_stack", status=None) == True:
+ if rubbos_stack_satisfy(name="bottlenecks_rubbos_stack", status=None):
print "Failed to clean the stack"
return False
else:
return True
-def rubbos_create_images(imagefile=None, image_name="bottlenecks_rubbos_image"):
+
+def rubbos_create_images(
+ imagefile=None,
+ image_name="bottlenecks_rubbos_image"):
print "========== Create rubbos image in OS =========="
- if imagefile == None:
- print "imagefile not set/found"
- return False
+ if imagefile is None:
+ print "imagefile not set/found"
+ return False
glance = _get_glance_client()
- image = glance.images.create(name=image_name, disk_format="qcow2", container_format="bare")
+ image = glance.images.create(
+ name=image_name,
+ disk_format="qcow2",
+ container_format="bare")
with open(imagefile) as fimage:
glance.images.upload(image.id, fimage)
@@ -149,50 +174,65 @@ def rubbos_create_images(imagefile=None, image_name="bottlenecks_rubbos_image"):
timeInQueue = timeInQueue + 1
img_status = glance.images.get(image.id).status
- print "After %d seconds, the image's status is [%s]" %(timeInQueue, img_status)
+ print "After %d seconds, the image's status is [%s]" % (timeInQueue, img_status)
return True if img_status == "active" else False
+
def rubbos_create_keypairs(key_path, name="bottlenecks_rubbos_keypair"):
print "========== Add rubbos keypairs in OS =========="
nova = _get_nova_client()
with open(key_path) as pkey:
nova.keypairs.create(name=name, public_key=pkey.read())
-def rubbos_create_flavors(name="bottlenecks_rubbos_flavor", ram=4096, vcpus=2, disk=10):
+
+def rubbos_create_flavors(
+ name="bottlenecks_rubbos_flavor",
+ ram=4096,
+ vcpus=2,
+ disk=10):
print "========== Create rubbos flavors in OS =========="
nova = _get_nova_client()
nova.flavors.create(name=name, ram=ram, vcpus=vcpus, disk=disk)
-def rubbos_create_instances(template_file, rubbos_parameters=None, stack_name="bottlenecks_rubbos_stack"):
+
+def rubbos_create_instances(
+ template_file,
+ rubbos_parameters=None,
+ stack_name="bottlenecks_rubbos_stack"):
print "========== Create rubbos instances =========="
heat = _get_heat_client()
with open(template_file) as template:
- stack = heat.stacks.create(stack_name=stack_name, template=template.read(), parameters=rubbos_parameters)
+ stack = heat.stacks.create(
+ stack_name=stack_name,
+ template=template.read(),
+ parameters=rubbos_parameters)
stack_id = stack['stack']['id']
stack_status = heat.stacks.get(stack_id).stack_status
print "Created stack, id=" + str(stack_id) + ", status=" + str(stack_status)
- timeInProgress= 0
+ timeInProgress = 0
while stack_status == "CREATE_IN_PROGRESS" and timeInProgress < 150:
- print " stack's status: %s, after %d seconds" %(stack_status, timeInProgress)
+ print " stack's status: %s, after %d seconds" % (stack_status, timeInProgress)
time.sleep(5)
timeInProgress = timeInProgress + 5
stack_status = heat.stacks.get(stack_id).stack_status
- print "After %d seconds, the stack's status is [%s]" %(timeInProgress, stack_status)
+ print "After %d seconds, the stack's status is [%s]" % (timeInProgress, stack_status)
return True if stack_status == "CREATE_COMPLETE" else False
+
def get_instances(nova_client):
try:
instances = nova_client.servers.list(search_opts={'all_tenants': 1})
return instances
- except Exception, e:
+ except Exception as e:
print "Error [get_instances(nova_client)]:", e
return None
+
def reboot_instances():
print("========== reboot instances ==========")
nova = _get_nova_client()
@@ -205,12 +245,13 @@ def reboot_instances():
instance.reboot()
print("Finish reboot all rubbos servers.")
+
def rubbos_run():
print "========== run rubbos ==========="
nova = _get_nova_client()
instances = get_instances(nova)
- if instances == None:
+ if instances is None:
print "Found *None* instances, exit rubbos_run()!"
return False
@@ -223,57 +264,83 @@ def rubbos_run():
database_servers = ""
for instance in instances:
name = getattr(instance, 'name')
- private_ip = [ x['addr'] for x in getattr(instance, 'addresses').itervalues().next() if x['OS-EXT-IPS:type'] == 'fixed']
- public_ip = [ x['addr'] for x in getattr(instance, 'addresses').itervalues().next() if x['OS-EXT-IPS:type'] == 'floating']
+ private_ip = [
+ x['addr'] for x in getattr(
+ instance,
+ 'addresses').itervalues().next() if x['OS-EXT-IPS:type'] == 'fixed']
+ public_ip = [
+ x['addr'] for x in getattr(
+ instance,
+ 'addresses').itervalues().next() if x['OS-EXT-IPS:type'] == 'floating']
if name.find("rubbos-control") >= 0:
control_public_ip = public_ip[0]
- control_server = str(name) + ':' + public_ip[0] + ':' + private_ip[0]
+ control_server = str(name) + ':' + \
+ public_ip[0] + ':' + private_ip[0]
if name.find("rubbos-client") >= 0:
- client_servers = client_servers + str(name)+':'+private_ip[0] + ","
+ client_servers = client_servers + \
+ str(name) + ':' + private_ip[0] + ","
if name.find("rubbos-httpd") >= 0:
- web_servers = web_servers + str(name)+':'+private_ip[0] + ","
+ web_servers = web_servers + str(name) + ':' + private_ip[0] + ","
if name.find("rubbos-tomcat") >= 0:
app_servers = app_servers + str(name) + ':' + private_ip[0] + ","
if name.find("rubbos-cjdbc") >= 0:
cjdbc_controller = str(name) + ':' + private_ip[0]
if name.find("rubbos-mysql") >= 0:
- database_servers = database_servers + str(name) + ':' + private_ip[0] + ","
+ database_servers = database_servers + \
+ str(name) + ':' + private_ip[0] + ","
- client_servers = client_servers[0:len(client_servers)-1]
- web_servers = web_servers[0:len(web_servers)-1]
- app_servers = app_servers[0:len(app_servers)-1]
- database_servers = database_servers[0:len(database_servers)-1]
+ client_servers = client_servers[0:len(client_servers) - 1]
+ web_servers = web_servers[0:len(web_servers) - 1]
+ app_servers = app_servers[0:len(app_servers) - 1]
+ database_servers = database_servers[0:len(database_servers) - 1]
print "control_server: %s" % control_server
print "client_servers: %s" % client_servers
print "web_servers: %s" % web_servers
print "app_servers: %s" % app_servers
print "cjdbc_controller: %s" % cjdbc_controller
print "database_servers: %s" % database_servers
- with open(Bottlenecks_repo_dir+"/testsuites/rubbos/puppet_manifests/internal/rubbos.conf") as temp_f, open('rubbos.conf', 'w') as new_f:
+ with open(Bottlenecks_repo_dir + "/testsuites/rubbos/puppet_manifests/internal/rubbos.conf") as temp_f, open('rubbos.conf', 'w') as new_f:
for line in temp_f.readlines():
- if line.find("REPLACED_CONTROLLER") >= 0 :
- new_f.write( line.replace("REPLACED_CONTROLLER", control_server) )
+ if line.find("REPLACED_CONTROLLER") >= 0:
+ new_f.write(
+ line.replace(
+ "REPLACED_CONTROLLER",
+ control_server))
elif line.find("REPLACED_CLIENT_SERVERS") >= 0:
- new_f.write( line.replace("REPLACED_CLIENT_SERVERS", client_servers) )
+ new_f.write(
+ line.replace(
+ "REPLACED_CLIENT_SERVERS",
+ client_servers))
elif line.find("REPLACED_WEB_SERVERS") >= 0:
- new_f.write( line.replace("REPLACED_WEB_SERVERS", web_servers) )
+ new_f.write(line.replace("REPLACED_WEB_SERVERS", web_servers))
elif line.find("REPLACED_APP_SERVERS") >= 0:
- new_f.write( line.replace("REPLACED_APP_SERVERS", app_servers) )
+ new_f.write(line.replace("REPLACED_APP_SERVERS", app_servers))
elif line.find("REPLACED_CJDBC_CONTROLLER") >= 0:
- new_f.write( line.replace("REPLACED_CJDBC_CONTROLLER", cjdbc_controller) )
+ new_f.write(
+ line.replace(
+ "REPLACED_CJDBC_CONTROLLER",
+ cjdbc_controller))
elif line.find("REPLACED_DB_SERVERS") >= 0:
- new_f.write( line.replace("REPLACED_DB_SERVERS", database_servers) )
+ new_f.write(
+ line.replace(
+ "REPLACED_DB_SERVERS",
+ database_servers))
elif line.find("REPLACED_CLIENTS_PER_NODE") >= 0:
- new_f.write( line.replace("REPLACED_CLIENTS_PER_NODE", "200 400 800 1600 3200") )
+ new_f.write(
+ line.replace(
+ "REPLACED_CLIENTS_PER_NODE",
+ "200 400 800 1600 3200"))
else:
new_f.write(line)
if os.path.exists("rubbos.conf") == False:
return False
- cmd = "sudo chmod 0600 " + Bottlenecks_repo_dir + "/utils/infra_setup/bottlenecks_key/bottlenecks_key"
+ cmd = "sudo chmod 0600 " + Bottlenecks_repo_dir + \
+ "/utils/infra_setup/bottlenecks_key/bottlenecks_key"
subprocess.call(cmd, shell=True)
- ssh_args = "-o StrictHostKeyChecking=no -o BatchMode=yes -i " + Bottlenecks_repo_dir + "/utils/infra_setup/bottlenecks_key/bottlenecks_key "
+ ssh_args = "-o StrictHostKeyChecking=no -o BatchMode=yes -i " + \
+ Bottlenecks_repo_dir + "/utils/infra_setup/bottlenecks_key/bottlenecks_key "
print "############### Test #################"
cmd = 'ssh-keygen -f "/root/.ssh/known_hosts" -R ' + control_public_ip
@@ -292,19 +359,23 @@ def rubbos_run():
subprocess.call("nova list", shell=True)
print "############### Test #################"
- cmd = "scp " + ssh_args + "rubbos.conf ubuntu@" + control_public_ip + ":/home/ubuntu/"
+ cmd = "scp " + ssh_args + "rubbos.conf ubuntu@" + \
+ control_public_ip + ":/home/ubuntu/"
print "Exec shell: " + cmd
subprocess.call(cmd, shell=True)
- cmd = "scp " + ssh_args + Bottlenecks_repo_dir + "/testsuites/rubbos/puppet_manifests/internal/run_rubbos_internal.sh ubuntu@" + control_public_ip + ":/home/ubuntu/"
+ cmd = "scp " + ssh_args + Bottlenecks_repo_dir + \
+ "/testsuites/rubbos/puppet_manifests/internal/run_rubbos_internal.sh ubuntu@" + control_public_ip + ":/home/ubuntu/"
print "Exec shell: " + cmd
subprocess.call(cmd, shell=True)
# call remote run_rubbos_internal.sh
- cmd = "ssh " + ssh_args + " ubuntu@" + control_public_ip + ' "sudo /home/ubuntu/run_rubbos_internal.sh /home/ubuntu/rubbos.conf /home/ubuntu/btnks-results" '
+ cmd = "ssh " + ssh_args + " ubuntu@" + control_public_ip + \
+ ' "sudo /home/ubuntu/run_rubbos_internal.sh /home/ubuntu/rubbos.conf /home/ubuntu/btnks-results" '
print "Exec shell: " + cmd
subprocess.call(cmd, shell=True)
- cmd = "scp " + ssh_args + " ubuntu@" + control_public_ip + ":/home/ubuntu/btnks-results/rubbos.out ./rubbos.out"
+ cmd = "scp " + ssh_args + " ubuntu@" + control_public_ip + \
+ ":/home/ubuntu/btnks-results/rubbos.out ./rubbos.out"
print "Exec shell: " + cmd
subprocess.call(cmd, shell=True)
if os.path.exists("rubbos.out") == False:
@@ -318,36 +389,40 @@ def rubbos_run():
print line
return True
+
def main():
global Heat_template
global Bottlenecks_repo_dir
global image_url
- Bottlenecks_repo_dir = "/home/opnfv/bottlenecks" # same in Dockerfile, docker directory
+ # same in Dockerfile, docker directory
+ Bottlenecks_repo_dir = "/home/opnfv/bottlenecks"
image_url = 'http://artifacts.opnfv.org/bottlenecks/rubbos/trusty-server-cloudimg-amd64-btnks.img'
#image_url = 'http://artifacts.opnfv.org/bottlenecks/rubbos/bottlenecks-trusty-server.img'
if not (args.conf):
- logger.error("Configuration files are not set for testcase")
- exit(-1)
+ logger.error("Configuration files are not set for testcase")
+ exit(-1)
else:
- Heat_template = args.conf
-
- master_user_data=""
- agent_user_data=""
- with open(Bottlenecks_repo_dir+"/utils/infra_setup/user_data/p-master-user-data") as f:
- master_user_data=f.read()
- master_user_data = master_user_data.replace('REPLACED_PUPPET_MASTER_SERVER','rubbos-control')
- with open(Bottlenecks_repo_dir+"/utils/infra_setup/user_data/p-agent-user-data") as f:
- agent_user_data=f.read()
- agent_user_data = agent_user_data.replace('REPLACED_PUPPET_MASTER_SERVER','rubbos-control')
-
- parameters={'image': 'bottlenecks_rubbos_image',
- 'key_name': 'bottlenecks_rubbos_keypair',
- 'flavor': 'bottlenecks_rubbos_flavor',
- 'public_net': os.environ.get('EXTERNAL_NET'),
- 'master_user_data': master_user_data,
- 'agent_user_data': agent_user_data }
+ Heat_template = args.conf
+
+ master_user_data = ""
+ agent_user_data = ""
+ with open(Bottlenecks_repo_dir + "/utils/infra_setup/user_data/p-master-user-data") as f:
+ master_user_data = f.read()
+ master_user_data = master_user_data.replace(
+ 'REPLACED_PUPPET_MASTER_SERVER', 'rubbos-control')
+ with open(Bottlenecks_repo_dir + "/utils/infra_setup/user_data/p-agent-user-data") as f:
+ agent_user_data = f.read()
+ agent_user_data = agent_user_data.replace(
+ 'REPLACED_PUPPET_MASTER_SERVER', 'rubbos-control')
+
+ parameters = {'image': 'bottlenecks_rubbos_image',
+ 'key_name': 'bottlenecks_rubbos_keypair',
+ 'flavor': 'bottlenecks_rubbos_flavor',
+ 'public_net': os.environ.get('EXTERNAL_NET'),
+ 'master_user_data': master_user_data,
+ 'agent_user_data': agent_user_data}
print "Heat_template_file: " + Heat_template
print "parameters:\n" + str(parameters)
@@ -360,31 +435,35 @@ def main():
dest_dir = "/tmp"
image_file = _download_url(image_url, dest_dir)
- if image_file == None:
- print "error with downloading image(s)"
- exit(-1)
+ if image_file is None:
+ print "error with downloading image(s)"
+ exit(-1)
image_created = rubbos_create_images(imagefile=image_file)
- keyPath = Bottlenecks_repo_dir + "/utils/infra_setup/bottlenecks_key/bottlenecks_key.pub"
+ keyPath = Bottlenecks_repo_dir + \
+ "/utils/infra_setup/bottlenecks_key/bottlenecks_key.pub"
rubbos_create_keypairs(key_path=keyPath)
rubbos_create_flavors()
- if image_created == True:
- stack_created = rubbos_create_instances(template_file=Heat_template, rubbos_parameters=parameters, stack_name="bottlenecks_rubbos_stack")
+ if image_created:
+ stack_created = rubbos_create_instances(
+ template_file=Heat_template,
+ rubbos_parameters=parameters,
+ stack_name="bottlenecks_rubbos_stack")
else:
print "Cannot create instances, as Failed to create image(s)."
- exit (-1)
+ exit(-1)
print "Wait 600 seconds after stack creation..."
time.sleep(600)
- #reboot_instances()
- #time.sleep(180)
+ # reboot_instances()
+ # time.sleep(180)
rubbos_run()
time.sleep(30)
rubbos_env_cleanup()
-if __name__=='__main__':
+if __name__ == '__main__':
main()
diff --git a/testsuites/vstf/run_vstf.py b/testsuites/vstf/run_vstf.py
index 1aed7596..f0018e7a 100755
--- a/testsuites/vstf/run_vstf.py
+++ b/testsuites/vstf/run_vstf.py
@@ -24,9 +24,11 @@ from novaclient.client import Client as NovaClient
# parser for configuration files in each test case
# ------------------------------------------------------
parser = argparse.ArgumentParser()
-parser.add_argument("-c", "--conf",
- help="configuration files for the testcase, in yaml format",
- default="/home/opnfv/bottlenecks/testsuites/vstf/testcase_cfg/vstf_Tu1.yaml")
+parser.add_argument(
+ "-c",
+ "--conf",
+ help="configuration files for the testcase, in yaml format",
+ default="/home/opnfv/bottlenecks/testsuites/vstf/testcase_cfg/vstf_Tu1.yaml")
args = parser.parse_args()
#--------------------------------------------------
@@ -37,31 +39,40 @@ logger = logging.getLogger(__name__)
def _get_keystone_client():
keystone_client = KeystoneClient(
- auth_url=os.environ.get('OS_AUTH_URL'),
- username=os.environ.get('OS_USERNAME'),
- password=os.environ.get('OS_PASSWORD'),
- tenant_name=os.environ.get('OS_TENANT_NAME'),
- cacert=os.environ.get('OS_CACERT'))
+ auth_url=os.environ.get('OS_AUTH_URL'),
+ username=os.environ.get('OS_USERNAME'),
+ password=os.environ.get('OS_PASSWORD'),
+ tenant_name=os.environ.get('OS_TENANT_NAME'),
+ cacert=os.environ.get('OS_CACERT'))
return keystone_client
+
def _get_heat_client():
keystone = _get_keystone_client()
- heat_endpoint = keystone.service_catalog.url_for(service_type='orchestration')
- heat_client = HeatClient('1', endpoint=heat_endpoint, token=keystone.auth_token)
+ heat_endpoint = keystone.service_catalog.url_for(
+ service_type='orchestration')
+ heat_client = HeatClient(
+ '1',
+ endpoint=heat_endpoint,
+ token=keystone.auth_token)
return heat_client
+
def _get_glance_client():
keystone = _get_keystone_client()
- glance_endpoint = keystone.service_catalog.url_for(service_type='image', endpoint_type='publicURL')
+ glance_endpoint = keystone.service_catalog.url_for(
+ service_type='image', endpoint_type='publicURL')
return GlanceClient(glance_endpoint, token=keystone.auth_token)
+
def _get_nova_client():
nova_client = NovaClient("2", os.environ.get('OS_USERNAME'),
- os.environ.get('OS_PASSWORD'),
- os.environ.get('OS_TENANT_NAME'),
- os.environ.get('OS_AUTH_URL'))
+ os.environ.get('OS_PASSWORD'),
+ os.environ.get('OS_TENANT_NAME'),
+ os.environ.get('OS_AUTH_URL'))
return nova_client
+
def _download_url(src_url, dest_dir):
''' Download a file to a destination path given a URL'''
file_name = src_url.rsplit('/')[-1]
@@ -75,22 +86,27 @@ def _download_url(src_url, dest_dir):
shutil.copyfileobj(response, f)
return dest
-def vstf_stack_satisfy(name="bottlenecks_vstf_stack", status="CREATE_COMPLETE"):
+
+def vstf_stack_satisfy(
+ name="bottlenecks_vstf_stack",
+ status="CREATE_COMPLETE"):
heat = _get_heat_client()
for stack in heat.stacks.list():
- if status == None and stack.stack_name == name:
+ if status is None and stack.stack_name == name:
# Found target stack
print "Found stack, name=" + str(stack.stack_name)
return True
- elif stack.stack_name == name and stack.stack_status==status:
+ elif stack.stack_name == name and stack.stack_status == status:
print "Found stack, name=" + str(stack.stack_name) + ", status=" + str(stack.stack_status)
return True
return False
+
def vstf_env_prepare(template=None):
print "========== Prepare vstf environment =========="
logger.info("env preparation for testcase.")
+
def vstf_env_cleanup():
print "========== Cleanup vstf environment =========="
glance = _get_glance_client()
@@ -118,25 +134,31 @@ def vstf_env_cleanup():
heat.stacks.delete(stack.id)
timeInProgress = 0
- while vstf_stack_satisfy(name="bottlenecks_vstf_stack", status=None) and timeInProgress < 60:
+ while vstf_stack_satisfy(
+ name="bottlenecks_vstf_stack",
+ status=None) and timeInProgress < 60:
time.sleep(5)
timeInProgress = timeInProgress + 5
- if vstf_stack_satisfy(name="bottlenecks_vstf_stack", status=None) == True:
+ if vstf_stack_satisfy(name="bottlenecks_vstf_stack", status=None):
print "Failed to clean the stack"
return False
else:
return True
+
def vstf_create_images(imagefile=None, image_name="bottlenecks_vstf_image"):
print "========== Create vstf image in OS =========="
- if imagefile == None:
- print "imagefile not set/found"
- return False
+ if imagefile is None:
+ print "imagefile not set/found"
+ return False
glance = _get_glance_client()
- image = glance.images.create(name=image_name, disk_format="qcow2", container_format="bare")
+ image = glance.images.create(
+ name=image_name,
+ disk_format="qcow2",
+ container_format="bare")
with open(imagefile) as fimage:
glance.images.upload(image.id, fimage)
@@ -148,50 +170,65 @@ def vstf_create_images(imagefile=None, image_name="bottlenecks_vstf_image"):
timeInQueue = timeInQueue + 1
img_status = glance.images.get(image.id).status
- print "After %d seconds, the image's status is [%s]" %(timeInQueue, img_status)
+ print "After %d seconds, the image's status is [%s]" % (timeInQueue, img_status)
return True if img_status == "active" else False
+
def vstf_create_keypairs(key_path, name="bottlenecks_vstf_keypair"):
print "========== Add vstf keypairs in OS =========="
nova = _get_nova_client()
with open(key_path) as pkey:
nova.keypairs.create(name=name, public_key=pkey.read())
-def vstf_create_flavors(name="bottlenecks_vstf_flavor", ram=4096, vcpus=2, disk=10):
+
+def vstf_create_flavors(
+ name="bottlenecks_vstf_flavor",
+ ram=4096,
+ vcpus=2,
+ disk=10):
print "========== Create vstf flavors in OS =========="
nova = _get_nova_client()
nova.flavors.create(name=name, ram=ram, vcpus=vcpus, disk=disk)
-def vstf_create_instances(template_file, vstf_parameters=None, stack_name="bottlenecks_vstf_stack"):
+
+def vstf_create_instances(
+ template_file,
+ vstf_parameters=None,
+ stack_name="bottlenecks_vstf_stack"):
print "========== Create vstf instances =========="
heat = _get_heat_client()
with open(template_file) as template:
- stack = heat.stacks.create(stack_name=stack_name, template=template.read(), parameters=vstf_parameters)
+ stack = heat.stacks.create(
+ stack_name=stack_name,
+ template=template.read(),
+ parameters=vstf_parameters)
stack_id = stack['stack']['id']
stack_status = heat.stacks.get(stack_id).stack_status
print "Created stack, id=" + str(stack_id) + ", status=" + str(stack_status)
- timeInProgress= 0
+ timeInProgress = 0
while stack_status == "CREATE_IN_PROGRESS" and timeInProgress < 150:
- print " stack's status: %s, after %d seconds" %(stack_status, timeInProgress)
+ print " stack's status: %s, after %d seconds" % (stack_status, timeInProgress)
time.sleep(5)
timeInProgress = timeInProgress + 5
stack_status = heat.stacks.get(stack_id).stack_status
- print "After %d seconds, the stack's status is [%s]" %(timeInProgress, stack_status)
+ print "After %d seconds, the stack's status is [%s]" % (timeInProgress, stack_status)
return True if stack_status == "CREATE_COMPLETE" else False
+
def get_instances(nova_client):
try:
instances = nova_client.servers.list(search_opts={'all_tenants': 1})
return instances
- except Exception, e:
+ except Exception as e:
print "Error [get_instances(nova_client)]:", e
return None
+
def vstf_run(launch_file=None, test_file=None):
print "================run vstf==============="
@@ -204,12 +241,12 @@ def vstf_run(launch_file=None, test_file=None):
subprocess.call("nova list", shell=True)
time.sleep(100)
instances = get_instances(nova)
- if instances == None:
+ if instances is None:
print "Found *None* instances, exit vstf_run()!"
return False
- if launch_file == None or test_file == None:
- print "Error, vstf launch/test file not given"
- return False
+ if launch_file is None or test_file is None:
+ print "Error, vstf launch/test file not given"
+ return False
cmd = "bash " + launch_file
subprocess.call(cmd, shell=True)
time.sleep(50)
@@ -217,66 +254,80 @@ def vstf_run(launch_file=None, test_file=None):
subprocess.call(cmd, shell=True)
time.sleep(20)
+
def main():
- Bottlenecks_repo_dir = "/home/opnfv/bottlenecks" # same in Dockerfile, docker directory
- Heat_template = Bottlenecks_repo_dir + "/testsuites/vstf/testcase_cfg/vstf_heat_template.yaml"
+ # same in Dockerfile, docker directory
+ Bottlenecks_repo_dir = "/home/opnfv/bottlenecks"
+ Heat_template = Bottlenecks_repo_dir + \
+ "/testsuites/vstf/testcase_cfg/vstf_heat_template.yaml"
manager_image_url = 'http://artifacts.opnfv.org/bottlenecks/vstf-manager-new.img'
agent_image_url = 'http://artifacts.opnfv.org/bottlenecks/vstf-agent-new.img'
- #vstf_env_prepare(testcase_cfg)
+ # vstf_env_prepare(testcase_cfg)
vstf_env_cleanup()
dest_dir = "/tmp"
manager_file = _download_url(manager_image_url, dest_dir)
- if manager_file == None:
- print "error with downloading image(s)"
- exit(-1)
+ if manager_file is None:
+ print "error with downloading image(s)"
+ exit(-1)
agent_file = _download_url(agent_image_url, dest_dir)
- if agent_file == None:
- print "error with downloading image(s)"
- exit(-1)
+ if agent_file is None:
+ print "error with downloading image(s)"
+ exit(-1)
- #TO DO:the parameters are all used defaults here, it should be changed depends on what it is really named
- parameters={'key_name': 'bottlenecks_vstf_keypair',
- 'flavor': 'bottlenecks_vstf_flavor',
- 'public_net': os.environ.get('EXTERNAL_NET')}
+ # TO DO:the parameters are all used defaults here, it should be changed
+ # depends on what it is really named
+ parameters = {'key_name': 'bottlenecks_vstf_keypair',
+ 'flavor': 'bottlenecks_vstf_flavor',
+ 'public_net': os.environ.get('EXTERNAL_NET')}
print "Heat_template_file: " + Heat_template
print "parameters:\n" + str(parameters)
if not (args.conf):
- logger.error("Configuration files are not set for testcase")
- exit(-1)
+ logger.error("Configuration files are not set for testcase")
+ exit(-1)
else:
- testcase_cfg = args.conf
+ testcase_cfg = args.conf
manager_image_created = False
tester_image_created = False
target_image_created = False
stack_created = False
- manager_image_created = vstf_create_images(imagefile=manager_file, image_name="bottlenecks_vstf_manager")
- tester_image_created = vstf_create_images(imagefile=agent_file, image_name="bottlenecks_vstf_tester")
- target_image_created = vstf_create_images(imagefile=agent_file, image_name="bottlenecks_vstf_target")
- keyPath = Bottlenecks_repo_dir + "/utils/infra_setup/bottlenecks_key/bottlenecks_key.pub"
+ manager_image_created = vstf_create_images(
+ imagefile=manager_file,
+ image_name="bottlenecks_vstf_manager")
+ tester_image_created = vstf_create_images(
+ imagefile=agent_file, image_name="bottlenecks_vstf_tester")
+ target_image_created = vstf_create_images(
+ imagefile=agent_file, image_name="bottlenecks_vstf_target")
+ keyPath = Bottlenecks_repo_dir + \
+ "/utils/infra_setup/bottlenecks_key/bottlenecks_key.pub"
vstf_create_keypairs(key_path=keyPath)
vstf_create_flavors()
- if manager_image_created == True and tester_image_created == True and target_image_created == True:
- stack_created = vstf_create_instances(template_file=Heat_template, vstf_parameters=parameters, stack_name="bottlenecks_vstf_stack")
+ if manager_image_created and tester_image_created and target_image_created:
+ stack_created = vstf_create_instances(
+ template_file=Heat_template,
+ vstf_parameters=parameters,
+ stack_name="bottlenecks_vstf_stack")
else:
print "Cannot create instances, as Failed to create image(s)."
- exit (-1)
+ exit(-1)
print "Wait 300 seconds after stack creation..."
time.sleep(300)
- launchfile = Bottlenecks_repo_dir + "/utils/infra_setup/heat_template/vstf_heat_template/launch_vstf.sh"
- testfile = Bottlenecks_repo_dir + "/utils/infra_setup/heat_template/vstf_heat_template/vstf_test.sh"
+ launchfile = Bottlenecks_repo_dir + \
+ "/utils/infra_setup/heat_template/vstf_heat_template/launch_vstf.sh"
+ testfile = Bottlenecks_repo_dir + \
+ "/utils/infra_setup/heat_template/vstf_heat_template/vstf_test.sh"
vstf_run(launch_file=launchfile, test_file=testfile)
vstf_env_cleanup()
-if __name__=='__main__':
+if __name__ == '__main__':
main()
diff --git a/testsuites/vstf/vstf_collector.py b/testsuites/vstf/vstf_collector.py
index 7206e32d..af11bc66 100755
--- a/testsuites/vstf/vstf_collector.py
+++ b/testsuites/vstf/vstf_collector.py
@@ -14,7 +14,9 @@ import logging
LOG = logging.getLogger(__name__)
+
class Uploader(object):
+
def __init__(self, conf):
self.headers = {'Content-type': 'application/json'}
self.timeout = 5
@@ -36,12 +38,18 @@ class Uploader(object):
self.result["case_name"] = case_name
self.result["details"] = raw_data
try:
- LOG.debug('Result to be uploaded:\n %s' % json.dumps(self.result, indent=4))
+ LOG.debug(
+ 'Result to be uploaded:\n %s' %
+ json.dumps(
+ self.result,
+ indent=4))
res = requests.post(self.target,
data=json.dumps(self.result),
headers=self.headers,
timeout=self.timeout)
- print('Test result posting finished with status code %d.' % res.status_code)
+ print(
+ 'Test result posting finished with status code %d.' %
+ res.status_code)
except Exception as err:
LOG.error('Failed to record result data: %s', err)
@@ -49,8 +57,14 @@ class Uploader(object):
if __name__ == "__main__":
logging.basicConfig(level=logging.DEBUG)
parser = argparse.ArgumentParser()
- parser.add_argument('--config', required=True, help="basic config file for uploader, json format.")
- parser.add_argument('--dir', required=True, help="result files for test cases")
+ parser.add_argument(
+ '--config',
+ required=True,
+ help="basic config file for uploader, json format.")
+ parser.add_argument(
+ '--dir',
+ required=True,
+ help="result files for test cases")
args = parser.parse_args()
realpath = os.path.realpath(args.dir)
for filename in os.listdir(args.dir):
@@ -58,4 +72,9 @@ if __name__ == "__main__":
LOG.debug("uploading test result from file:%s", filepath)
with open(filepath) as stream:
result = eval(stream.read())
- Uploader(args.config).upload_result(filename.lower().replace('-', ''), result)
+ Uploader(
+ args.config).upload_result(
+ filename.lower().replace(
+ '-',
+ ''),
+ result)
diff --git a/testsuites/vstf/vstf_scripts/vstf/__init__.py b/testsuites/vstf/vstf_scripts/vstf/__init__.py
index df7d24d0..83b8d15d 100644
--- a/testsuites/vstf/vstf_scripts/vstf/__init__.py
+++ b/testsuites/vstf/vstf_scripts/vstf/__init__.py
@@ -6,4 +6,3 @@
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
-
diff --git a/testsuites/vstf/vstf_scripts/vstf/agent/agent.py b/testsuites/vstf/vstf_scripts/vstf/agent/agent.py
index b5745995..4d92c510 100644
--- a/testsuites/vstf/vstf_scripts/vstf/agent/agent.py
+++ b/testsuites/vstf/vstf_scripts/vstf/agent/agent.py
@@ -40,17 +40,17 @@ stc_opts = [
class Client(daemon.Daemon):
"""This is a consumer of vstf-agent which will create two channel to the
rabbitmq-server, one for direct call, one for fan call.
-
+
agent start with a config file which record rabbitmq's ip, port and user passwd
also each agent has its own id.
-
+
"""
def __init__(self, agent, config_file):
"""Record the config file, init the daemon.
-
+
:param str config_file: the config of a VSTF agent.
-
+
"""
super(Client, self).__init__('/tmp/esp_rpc_client.pid')
self.config_file = config_file
@@ -61,7 +61,7 @@ class Client(daemon.Daemon):
def init_config(self):
"""Use olso.config to analyse the config file
-
+
"""
parser = CfgParser(self.config_file)
parser.register_my_opts(server_opts, "rabbit")
@@ -80,7 +80,7 @@ class Client(daemon.Daemon):
def run(self):
"""Run the rabbitmq consumers as a daemon.
-
+
"""
signal.signal(signal.SIGTERM, self.process_exit)
self.loop_thread()
@@ -90,7 +90,7 @@ class Client(daemon.Daemon):
"""This function try to stop the agent after running agent stop.
When we call vstf-agent stop which will send a signal SIGTERM to agent
When the agent catch the SIGTERM signal will call this function.
-
+
"""
LOG.info("daemon catch the signalterm, start to stop the process.")
self.run_flag = False
@@ -104,7 +104,7 @@ class Client(daemon.Daemon):
def stop_agent(self):
"""Notice that: this function just kill the agent by pid file, it has
none vars of the agent.
-
+
"""
LOG.info("call daemon stop.")
# kill the main thread
@@ -120,9 +120,11 @@ def main():
default="soft",
choices=["soft", "spirent"],
help="the agent type, as now, just soft and spirent")
- parser.add_argument('--config_file', action='store',
- default="/etc/vstf/amqp/amqp.ini",
- help="some env_build params recorded in the config file")
+ parser.add_argument(
+ '--config_file',
+ action='store',
+ default="/etc/vstf/amqp/amqp.ini",
+ help="some env_build params recorded in the config file")
args = parser.parse_args()
diff --git a/testsuites/vstf/vstf_scripts/vstf/agent/env/__init__.py b/testsuites/vstf/vstf_scripts/vstf/agent/env/__init__.py
index df7d24d0..83b8d15d 100644
--- a/testsuites/vstf/vstf_scripts/vstf/agent/env/__init__.py
+++ b/testsuites/vstf/vstf_scripts/vstf/agent/env/__init__.py
@@ -6,4 +6,3 @@
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
-
diff --git a/testsuites/vstf/vstf_scripts/vstf/agent/env/basic/__init__.py b/testsuites/vstf/vstf_scripts/vstf/agent/env/basic/__init__.py
index df7d24d0..83b8d15d 100644
--- a/testsuites/vstf/vstf_scripts/vstf/agent/env/basic/__init__.py
+++ b/testsuites/vstf/vstf_scripts/vstf/agent/env/basic/__init__.py
@@ -6,4 +6,3 @@
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
-
diff --git a/testsuites/vstf/vstf_scripts/vstf/agent/env/basic/collect.py b/testsuites/vstf/vstf_scripts/vstf/agent/env/basic/collect.py
index 126a7d55..1d39d7b7 100644
--- a/testsuites/vstf/vstf_scripts/vstf/agent/env/basic/collect.py
+++ b/testsuites/vstf/vstf_scripts/vstf/agent/env/basic/collect.py
@@ -31,11 +31,11 @@ class Collect(object):
"""the base _system info
{'os info':{'_system':'ubuntu', 'kernel': '3.13.3'}}"""
return {const.OS_INFO:
- {
- '_system': open('/etc/issue.net').readline().strip(),
- 'kernel': platform.uname()[2]
- }
- }
+ {
+ '_system': open('/etc/issue.net').readline().strip(),
+ 'kernel': platform.uname()[2]
+ }
+ }
def _memery(self):
""" Return the information in /proc/meminfo
@@ -46,11 +46,11 @@ class Collect(object):
meminfo[line.split(':')[0]] = line.split(':')[1].strip()
return {const.MEMORY_INFO:
- {
- "Mem Total": meminfo['MemTotal'],
- "Mem Swap": meminfo['SwapTotal']
- }
- }
+ {
+ "Mem Total": meminfo['MemTotal'],
+ "Mem Swap": meminfo['SwapTotal']
+ }
+ }
def _lscpu(self):
ret = {}
@@ -68,18 +68,19 @@ class Collect(object):
ret.append(cpuinfo)
cpuinfo = OrderedDict()
elif len(line.split(':')) == 2:
- cpuinfo[line.split(':')[0].strip()] = line.split(':')[1].strip()
+ cpuinfo[line.split(':')[0].strip()] = line.split(':')[
+ 1].strip()
else:
log.error("_cpu info unknow format <%(c)s>", {'c': line})
return {const.CPU_INFO:
- dict(
- {
- "Model Name": ret[0]['model name'],
- "Address sizes": ret[0]['address sizes']
- },
- **(self._lscpu())
- )
- }
+ dict(
+ {
+ "Model Name": ret[0]['model name'],
+ "Address sizes": ret[0]['address sizes']
+ },
+ **(self._lscpu())
+ )
+ }
def _hw_sysinfo(self):
cmdline = "dmidecode | grep -A 2 'System Information' | grep -v 'System Information'"
@@ -90,14 +91,15 @@ class Collect(object):
for tmp in output.strip().split('\n'):
if tmp is None or tmp is "":
continue
- # split the items
+ # split the items
tmp = tmp.split(":")
if len(tmp) >= 2:
# first item as key, and the other as value
result[tmp[0].strip("\t")] = ";".join(tmp[1:])
return {const.HW_INFO: result}
else:
- return {const.HW_INFO: "get hw info failed. check the host by cmd: dmidecode"}
+ return {
+ const.HW_INFO: "get hw info failed. check the host by cmd: dmidecode"}
def collect_host_info(self):
return [self._system, self._cpu, self._memery(), self._hw_sysinfo()]
diff --git a/testsuites/vstf/vstf_scripts/vstf/agent/env/basic/commandline.py b/testsuites/vstf/vstf_scripts/vstf/agent/env/basic/commandline.py
index e4df9b27..29dd2c02 100644
--- a/testsuites/vstf/vstf_scripts/vstf/agent/env/basic/commandline.py
+++ b/testsuites/vstf/vstf_scripts/vstf/agent/env/basic/commandline.py
@@ -16,6 +16,7 @@ LOG = logging.getLogger(__name__)
class CommandLine(object):
+
def __init__(self):
super(CommandLine, self).__init__()
self.proc = None
diff --git a/testsuites/vstf/vstf_scripts/vstf/agent/env/basic/device_manager.py b/testsuites/vstf/vstf_scripts/vstf/agent/env/basic/device_manager.py
index 8b5387fe..c34f5e06 100644
--- a/testsuites/vstf/vstf_scripts/vstf/agent/env/basic/device_manager.py
+++ b/testsuites/vstf/vstf_scripts/vstf/agent/env/basic/device_manager.py
@@ -21,6 +21,7 @@ default_drivers = {
class LspciHelper(object):
+
def __init__(self):
self.bdf_desc_map = {}
self.bdf_device_map = {}
@@ -45,7 +46,8 @@ class LspciHelper(object):
for bdf, desc in self.bdf_desc_map.items():
device = get_device_name(bdf)
if device is None:
- LOG.info("cann't find device name for bdf:%s, no driver is available.", bdf)
+ LOG.info(
+ "cann't find device name for bdf:%s, no driver is available.", bdf)
try:
self._load_driver(desc)
except:
@@ -66,13 +68,17 @@ class LspciHelper(object):
def _get_ip_macs(self):
for device, bdf in self.device_bdf_map.items():
buf = check_output("ip addr show dev %s" % device, shell=True)
- macs = re.compile("[A-F0-9]{2}(?::[A-F0-9]{2}){5}", re.IGNORECASE | re.MULTILINE)
+ macs = re.compile(
+ "[A-F0-9]{2}(?::[A-F0-9]{2}){5}",
+ re.IGNORECASE | re.MULTILINE)
for mac in macs.findall(buf):
if mac.lower() in ('00:00:00:00:00:00', 'ff:ff:ff:ff:ff:ff'):
continue
else:
break
- ips = re.compile(r"inet (\d{1,3}\.\d{1,3}\.\d{1,3}.\d{1,3}/\d{1,2})", re.MULTILINE)
+ ips = re.compile(
+ r"inet (\d{1,3}\.\d{1,3}\.\d{1,3}.\d{1,3}/\d{1,2})",
+ re.MULTILINE)
ip = ips.findall(buf)
if ip:
self.bdf_ip_map[bdf] = ip[0]
@@ -93,6 +99,7 @@ class LspciHelper(object):
class DeviceManager(object):
+
def __init__(self):
super(DeviceManager, self).__init__()
mgr = netns.NetnsManager()
diff --git a/testsuites/vstf/vstf_scripts/vstf/agent/env/basic/image_manager.py b/testsuites/vstf/vstf_scripts/vstf/agent/env/basic/image_manager.py
index c3b5c6b3..4bae49d2 100644
--- a/testsuites/vstf/vstf_scripts/vstf/agent/env/basic/image_manager.py
+++ b/testsuites/vstf/vstf_scripts/vstf/agent/env/basic/image_manager.py
@@ -19,6 +19,7 @@ class _ImageManager(object):
A qemu-img wrapper to create qcow2 child image from a parent image.
"""
+
def __init__(self, parent_image_path, child_image_dir):
"""
:param parent_image_path str: the parent image path.
@@ -31,7 +32,11 @@ class _ImageManager(object):
assert os.path.isfile(self.parent_image_path)
assert os.path.isdir(self.child_image_dir)
- def create_child_image(self, child_name, full_clone=False, image_type='qcow2'):
+ def create_child_image(
+ self,
+ child_name,
+ full_clone=False,
+ image_type='qcow2'):
"""
create a child image and put it in self.child_image_dir.
@@ -39,16 +44,25 @@ class _ImageManager(object):
:return: return the path of child image.
"""
- image_path = os.path.join(self.child_image_dir, child_name) + '.' + image_type
+ image_path = os.path.join(
+ self.child_image_dir,
+ child_name) + '.' + image_type
if full_clone:
- cmd = self._convert_str % {'image_type': image_type, 'child_path': image_path, 'parent_path': self.parent_image_path}
+ cmd = self._convert_str % {
+ 'image_type': image_type,
+ 'child_path': image_path,
+ 'parent_path': self.parent_image_path}
else:
- cmd = self._create_child_str % {'child_path': image_path, 'parent_path': self.parent_image_path, 'image_type':image_type}
+ cmd = self._create_child_str % {
+ 'child_path': image_path,
+ 'parent_path': self.parent_image_path,
+ 'image_type': image_type}
check_call(cmd.split())
return image_path
class ImageManager(object):
+
def __init__(self, cfg):
"""
ImageManager creates images from configuration context.
@@ -74,13 +88,22 @@ class ImageManager(object):
@staticmethod
def _check_cfg(cfg):
- for key in ('parent_image', 'dst_location', 'full_clone', 'type', 'names'):
+ for key in (
+ 'parent_image',
+ 'dst_location',
+ 'full_clone',
+ 'type',
+ 'names'):
if key not in cfg:
raise Exception("does't find %s config" % key)
if cfg['type'] not in ('raw', 'qcow2'):
- raise Exception("type:%s not supported, only support 'raw' and 'qcow2'" % cfg['type'])
+ raise Exception(
+ "type:%s not supported, only support 'raw' and 'qcow2'" %
+ cfg['type'])
if not cfg['full_clone'] and cfg['type'] == 'raw':
- raise Exception("only support 'qcow2' for not full_clone image creation" % cfg['type'])
+ raise Exception(
+ "only support 'qcow2' for not full_clone image creation" %
+ cfg['type'])
return cfg
def create_all(self):
@@ -90,7 +113,8 @@ class ImageManager(object):
:return: True for success, False for failure.
"""
for name in self.names:
- image = self.mgr.create_child_image(name, self.full_clone, self.image_type)
+ image = self.mgr.create_child_image(
+ name, self.full_clone, self.image_type)
LOG.info("image: %s created", image)
return True
@@ -101,7 +125,8 @@ class ImageManager(object):
:return: True for success. Raise exception otherwise.
"""
for name in self.names:
- image_path = os.path.join(self.image_dir, name + '.' + self.image_type)
+ image_path = os.path.join(
+ self.image_dir, name + '.' + self.image_type)
try:
os.unlink(image_path)
LOG.info("remove:%s successfully", image_path)
@@ -114,7 +139,12 @@ if __name__ == '__main__':
import argparse
import json
parser = argparse.ArgumentParser()
- parser.add_argument('action', choices = ('create','clean'), help='action:create|clean')
+ parser.add_argument(
+ 'action',
+ choices=(
+ 'create',
+ 'clean'),
+ help='action:create|clean')
parser.add_argument('--config', help='config file to parse')
args = parser.parse_args()
logging.basicConfig(level=logging.INFO)
@@ -124,5 +154,3 @@ if __name__ == '__main__':
mgr.create_all()
if args.action == 'clean':
mgr.clean_all()
-
-
diff --git a/testsuites/vstf/vstf_scripts/vstf/agent/env/basic/source_manager.py b/testsuites/vstf/vstf_scripts/vstf/agent/env/basic/source_manager.py
index 6edd14ca..5aca5368 100644
--- a/testsuites/vstf/vstf_scripts/vstf/agent/env/basic/source_manager.py
+++ b/testsuites/vstf/vstf_scripts/vstf/agent/env/basic/source_manager.py
@@ -27,6 +27,7 @@ def my_chdir(file_path):
class SourceCodeManager(object):
+
def __init__(self):
super(SourceCodeManager, self).__init__()
self.base_path = '/opt/vstf/'
diff --git a/testsuites/vstf/vstf_scripts/vstf/agent/env/basic/vm9pfs.py b/testsuites/vstf/vstf_scripts/vstf/agent/env/basic/vm9pfs.py
index 7364f8b2..4b7b31b1 100644
--- a/testsuites/vstf/vstf_scripts/vstf/agent/env/basic/vm9pfs.py
+++ b/testsuites/vstf/vstf_scripts/vstf/agent/env/basic/vm9pfs.py
@@ -69,7 +69,9 @@ class VMConfigBy9pfs(object):
return ret == constant.VM_CMD_EXCUTE_SUCCES_FLAG_CONTENT
def _wait_command_done(self):
- done = self._wait_flag_file_to_exist(constant.VM_CMD_DONE_FLAG_FILE, constant.VM_COMMON_CMD_EXCUTE_TIME_OUT)
+ done = self._wait_flag_file_to_exist(
+ constant.VM_CMD_DONE_FLAG_FILE,
+ constant.VM_COMMON_CMD_EXCUTE_TIME_OUT)
if done:
return self._get_cmd_return_code()
else:
@@ -86,7 +88,8 @@ class VMConfigBy9pfs(object):
raise Exception("9pfs command failure: timeout.")
def wait_up(self):
- return self._wait_flag_file_to_exist(constant.VM_UP_Flag_FILE, constant.VM_UP_TIME_OUT)
+ return self._wait_flag_file_to_exist(
+ constant.VM_UP_Flag_FILE, constant.VM_UP_TIME_OUT)
def config_ip(self, mac, ip):
cmd = 'config_ip %s %s' % (mac, ip)
@@ -118,7 +121,13 @@ class VMConfigBy9pfs(object):
cmd = 'recover_nic_binding ' + mac_str
return self._set_cmd(cmd)
- def config_amqp(self, identity, server, port=5672, user="guest", passwd="guest"):
+ def config_amqp(
+ self,
+ identity,
+ server,
+ port=5672,
+ user="guest",
+ passwd="guest"):
data = {
'server': server,
'port': port,
@@ -135,7 +144,7 @@ class VMConfigBy9pfs(object):
id=%(id)s''' % data
file_name = "amqp.ini"
dedented_text = textwrap.dedent(content)
- self._write(file_name, header+dedented_text)
+ self._write(file_name, header + dedented_text)
cmd = 'config_amqp %s' % file_name
return self._set_cmd(cmd)
diff --git a/testsuites/vstf/vstf_scripts/vstf/agent/env/basic/vm_manager.py b/testsuites/vstf/vstf_scripts/vstf/agent/env/basic/vm_manager.py
index 60a3b37b..d0a2060d 100644
--- a/testsuites/vstf/vstf_scripts/vstf/agent/env/basic/vm_manager.py
+++ b/testsuites/vstf/vstf_scripts/vstf/agent/env/basic/vm_manager.py
@@ -93,8 +93,14 @@ class VMControlOperation(object):
@staticmethod
def check_required_options(context):
- for key in ('vm_name', 'vm_memory', 'vm_cpu', 'image_path', 'image_type', 'taps'):
- if not context.has_key(key):
+ for key in (
+ 'vm_name',
+ 'vm_memory',
+ 'vm_cpu',
+ 'image_path',
+ 'image_type',
+ 'taps'):
+ if key not in context:
raise Exception("vm config error, must set %s option" % key)
def set_vm_defaults(self, context):
@@ -117,14 +123,18 @@ class VMControlOperation(object):
context.setdefault(k, v)
def _shutdown_vm(self):
- out = check_output("virsh list | sed 1,2d | awk '{print $2}'", shell=True)
+ out = check_output(
+ "virsh list | sed 1,2d | awk '{print $2}'",
+ shell=True)
vm_set = set(out.split())
for vm in vm_set:
check_call("virsh shutdown %s" % vm, shell=True)
timeout = 60
# wait for gracefully shutdown
while timeout > 0:
- out = check_output("virsh list | sed 1,2d | awk '{print $2}'", shell=True)
+ out = check_output(
+ "virsh list | sed 1,2d | awk '{print $2}'",
+ shell=True)
vm_set = set(out.split())
if len(vm_set) == 0:
break
@@ -135,7 +145,9 @@ class VMControlOperation(object):
for vm in vm_set:
check_call("virsh destroy %s" % vm, shell=True)
# undefine all
- out = check_output("virsh list --all | sed 1,2d | awk '{print $2}'", shell=True)
+ out = check_output(
+ "virsh list --all | sed 1,2d | awk '{print $2}'",
+ shell=True)
vm_set = set(out.split())
for vm in vm_set:
check_call("virsh undefine %s" % vm, shell=True)
@@ -177,7 +189,8 @@ class VMControlOperation(object):
vm9pctrl = self.vm_9p_controllers[vm_name]
ret = vm9pctrl.wait_up()
if ret not in (True,):
- raise Exception('vm running but stuck in boot process, please manully check.')
+ raise Exception(
+ 'vm running but stuck in boot process, please manully check.')
LOG.debug('waitVM %s up ok, ret:%s', vm_name, ret)
return True
@@ -193,12 +206,14 @@ class VMControlOperation(object):
# print self.vm_9p_controllers
init_cfg = vm_cfg['init_config']
if "ctrl_ip_setting" in init_cfg:
- ret = vm9pctrl.config_ip(vm_cfg['ctrl_mac'], init_cfg['ctrl_ip_setting'])
- assert ret == True
+ ret = vm9pctrl.config_ip(
+ vm_cfg['ctrl_mac'],
+ init_cfg['ctrl_ip_setting'])
+ assert ret
LOG.info('initConfigVM config ip ok')
if 'ctrl_gw' in init_cfg:
ret = vm9pctrl.config_gw(init_cfg['ctrl_gw'])
- assert ret == True
+ assert ret
LOG.info('initConfigVM ctrl_gw ok')
if "ctrl_ip_setting" in init_cfg and "amqp_server" in init_cfg:
identity = init_cfg['ctrl_ip_setting'].split('/')[0]
@@ -209,7 +224,7 @@ class VMControlOperation(object):
user = init_cfg['amqp_user']
passwd = init_cfg['amqp_passwd']
ret = vm9pctrl.config_amqp(identity, server, port, user, passwd)
- assert ret == True
+ assert ret
LOG.info('initConfigVM config_amqp ok')
if 'tap_pktloop_config' in init_cfg:
taps = vm_cfg['taps']
@@ -217,6 +232,6 @@ class VMControlOperation(object):
for tap in taps:
macs.append(tap['tap_mac'])
ret = vm9pctrl.set_pktloop_dpdk(macs)
- assert ret == True
+ assert ret
LOG.info('initConfigVM set_pktloop_dpdk ok')
return True
diff --git a/testsuites/vstf/vstf_scripts/vstf/agent/env/basic/vm_xml_help.py b/testsuites/vstf/vstf_scripts/vstf/agent/env/basic/vm_xml_help.py
index 6f9131e7..89c10963 100644
--- a/testsuites/vstf/vstf_scripts/vstf/agent/env/basic/vm_xml_help.py
+++ b/testsuites/vstf/vstf_scripts/vstf/agent/env/basic/vm_xml_help.py
@@ -38,7 +38,7 @@ xml_disk = '''
<source file='IMAGE_PATH'/>
<target dev='vda' bus='virtio'/>
</disk>'''
-
+
xml_ctrl_br = '''
<interface type='bridge'>
<mac address='CTRL_MAC'/>
@@ -63,7 +63,7 @@ xml_br = '''
<model type='virtio'/>
<target dev='TAP_NAME'/>
</interface>'''
-
+
xml_pci = '''
<hostdev mode='subsystem' type='pci' managed='yes'>
<driver name='kvm'/>
@@ -82,4 +82,3 @@ xml_tail = '''
</graphics>
</devices>
</domain>'''
-
diff --git a/testsuites/vstf/vstf_scripts/vstf/agent/env/builder.py b/testsuites/vstf/vstf_scripts/vstf/agent/env/builder.py
index a66a8873..19bf12f2 100644
--- a/testsuites/vstf/vstf_scripts/vstf/agent/env/builder.py
+++ b/testsuites/vstf/vstf_scripts/vstf/agent/env/builder.py
@@ -15,6 +15,7 @@ LOG = logging.getLogger(__name__)
class PluginManager(object):
+
def __init__(self):
self.instance = None
self.saved = {}
diff --git a/testsuites/vstf/vstf_scripts/vstf/agent/env/driver_plugins/__init__.py b/testsuites/vstf/vstf_scripts/vstf/agent/env/driver_plugins/__init__.py
index fc9802be..83b8d15d 100644
--- a/testsuites/vstf/vstf_scripts/vstf/agent/env/driver_plugins/__init__.py
+++ b/testsuites/vstf/vstf_scripts/vstf/agent/env/driver_plugins/__init__.py
@@ -5,4 +5,4 @@
# are made available under the terms of the Apache License, Version 2.0
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
-############################################################################## \ No newline at end of file
+##############################################################################
diff --git a/testsuites/vstf/vstf_scripts/vstf/agent/env/driver_plugins/manager.py b/testsuites/vstf/vstf_scripts/vstf/agent/env/driver_plugins/manager.py
index 6f895656..e20b5dd5 100644
--- a/testsuites/vstf/vstf_scripts/vstf/agent/env/driver_plugins/manager.py
+++ b/testsuites/vstf/vstf_scripts/vstf/agent/env/driver_plugins/manager.py
@@ -11,9 +11,11 @@ import stevedore
class DriverPluginManager(object):
+
def __init__(self):
self.plugins = {}
- self.mgr = stevedore.extension.ExtensionManager(namespace="drivers.plugins", invoke_on_load=True)
+ self.mgr = stevedore.extension.ExtensionManager(
+ namespace="drivers.plugins", invoke_on_load=True)
def load(self, drivers):
plugin = self.determine_driver_type(drivers)
diff --git a/testsuites/vstf/vstf_scripts/vstf/agent/env/driver_plugins/model.py b/testsuites/vstf/vstf_scripts/vstf/agent/env/driver_plugins/model.py
index ddc07449..807143f0 100644
--- a/testsuites/vstf/vstf_scripts/vstf/agent/env/driver_plugins/model.py
+++ b/testsuites/vstf/vstf_scripts/vstf/agent/env/driver_plugins/model.py
@@ -22,16 +22,16 @@ class DriverPlugin:
@abstractmethod
def clean(self):
"""implement this clean function to clean environment before and after calling any other functions.
-
+
"""
pass
@abstractmethod
def load(self, drivers):
"""load driver modules.
-
+
:param list drivers:list of modules to be inserted. for example:[ixgbe,vhost_net]
-
+
"""
pass
diff --git a/testsuites/vstf/vstf_scripts/vstf/agent/env/driver_plugins/origin_driver.py b/testsuites/vstf/vstf_scripts/vstf/agent/env/driver_plugins/origin_driver.py
index bf3c15c8..2004b8e8 100644
--- a/testsuites/vstf/vstf_scripts/vstf/agent/env/driver_plugins/origin_driver.py
+++ b/testsuites/vstf/vstf_scripts/vstf/agent/env/driver_plugins/origin_driver.py
@@ -24,7 +24,7 @@ class OriginDriverPlugin(model.DriverPlugin):
def clean(self):
"""clean drivers list in self.origin_drivers.
-
+
"""
for mod in self.origin_drivers:
check_and_rmmod(mod)
@@ -34,7 +34,7 @@ class OriginDriverPlugin(model.DriverPlugin):
def load(self, drivers):
"""insmod drivers
-
+
:param list drivers:list of drivers link ['ixgbe','vhost_net']
"""
# load implicit 'tun' module dependency for vhost_net
diff --git a/testsuites/vstf/vstf_scripts/vstf/agent/env/fsmonitor/FSMonitor.py b/testsuites/vstf/vstf_scripts/vstf/agent/env/fsmonitor/FSMonitor.py
index e6559362..53cddebb 100644
--- a/testsuites/vstf/vstf_scripts/vstf/agent/env/fsmonitor/FSMonitor.py
+++ b/testsuites/vstf/vstf_scripts/vstf/agent/env/fsmonitor/FSMonitor.py
@@ -23,6 +23,7 @@ LOG = logging.getLogger('__name__')
class VMOperation(object):
+
def __init__(self):
self.RTE_SDK = '/home/dpdk-2.0.0'
self.RTE_TARGET = 'x86_64-native-linuxapp-gcc'
@@ -46,7 +47,8 @@ class VMOperation(object):
for mac in tap_macs:
bdf = self.ip_helper.mac_bdf_map[mac]
bdf_str = bdf_str + ' ' + bdf
- cmd = 'python %s/tools/dpdk_nic_bind.py --bind=virtio-pci %s' % (self.RTE_SDK, bdf_str)
+ cmd = 'python %s/tools/dpdk_nic_bind.py --bind=virtio-pci %s' % (
+ self.RTE_SDK, bdf_str)
LOG.debug("recover_nic_binding runs cmd = %s", cmd)
check_call(cmd, shell=True)
@@ -60,15 +62,22 @@ class VMOperation(object):
check_call("mount -t hugetlbfs nodev /mnt/huge", shell=True)
check_call("modprobe uio", shell=True)
check_and_rmmod('igb_uio')
- check_call("insmod %s/%s/kmod/igb_uio.ko" % (RTE_SDK, RTE_TARGET), shell=True)
+ check_call(
+ "insmod %s/%s/kmod/igb_uio.ko" %
+ (RTE_SDK, RTE_TARGET), shell=True)
bdf_str = ''
for mac in tap_macs:
bdf = self.ip_helper.mac_bdf_map[mac]
bdf_str = bdf_str + ' ' + bdf
- check_call('python %s/tools/dpdk_nic_bind.py --bind=igb_uio %s' % (RTE_SDK, bdf_str), shell=True)
- cpu_num = int(check_output('cat /proc/cpuinfo | grep processor | wc -l', shell=True))
+ check_call(
+ 'python %s/tools/dpdk_nic_bind.py --bind=igb_uio %s' %
+ (RTE_SDK, bdf_str), shell=True)
+ cpu_num = int(
+ check_output(
+ 'cat /proc/cpuinfo | grep processor | wc -l',
+ shell=True))
cpu_bit_mask = 0
i = cpu_num
while i:
@@ -76,14 +85,7 @@ class VMOperation(object):
i -= 1
cpu_bit_mask = hex(cpu_bit_mask)
cmd = "%s/%s/app/testpmd -c %s -n %d -- --disable-hw-vlan --disable-rss --nb-cores=%d --rxq=%d --txq=%d --rxd=4096 --txd=4096" % (
- RTE_SDK,
- RTE_TARGET,
- cpu_bit_mask,
- cpu_num / 2,
- cpu_num - 1,
- (cpu_num - 1) / 2,
- (cpu_num - 1) / 2
- )
+ RTE_SDK, RTE_TARGET, cpu_bit_mask, cpu_num / 2, cpu_num - 1, (cpu_num - 1) / 2, (cpu_num - 1) / 2)
LOG.info("set_pktloop_dpdk runs cmd = %s", cmd)
p = subprocess.Popen(cmd.split())
if not p.poll():
@@ -105,6 +107,7 @@ class VMOperation(object):
class FSMonitor(object):
+
def __init__(self, pidfile=None, interval=1):
if pidfile:
self.pidfile = pidfile
@@ -121,8 +124,9 @@ class FSMonitor(object):
pass
def kill_old(self):
- out = check_output("ps -ef | grep -v grep | egrep 'python.*%s' | awk '{print $2}'" % sys.argv[0],
- shell=True)
+ out = check_output(
+ "ps -ef | grep -v grep | egrep 'python.*%s' | awk '{print $2}'" %
+ sys.argv[0], shell=True)
if out:
for pid in out.split():
if int(pid) != os.getpid():
@@ -131,7 +135,8 @@ class FSMonitor(object):
def set_fail(self, failed_reason):
with open(constant.VM_CMD_RETURN_CODE_FILE, 'w') as f:
- f.writelines([constant.VM_CMD_EXCUTE_FAILED_FLAG_CONTENT, '\n', failed_reason])
+ f.writelines(
+ [constant.VM_CMD_EXCUTE_FAILED_FLAG_CONTENT, '\n', failed_reason])
with open(constant.VM_CMD_DONE_FLAG_FILE, 'w') as f:
pass
@@ -149,8 +154,10 @@ class FSMonitor(object):
pid = os.fork()
if pid > 0:
sys.exit(0)
- except OSError, e:
- sys.stderr.write('fork #1 failed:%d,(%s)\n' % (e.errno, e.strerror))
+ except OSError as e:
+ sys.stderr.write(
+ 'fork #1 failed:%d,(%s)\n' %
+ (e.errno, e.strerror))
sys.exit(1)
os.setsid()
os.umask(0)
@@ -158,10 +165,17 @@ class FSMonitor(object):
pid = os.fork()
if pid > 0:
sys.exit(0)
- except OSError, e:
- sys.stderr.write('fork #2 failed:%d,(%s)\n' % (e.errno, e.strerror))
+ except OSError as e:
+ sys.stderr.write(
+ 'fork #2 failed:%d,(%s)\n' %
+ (e.errno, e.strerror))
sys.exit(1)
- LOG.debug("pid:%d,ppid:%d,sid:%d", os.getpid(), os.getppid(), os.getsid(os.getpid()))
+ LOG.debug(
+ "pid:%d,ppid:%d,sid:%d",
+ os.getpid(),
+ os.getppid(),
+ os.getsid(
+ os.getpid()))
old = open('/dev/null', 'r')
os.dup2(old.fileno(), sys.stdin.fileno())
old = open('/dev/null', 'a+')
@@ -192,8 +206,9 @@ class FSMonitor(object):
method(*param)
self.set_success()
LOG.debug("cmd sucessfully done")
- except Exception, e:
- LOG.debug('failed to run:%s %s,reason:%s', cmd, param, str(e))
+ except Exception as e:
+ LOG.debug(
+ 'failed to run:%s %s,reason:%s', cmd, param, str(e))
self.set_fail(str(e))
break
else:
@@ -209,7 +224,8 @@ if __name__ == '__main__':
# echo "config_ip 56:6f:44:a5:3f:a2 192.168.188.200/23" > command;touch command_set
# echo "config_gw 192.168.188.1" > command;touch command_set
# echo set_pktloop_dpdk 56:6f:44:a5:3f:a2 56:6f:44:a5:3f:a3 > command;touch command_set
- # echo recover_nic_binding 56:6f:44:a5:3f:a2 56:6f:44:a5:3f:a3 > command;touch command_set
+ # echo recover_nic_binding 56:6f:44:a5:3f:a2 56:6f:44:a5:3f:a3 >
+ # command;touch command_set
import os
logging.basicConfig(level=logging.DEBUG, filename=LOG_FILE, filemode='w')
os.environ['PATH'] = os.environ["PATH"] + ":/usr/local/bin"
diff --git a/testsuites/vstf/vstf_scripts/vstf/agent/env/fsmonitor/constant.py b/testsuites/vstf/vstf_scripts/vstf/agent/env/fsmonitor/constant.py
index 33b37eb4..3ae80a39 100644
--- a/testsuites/vstf/vstf_scripts/vstf/agent/env/fsmonitor/constant.py
+++ b/testsuites/vstf/vstf_scripts/vstf/agent/env/fsmonitor/constant.py
@@ -18,4 +18,4 @@ VM_CMD_EXCUTE_FAILED_FLAG_CONTENT = 'fail'
VM_CMD_NOT_FOUND = 'comamnd_not_found'
VM_UP_TIME_OUT = 120
VM_COMMON_CMD_EXCUTE_TIME_OUT = 10
-FS_MOUNT_POINT = '/mnt/9pfs' \ No newline at end of file
+FS_MOUNT_POINT = '/mnt/9pfs'
diff --git a/testsuites/vstf/vstf_scripts/vstf/agent/env/fsmonitor/utils.py b/testsuites/vstf/vstf_scripts/vstf/agent/env/fsmonitor/utils.py
index 5bdb4159..c28b6ec6 100644
--- a/testsuites/vstf/vstf_scripts/vstf/agent/env/fsmonitor/utils.py
+++ b/testsuites/vstf/vstf_scripts/vstf/agent/env/fsmonitor/utils.py
@@ -70,6 +70,7 @@ def umount(path):
class IPCommandHelper(object):
+
def __init__(self):
self.devices = []
self.macs = []
@@ -80,7 +81,9 @@ class IPCommandHelper(object):
self.mac_bdf_map = {}
self.bdf_mac_map = {}
buf = check_output("ip link", shell=True)
- macs = re.compile("[A-F0-9]{2}(?::[A-F0-9]{2}){5}", re.IGNORECASE | re.MULTILINE)
+ macs = re.compile(
+ "[A-F0-9]{2}(?::[A-F0-9]{2}){5}",
+ re.IGNORECASE | re.MULTILINE)
for mac in macs.findall(buf):
if mac.lower() in ('00:00:00:00:00:00', 'ff:ff:ff:ff:ff:ff'):
continue
@@ -95,7 +98,10 @@ class IPCommandHelper(object):
self.mac_device_map[mac] = device
for device in self.devices:
buf = check_output("ethtool -i %s" % device, shell=True)
- bdfs = re.findall(r'^bus-info: \d{4}:(\d{2}:\d{2}\.\d*)$', buf, re.MULTILINE)
+ bdfs = re.findall(
+ r'^bus-info: \d{4}:(\d{2}:\d{2}\.\d*)$',
+ buf,
+ re.MULTILINE)
if bdfs:
self.bdf_device_map[bdfs[0]] = device
self.device_bdf_map[device] = bdfs[0]
diff --git a/testsuites/vstf/vstf_scripts/vstf/agent/env/plugins/libvirt_plugin.py b/testsuites/vstf/vstf_scripts/vstf/agent/env/plugins/libvirt_plugin.py
index 27af8063..2fd7d69a 100644
--- a/testsuites/vstf/vstf_scripts/vstf/agent/env/plugins/libvirt_plugin.py
+++ b/testsuites/vstf/vstf_scripts/vstf/agent/env/plugins/libvirt_plugin.py
@@ -20,6 +20,7 @@ LOG = logging.getLogger(__name__)
class Plugin(EnvBuilderPlugin):
+
def __init__(self):
super(Plugin, self).__init__()
self.vm_mgr = VMControlOperation()
diff --git a/testsuites/vstf/vstf_scripts/vstf/agent/env/plugins/tester_env_plugin.py b/testsuites/vstf/vstf_scripts/vstf/agent/env/plugins/tester_env_plugin.py
index 0682aac8..0c994d4e 100644
--- a/testsuites/vstf/vstf_scripts/vstf/agent/env/plugins/tester_env_plugin.py
+++ b/testsuites/vstf/vstf_scripts/vstf/agent/env/plugins/tester_env_plugin.py
@@ -16,6 +16,7 @@ LOG = logging.getLogger(__name__)
class Plugin(EnvBuilderPlugin):
+
def __init__(self):
super(Plugin, self).__init__()
self.dr_mgr = DriverPluginManager()
diff --git a/testsuites/vstf/vstf_scripts/vstf/agent/env/vswitch_plugins/bridge_plugin.py b/testsuites/vstf/vstf_scripts/vstf/agent/env/vswitch_plugins/bridge_plugin.py
index 21b8f82c..fb6a54ce 100644
--- a/testsuites/vstf/vstf_scripts/vstf/agent/env/vswitch_plugins/bridge_plugin.py
+++ b/testsuites/vstf/vstf_scripts/vstf/agent/env/vswitch_plugins/bridge_plugin.py
@@ -12,6 +12,7 @@ from vstf.common.utils import check_call, get_eth_by_bdf, check_output
class BridgePlugin(model.VswitchPlugin):
+
def __init__(self):
pass
@@ -19,7 +20,9 @@ class BridgePlugin(model.VswitchPlugin):
"""clean brs created before.
"""
- out = check_output(r"brctl show | grep -v '^\s' | awk '{print $1}'|sed '1,1d'", shell=True)
+ out = check_output(
+ r"brctl show | grep -v '^\s' | awk '{print $1}'|sed '1,1d'",
+ shell=True)
print out
for br in out.split():
if br != 'br0':
diff --git a/testsuites/vstf/vstf_scripts/vstf/agent/env/vswitch_plugins/manager.py b/testsuites/vstf/vstf_scripts/vstf/agent/env/vswitch_plugins/manager.py
index 785a1db8..4890ee11 100644
--- a/testsuites/vstf/vstf_scripts/vstf/agent/env/vswitch_plugins/manager.py
+++ b/testsuites/vstf/vstf_scripts/vstf/agent/env/vswitch_plugins/manager.py
@@ -11,9 +11,11 @@ import stevedore
class VswitchPluginManager(object):
+
def __init__(self):
self.plugin = None
- self.mgr = stevedore.extension.ExtensionManager(namespace="vswitch.plugins", invoke_on_load=True)
+ self.mgr = stevedore.extension.ExtensionManager(
+ namespace="vswitch.plugins", invoke_on_load=True)
def clean(self):
if self.plugin:
diff --git a/testsuites/vstf/vstf_scripts/vstf/agent/env/vswitch_plugins/model.py b/testsuites/vstf/vstf_scripts/vstf/agent/env/vswitch_plugins/model.py
index 5d700411..8a80e44e 100644
--- a/testsuites/vstf/vstf_scripts/vstf/agent/env/vswitch_plugins/model.py
+++ b/testsuites/vstf/vstf_scripts/vstf/agent/env/vswitch_plugins/model.py
@@ -64,4 +64,4 @@ class VswitchPlugin:
pass
def set_fastlink(self, br_cfg):
- return True \ No newline at end of file
+ return True
diff --git a/testsuites/vstf/vstf_scripts/vstf/agent/env/vswitch_plugins/ovs_plugin.py b/testsuites/vstf/vstf_scripts/vstf/agent/env/vswitch_plugins/ovs_plugin.py
index 7ea56d4a..66943c1c 100644
--- a/testsuites/vstf/vstf_scripts/vstf/agent/env/vswitch_plugins/ovs_plugin.py
+++ b/testsuites/vstf/vstf_scripts/vstf/agent/env/vswitch_plugins/ovs_plugin.py
@@ -28,7 +28,8 @@ class OvsPlugin(model.VswitchPlugin):
self.dirs = {'db': "/usr/local/etc/openvswitch"}
self.cmds = []
self.cmds.append("mkdir -p /usr/local/etc/openvswitch")
- self.cmds.append("ovsdb-tool create /usr/local/etc/openvswitch/conf.db")
+ self.cmds.append(
+ "ovsdb-tool create /usr/local/etc/openvswitch/conf.db")
self.cmds.append("ovsdb-server --remote=punix:/usr/local/var/run/openvswitch/db.sock \
--remote=db:Open_vSwitch,Open_vSwitch,manager_options \
--private-key=db:Open_vSwitch,SSL,private_key \
@@ -81,8 +82,9 @@ class OvsPlugin(model.VswitchPlugin):
name, uplinks = br_cfg['name'], br_cfg['uplinks']
check_call("ovs-vsctl add-br %s" % (name), shell=True)
- if br_cfg['vtep']: # vxlan supports
- local_ip, remote_ip = br_cfg['vtep']['local_ip'], br_cfg['vtep']['remote_ip']
+ if br_cfg['vtep']: # vxlan supports
+ local_ip, remote_ip = br_cfg['vtep'][
+ 'local_ip'], br_cfg['vtep']['remote_ip']
assert len(uplinks) == 1
uplink = uplinks[0]
device = get_eth_by_bdf(uplink['bdf'])
@@ -90,7 +92,9 @@ class OvsPlugin(model.VswitchPlugin):
vtep = 'vx1'
check_call("ifconfig %s %s up" % (device, local_ip), shell=True)
check_call("ovs-vsctl add-port %s %s" % (name, vtep), shell=True)
- check_call("ovs-vsctl set interface %s type=vxlan options:remote_ip=%s" % (vtep, remote_ip), shell=True)
+ check_call(
+ "ovs-vsctl set interface %s type=vxlan options:remote_ip=%s" %
+ (vtep, remote_ip), shell=True)
for uplink in uplinks:
device = get_eth_by_bdf(uplink['bdf'])
vlan_mode = uplink['vlan_mode']
@@ -99,9 +103,13 @@ class OvsPlugin(model.VswitchPlugin):
call("ethtool -A %s rx off tx off " % device, shell=True)
check_call("ovs-vsctl add-port %s %s" % (name, device), shell=True)
if vlan_mode == 'trunk':
- check_call("ovs-vsctl set port %s trunks=%s" % (device, vlan_id), shell=True)
+ check_call(
+ "ovs-vsctl set port %s trunks=%s" %
+ (device, vlan_id), shell=True)
elif vlan_mode == 'access':
- check_call("ovs-vsctl set port %s tag=%s" % (device, vlan_id), shell=True)
+ check_call(
+ "ovs-vsctl set port %s tag=%s" %
+ (device, vlan_id), shell=True)
else:
raise Exception("unreconized vlan_mode:%s" % vlan_mode)
return True
@@ -118,7 +126,8 @@ class OvsPlugin(model.VswitchPlugin):
}
"""
- port, vlan_mode, vlan = tap_cfg['tap_name'], tap_cfg['vlan_mode'], tap_cfg['vlan_id']
+ port, vlan_mode, vlan = tap_cfg['tap_name'], tap_cfg[
+ 'vlan_mode'], tap_cfg['vlan_id']
assert vlan_mode in ('access', 'vxlan')
if int(vlan) > '4095':
# vxlan setting
@@ -162,15 +171,21 @@ class OvsPlugin(model.VswitchPlugin):
if vlan_mode == 'vxlan':
raise Exception("don't support vxlan setting right now.")
elif vlan_mode == 'trunk':
- check_call("ovs-vsctl set port %s trunks=%s" % (port, vlan_id), shell=True)
+ check_call(
+ "ovs-vsctl set port %s trunks=%s" %
+ (port, vlan_id), shell=True)
else:
- check_call("ovs-vsctl set port %s tag=%s" % (port, vlan_id), shell=True)
+ check_call(
+ "ovs-vsctl set port %s tag=%s" %
+ (port, vlan_id), shell=True)
def __fastlink(self, br, p1, p2):
LOG.info("_fastlink(%s,%s,%s)", br, p1, p2)
p1 = p1.replace(' ', '')
p2 = p2.replace(' ', '')
- bdfs = check_output("lspci |grep Eth | awk '{print $1}'", shell=True).splitlines()
+ bdfs = check_output(
+ "lspci |grep Eth | awk '{print $1}'",
+ shell=True).splitlines()
if p1 in bdfs:
p1 = get_eth_by_bdf(p1)
if p2 in bdfs:
@@ -182,6 +197,10 @@ class OvsPlugin(model.VswitchPlugin):
port_num, interface = s.replace('(', ' ').replace(')', ' ').split()
ovs_port[interface] = port_num
pn1, pn2 = ovs_port[p1], ovs_port[p2]
- check_call("ovs-ofctl add-flow %s in_port=%s,priority=100,action=output:%s" % (br, pn1, pn2), shell=True)
- check_call("ovs-ofctl add-flow %s in_port=%s,priority=100,action=output:%s" % (br, pn2, pn1), shell=True)
+ check_call(
+ "ovs-ofctl add-flow %s in_port=%s,priority=100,action=output:%s" %
+ (br, pn1, pn2), shell=True)
+ check_call(
+ "ovs-ofctl add-flow %s in_port=%s,priority=100,action=output:%s" %
+ (br, pn2, pn1), shell=True)
return True
diff --git a/testsuites/vstf/vstf_scripts/vstf/agent/equalizer/__init__.py b/testsuites/vstf/vstf_scripts/vstf/agent/equalizer/__init__.py
index df7d24d0..83b8d15d 100644
--- a/testsuites/vstf/vstf_scripts/vstf/agent/equalizer/__init__.py
+++ b/testsuites/vstf/vstf_scripts/vstf/agent/equalizer/__init__.py
@@ -6,4 +6,3 @@
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
-
diff --git a/testsuites/vstf/vstf_scripts/vstf/agent/equalizer/equalizer.py b/testsuites/vstf/vstf_scripts/vstf/agent/equalizer/equalizer.py
index 30e1de1f..2fd20db1 100644
--- a/testsuites/vstf/vstf_scripts/vstf/agent/equalizer/equalizer.py
+++ b/testsuites/vstf/vstf_scripts/vstf/agent/equalizer/equalizer.py
@@ -24,6 +24,7 @@ def run_cmd(cmd, shell=True):
class Resource(object):
+
def __init__(self):
super(Resource, self).__init__()
self.sysfs = "/sys/devices/system/node"
@@ -35,16 +36,18 @@ class Resource(object):
for process_index in xrange(0, len(bin(process_mapping)) - 2):
if process_mapping & 1 << process_index != 0:
core = self._get_core_id(node, process_index)
- if not self.mapping[node].has_key(core):
+ if core not in self.mapping[node]:
self.mapping[node][core] = []
self.mapping[node][core].append(process_index)
def _get_process_mapping(self, numa_node):
- ret = run_cmd("cat " + self.sysfs + '/' + numa_node + '/cpumap').replace(',', '').lstrip('0')
+ ret = run_cmd("cat " + self.sysfs + '/' + numa_node +
+ '/cpumap').replace(',', '').lstrip('0')
return int(ret, 16)
def _get_core_id(self, numa_node, process_index):
- cmd = "cat " + self.sysfs + '/' + numa_node + '/cpu' + str(process_index) + '/topology/core_id'
+ cmd = "cat " + self.sysfs + '/' + numa_node + \
+ '/cpu' + str(process_index) + '/topology/core_id'
return run_cmd(cmd).strip('\n')
def _init_numa(self):
@@ -63,6 +66,7 @@ class Resource(object):
class Equalizer(Resource):
+
def __init__(self):
super(Equalizer, self).__init__()
diff --git a/testsuites/vstf/vstf_scripts/vstf/agent/equalizer/get_info.py b/testsuites/vstf/vstf_scripts/vstf/agent/equalizer/get_info.py
index 0c92f979..8a01dfc6 100644
--- a/testsuites/vstf/vstf_scripts/vstf/agent/equalizer/get_info.py
+++ b/testsuites/vstf/vstf_scripts/vstf/agent/equalizer/get_info.py
@@ -16,6 +16,7 @@ except ImportError:
class GetPhyInfo(object):
+
def __init__(self):
pass
@@ -46,7 +47,9 @@ class GetPhyInfo(object):
numa = {}
num = self._get_numa_num()
for numa_id in range(0, int(num)):
- flag, temp = commands.getstatusoutput('lscpu | grep "NUMA node%s"' % (str(numa_id)))
+ flag, temp = commands.getstatusoutput(
+ 'lscpu | grep "NUMA node%s"' %
+ (str(numa_id)))
try:
temp = temp.split(':')[1].split()[0]
except:
@@ -58,7 +61,9 @@ class GetPhyInfo(object):
def get_nic_numa(self, nic):
result = {}
try:
- flag, id = commands.getstatusoutput('cat /sys/class/net/%s/device/numa_node' % (nic))
+ flag, id = commands.getstatusoutput(
+ 'cat /sys/class/net/%s/device/numa_node' %
+ (nic))
except:
print('get nic numa id failed.')
return id
@@ -102,7 +107,9 @@ class GetPhyInfo(object):
# get vhost info
proc_name = 'vhost-' + _main_pid
- flag, temp = commands.getstatusoutput('ps -ef | grep %s | grep -v grep' % (proc_name))
+ flag, temp = commands.getstatusoutput(
+ 'ps -ef | grep %s | grep -v grep' %
+ (proc_name))
for line in temp.split('\n'):
try:
vhost = line.split()[1]
@@ -134,7 +141,8 @@ class GetPhyInfo(object):
def _get_proc_by_irq(self, irq):
try:
- flag, info = commands.getstatusoutput('ps -ef | grep irq/%s | grep -v grep ' % (irq))
+ flag, info = commands.getstatusoutput(
+ 'ps -ef | grep irq/%s | grep -v grep ' % (irq))
proc_id = info.split('\n')[0].split()[1]
except:
print("[ERROR]grep process id failed.")
@@ -142,7 +150,8 @@ class GetPhyInfo(object):
def get_nic_interrupt_proc(self, nic):
_phy_nic_thread = []
- flag, info = commands.getstatusoutput('cat /proc/interrupts | grep %s' % (nic))
+ flag, info = commands.getstatusoutput(
+ 'cat /proc/interrupts | grep %s' % (nic))
for line in info.split('\n'):
try:
irq_num = line.split(':')[0].split()[0]
diff --git a/testsuites/vstf/vstf_scripts/vstf/agent/equalizer/optimize.py b/testsuites/vstf/vstf_scripts/vstf/agent/equalizer/optimize.py
index 5a09900d..4579c506 100644
--- a/testsuites/vstf/vstf_scripts/vstf/agent/equalizer/optimize.py
+++ b/testsuites/vstf/vstf_scripts/vstf/agent/equalizer/optimize.py
@@ -15,17 +15,24 @@ import re
# pdb.set_trace()
class Optimize(object):
+
def __init__(self):
pass
def bind_cpu(self, cpu_range, thread):
- flag, num = commands.getstatusoutput('taskset -pc %s %s' % (cpu_range, thread))
+ flag, num = commands.getstatusoutput(
+ 'taskset -pc %s %s' %
+ (cpu_range, thread))
return flag
def catch_thread_info(self):
- thread_info = {'fwd_vhost': None, 'src_recv_irq': None, 'dst_send_irq': None}
+ thread_info = {
+ 'fwd_vhost': None,
+ 'src_recv_irq': None,
+ 'dst_send_irq': None}
# top -H get the usage info
- flag, threads_usages = commands.getstatusoutput('top -bH -n1 -c -w 2000')
+ flag, threads_usages = commands.getstatusoutput(
+ 'top -bH -n1 -c -w 2000')
line_array = threads_usages.split('\n')
# get highest vhost line
for line in line_array:
diff --git a/testsuites/vstf/vstf_scripts/vstf/agent/perf/__init__.py b/testsuites/vstf/vstf_scripts/vstf/agent/perf/__init__.py
index df7d24d0..83b8d15d 100644
--- a/testsuites/vstf/vstf_scripts/vstf/agent/perf/__init__.py
+++ b/testsuites/vstf/vstf_scripts/vstf/agent/perf/__init__.py
@@ -6,4 +6,3 @@
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
-
diff --git a/testsuites/vstf/vstf_scripts/vstf/agent/perf/affctl.py b/testsuites/vstf/vstf_scripts/vstf/agent/perf/affctl.py
index 5b203632..316cbab8 100644
--- a/testsuites/vstf/vstf_scripts/vstf/agent/perf/affctl.py
+++ b/testsuites/vstf/vstf_scripts/vstf/agent/perf/affctl.py
@@ -18,4 +18,3 @@ def affctl_load(policy):
def affctl_list():
cmd = "affctl list"
return check_output(cmd, shell=True)
-
diff --git a/testsuites/vstf/vstf_scripts/vstf/agent/perf/iperf.py b/testsuites/vstf/vstf_scripts/vstf/agent/perf/iperf.py
index 3105be4b..8eca165c 100644
--- a/testsuites/vstf/vstf_scripts/vstf/agent/perf/iperf.py
+++ b/testsuites/vstf/vstf_scripts/vstf/agent/perf/iperf.py
@@ -21,6 +21,7 @@ LOG = logging.getLogger(__name__)
class Iperf(object):
+
def __init__(self):
self._send_processes = []
self._receive_processes = []
@@ -40,7 +41,10 @@ class Iperf(object):
cmd = self.format_send_start(**kwargs)
LOG.debug("cmd:%s", cmd)
- process = subprocess.Popen(cmd.split(), stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+ process = subprocess.Popen(
+ cmd.split(),
+ stdout=subprocess.PIPE,
+ stderr=subprocess.PIPE)
time.sleep(1)
ret = process.poll()
if ret is None:
@@ -90,7 +94,10 @@ class Iperf(object):
cmd = self.format_receive_start(**kwargs)
LOG.debug("cmd:%s", cmd)
- process = subprocess.Popen(cmd.split(), stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+ process = subprocess.Popen(
+ cmd.split(),
+ stdout=subprocess.PIPE,
+ stderr=subprocess.PIPE)
time.sleep(1)
ret = process.poll()
if ret is None:
@@ -151,5 +158,8 @@ def unit_test():
if __name__ == "__main__":
from vstf.common.log import setup_logging
- setup_logging(level=logging.DEBUG, log_file="/var/log/vstf-iperf.log", clevel=logging.DEBUG)
+ setup_logging(
+ level=logging.DEBUG,
+ log_file="/var/log/vstf-iperf.log",
+ clevel=logging.DEBUG)
unit_test()
diff --git a/testsuites/vstf/vstf_scripts/vstf/agent/perf/netmap.py b/testsuites/vstf/vstf_scripts/vstf/agent/perf/netmap.py
index 88a25444..bd9cc97f 100644
--- a/testsuites/vstf/vstf_scripts/vstf/agent/perf/netmap.py
+++ b/testsuites/vstf/vstf_scripts/vstf/agent/perf/netmap.py
@@ -18,6 +18,7 @@ LOG = logging.getLogger(__name__)
class Netmap(object):
+
def __init__(self):
self._send_processes = []
self._receive_processes = []
@@ -33,7 +34,10 @@ class Netmap(object):
cmd = self.format_send_start(**kwargs)
LOG.info("cmd:%s", cmd)
- process = my_popen(cmd.split(), stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+ process = my_popen(
+ cmd.split(),
+ stdout=subprocess.PIPE,
+ stderr=subprocess.PIPE)
self._send_processes.append(process)
time.sleep(0.5)
@@ -89,7 +93,10 @@ class Netmap(object):
cmd = self.format_receive_start(**kwargs)
LOG.info("cmd:%s", cmd)
- process = my_popen(cmd.split(), stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+ process = my_popen(
+ cmd.split(),
+ stdout=subprocess.PIPE,
+ stderr=subprocess.PIPE)
self._receive_processes.append(process)
time.sleep(0.5)
@@ -164,5 +171,8 @@ def unit_test():
if __name__ == "__main__":
from vstf.common.log import setup_logging
- setup_logging(level=logging.DEBUG, log_file="/var/log/vstf/vstf-netmap.log", clevel=logging.INFO)
+ setup_logging(
+ level=logging.DEBUG,
+ log_file="/var/log/vstf/vstf-netmap.log",
+ clevel=logging.INFO)
unit_test()
diff --git a/testsuites/vstf/vstf_scripts/vstf/agent/perf/netns.py b/testsuites/vstf/vstf_scripts/vstf/agent/perf/netns.py
index c3b73860..9aaaf58f 100644
--- a/testsuites/vstf/vstf_scripts/vstf/agent/perf/netns.py
+++ b/testsuites/vstf/vstf_scripts/vstf/agent/perf/netns.py
@@ -16,6 +16,7 @@ LOG = logging.getLogger(__name__)
class Netns(object):
+
def __init__(self):
super(Netns, self).__init__()
self.netns_add_str = "ip netns add %s"
@@ -74,13 +75,14 @@ class Netns(object):
class NetnsManager(object):
+
def __init__(self):
super(NetnsManager, self).__init__()
self._netns = Netns()
def config_dev(self, netdev):
- ns, device, ip = netdev["namespace"], netdev["iface"], netdev['ip_setting'] if "ip_setting" in netdev else \
- netdev['ip']
+ ns, device, ip = netdev["namespace"], netdev["iface"], netdev[
+ 'ip_setting'] if "ip_setting" in netdev else netdev['ip']
self._netns.create_namespace(ns)
self._netns.add_device(ns, device)
self._netns.config_ip(ns, device, ip)
diff --git a/testsuites/vstf/vstf_scripts/vstf/agent/perf/netperf.py b/testsuites/vstf/vstf_scripts/vstf/agent/perf/netperf.py
index 99f1c904..dac7d649 100644
--- a/testsuites/vstf/vstf_scripts/vstf/agent/perf/netperf.py
+++ b/testsuites/vstf/vstf_scripts/vstf/agent/perf/netperf.py
@@ -20,6 +20,7 @@ LOG = logging.getLogger(__name__)
class Netperf(object):
+
def __init__(self):
self._send_processes = []
self._islat = False
@@ -48,7 +49,10 @@ class Netperf(object):
LOG.info("cmd:%s", cmd)
for _ in range(threads):
- process = my_popen(cmd.split(), stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+ process = my_popen(
+ cmd.split(),
+ stdout=subprocess.PIPE,
+ stderr=subprocess.PIPE)
self._send_processes.append(process)
time.sleep(0.5)
for process in self._send_processes:
@@ -119,7 +123,10 @@ class Netperf(object):
cmd = self.format_receive_start(**kwargs)
LOG.info("cmd:%s", cmd)
- process = my_popen(cmd.split(), stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+ process = my_popen(
+ cmd.split(),
+ stdout=subprocess.PIPE,
+ stderr=subprocess.PIPE)
time.sleep(0.5)
ret = process.poll()
if ret:
@@ -177,5 +184,8 @@ def unit_test():
if __name__ == "__main__":
from vstf.common.log import setup_logging
- setup_logging(level=logging.DEBUG, log_file="/var/log/vstf/vstf-netperf.log", clevel=logging.DEBUG)
+ setup_logging(
+ level=logging.DEBUG,
+ log_file="/var/log/vstf/vstf-netperf.log",
+ clevel=logging.DEBUG)
unit_test()
diff --git a/testsuites/vstf/vstf_scripts/vstf/agent/perf/pktgen.py b/testsuites/vstf/vstf_scripts/vstf/agent/perf/pktgen.py
index 671e1aa7..9aff0a0c 100644
--- a/testsuites/vstf/vstf_scripts/vstf/agent/perf/pktgen.py
+++ b/testsuites/vstf/vstf_scripts/vstf/agent/perf/pktgen.py
@@ -18,6 +18,7 @@ LOG = logging.getLogger(__name__)
class Pktgen(object):
+
def __init__(self):
utils.modprobe_pktgen()
self._send_processes = []
@@ -33,7 +34,11 @@ class Pktgen(object):
def _start(self):
cmd = 'echo start > /proc/net/pktgen/pgctrl'
- process = my_popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+ process = my_popen(
+ cmd,
+ shell=True,
+ stdout=subprocess.PIPE,
+ stderr=subprocess.PIPE)
LOG.info('running pid:%s', process.pid)
time.sleep(0.5)
ret = process.poll()
@@ -42,7 +47,8 @@ class Pktgen(object):
self._send_processes.append(process)
error_str = "start pktgen send success"
else:
- error_str = "start pktgen send failed, stdout:%s,stderr:%s" % (process.stdout.read(), process.stderr.read())
+ error_str = "start pktgen send failed, stdout:%s,stderr:%s" % (
+ process.stdout.read(), process.stderr.read())
LOG.info(error_str)
return ret, error_str
@@ -149,5 +155,8 @@ def unit_test():
if __name__ == "__main__":
from vstf.common.log import setup_logging
- setup_logging(level=logging.DEBUG, log_file="/var/log/vstf/vstf-pktgen.log", clevel=logging.DEBUG)
+ setup_logging(
+ level=logging.DEBUG,
+ log_file="/var/log/vstf/vstf-pktgen.log",
+ clevel=logging.DEBUG)
unit_test()
diff --git a/testsuites/vstf/vstf_scripts/vstf/agent/perf/qperf.py b/testsuites/vstf/vstf_scripts/vstf/agent/perf/qperf.py
index afdf44d7..25272d89 100644
--- a/testsuites/vstf/vstf_scripts/vstf/agent/perf/qperf.py
+++ b/testsuites/vstf/vstf_scripts/vstf/agent/perf/qperf.py
@@ -18,6 +18,7 @@ LOG = logging.getLogger(__name__)
class Qperf(object):
+
def __init__(self):
self._send_processes = []
self._receive_processes = []
@@ -30,7 +31,10 @@ class Qperf(object):
def send_start(self, **kwargs):
cmd = self.format_send_start(**kwargs)
LOG.info("cmd:%s", cmd)
- process = my_popen(cmd.split(), stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+ process = my_popen(
+ cmd.split(),
+ stdout=subprocess.PIPE,
+ stderr=subprocess.PIPE)
time.sleep(0.5)
ret = process.poll()
if ret is None:
@@ -76,7 +80,10 @@ class Qperf(object):
cmd = self.format_receive_start(**kwargs)
LOG.info("cmd:%s", cmd)
- process = my_popen(cmd.split(), stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+ process = my_popen(
+ cmd.split(),
+ stdout=subprocess.PIPE,
+ stderr=subprocess.PIPE)
time.sleep(0.5)
ret = process.poll()
if ret is None:
@@ -163,5 +170,8 @@ def unit_test():
if __name__ == "__main__":
from vstf.common.log import setup_logging
- setup_logging(level=logging.DEBUG, log_file="/var/log/vstf/vstf-qperf.log", clevel=logging.DEBUG)
+ setup_logging(
+ level=logging.DEBUG,
+ log_file="/var/log/vstf/vstf-qperf.log",
+ clevel=logging.DEBUG)
unit_test()
diff --git a/testsuites/vstf/vstf_scripts/vstf/agent/perf/sar.py b/testsuites/vstf/vstf_scripts/vstf/agent/perf/sar.py
index 0231d5c1..72d0082d 100644
--- a/testsuites/vstf/vstf_scripts/vstf/agent/perf/sar.py
+++ b/testsuites/vstf/vstf_scripts/vstf/agent/perf/sar.py
@@ -20,13 +20,17 @@ LOG = logging.getLogger(__name__)
class Sar(object):
+
def __init__(self):
self.sar_cmd_str = "sar -u %(interval)s"
self.child_process = {}
def start(self, interval=2):
cmd = self.sar_cmd_str % {'interval': interval}
- child = my_popen(cmd.split(), stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+ child = my_popen(
+ cmd.split(),
+ stdout=subprocess.PIPE,
+ stderr=subprocess.PIPE)
time.sleep(1)
if child.poll() is not None:
print child.poll()
@@ -55,7 +59,9 @@ class Sar(object):
data = {}
for h, d in zip(head, average):
data[h.strip('%')] = float(d)
- cpu_num = check_output('cat /proc/cpuinfo | grep processor | wc -l', shell=True).strip()
+ cpu_num = check_output(
+ 'cat /proc/cpuinfo | grep processor | wc -l',
+ shell=True).strip()
data.update({'cpu_num': int(cpu_num)})
return data
diff --git a/testsuites/vstf/vstf_scripts/vstf/agent/perf/utils.py b/testsuites/vstf/vstf_scripts/vstf/agent/perf/utils.py
index 4f7ddb6a..f9ca46cd 100644
--- a/testsuites/vstf/vstf_scripts/vstf/agent/perf/utils.py
+++ b/testsuites/vstf/vstf_scripts/vstf/agent/perf/utils.py
@@ -26,7 +26,9 @@ def get_pid_by_name(process_name):
def get_cpu_num():
- cpu_num = check_output('cat /proc/cpuinfo | grep processor | wc -l', shell=True).strip()
+ cpu_num = check_output(
+ 'cat /proc/cpuinfo | grep processor | wc -l',
+ shell=True).strip()
cpu_num = int(cpu_num)
return cpu_num
diff --git a/testsuites/vstf/vstf_scripts/vstf/agent/perf/vnstat.py b/testsuites/vstf/vstf_scripts/vstf/agent/perf/vnstat.py
index b12ac1af..49e4f0c1 100644
--- a/testsuites/vstf/vstf_scripts/vstf/agent/perf/vnstat.py
+++ b/testsuites/vstf/vstf_scripts/vstf/agent/perf/vnstat.py
@@ -19,6 +19,7 @@ LOG = logging.getLogger(__name__)
class VnStat(object):
+
def __init__(self):
self.netns_exec_str = "ip netns exec %s "
self.vnstat_cmd_str = "vnstat -l -i %s"
@@ -63,7 +64,9 @@ class VnStat(object):
m = {}
digits = re.compile(r"\d+\.?\d*")
- units = re.compile("(?:gib|mib|kib|kbit/s|gbits/s|mbit/s|p/s)", re.IGNORECASE | re.MULTILINE)
+ units = re.compile(
+ "(?:gib|mib|kib|kbit/s|gbits/s|mbit/s|p/s)",
+ re.IGNORECASE | re.MULTILINE)
units_arr = units.findall(buf)
LOG.debug(units_arr)
diff --git a/testsuites/vstf/vstf_scripts/vstf/agent/perf/vstfperf.py b/testsuites/vstf/vstf_scripts/vstf/agent/perf/vstfperf.py
index 8be3c4e5..939b12ef 100644
--- a/testsuites/vstf/vstf_scripts/vstf/agent/perf/vstfperf.py
+++ b/testsuites/vstf/vstf_scripts/vstf/agent/perf/vstfperf.py
@@ -40,6 +40,7 @@ LOG = logging.getLogger(__name__)
class Vstfperf(object):
+
def __init__(self):
for tool in cst.TOOLS:
obj_name = 'vstf_' + tool
@@ -75,7 +76,10 @@ class Vstfperf(object):
def unit_test():
from vstf.common.log import setup_logging
- setup_logging(level=logging.DEBUG, log_file="/var/log/vstf/vstf-vstfperf.log", clevel=logging.INFO)
+ setup_logging(
+ level=logging.DEBUG,
+ log_file="/var/log/vstf/vstf-vstfperf.log",
+ clevel=logging.INFO)
perf = Vstfperf()
start = {
diff --git a/testsuites/vstf/vstf_scripts/vstf/agent/softagent.py b/testsuites/vstf/vstf_scripts/vstf/agent/softagent.py
index 6271a097..9ba1e126 100644
--- a/testsuites/vstf/vstf_scripts/vstf/agent/softagent.py
+++ b/testsuites/vstf/vstf_scripts/vstf/agent/softagent.py
@@ -25,6 +25,7 @@ LOG = logging.getLogger(__name__)
class ENV(object):
+
def __init__(self):
super(ENV, self).__init__()
self.builder = builder.PluginManager()
@@ -45,6 +46,7 @@ class ENV(object):
class Drivers(object):
+
def __init__(self):
super(Drivers, self).__init__()
self.dr_mgr = DriverPluginManager()
@@ -69,6 +71,7 @@ class Drivers(object):
class Cpu(object):
+
def affctl_load(self, policy):
return affctl.affctl_load(policy)
@@ -77,12 +80,13 @@ class Cpu(object):
class Perf(object):
+
def __init__(self):
super(Perf, self).__init__()
self._vnstat = vnstat.VnStat()
self._vstfperf = vstfperf.Vstfperf()
self._sar = sar.Sar()
-
+
def run_vnstat(self, device, namespace=None):
return self._vnstat.run_vnstat(device, namespace)
@@ -92,7 +96,7 @@ class Perf(object):
def perf_run(self, **kwargs):
return self._vstfperf.run(**kwargs)
- def run_cpuwatch(self, interval = 2):
+ def run_cpuwatch(self, interval=2):
return self._sar.start(interval)
def kill_cpuwatch(self, pid):
@@ -106,6 +110,7 @@ class Perf(object):
class EqualizerOps(GetPhyInfo, Optimize):
+
def __init__(self):
super(EqualizerOps, self).__init__()
@@ -115,19 +120,20 @@ class BaseAgent(coll.Collect,
Cpu,
Drivers,
DeviceManager,
- commandline.CommandLine,
+ commandline.CommandLine,
netns.NetnsManager,
SourceCodeManager
):
+
def __init__(self):
super(BaseAgent, self).__init__()
class softAgent(BaseAgent, Perf, EqualizerOps):
+
def __init__(self):
super(softAgent, self).__init__()
if __name__ == '__main__':
softAgent()
-
diff --git a/testsuites/vstf/vstf_scripts/vstf/agent/spirent/spirent.py b/testsuites/vstf/vstf_scripts/vstf/agent/spirent/spirent.py
index 904de736..ff2af1f8 100644
--- a/testsuites/vstf/vstf_scripts/vstf/agent/spirent/spirent.py
+++ b/testsuites/vstf/vstf_scripts/vstf/agent/spirent/spirent.py
@@ -14,23 +14,26 @@ import Tkinter
def build_cmd(*args):
cmd = ''
for arg in args:
- cmd = cmd+str(arg)+' '
+ cmd = cmd + str(arg) + ' '
#import pdb
- #pdb.set_trace()
+ # pdb.set_trace()
return cmd
class stcPython():
+
def __init__(self):
self.tclsh = Tkinter.Tcl()
self.stcpkg = '/home/Spirent_TestCenter_4.46/Spirent_TestCenter_Application_Linux'
- self.tclsh.eval("set auto_path [ linsert $auto_path 0 %s ]" %(self.stcpkg))
+ self.tclsh.eval(
+ "set auto_path [ linsert $auto_path 0 %s ]" %
+ (self.stcpkg))
self.tclsh.eval("package require SpirentTestCenter")
def build_cmd(self, *args):
cmd = ''
for arg in args:
- cmd = cmd+str(arg)+' '
+ cmd = cmd + str(arg) + ' '
return cmd
# [ stc base interface ]
@@ -38,206 +41,294 @@ class stcPython():
cmd = build_cmd('stc::init', *args)
return self.tclsh.eval(cmd)
# stc connect
- def stc_connect(self,*args):
+
+ def stc_connect(self, *args):
cmd = build_cmd('stc::connect', *args)
return self.tclsh.eval(cmd)
# stc disconnect
- def stc_disconnect(self,*args):
+
+ def stc_disconnect(self, *args):
cmd = build_cmd('stc::disconnect', *args)
return self.tclsh.eval(cmd)
# stc create
- def stc_create(self,*args):
+
+ def stc_create(self, *args):
cmd = build_cmd('stc::create', *args)
return self.tclsh.eval(cmd)
# stc delete
- def stc_delete(self,*args):
+
+ def stc_delete(self, *args):
cmd = build_cmd('stc::delete', *args)
return self.tclsh.eval(cmd)
# stc config
- def stc_config(self,*args):
+
+ def stc_config(self, *args):
cmd = build_cmd('stc::config', *args)
return self.tclsh.eval(cmd)
# stc get
- def stc_get(self,*args):
+
+ def stc_get(self, *args):
cmd = build_cmd('stc::get', *args)
return self.tclsh.eval(cmd)
# stc apply
- def stc_apply(self,*args):
+
+ def stc_apply(self, *args):
cmd = build_cmd('stc::apply', *args)
return self.tclsh.eval(cmd)
# stc perform
- def stc_perform(self,*args):
+
+ def stc_perform(self, *args):
cmd = build_cmd('stc::perform', *args)
return self.tclsh.eval(cmd)
# stc reserve
- def stc_reserve(self,*args):
+
+ def stc_reserve(self, *args):
cmd = build_cmd('stc::reserve', *args)
return self.tclsh.eval(cmd)
# stc release
- def stc_release(self,*args):
+
+ def stc_release(self, *args):
cmd = build_cmd('stc::release', *args)
return self.tclsh.eval(cmd)
# stc subscribe
- def stc_subscribe(self,*args):
- cmd = build_cmd('stc::subscribe',*args)
+
+ def stc_subscribe(self, *args):
+ cmd = build_cmd('stc::subscribe', *args)
return self.tclsh.eval(cmd)
# stc unsubscribe
- def stc_unsubscribe(self,*args):
+
+ def stc_unsubscribe(self, *args):
cmd = build_cmd('stc::unsubscribe', *args)
return self.tclsh.eval(cmd)
# stc wait until sequencer complete
- def stc_waituntilcomplete(self,*args):
+
+ def stc_waituntilcomplete(self, *args):
cmd = build_cmd('stc::waituntilcomplete', *args)
return self.tclsh.eval(cmd)
# stc help
+
def stc_help(self, *args):
- cmd = build_cmd('stc::help',*args)
+ cmd = build_cmd('stc::help', *args)
return self.tclsh.eval(cmd)
# [ stc expand interface ]
# get one dict-key's value
# return value
- def stc_get_value(self,stc_dict,stc_key):
- cmd = stc_dict+' -'+stc_key
+ def stc_get_value(self, stc_dict, stc_key):
+ cmd = stc_dict + ' -' + stc_key
return self.stc_get(cmd)
# create project
# return: project_name
+
def stc_create_project(self):
return self.stc_create('project')
# create port under project
# return: port name
- def stc_create_port(self,project_name):
- cmd = 'port -under '+project_name
+
+ def stc_create_port(self, project_name):
+ cmd = 'port -under ' + project_name
return self.stc_create(cmd)
# config port location
# return: None
- def stc_config_port_location(self,port_name,chassisAddress,slot,port):
+
+ def stc_config_port_location(self, port_name, chassisAddress, slot, port):
#import pdb
- #pdb.set_trace()
- cmd = port_name+' -location //'+chassisAddress+'/'+slot+'/'+port+' -UseDefaultHost False'
+ # pdb.set_trace()
+ cmd = port_name + ' -location //' + chassisAddress + \
+ '/' + slot + '/' + port + ' -UseDefaultHost False'
return self.stc_config(cmd)
# create streamblock under port
# return: streamblock name
- def stc_create_streamblock(self,port_name,vlan_tag,ExpectedRxPort,srcMac,dstMac,sourceAddr,destAddr):
+
+ def stc_create_streamblock(
+ self,
+ port_name,
+ vlan_tag,
+ ExpectedRxPort,
+ srcMac,
+ dstMac,
+ sourceAddr,
+ destAddr):
#import pdb
- #pdb.set_trace()
- if vlan_tag == None or vlan_tag == 'None':
+ # pdb.set_trace()
+ if vlan_tag is None or vlan_tag == 'None':
frameStruc = '"EthernetII IPv4 Udp"'
- if ExpectedRxPort == '' :
- return self.stc_create( 'streamBlock -under ',port_name,
- '-frameConfig ',frameStruc,
- '-frame "EthernetII.srcMac',srcMac,'EthernetII.dstMac',dstMac,
- 'IPv4.1.sourceAddr',sourceAddr,'IPv4.1.destAddr',destAddr,'"')
- else :
- return self.stc_create( 'streamBlock -under ',port_name,
- '-ExpectedRxPort',ExpectedRxPort,
- '-frameConfig ',frameStruc,
- '-frame "EthernetII.srcMac',srcMac,'EthernetII.dstMac',dstMac,
- 'IPv4.1.sourceAddr',sourceAddr,'IPv4.1.destAddr',destAddr,'"')
- else :
+ if ExpectedRxPort == '':
+ return self.stc_create(
+ 'streamBlock -under ',
+ port_name,
+ '-frameConfig ',
+ frameStruc,
+ '-frame "EthernetII.srcMac',
+ srcMac,
+ 'EthernetII.dstMac',
+ dstMac,
+ 'IPv4.1.sourceAddr',
+ sourceAddr,
+ 'IPv4.1.destAddr',
+ destAddr,
+ '"')
+ else:
+ return self.stc_create(
+ 'streamBlock -under ',
+ port_name,
+ '-ExpectedRxPort',
+ ExpectedRxPort,
+ '-frameConfig ',
+ frameStruc,
+ '-frame "EthernetII.srcMac',
+ srcMac,
+ 'EthernetII.dstMac',
+ dstMac,
+ 'IPv4.1.sourceAddr',
+ sourceAddr,
+ 'IPv4.1.destAddr',
+ destAddr,
+ '"')
+ else:
frameStruc = '"EthernetII Vlan IPv4 Udp"'
- if ExpectedRxPort == '' :
- return self.stc_create( 'streamBlock -under ',port_name,
- '-frameConfig '+frameStruc,
- '-frame "EthernetII.srcMac',srcMac,'EthernetII.dstMac',dstMac,
- 'Vlan.1.id',vlan_tag,
- 'IPv4.1.sourceAddr',sourceAddr,'IPv4.1.destAddr',destAddr,'"')
- else :
- return self.stc_create( 'streamBlock -under ',port_name,
- '-ExpectedRxPort',ExpectedRxPort,
- '-frameConfig '+frameStruc,
- '-frame "EthernetII.srcMac',srcMac,'EthernetII.dstMac',dstMac,
- 'Vlan.1.id',vlan_tag,
- 'IPv4.1.sourceAddr',sourceAddr,'IPv4.1.destAddr',destAddr,'"')
+ if ExpectedRxPort == '':
+ return self.stc_create(
+ 'streamBlock -under ',
+ port_name,
+ '-frameConfig ' +
+ frameStruc,
+ '-frame "EthernetII.srcMac',
+ srcMac,
+ 'EthernetII.dstMac',
+ dstMac,
+ 'Vlan.1.id',
+ vlan_tag,
+ 'IPv4.1.sourceAddr',
+ sourceAddr,
+ 'IPv4.1.destAddr',
+ destAddr,
+ '"')
+ else:
+ return self.stc_create(
+ 'streamBlock -under ',
+ port_name,
+ '-ExpectedRxPort',
+ ExpectedRxPort,
+ '-frameConfig ' +
+ frameStruc,
+ '-frame "EthernetII.srcMac',
+ srcMac,
+ 'EthernetII.dstMac',
+ dstMac,
+ 'Vlan.1.id',
+ vlan_tag,
+ 'IPv4.1.sourceAddr',
+ sourceAddr,
+ 'IPv4.1.destAddr',
+ destAddr,
+ '"')
# config streamblock with part arguments
# argument list use args dictionary
- def stc_config_streamblock(self,streamblock_name,args_dict):
+
+ def stc_config_streamblock(self, streamblock_name, args_dict):
cmd = ''
- for key in args_dict.keys() :
- temp_cmd = '-'+key+' '+str(args_dict[key])
+ for key in args_dict.keys():
+ temp_cmd = '-' + key + ' ' + str(args_dict[key])
cmd = cmd + temp_cmd
- return self.stc_config(streamblock_name,cmd)
+ return self.stc_config(streamblock_name, cmd)
# get generator name from port name
# return: generator name
- def stc_get_generator(self,port_name):
- cmd = port_name+' -children-generator'
+
+ def stc_get_generator(self, port_name):
+ cmd = port_name + ' -children-generator'
return self.stc_get(cmd)
# config generator with part arguments
# argument list use args dictionary
# return none
- def stc_config_generator(self,generator_name,args_dict):
+
+ def stc_config_generator(self, generator_name, args_dict):
cmd = ''
- for key in args_dict.keys() :
- temp_cmd = '-'+key+' '+str(args_dict[key])
+ for key in args_dict.keys():
+ temp_cmd = '-' + key + ' ' + str(args_dict[key])
cmd = cmd + temp_cmd
- return self.stc_config(generator_name,cmd)
+ return self.stc_config(generator_name, cmd)
# attach port
# return: port's parent project info
- def stc_attach_ports(self,portList):
+
+ def stc_attach_ports(self, portList):
cmd = 'AttachPorts -portList {'
- for port in portList :
- cmd = cmd+' '+port
- cmd = cmd+'} -autoConnect TRUE'
+ for port in portList:
+ cmd = cmd + ' ' + port
+ cmd = cmd + '} -autoConnect TRUE'
return self.stc_perform(cmd)
# config src mac and dst mac
# return: none
- def stc_config_ethII(self,ethII,src_mac,dst_mac):
- cmd = ethII+' -srcMac '+src_mac+' -dstMac '+dst_mac
+
+ def stc_config_ethII(self, ethII, src_mac, dst_mac):
+ cmd = ethII + ' -srcMac ' + src_mac + ' -dstMac ' + dst_mac
return self.stc_config(cmd)
# config src ip and dst ip
# return: none
- def stc_config_ethIII(self,ethIII,src_ip,dst_ip):
- cmd = ethIII+' -sourceAddr '+src_ip+' -destAddr '+dst_ip
+
+ def stc_config_ethIII(self, ethIII, src_ip, dst_ip):
+ cmd = ethIII + ' -sourceAddr ' + src_ip + ' -destAddr ' + dst_ip
return self.stc_config(cmd)
# start streamblock
# return: none
- def stc_streamblock_start(self,streamblock_list):
+
+ def stc_streamblock_start(self, streamblock_list):
cmd = 'StreamBlockStart -StreamBlockList {'
- for streamblock in streamblock_list :
- cmd = cmd+' '+streamblock
- cmd = cmd+' } -ExecuteSynchronous TRUE'
+ for streamblock in streamblock_list:
+ cmd = cmd + ' ' + streamblock
+ cmd = cmd + ' } -ExecuteSynchronous TRUE'
return self.stc_perform(cmd)
# stop streamblock
- def stc_streamblock_stop(self,streamblock_list):
+
+ def stc_streamblock_stop(self, streamblock_list):
cmd = 'StreamBlockStop -StreamBlockList {'
- for streamblock in streamblock_list :
- cmd = cmd+' '+streamblock
- cmd = cmd+' } -ExecuteSynchronous TRUE'
+ for streamblock in streamblock_list:
+ cmd = cmd + ' ' + streamblock
+ cmd = cmd + ' } -ExecuteSynchronous TRUE'
return self.stc_perform(cmd)
# start generator
# return: none
- def stc_generator_start(self,generator_List):
+
+ def stc_generator_start(self, generator_List):
cmd = 'GeneratorStart -generatorList {'
- for generator in generator_List :
- cmd = cmd+' '+generator
- cmd = cmd+' }'
+ for generator in generator_List:
+ cmd = cmd + ' ' + generator
+ cmd = cmd + ' }'
return self.stc_perform(cmd)
# stop generator
# return: none
- def stc_generator_stop(self,generator_List):
+
+ def stc_generator_stop(self, generator_List):
cmd = 'GeneratorStop -generatorList {'
- for generator in generator_List :
- cmd = cmd+' '+generator
- cmd = cmd+' }'
+ for generator in generator_List:
+ cmd = cmd + ' ' + generator
+ cmd = cmd + ' }'
return self.stc_perform(cmd)
# create rfc2544 throughput test
+
def stc_setup_rfc2544_throughput(self):
pass
# create rfc2544 frameloss test
+
def stc_setup_rfc2544_frameloss(self):
pass
# create rfc2544 latency test
+
def stc_setup_rfc2544_latency(self):
pass
# start Sequence start
+
def stc_sequence_start(self):
return self.stc_perform('SequencerStart')
# output rfc2544 throughput result
+
def stc_get_rfc2544_throughput_result(self):
pass
# output rfc2544 frameloss result
+
def stc_get_rfc2544_frameloss_result(self):
pass
# output rfc2544 latency result
+
def stc_get_rfc2544_latency_result(self):
pass
diff --git a/testsuites/vstf/vstf_scripts/vstf/agent/spirent/tools.py b/testsuites/vstf/vstf_scripts/vstf/agent/spirent/tools.py
index 088a7b13..0936d39d 100644
--- a/testsuites/vstf/vstf_scripts/vstf/agent/spirent/tools.py
+++ b/testsuites/vstf/vstf_scripts/vstf/agent/spirent/tools.py
@@ -11,324 +11,376 @@
import time
from spirent import stcPython
+
class Spirent_Tools(object):
baseAPI = stcPython()
+
def __init__(self):
"""This class provide API of Spirent
-
+
"""
super(Spirent_Tools, self).__init__()
-
- def send_packet(self,flow):
+
+ def send_packet(self, flow):
try:
#import pdb
- #pdb.set_trace()
+ # pdb.set_trace()
flow = eval(flow)
- #stc init action
+ # stc init action
self.baseAPI.stc_perform(' ResetConfig -config system1')
self.baseAPI.stc_init()
- #create project
+ # create project
project = self.baseAPI.stc_create_project()
- #create port
+ # create port
port_handle = self.baseAPI.stc_create_port(project)
- #config port
+ # config port
slot = flow['send_port'].split('/')[0]
port = flow['send_port'].split('/')[1]
- self.baseAPI.stc_config_port_location(port_handle,flow['tester_ip'],slot,port)
- #create streamblock
+ self.baseAPI.stc_config_port_location(
+ port_handle, flow['tester_ip'], slot, port)
+ # create streamblock
streamblock_handle = self.baseAPI.stc_create_streamblock(
- port_name = port_handle,
- ExpectedRxPort = '',
- vlan_tag = flow['vlan'],
- srcMac = flow['src_mac'],
- dstMac = flow['dst_mac'],
- sourceAddr = flow['src_ip'],
- destAddr =flow['dst_ip']
- )
+ port_name=port_handle,
+ ExpectedRxPort='',
+ vlan_tag=flow['vlan'],
+ srcMac=flow['src_mac'],
+ dstMac=flow['dst_mac'],
+ sourceAddr=flow['src_ip'],
+ destAddr=flow['dst_ip']
+ )
# attach port
port_list = [port_handle]
self.baseAPI.stc_attach_ports(port_list)
- #start streamblock
+ # start streamblock
streamblock_list = [streamblock_handle]
flag = self.baseAPI.stc_streamblock_start(streamblock_list)
return str(streamblock_list).strip('[]')
- except :
+ except:
print("[ERROR]create stream block and send packet failed.")
return False
- def mac_learning(self,flowA,flowB):
+ def mac_learning(self, flowA, flowB):
try:
#import pdb
- #pdb.set_trace()
+ # pdb.set_trace()
flowA = eval(flowA)
flowB = eval(flowB)
port_list = []
streamblock_list = []
- #stc init action
+ # stc init action
self.baseAPI.stc_perform(' ResetConfig -config system1')
self.baseAPI.stc_init()
- #create project
+ # create project
project = self.baseAPI.stc_create_project()
- #create port and config port
- for flow in [ flowA,flowB ]:
+ # create port and config port
+ for flow in [flowA, flowB]:
flow['port_handle'] = self.baseAPI.stc_create_port(project)
tmp_test_ip = flow['tester_ip']
tmp_slot = flow['send_port'].split('/')[0]
tmp_port = flow['send_port'].split('/')[1]
- self.baseAPI.stc_config_port_location(flow['port_handle'],tmp_test_ip,tmp_slot,tmp_port)
- #create streamblock
- flow['streamblock'] = self.baseAPI.stc_create_streamblock(port_name = flow['port_handle'],
- ExpectedRxPort = '',
- vlan_tag = flow['vlan'],
- srcMac = flow['src_mac'],
- dstMac = flow['dst_mac'],
- sourceAddr = flow['src_ip'],
- destAddr =flow['dst_ip'])
- #create port and stream block list
+ self.baseAPI.stc_config_port_location(
+ flow['port_handle'], tmp_test_ip, tmp_slot, tmp_port)
+ # create streamblock
+ flow['streamblock'] = self.baseAPI.stc_create_streamblock(
+ port_name=flow['port_handle'],
+ ExpectedRxPort='',
+ vlan_tag=flow['vlan'],
+ srcMac=flow['src_mac'],
+ dstMac=flow['dst_mac'],
+ sourceAddr=flow['src_ip'],
+ destAddr=flow['dst_ip'])
+ # create port and stream block list
port_list.append(flow['port_handle'])
streamblock_list.append(flow['streamblock'])
- #attach port
+ # attach port
self.baseAPI.stc_attach_ports(port_list)
- #start streamblock
+ # start streamblock
flag = self.baseAPI.stc_streamblock_start(streamblock_list)
# mac learning
time.sleep(2)
# stop stream block
self.baseAPI.stc_streamblock_stop(streamblock_list)
# delete streamblock and release port
- for flow in [ flowA,flowB ]:
+ for flow in [flowA, flowB]:
tmp_test_ip = flow['tester_ip']
tmp_slot = flow['send_port'].split('/')[0]
tmp_port = flow['send_port'].split('/')[1]
self.baseAPI.stc_delete(flow['streamblock'])
- self.baseAPI.stc_release('%s/%s/%s' %(tmp_test_ip,tmp_slot,tmp_port))
+ self.baseAPI.stc_release(
+ '%s/%s/%s' %
+ (tmp_test_ip, tmp_slot, tmp_port))
# delete project
self.baseAPI.stc_delete('project1')
ret = self.baseAPI.stc_perform('ResetConfig -config system1')
return True
- except :
+ except:
print("[ERROR]mac learning failed")
return False
- def stop_flow(self,streamblock_list,flow):
+ def stop_flow(self, streamblock_list, flow):
flow = eval(flow)
streamblock_list = streamblock_list.strip('\'').split(',')
- #stop streamblock list
- try :
+ # stop streamblock list
+ try:
ret = self.baseAPI.stc_streamblock_stop(streamblock_list)
- except :
+ except:
print("[ERROR]Stop the streamblock list failed.")
return False
- #delete streamblock
- try :
- for streamblock in streamblock_list :
+ # delete streamblock
+ try:
+ for streamblock in streamblock_list:
ret = self.baseAPI.stc_delete(streamblock)
- except :
+ except:
print("[ERROR]delete stream block.")
return False
- #release port
- try :
+ # release port
+ try:
slot = flow['send_port'].split('/')[0]
port = flow['send_port'].split('/')[1]
- ret = self.baseAPI.stc_release('%s/%s/%s' %(flow['tester_ip'],slot,port))
- except :
+ ret = self.baseAPI.stc_release(
+ '%s/%s/%s' %
+ (flow['tester_ip'], slot, port))
+ except:
print("[ERROR]Release port failed")
return False
- ##delete project
- try :
+ # delete project
+ try:
ret = self.baseAPI.stc_delete('project1')
ret = self.baseAPI.stc_perform('ResetConfig -config system1')
return True
- except :
+ except:
print("[ERROR]Delete project1 failed.")
return False
-
- def run_rfc2544_throughput(self,forward_init_flows,reverse_init_flows):
+
+ def run_rfc2544_throughput(self, forward_init_flows, reverse_init_flows):
#import pdb
- #pdb.set_trace()
- #rebuild the flows
+ # pdb.set_trace()
+ # rebuild the flows
forward_init_flows = eval(forward_init_flows)
reverse_init_flows = eval(reverse_init_flows)
- #stc init action
+ # stc init action
self.baseAPI.stc_perform(' ResetConfig -config system1')
self.baseAPI.stc_init()
- #create project
+ # create project
project = self.baseAPI.stc_create_project()
- #create sequencer
- seq_handle = self.baseAPI.stc_create('Sequencer -under %s' %(project))
- #create port handle
+ # create sequencer
+ seq_handle = self.baseAPI.stc_create('Sequencer -under %s' % (project))
+ # create port handle
forward_port_handle = self.baseAPI.stc_create_port(project)
reverse_port_handle = self.baseAPI.stc_create_port(project)
- #create forward flow streamblock
+ # create forward flow streamblock
for key in forward_init_flows.keys():
forward_init_flows[key]['port_handle'] = forward_port_handle
tmp_test_ip = forward_init_flows[key]['tester_ip']
- tmp_slot = forward_init_flows[key]['send_port'].split('/')[0]
- tmp_port = forward_init_flows[key]['send_port'].split('/')[1]
- self.baseAPI.stc_config_port_location(forward_init_flows[key]['port_handle'],tmp_test_ip,tmp_slot,tmp_port)
- #create streamblock
- forward_init_flows[key]['streamblock'] = self.baseAPI.stc_create_streamblock(port_name = forward_init_flows[key]['port_handle'],
- vlan_tag = forward_init_flows[key]['vlan'],
- ExpectedRxPort = reverse_port_handle,
- srcMac = forward_init_flows[key]['src_mac'],
- dstMac = forward_init_flows[key]['dst_mac'],
- sourceAddr = forward_init_flows[key]['src_ip'],
- destAddr = forward_init_flows[key]['dst_ip'])
- #create reverse flow streamblock
+ tmp_slot = forward_init_flows[key]['send_port'].split('/')[0]
+ tmp_port = forward_init_flows[key]['send_port'].split('/')[1]
+ self.baseAPI.stc_config_port_location(
+ forward_init_flows[key]['port_handle'], tmp_test_ip, tmp_slot, tmp_port)
+ # create streamblock
+ forward_init_flows[key]['streamblock'] = self.baseAPI.stc_create_streamblock(
+ port_name=forward_init_flows[key]['port_handle'],
+ vlan_tag=forward_init_flows[key]['vlan'],
+ ExpectedRxPort=reverse_port_handle,
+ srcMac=forward_init_flows[key]['src_mac'],
+ dstMac=forward_init_flows[key]['dst_mac'],
+ sourceAddr=forward_init_flows[key]['src_ip'],
+ destAddr=forward_init_flows[key]['dst_ip'])
+ # create reverse flow streamblock
for key in reverse_init_flows.keys():
reverse_init_flows[key]['port_handle'] = reverse_port_handle
tmp_test_ip = reverse_init_flows[key]['tester_ip']
- tmp_slot = reverse_init_flows[key]['send_port'].split('/')[0]
- tmp_port = reverse_init_flows[key]['send_port'].split('/')[1]
- self.baseAPI.stc_config_port_location(reverse_init_flows[key]['port_handle'],tmp_test_ip,tmp_slot,tmp_port)
- #create streamblock
- reverse_init_flows[key]['streamblock'] = self.baseAPI.stc_create_streamblock(port_name = reverse_init_flows[key]['port_handle'],
- vlan_tag = reverse_init_flows[key]['vlan'],
- ExpectedRxPort = forward_port_handle,
- srcMac = reverse_init_flows[key]['src_mac'],
- dstMac = reverse_init_flows[key]['dst_mac'],
- sourceAddr = reverse_init_flows[key]['src_ip'],
- destAddr = reverse_init_flows[key]['dst_ip'])
- #Create the RFC 2544 throughput test
- throughput_config = self.baseAPI.stc_create('Rfc2544ThroughputConfig -under ',project,
- '-AcceptableFrameLoss 0.01',
- '-NumOfTrials 1',
- '-DurationSeconds 60',
- '-SearchMode BINARY',
- '-RateLowerLimit 1',
- '-RateUpperLimit 100',
- '-RateInitial 10',
- '-UseExistingStreamBlocks True',
- '-EnableLearning False',
- '-FrameSizeIterationMode CUSTOM',
- '-CustomFrameSizeList "70 128 256 512 1024 1280 1518"',
- '-LatencyType LIFO',
- '-EnableJitterMeasurement TRUE'
- )
+ tmp_slot = reverse_init_flows[key]['send_port'].split('/')[0]
+ tmp_port = reverse_init_flows[key]['send_port'].split('/')[1]
+ self.baseAPI.stc_config_port_location(
+ reverse_init_flows[key]['port_handle'], tmp_test_ip, tmp_slot, tmp_port)
+ # create streamblock
+ reverse_init_flows[key]['streamblock'] = self.baseAPI.stc_create_streamblock(
+ port_name=reverse_init_flows[key]['port_handle'],
+ vlan_tag=reverse_init_flows[key]['vlan'],
+ ExpectedRxPort=forward_port_handle,
+ srcMac=reverse_init_flows[key]['src_mac'],
+ dstMac=reverse_init_flows[key]['dst_mac'],
+ sourceAddr=reverse_init_flows[key]['src_ip'],
+ destAddr=reverse_init_flows[key]['dst_ip'])
+ # Create the RFC 2544 throughput test
+ throughput_config = self.baseAPI.stc_create(
+ 'Rfc2544ThroughputConfig -under ',
+ project,
+ '-AcceptableFrameLoss 0.01',
+ '-NumOfTrials 1',
+ '-DurationSeconds 60',
+ '-SearchMode BINARY',
+ '-RateLowerLimit 1',
+ '-RateUpperLimit 100',
+ '-RateInitial 10',
+ '-UseExistingStreamBlocks True',
+ '-EnableLearning False',
+ '-FrameSizeIterationMode CUSTOM',
+ '-CustomFrameSizeList "70 128 256 512 1024 1280 1518"',
+ '-LatencyType LIFO',
+ '-EnableJitterMeasurement TRUE')
#import pdb
- #pdb.set_trace()
+ # pdb.set_trace()
# list streamblocks
streamblock_list = '" '
for key in forward_init_flows.keys():
- streamblock_list = streamblock_list+forward_init_flows[key]['streamblock']+' '
+ streamblock_list = streamblock_list + \
+ forward_init_flows[key]['streamblock'] + ' '
for key in reverse_init_flows.keys():
- streamblock_list = streamblock_list+reverse_init_flows[key]['streamblock']+' '
- streamblock_list = streamblock_list+'"'
+ streamblock_list = streamblock_list + \
+ reverse_init_flows[key]['streamblock'] + ' '
+ streamblock_list = streamblock_list + '"'
- throughput_sbProfile= self.baseAPI.stc_create('Rfc2544StreamBlockProfile -under '+throughput_config+' -Active TRUE -LocalActive TRUE')
- self.baseAPI.stc_config(throughput_sbProfile,'-StreamBlockList '+streamblock_list)
- self.baseAPI.stc_perform('ExpandBenchmarkConfigCommand','-config ',throughput_config)
+ throughput_sbProfile = self.baseAPI.stc_create(
+ 'Rfc2544StreamBlockProfile -under ' +
+ throughput_config +
+ ' -Active TRUE -LocalActive TRUE')
+ self.baseAPI.stc_config(
+ throughput_sbProfile,
+ '-StreamBlockList ' +
+ streamblock_list)
+ self.baseAPI.stc_perform(
+ 'ExpandBenchmarkConfigCommand',
+ '-config ',
+ throughput_config)
- #attach the port before testing
- port_list = [ forward_port_handle,reverse_port_handle]
+ # attach the port before testing
+ port_list = [forward_port_handle, reverse_port_handle]
self.baseAPI.stc_attach_ports(port_list)
- #stc apply and begin to sequence test
+ # stc apply and begin to sequence test
self.baseAPI.stc_apply()
self.baseAPI.stc_perform("SequencerStart")
- #wait until complete
+ # wait until complete
self.baseAPI.stc_waituntilcomplete()
-
- #get result db
- resultsdb = self.baseAPI.stc_get("system1.project.TestResultSetting", "-CurrentResultFileName")
- results_dict = self.baseAPI.stc_perform('QueryResult','-DatabaseConnectionString',resultsdb,'-ResultPath RFC2544ThroughputTestResultDetailedSummaryView')
- #print results_dict
- return True,results_dict
- def run_rfc2544_frameloss(self,forward_init_flows,reverse_init_flows):
+ # get result db
+ resultsdb = self.baseAPI.stc_get(
+ "system1.project.TestResultSetting",
+ "-CurrentResultFileName")
+ results_dict = self.baseAPI.stc_perform(
+ 'QueryResult',
+ '-DatabaseConnectionString',
+ resultsdb,
+ '-ResultPath RFC2544ThroughputTestResultDetailedSummaryView')
+ # print results_dict
+ return True, results_dict
+
+ def run_rfc2544_frameloss(self, forward_init_flows, reverse_init_flows):
#import pdb
- #pdb.set_trace()
- #rebuild the flows
+ # pdb.set_trace()
+ # rebuild the flows
forward_init_flows = eval(forward_init_flows)
reverse_init_flows = eval(reverse_init_flows)
- #stc init action
+ # stc init action
self.baseAPI.stc_perform(' ResetConfig -config system1')
self.baseAPI.stc_init()
- #create project
+ # create project
project = self.baseAPI.stc_create_project()
- #create sequencer
- seq_handle = self.baseAPI.stc_create('Sequencer -under %s' %(project))
- #create port handle
+ # create sequencer
+ seq_handle = self.baseAPI.stc_create('Sequencer -under %s' % (project))
+ # create port handle
forward_port_handle = self.baseAPI.stc_create_port(project)
reverse_port_handle = self.baseAPI.stc_create_port(project)
- #create forward flow streamblock
+ # create forward flow streamblock
for key in forward_init_flows.keys():
forward_init_flows[key]['port_handle'] = forward_port_handle
tmp_test_ip = forward_init_flows[key]['tester_ip']
- tmp_slot = forward_init_flows[key]['send_port'].split('/')[0]
- tmp_port = forward_init_flows[key]['send_port'].split('/')[1]
- self.baseAPI.stc_config_port_location(forward_init_flows[key]['port_handle'],tmp_test_ip,tmp_slot,tmp_port)
- #create streamblock
- forward_init_flows[key]['streamblock'] = self.baseAPI.stc_create_streamblock(port_name = forward_init_flows[key]['port_handle'],
- vlan_tag = forward_init_flows[key]['vlan'],
- ExpectedRxPort = reverse_port_handle,
- srcMac = forward_init_flows[key]['src_mac'],
- dstMac = forward_init_flows[key]['dst_mac'],
- sourceAddr = forward_init_flows[key]['src_ip'],
- destAddr = forward_init_flows[key]['dst_ip'])
- #create reverse flow streamblock
+ tmp_slot = forward_init_flows[key]['send_port'].split('/')[0]
+ tmp_port = forward_init_flows[key]['send_port'].split('/')[1]
+ self.baseAPI.stc_config_port_location(
+ forward_init_flows[key]['port_handle'], tmp_test_ip, tmp_slot, tmp_port)
+ # create streamblock
+ forward_init_flows[key]['streamblock'] = self.baseAPI.stc_create_streamblock(
+ port_name=forward_init_flows[key]['port_handle'],
+ vlan_tag=forward_init_flows[key]['vlan'],
+ ExpectedRxPort=reverse_port_handle,
+ srcMac=forward_init_flows[key]['src_mac'],
+ dstMac=forward_init_flows[key]['dst_mac'],
+ sourceAddr=forward_init_flows[key]['src_ip'],
+ destAddr=forward_init_flows[key]['dst_ip'])
+ # create reverse flow streamblock
for key in reverse_init_flows.keys():
reverse_init_flows[key]['port_handle'] = reverse_port_handle
tmp_test_ip = reverse_init_flows[key]['tester_ip']
- tmp_slot = reverse_init_flows[key]['send_port'].split('/')[0]
- tmp_port = reverse_init_flows[key]['send_port'].split('/')[1]
- self.baseAPI.stc_config_port_location(reverse_init_flows[key]['port_handle'],tmp_test_ip,tmp_slot,tmp_port)
- #create streamblock
- reverse_init_flows[key]['streamblock'] = self.baseAPI.stc_create_streamblock(port_name = reverse_init_flows[key]['port_handle'],
- vlan_tag = reverse_init_flows[key]['vlan'],
- ExpectedRxPort = forward_port_handle,
- srcMac = reverse_init_flows[key]['src_mac'],
- dstMac = reverse_init_flows[key]['dst_mac'],
- sourceAddr = reverse_init_flows[key]['src_ip'],
- destAddr = reverse_init_flows[key]['dst_ip'])
- #Create the RFC 2544 frameloss test
- frameloss_config = self.baseAPI.stc_create('Rfc2544FrameLossConfig -under ',project,
- '-NumOfTrials 1 ',
- '-DurationSeconds 60 ',
- '-LoadUnits PERCENT_LINE_RATE ',
- '-LoadType CUSTOM '
- '-CustomLoadList 100 '
- '-UseExistingStreamBlocks True ',
- '-EnableLearning False ',
- '-FrameSizeIterationMode CUSTOM ',
- '-CustomFrameSizeList "70 128 256 512 1024 1280 1518"',
- '-LatencyType LIFO',
- '-EnableJitterMeasurement TRUE'
- )
+ tmp_slot = reverse_init_flows[key]['send_port'].split('/')[0]
+ tmp_port = reverse_init_flows[key]['send_port'].split('/')[1]
+ self.baseAPI.stc_config_port_location(
+ reverse_init_flows[key]['port_handle'], tmp_test_ip, tmp_slot, tmp_port)
+ # create streamblock
+ reverse_init_flows[key]['streamblock'] = self.baseAPI.stc_create_streamblock(
+ port_name=reverse_init_flows[key]['port_handle'],
+ vlan_tag=reverse_init_flows[key]['vlan'],
+ ExpectedRxPort=forward_port_handle,
+ srcMac=reverse_init_flows[key]['src_mac'],
+ dstMac=reverse_init_flows[key]['dst_mac'],
+ sourceAddr=reverse_init_flows[key]['src_ip'],
+ destAddr=reverse_init_flows[key]['dst_ip'])
+ # Create the RFC 2544 frameloss test
+ frameloss_config = self.baseAPI.stc_create(
+ 'Rfc2544FrameLossConfig -under ',
+ project,
+ '-NumOfTrials 1 ',
+ '-DurationSeconds 60 ',
+ '-LoadUnits PERCENT_LINE_RATE ',
+ '-LoadType CUSTOM '
+ '-CustomLoadList 100 '
+ '-UseExistingStreamBlocks True ',
+ '-EnableLearning False ',
+ '-FrameSizeIterationMode CUSTOM ',
+ '-CustomFrameSizeList "70 128 256 512 1024 1280 1518"',
+ '-LatencyType LIFO',
+ '-EnableJitterMeasurement TRUE')
#import pdb
- #pdb.set_trace()
+ # pdb.set_trace()
# list streamblocks
streamblock_list = '" '
for key in forward_init_flows.keys():
- streamblock_list = streamblock_list+forward_init_flows[key]['streamblock']+' '
+ streamblock_list = streamblock_list + \
+ forward_init_flows[key]['streamblock'] + ' '
for key in reverse_init_flows.keys():
- streamblock_list = streamblock_list+reverse_init_flows[key]['streamblock']+' '
- streamblock_list = streamblock_list+'"'
+ streamblock_list = streamblock_list + \
+ reverse_init_flows[key]['streamblock'] + ' '
+ streamblock_list = streamblock_list + '"'
- frameloss_sbProfile= self.baseAPI.stc_create('Rfc2544StreamBlockProfile -under '+frameloss_config+' -Active TRUE -LocalActive TRUE')
- self.baseAPI.stc_config(frameloss_sbProfile,'-StreamBlockList '+streamblock_list)
- self.baseAPI.stc_perform('ExpandBenchmarkConfigCommand','-config ',frameloss_config)
+ frameloss_sbProfile = self.baseAPI.stc_create(
+ 'Rfc2544StreamBlockProfile -under ' +
+ frameloss_config +
+ ' -Active TRUE -LocalActive TRUE')
+ self.baseAPI.stc_config(
+ frameloss_sbProfile,
+ '-StreamBlockList ' +
+ streamblock_list)
+ self.baseAPI.stc_perform(
+ 'ExpandBenchmarkConfigCommand',
+ '-config ',
+ frameloss_config)
- #attach the port before testing
- port_list = [ forward_port_handle,reverse_port_handle]
+ # attach the port before testing
+ port_list = [forward_port_handle, reverse_port_handle]
self.baseAPI.stc_attach_ports(port_list)
- #stc apply and begin to sequence test
+ # stc apply and begin to sequence test
self.baseAPI.stc_apply()
self.baseAPI.stc_perform("SequencerStart")
- #wait until complete
+ # wait until complete
self.baseAPI.stc_waituntilcomplete()
- #get result db
- resultsdb = self.baseAPI.stc_get("system1.project.TestResultSetting", "-CurrentResultFileName")
- results_dict = self.baseAPI.stc_perform('QueryResult','-DatabaseConnectionString',resultsdb,'-ResultPath RFC2544FrameLossTestResultDetailedSummaryView')
+ # get result db
+ resultsdb = self.baseAPI.stc_get(
+ "system1.project.TestResultSetting",
+ "-CurrentResultFileName")
+ results_dict = self.baseAPI.stc_perform(
+ 'QueryResult',
+ '-DatabaseConnectionString',
+ resultsdb,
+ '-ResultPath RFC2544FrameLossTestResultDetailedSummaryView')
#import pdb
- #pdb.set_trace()
- return True,results_dict
+ # pdb.set_trace()
+ return True, results_dict
- def run_rfc2544_latency(self,forward_init_flows,reverse_init_flows):
+ def run_rfc2544_latency(self, forward_init_flows, reverse_init_flows):
pass
-
diff --git a/testsuites/vstf/vstf_scripts/vstf/agent/spirentagent.py b/testsuites/vstf/vstf_scripts/vstf/agent/spirentagent.py
index 8951f96d..46583dfe 100644
--- a/testsuites/vstf/vstf_scripts/vstf/agent/spirentagent.py
+++ b/testsuites/vstf/vstf_scripts/vstf/agent/spirentagent.py
@@ -12,5 +12,6 @@ from vstf.agent.spirent.tools import Spirent_Tools as Spirent
class agentSpirent(Spirent):
+
def __init__(self):
super(agentSpirent, self).__init__()
diff --git a/testsuites/vstf/vstf_scripts/vstf/common/__init__.py b/testsuites/vstf/vstf_scripts/vstf/common/__init__.py
index df7d24d0..83b8d15d 100644
--- a/testsuites/vstf/vstf_scripts/vstf/common/__init__.py
+++ b/testsuites/vstf/vstf_scripts/vstf/common/__init__.py
@@ -6,4 +6,3 @@
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
-
diff --git a/testsuites/vstf/vstf_scripts/vstf/common/candy_text.py b/testsuites/vstf/vstf_scripts/vstf/common/candy_text.py
index 818ae767..306d9124 100644
--- a/testsuites/vstf/vstf_scripts/vstf/common/candy_text.py
+++ b/testsuites/vstf/vstf_scripts/vstf/common/candy_text.py
@@ -36,7 +36,7 @@ def dict2text(info):
def text2dict(candy):
- tmp = candy.replace("##","#").split("#")
+ tmp = candy.replace("##", "#").split("#")
result = {
"sn": int(tmp[0]),
"node": tmp[1],
@@ -49,7 +49,7 @@ def text2dict(candy):
def text2tuple(candy):
- tmp = candy.replace("##","#").split("#")
+ tmp = candy.replace("##", "#").split("#")
sn = int(tmp[0])
node = tmp[1]
diff --git a/testsuites/vstf/vstf_scripts/vstf/common/cfgparser.py b/testsuites/vstf/vstf_scripts/vstf/common/cfgparser.py
index 9de5a2cd..802cb214 100644
--- a/testsuites/vstf/vstf_scripts/vstf/common/cfgparser.py
+++ b/testsuites/vstf/vstf_scripts/vstf/common/cfgparser.py
@@ -12,6 +12,7 @@ from oslo.config import cfg
class CfgParser(object):
+
def __init__(self, config_file):
super(CfgParser, self).__init__()
if os.path.isfile(config_file) is False:
diff --git a/testsuites/vstf/vstf_scripts/vstf/common/cliutil.py b/testsuites/vstf/vstf_scripts/vstf/common/cliutil.py
index 541bba7b..8997cd6a 100644
--- a/testsuites/vstf/vstf_scripts/vstf/common/cliutil.py
+++ b/testsuites/vstf/vstf_scripts/vstf/common/cliutil.py
@@ -7,6 +7,7 @@
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
+
def arg(*args, **kwargs):
"""Decorator for CLI args.
@@ -33,4 +34,4 @@ def add_arg(func, *args, **kwargs):
if (args, kwargs) not in func.arguments:
# Because of the semantics of decorator composition if we just append
# to the options list positional options will appear to be backwards.
- func.arguments.insert(0, (args, kwargs)) \ No newline at end of file
+ func.arguments.insert(0, (args, kwargs))
diff --git a/testsuites/vstf/vstf_scripts/vstf/common/cmds.py b/testsuites/vstf/vstf_scripts/vstf/common/cmds.py
index 2952be2c..f348a804 100644
--- a/testsuites/vstf/vstf_scripts/vstf/common/cmds.py
+++ b/testsuites/vstf/vstf_scripts/vstf/common/cmds.py
@@ -20,7 +20,9 @@ def execute(cmd=None, care_result=True):
try:
(status, ret) = commands.getstatusoutput(cmd)
if care_result and 0 != status:
- LOG.error('CMD<%(cmd)s> \nSTDOUT:\n%(ret)s.', {'cmd':cmd, 'ret':ret})
+ LOG.error(
+ 'CMD<%(cmd)s> \nSTDOUT:\n%(ret)s.', {
+ 'cmd': cmd, 'ret': ret})
return None
else:
return ret
diff --git a/testsuites/vstf/vstf_scripts/vstf/common/daemon.py b/testsuites/vstf/vstf_scripts/vstf/common/daemon.py
index 35933dad..46087493 100644
--- a/testsuites/vstf/vstf_scripts/vstf/common/daemon.py
+++ b/testsuites/vstf/vstf_scripts/vstf/common/daemon.py
@@ -7,7 +7,10 @@
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
-import sys, os, time, atexit
+import sys
+import os
+import time
+import atexit
import logging
from signal import SIGTERM
@@ -17,11 +20,16 @@ LOG = logging.getLogger(__name__)
class Daemon(object):
"""
A generic daemon class.
-
+
Usage: subclass the Daemon class and override the run() method
"""
- def __init__(self, pidfile, stdin='/dev/null', stdout='/dev/null', stderr='/dev/null'):
+ def __init__(
+ self,
+ pidfile,
+ stdin='/dev/null',
+ stdout='/dev/null',
+ stderr='/dev/null'):
super(Daemon, self).__init__()
self.stdin = stdin
self.stdout = stdout
@@ -30,7 +38,7 @@ class Daemon(object):
def daemonize(self):
"""
- do the UNIX double-fork magic, see Stevens' "Advanced
+ do the UNIX double-fork magic, see Stevens' "Advanced
Programming in the UNIX Environment" for details (ISBN 0201563177)
http://www.erlenstar.demon.co.uk/unix/faq_2.html#SEC16
"""
@@ -38,7 +46,7 @@ class Daemon(object):
pid = os.fork()
if pid > 0:
sys.exit(0)
- except OSError, e:
+ except OSError as e:
LOG.error("fork #1 failed: %(errno)s, %(strerror)s",
{'errno': e.errno, 'strerror': e.strerror})
sys.exit(1)
@@ -54,7 +62,7 @@ class Daemon(object):
if pid > 0:
# exit from second parent
sys.exit(0)
- except OSError, e:
+ except OSError as e:
LOG.error("fork #1 failed: %(errno)s, %(strerror)s",
{'errno': e.errno, 'strerror': e.strerror})
sys.exit(1)
@@ -116,12 +124,12 @@ class Daemon(object):
sys.stderr.write(message % self.pidfile)
return # not an error in a restart
- # Try killing the daemon process
+ # Try killing the daemon process
try:
- while 1:
+ while True:
os.kill(pid, SIGTERM)
time.sleep(0.1)
- except OSError, err:
+ except OSError as err:
err = str(err)
if err.find("No such process") > 0:
if os.path.exists(self.pidfile):
@@ -139,16 +147,16 @@ class Daemon(object):
def run(self):
"""
- You should override this method when you subclass Daemon.
+ You should override this method when you subclass Daemon.
It will be called after the process has been
daemonized by start() or restart().
-
+
"""
pass
def daemon_die(self):
"""You should override this method when you shutdown daemon
this func will be call by stop() before kill the process
-
+
"""
pass
diff --git a/testsuites/vstf/vstf_scripts/vstf/common/decorator.py b/testsuites/vstf/vstf_scripts/vstf/common/decorator.py
index 98d539f1..ed910556 100644
--- a/testsuites/vstf/vstf_scripts/vstf/common/decorator.py
+++ b/testsuites/vstf/vstf_scripts/vstf/common/decorator.py
@@ -17,7 +17,9 @@ def check(key, choices=[], defaults=_DEFAULTS):
if defaults != _DEFAULTS:
kwargs[key] = defaults
else:
- raise Exception("Error: '%s' is needed in %s" % (key, func))
+ raise Exception(
+ "Error: '%s' is needed in %s" %
+ (key, func))
if choices and kwargs[key] not in choices:
raise Exception("Error: %s :%s" % (key, kwargs[key]))
@@ -40,7 +42,9 @@ def dcheck(key, choices=[]):
values = None
if isinstance(values, dict):
if key not in values:
- raise Exception("Error: '%s' is needed in %s" % (key, func))
+ raise Exception(
+ "Error: '%s' is needed in %s" %
+ (key, func))
if choices and values[key] not in choices:
raise Exception("Error: %s :%s" % (key, values[key]))
ret = func(*args)
@@ -84,7 +88,8 @@ def namespace():
ret = func(*args, **kwargs)
nspace = kwargs.get("namespace", None)
if nspace:
- ret = "ip netns exec %(namespace)s " % {"namespace": nspace} + ret
+ ret = "ip netns exec %(namespace)s " % {
+ "namespace": nspace} + ret
return ret
return __deco
diff --git a/testsuites/vstf/vstf_scripts/vstf/common/log.py b/testsuites/vstf/vstf_scripts/vstf/common/log.py
index 415b003a..b8b64888 100644
--- a/testsuites/vstf/vstf_scripts/vstf/common/log.py
+++ b/testsuites/vstf/vstf_scripts/vstf/common/log.py
@@ -34,7 +34,10 @@ def _init_log(log_file, level=logging.INFO, clevel=logging.INFO):
return file_handler, console
-def setup_logging(level=logging.INFO, log_file="/var/log/esp_test.log", clevel=logging.WARNING):
+def setup_logging(
+ level=logging.INFO,
+ log_file="/var/log/esp_test.log",
+ clevel=logging.WARNING):
log = logging.getLogger()
log.setLevel(level)
file_handler, console = _init_log(log_file, level, clevel)
diff --git a/testsuites/vstf/vstf_scripts/vstf/common/pyhtml.py b/testsuites/vstf/vstf_scripts/vstf/common/pyhtml.py
index f3adee8d..b2162290 100644
--- a/testsuites/vstf/vstf_scripts/vstf/common/pyhtml.py
+++ b/testsuites/vstf/vstf_scripts/vstf/common/pyhtml.py
@@ -14,22 +14,124 @@ doc_type = '<!DOCTYPE HTML>\n'
default_title = "Html Page"
charset = '<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />\n'
-html4_tags = {'a', 'abbr', 'acronym', 'address', 'area', 'b', 'base', 'bdo', 'big',
- 'blockquote', 'body', 'br', 'button', 'caption', 'cite', 'code', 'col',
- 'colgroup', 'dd', 'del', 'div', 'dfn', 'dl', 'dt', 'em', 'fieldset',
- 'form', 'frame', 'frameset', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head',
- 'hr', 'html', 'i', 'iframe', 'img', 'input', 'ins', 'kbd',
- 'label', 'legend', 'li', 'link', 'map', 'menu', 'menuitem', 'meta',
- 'noframes', 'noscript', 'object', 'ol', 'optgroup', 'option', 'p',
- 'param', 'pre', 'q', 'samp', 'script', 'select', 'small', 'span', 'strong',
- 'style', 'sub', 'sup', 'table', 'tbody', 'td', 'textarea', 'tfoot', 'th',
- 'thead', 'title', 'tr', 'tt', 'ul', 'var'}
+html4_tags = {
+ 'a',
+ 'abbr',
+ 'acronym',
+ 'address',
+ 'area',
+ 'b',
+ 'base',
+ 'bdo',
+ 'big',
+ 'blockquote',
+ 'body',
+ 'br',
+ 'button',
+ 'caption',
+ 'cite',
+ 'code',
+ 'col',
+ 'colgroup',
+ 'dd',
+ 'del',
+ 'div',
+ 'dfn',
+ 'dl',
+ 'dt',
+ 'em',
+ 'fieldset',
+ 'form',
+ 'frame',
+ 'frameset',
+ 'h1',
+ 'h2',
+ 'h3',
+ 'h4',
+ 'h5',
+ 'h6',
+ 'head',
+ 'hr',
+ 'html',
+ 'i',
+ 'iframe',
+ 'img',
+ 'input',
+ 'ins',
+ 'kbd',
+ 'label',
+ 'legend',
+ 'li',
+ 'link',
+ 'map',
+ 'menu',
+ 'menuitem',
+ 'meta',
+ 'noframes',
+ 'noscript',
+ 'object',
+ 'ol',
+ 'optgroup',
+ 'option',
+ 'p',
+ 'param',
+ 'pre',
+ 'q',
+ 'samp',
+ 'script',
+ 'select',
+ 'small',
+ 'span',
+ 'strong',
+ 'style',
+ 'sub',
+ 'sup',
+ 'table',
+ 'tbody',
+ 'td',
+ 'textarea',
+ 'tfoot',
+ 'th',
+ 'thead',
+ 'title',
+ 'tr',
+ 'tt',
+ 'ul',
+ 'var'}
disused_tags = {'isindex', 'font', 'dir', 's', 'strike',
'u', 'center', 'basefont', 'applet', 'xmp'}
-html5_tags = {'article', 'aside', 'audio', 'bdi', 'canvas', 'command', 'datalist', 'details',
- 'dialog', 'embed', 'figcaption', 'figure', 'footer', 'header',
- 'keygen', 'mark', 'meter', 'nav', 'output', 'progress', 'rp', 'rt', 'ruby',
- 'section', 'source', 'summary', 'details', 'time', 'track', 'video', 'wbr'}
+html5_tags = {
+ 'article',
+ 'aside',
+ 'audio',
+ 'bdi',
+ 'canvas',
+ 'command',
+ 'datalist',
+ 'details',
+ 'dialog',
+ 'embed',
+ 'figcaption',
+ 'figure',
+ 'footer',
+ 'header',
+ 'keygen',
+ 'mark',
+ 'meter',
+ 'nav',
+ 'output',
+ 'progress',
+ 'rp',
+ 'rt',
+ 'ruby',
+ 'section',
+ 'source',
+ 'summary',
+ 'details',
+ 'time',
+ 'track',
+ 'video',
+ 'wbr'}
nl = '\n'
tags = html4_tags | disused_tags | html5_tags
@@ -105,7 +207,8 @@ class Tag(list):
result = ''
if self.tag_name:
result += '<%s%s%s>' % (self.tag_name,
- self._render_attr(), self._self_close() * ' /')
+ self._render_attr(),
+ self._self_close() * ' /')
if not self._self_close():
isnl = True
for c in self:
diff --git a/testsuites/vstf/vstf_scripts/vstf/common/rsync.py b/testsuites/vstf/vstf_scripts/vstf/common/rsync.py
index 2209dfd3..03331368 100644
--- a/testsuites/vstf/vstf_scripts/vstf/common/rsync.py
+++ b/testsuites/vstf/vstf_scripts/vstf/common/rsync.py
@@ -10,7 +10,15 @@
# from __future__ import nested_scopes
-import os, os.path, shutil, glob, re, sys, getopt, stat, string
+import os
+import os.path
+import shutil
+import glob
+import re
+import sys
+import getopt
+import stat
+import string
try:
import win32file
@@ -19,6 +27,7 @@ except:
class Cookie:
+
def __init__(self):
self.sink_root = ""
self.target_root = ""
@@ -45,7 +54,7 @@ class Cookie:
def visit(cookie, dirname, names):
"""Copy files names from sink_root + (dirname - sink_root) to target_root + (dirname - sink_root)"""
if os.path.split(cookie.sink_root)[
- 1]: # Should be tested with (C:\Cvs -> C:\)! (C:\Archives\MyDatas\UltraEdit -> C:\Archives\MyDatas) (Cvs -> "")! (Archives\MyDatas\UltraEdit -> Archives\MyDatas) (\Cvs -> \)! (\Archives\MyDatas\UltraEdit -> Archives\MyDatas)
+ 1]: # Should be tested with (C:\Cvs -> C:\)! (C:\Archives\MyDatas\UltraEdit -> C:\Archives\MyDatas) (Cvs -> "")! (Archives\MyDatas\UltraEdit -> Archives\MyDatas) (\Cvs -> \)! (\Archives\MyDatas\UltraEdit -> Archives\MyDatas)
dirname = dirname[len(cookie.sink_root) + 1:]
else:
dirname = dirname[len(cookie.sink_root):]
@@ -81,7 +90,9 @@ def visit(cookie, dirname, names):
elif os.path.isdir(sink):
removeDir(cookie, sink)
else:
- logError("Sink %s is neither a file nor a folder (skip removal)" % sink)
+ logError(
+ "Sink %s is neither a file nor a folder (skip removal)" %
+ sink)
names_excluded += [names[name_index]]
del (names[name_index])
name_index = name_index - 1
@@ -95,7 +106,7 @@ def visit(cookie, dirname, names):
for name in os.listdir(target_dir):
if not cookie.delete_excluded and name in names_excluded:
continue
- if not name in names:
+ if name not in names:
target = os.path.join(target_dir, name)
if os.path.isfile(target):
removeFile(cookie, target)
@@ -122,7 +133,9 @@ def visit(cookie, dirname, names):
copyFile(cookie, sink, target)
else:
# file-???
- logError("Target %s is neither a file nor folder (skip update)" % sink)
+ logError(
+ "Target %s is neither a file nor folder (skip update)" %
+ sink)
elif os.path.isdir(sink):
if os.path.isfile(target):
@@ -131,7 +144,9 @@ def visit(cookie, dirname, names):
makeDir(cookie, target)
else:
# ???-xxx
- logError("Sink %s is neither a file nor a folder (skip update)" % sink)
+ logError(
+ "Sink %s is neither a file nor a folder (skip update)" %
+ sink)
elif not cookie.existing:
# When target dont exist:
@@ -142,7 +157,9 @@ def visit(cookie, dirname, names):
# folder
makeDir(cookie, target)
else:
- logError("Sink %s is neither a file nor a folder (skip update)" % sink)
+ logError(
+ "Sink %s is neither a file nor a folder (skip update)" %
+ sink)
def log(cookie, message):
@@ -166,7 +183,9 @@ def shouldUpdate(cookie, sink, target):
sink_sz = sink_st.st_size
sink_mt = sink_st.st_mtime
except:
- logError("Fail to retrieve information about sink %s (skip update)" % sink)
+ logError(
+ "Fail to retrieve information about sink %s (skip update)" %
+ sink)
return 0
try:
@@ -174,7 +193,9 @@ def shouldUpdate(cookie, sink, target):
target_sz = target_st.st_size
target_mt = target_st.st_mtime
except:
- logError("Fail to retrieve information about target %s (skip update)" % target)
+ logError(
+ "Fail to retrieve information about target %s (skip update)" %
+ target)
return 0
if cookie.update:
@@ -203,7 +224,7 @@ def copyFile(cookie, sink, target):
if cookie.time:
try:
s = os.stat(sink)
- os.utime(target, (s.st_atime, s.st_mtime));
+ os.utime(target, (s.st_atime, s.st_mtime))
except:
logError("Fail to copy timestamp of %s" % sink)
@@ -216,8 +237,9 @@ def updateFile(cookie, sink, target):
try:
if win32file:
filemode = win32file.GetFileAttributesW(target)
- win32file.SetFileAttributesW(target,
- filemode & ~win32file.FILE_ATTRIBUTE_READONLY & ~win32file.FILE_ATTRIBUTE_HIDDEN & ~win32file.FILE_ATTRIBUTE_SYSTEM)
+ win32file.SetFileAttributesW(
+ target,
+ filemode & ~win32file.FILE_ATTRIBUTE_READONLY & ~win32file.FILE_ATTRIBUTE_HIDDEN & ~win32file.FILE_ATTRIBUTE_SYSTEM)
else:
os.chmod(target, stat.S_IWUSR)
except:
@@ -228,10 +250,11 @@ def updateFile(cookie, sink, target):
if cookie.time:
try:
s = os.stat(sink)
- os.utime(target, (s.st_atime, s.st_mtime));
+ os.utime(target, (s.st_atime, s.st_mtime))
except:
- logError(
- "Fail to copy timestamp of %s" % sink) # The utime api of the 2.3 version of python is not unicode compliant.
+ # The utime api of the 2.3 version of python is not unicode
+ # compliant.
+ logError("Fail to copy timestamp of %s" % sink)
except:
logError("Fail to override %s" % sink)
@@ -242,8 +265,8 @@ def updateFile(cookie, sink, target):
def prepareRemoveFile(path):
if win32file:
filemode = win32file.GetFileAttributesW(path)
- win32file.SetFileAttributesW(path,
- filemode & ~win32file.FILE_ATTRIBUTE_READONLY & ~win32file.FILE_ATTRIBUTE_HIDDEN & ~win32file.FILE_ATTRIBUTE_SYSTEM)
+ win32file.SetFileAttributesW(path, filemode & ~win32file.FILE_ATTRIBUTE_READONLY &
+ ~win32file.FILE_ATTRIBUTE_HIDDEN & ~win32file.FILE_ATTRIBUTE_SYSTEM)
else:
os.chmod(path, stat.S_IWUSR)
@@ -305,7 +328,8 @@ def convertPath(path):
if separator != "/":
path = re.sub(re.escape(separator), "/", path)
- # Help file, folder pattern to express that it should match the all file or folder name.
+ # Help file, folder pattern to express that it should match the all file
+ # or folder name.
path = "/" + path
return path
@@ -360,7 +384,7 @@ def convertPatterns(path, sign):
"""Read the files for pattern and return a vector of filters"""
filters = []
f = open(path, "r")
- while 1:
+ while True:
pattern = f.readline()
if not pattern:
break
@@ -428,8 +452,8 @@ def main(args):
cookie.relative = 1
elif o in ["-n", "--dry-run"]:
cookie.dry_run = 1
- elif o in ["-t", "--times",
- "--time"]: # --time is there to guaranty backward compatibility with previous buggy version.
+ # --time is there to guaranty backward compatibility with previous buggy version.
+ elif o in ["-t", "--times", "--time"]:
cookie.time = 1
elif o in ["-u", "--update"]:
cookie.update = 1
@@ -474,7 +498,7 @@ def main(args):
target_root = args[1]
try: # In order to allow compatibility below 2.3.
pass
- if os.path.__dict__.has_key("supports_unicode_filenames") and os.path.supports_unicode_filenames:
+ if "supports_unicode_filenames" in os.path.__dict__ and os.path.supports_unicode_filenames:
target_root = unicode(target_root, sys.getfilesystemencoding())
finally:
cookie.target_root = target_root
@@ -486,7 +510,7 @@ def main(args):
sink_families = {}
for sink in sinks:
try: # In order to allow compatibility below 2.3.
- if os.path.__dict__.has_key("supports_unicode_filenames") and os.path.supports_unicode_filenames:
+ if "supports_unicode_filenames" in os.path.__dict__ and os.path.supports_unicode_filenames:
sink = unicode(sink, sys.getfilesystemencoding())
except:
pass
@@ -499,7 +523,7 @@ def main(args):
break
sink_root, sink_name = os.path.split(sink_root)
sink_root = sink_drive + sink_root
- if not sink_families.has_key(sink_root):
+ if sink_root not in sink_families:
sink_families[sink_root] = []
sink_families[sink_root] = sink_families[sink_root] + [sink_name]
@@ -509,15 +533,28 @@ def main(args):
else:
cookie.sink_root = sink_root
- global y # In order to allow compatibility below 2.1 (nested scope where used before).
+ # In order to allow compatibility below 2.1 (nested scope where used
+ # before).
+ global y
y = sink_root
- files = filter(lambda x: os.path.isfile(os.path.join(y, x)), sink_families[sink_root])
+ files = filter(
+ lambda x: os.path.isfile(
+ os.path.join(
+ y,
+ x)),
+ sink_families[sink_root])
if files:
visit(cookie, sink_root, files)
- # global y # In order to allow compatibility below 2.1 (nested scope where used before).
+ # global y # In order to allow compatibility below 2.1 (nested scope
+ # where used before).
y = sink_root
- folders = filter(lambda x: os.path.isdir(os.path.join(y, x)), sink_families[sink_root])
+ folders = filter(
+ lambda x: os.path.isdir(
+ os.path.join(
+ y,
+ x)),
+ sink_families[sink_root])
for folder in folders:
folder_path = os.path.join(sink_root, folder)
if not cookie.recursive:
diff --git a/testsuites/vstf/vstf_scripts/vstf/common/saltstack.py b/testsuites/vstf/vstf_scripts/vstf/common/saltstack.py
index 030bef5d..96bdc911 100644
--- a/testsuites/vstf/vstf_scripts/vstf/common/saltstack.py
+++ b/testsuites/vstf/vstf_scripts/vstf/common/saltstack.py
@@ -32,14 +32,16 @@ class Mysalt(object):
cmds.execute("grep '^pillar_roots' \
/etc/salt/master -A 2 | sed 1,2d | awk '{print $2}'") + '/')
if self.pillar_path == "":
- log.warning("pillar path not found, make sure the pillar_roots configed")
+ log.warning(
+ "pillar path not found, make sure the pillar_roots configed")
else:
os.system("mkdir -p " + self.pillar_path)
self.state_path = str(cmds.execute("grep '^file_roots' \
/etc/salt/master -A 2 | sed 1,2d | awk '{print $2}'") + '/')
if self.state_path == "":
- log.warning("state path not found, make sure the file_roots configed")
+ log.warning(
+ "state path not found, make sure the file_roots configed")
else:
os.system("mkdir -p " + self.state_path)
@@ -72,7 +74,8 @@ class Mysalt(object):
elif flag == "state":
dst = self.state_path
else:
- log.error("this file or dir not pillar or state, can not support now.")
+ log.error(
+ "this file or dir not pillar or state, can not support now.")
return False
if self.IS_FILE == self.__is_dir_or_file(target):
@@ -125,20 +128,27 @@ class Mysalt(object):
num_s += 1
else:
num_f += 1
- msg = msg + self.__luxuriant_line("Failed %d:\n" % num_f, "red")
+ msg = msg + \
+ self.__luxuriant_line("Failed %d:\n" % num_f, "red")
msg = msg + "\t" + key + '\n'
- msg = msg + self.__luxuriant_line("\t%s\n" % ret[host][key]['comment'], "red")
- if True == ret[host][key]['changes'].has_key('retcode'):
- msg = msg + "RETCODE: %s\n" % (ret[host][key]['changes']['retcode'])
- if True == ret[host][key]['changes'].has_key('stderr'):
- msg = msg + "STDERR: %s\n" % (ret[host][key]['changes']['stderr'])
- if True == ret[host][key]['changes'].has_key('stdout'):
- msg = msg + "STDOUT: %s\n" % (ret[host][key]['changes']['stdout'])
- msg = msg + self.__luxuriant_line("total success: %d\n" % num_s, "green")
+ msg = msg + \
+ self.__luxuriant_line("\t%s\n" % ret[host][key]['comment'], "red")
+ if True == ('retcode' in ret[host][key]['changes']):
+ msg = msg + \
+ "RETCODE: %s\n" % (ret[host][key]['changes']['retcode'])
+ if True == ('stderr' in ret[host][key]['changes']):
+ msg = msg + \
+ "STDERR: %s\n" % (ret[host][key]['changes']['stderr'])
+ if True == ('stdout' in ret[host][key]['changes']):
+ msg = msg + \
+ "STDOUT: %s\n" % (ret[host][key]['changes']['stdout'])
+ msg = msg + \
+ self.__luxuriant_line("total success: %d\n" % num_s, "green")
msg = msg + self.__luxuriant_line("failed: %d\n" % num_f, "red")
except Exception as e:
- log.error("sorry, thy to check result happend error, <%(e)s>.\nret:%(ret)s",
- {'e': e, 'ret': ret})
+ log.error(
+ "sorry, thy to check result happend error, <%(e)s>.\nret:%(ret)s", {
+ 'e': e, 'ret': ret})
return -1
log.info(':\n' + msg)
return num_f
@@ -147,7 +157,9 @@ class Mysalt(object):
try:
log.info("salt " + host + " state.sls " +
fstate + ' pillar=\'' + str(ext_pillar) + '\'')
- ret = self.salt.cmd(host, 'state.sls', [fstate, 'pillar=' + str(ext_pillar)], 180, 'list')
+ ret = self.salt.cmd(
+ host, 'state.sls', [
+ fstate, 'pillar=' + str(ext_pillar)], 180, 'list')
except Exception as e:
log.error("try to init host %(host)s happend error: <%(e)s>.",
{'host': host, 'e': e})
@@ -170,7 +182,7 @@ class Mysalt(object):
return ret
def copy_by_state(self, host, src, state_cmd, **kwargs):
- '''the src must be a dir, and the state.sls
+ '''the src must be a dir, and the state.sls
must be the name of the dir name'''
if not self.slave_exists(host):
@@ -184,10 +196,12 @@ class Mysalt(object):
def get_master_ip(self, host=None):
if not host:
- ret = cmds.execute("grep '^interface:' /etc/salt/master | awk '{print $2}'").strip()
+ ret = cmds.execute(
+ "grep '^interface:' /etc/salt/master | awk '{print $2}'").strip()
return ret
try:
- ret = self.salt.cmd(host, "grains.item", ["master"])[host]['master']
+ ret = self.salt.cmd(host, "grains.item", ["master"])[
+ host]['master']
except Exception:
log.error("salt happened error when get master ip")
return ""
diff --git a/testsuites/vstf/vstf_scripts/vstf/common/ssh.py b/testsuites/vstf/vstf_scripts/vstf/common/ssh.py
index 7b85e086..5cf196d4 100644
--- a/testsuites/vstf/vstf_scripts/vstf/common/ssh.py
+++ b/testsuites/vstf/vstf_scripts/vstf/common/ssh.py
@@ -19,6 +19,7 @@ LOG = logging.getLogger(__name__)
class SSHClientContext(paramiko.SSHClient):
+
def __init__(self, ip, user, passwd, port=22):
self.host = ip
self.user = user
@@ -31,11 +32,20 @@ class SSHClientContext(paramiko.SSHClient):
ret = stdout.channel.recv_exit_status()
out = stdout.read().strip()
err = stderr.read().strip()
- LOG.info("in %s,%s,return:%s,output:%s:error:%s" % (self.host, cmd, ret, out, err))
+ LOG.info(
+ "in %s,%s,return:%s,output:%s:error:%s" %
+ (self.host, cmd, ret, out, err))
return ret, out, err
def connect(self):
- super(SSHClientContext, self).connect(self.host, self.port, self.user, self.passwd, timeout=10)
+ super(
+ SSHClientContext,
+ self).connect(
+ self.host,
+ self.port,
+ self.user,
+ self.passwd,
+ timeout=10)
def __enter__(self):
self.set_missing_host_key_policy(paramiko.AutoAddPolicy())
@@ -48,6 +58,7 @@ class SSHClientContext(paramiko.SSHClient):
class SFTPClientContext(object):
+
def __init__(self, ip, user, passwd, port=22):
self.host = ip
self.passwd = passwd
@@ -97,7 +108,9 @@ def upload_dir(host, user, passwd, local_dir, remote_dir):
remote_dir = os.path.join(remote_dir, os.path.basename(local_dir))
ret, _, _ = run_cmd(host, user, passwd, "sudo rm -rf %s" % remote_dir)
if ret != 0 and ret != 1:
- LOG.error("somehow failed in rm -rf %s on host:%s,return:%s" % (remote_dir, host, ret))
+ LOG.error(
+ "somehow failed in rm -rf %s on host:%s,return:%s" %
+ (remote_dir, host, ret))
exit(1)
with SFTPClientContext(host, user, passwd) as sftp:
sftp.connect()
@@ -117,7 +130,7 @@ def upload_dir(host, user, passwd, local_dir, remote_dir):
try:
sftp.mkdir(remote_path)
LOG.info("mkdir path %s" % remote_path)
- except Exception, e:
+ except Exception as e:
raise
return remote_dir
@@ -177,7 +190,9 @@ def download_dir(host, user, passwd, remote_path, local_path):
dest_path = local_path
else:
raise Exception('path:%s is not exists' % dir_name)
- LOG.info("download_dir from host:%s:%s to dest:%s" % (host, remote_path, dest_path))
+ LOG.info(
+ "download_dir from host:%s:%s to dest:%s" %
+ (host, remote_path, dest_path))
transport = paramiko.Transport((host, 22))
transport.connect(username=user, password=passwd)
sftp = paramiko.SFTPClient.from_transport(transport)
@@ -189,7 +204,8 @@ def download_dir(host, user, passwd, remote_path, local_path):
path = q.get()
st = sftp.lstat(path).st_mode
relative_path = path[len(remote_path):]
- if relative_path.startswith('/'): relative_path = relative_path[1:]
+ if relative_path.startswith('/'):
+ relative_path = relative_path[1:]
local = os.path.join(dest_path, relative_path)
if os.path.exists(local):
shutil.rmtree(local)
@@ -206,7 +222,9 @@ def download_dir(host, user, passwd, remote_path, local_path):
sftp.get(fullpath, dest)
os.chmod(dest, st)
else:
- raise Exception('path:%s:%s not exists or is not a dir' % (host, remote_path))
+ raise Exception(
+ 'path:%s:%s not exists or is not a dir' %
+ (host, remote_path))
return dest_path
@@ -218,6 +236,7 @@ def run_cmd(host, user, passwd, cmd):
class SshFileTransfer(object):
+
def __init__(self, ip, user, passwd):
self.ip, self.user, self.passwd = ip, user, passwd
diff --git a/testsuites/vstf/vstf_scripts/vstf/common/test_func.py b/testsuites/vstf/vstf_scripts/vstf/common/test_func.py
index 2a9a4c0d..3fa23cdc 100644
--- a/testsuites/vstf/vstf_scripts/vstf/common/test_func.py
+++ b/testsuites/vstf/vstf_scripts/vstf/common/test_func.py
@@ -20,4 +20,4 @@ from vstf.common import cliutil as util
help="a params of test-xx")
def do_test_xx(args):
"""this is a help doc"""
- print "run test01 " + args.test + args.xx \ No newline at end of file
+ print "run test01 " + args.test + args.xx
diff --git a/testsuites/vstf/vstf_scripts/vstf/common/unix.py b/testsuites/vstf/vstf_scripts/vstf/common/unix.py
index 97582c74..ac3c9b72 100644
--- a/testsuites/vstf/vstf_scripts/vstf/common/unix.py
+++ b/testsuites/vstf/vstf_scripts/vstf/common/unix.py
@@ -14,49 +14,51 @@ from vstf.common import message
class UdpServer(object):
+
def __init__(self):
super(UdpServer, self).__init__()
try:
os.unlink(constants.sockaddr)
except OSError:
if os.path.exists(constants.sockaddr):
- raise Exception("socket not found %s" % constants.sockaddr)
- self.conn=socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
-
- def listen(self,backlog=5):
+ raise Exception("socket not found %s" % constants.sockaddr)
+ self.conn = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
+
+ def listen(self, backlog=5):
self.conn.listen(backlog)
-
+
def accept(self):
return self.conn.accept()
-
+
def bind(self, addr=constants.sockaddr):
return self.conn.bind(addr)
-
+
# def send(self, data, addr):
# return message.sendto(self.conn.sendto, data, addr)
-
+
# def recv(self, size=constants.buff_size):
# return message.recv(self.conn.recvfrom)
-
+
def close(self):
self.conn.close()
class UdpClient(object):
+
def __init__(self):
super(UdpClient, self).__init__()
if not os.path.exists(constants.sockaddr):
- raise Exception("socket not found %s" % constants.sockaddr)
- self.conn=socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
-
+ raise Exception("socket not found %s" % constants.sockaddr)
+ self.conn = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
+
def connect(self, addr=constants.sockaddr):
return self.conn.connect(addr)
-
+
def send(self, data):
message.send(self.conn.send, data)
-
+
def recv(self):
return message.recv(self.conn.recv)
-
+
def close(self):
- self.conn.close() \ No newline at end of file
+ self.conn.close()
diff --git a/testsuites/vstf/vstf_scripts/vstf/common/utils.py b/testsuites/vstf/vstf_scripts/vstf/common/utils.py
index f2e14096..e9ee2791 100644
--- a/testsuites/vstf/vstf_scripts/vstf/common/utils.py
+++ b/testsuites/vstf/vstf_scripts/vstf/common/utils.py
@@ -82,7 +82,7 @@ def my_mkdir(filepath):
try:
LOG.info("mkdir -p %s" % filepath)
os.makedirs(filepath)
- except OSError, e:
+ except OSError as e:
if e.errno == 17:
LOG.info("! %s already exists" % filepath)
else:
@@ -107,7 +107,9 @@ def check_and_kill(process):
def list_mods():
- return check_output("lsmod | sed 1,1d | awk '{print $1}'", shell=True).split()
+ return check_output(
+ "lsmod | sed 1,1d | awk '{print $1}'",
+ shell=True).split()
def check_and_rmmod(mod):
@@ -144,6 +146,7 @@ def randomMAC():
class IPCommandHelper(object):
+
def __init__(self, ns=None):
self.devices = []
self.macs = []
@@ -174,7 +177,10 @@ class IPCommandHelper(object):
cmd = "ip netns exec %s " % ns + cmd
for device in self.devices:
buf = check_output(cmd % device, shell=True)
- bdfs = re.findall(r'^bus-info: \d{4}:(\d{2}:\d{2}\.\d*)$', buf, re.MULTILINE)
+ bdfs = re.findall(
+ r'^bus-info: \d{4}:(\d{2}:\d{2}\.\d*)$',
+ buf,
+ re.MULTILINE)
if bdfs:
self.bdf_device_map[bdfs[0]] = device
self.device_bdf_map[device] = bdfs[0]
@@ -188,7 +194,9 @@ class IPCommandHelper(object):
if ns:
cmd = "ip netns exec %s " % ns + cmd
buf = check_output(cmd, shell=True)
- macs = re.compile(r"[A-F0-9]{2}(?::[A-F0-9]{2}){5}", re.IGNORECASE | re.MULTILINE)
+ macs = re.compile(
+ r"[A-F0-9]{2}(?::[A-F0-9]{2}){5}",
+ re.IGNORECASE | re.MULTILINE)
for mac in macs.findall(buf):
if mac.lower() not in ('00:00:00:00:00:00', 'ff:ff:ff:ff:ff:ff'):
return mac
diff --git a/testsuites/vstf/vstf_scripts/vstf/common/vstfcli.py b/testsuites/vstf/vstf_scripts/vstf/common/vstfcli.py
index 896bb1d6..ae4fecfb 100644
--- a/testsuites/vstf/vstf_scripts/vstf/common/vstfcli.py
+++ b/testsuites/vstf/vstf_scripts/vstf/common/vstfcli.py
@@ -12,6 +12,7 @@ import sys
class VstfHelpFormatter(argparse.HelpFormatter):
+
def start_section(self, heading):
# Title-case the headings
heading = '%s%s' % (heading[0].upper(), heading[1:])
@@ -19,6 +20,7 @@ class VstfHelpFormatter(argparse.HelpFormatter):
class VstfParser(argparse.ArgumentParser):
+
def __init__(self,
prog='vstf',
description="",
@@ -41,11 +43,12 @@ class VstfParser(argparse.ArgumentParser):
desc = callback.__doc__ or ''
action_help = desc.strip()
arguments = getattr(callback, 'arguments', [])
- subparser = subparsers.add_parser(command,
- help=action_help,
- description=desc,
- add_help=False,
- formatter_class=VstfHelpFormatter)
+ subparser = subparsers.add_parser(
+ command,
+ help=action_help,
+ description=desc,
+ add_help=False,
+ formatter_class=VstfHelpFormatter)
subparser.add_argument('-h', '--help',
action='help',
help=argparse.SUPPRESS)
diff --git a/testsuites/vstf/vstf_scripts/vstf/controller/__init__.py b/testsuites/vstf/vstf_scripts/vstf/controller/__init__.py
index df7d24d0..83b8d15d 100644
--- a/testsuites/vstf/vstf_scripts/vstf/controller/__init__.py
+++ b/testsuites/vstf/vstf_scripts/vstf/controller/__init__.py
@@ -6,4 +6,3 @@
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
-
diff --git a/testsuites/vstf/vstf_scripts/vstf/controller/api_server.py b/testsuites/vstf/vstf_scripts/vstf/controller/api_server.py
index a37bf4c1..02bf486c 100644
--- a/testsuites/vstf/vstf_scripts/vstf/controller/api_server.py
+++ b/testsuites/vstf/vstf_scripts/vstf/controller/api_server.py
@@ -45,10 +45,11 @@ cmd = CommandLine()
class OpsChains(object):
+
def __init__(self, monitor, port):
"""The ops chains will setup the proxy to rabbitmq
and setup a thread to watch the queues of rabbitmq
-
+
"""
LOG.info("VSTF Manager start to listen to %s", monitor)
if not os.path.exists(cst.VSTFCPATH):
@@ -63,7 +64,8 @@ class OpsChains(object):
if not target:
respond = "the target is empty, not support now."
else:
- respond = self.chanl.call(self.chanl.make_msg("list_nic_devices"), target)
+ respond = self.chanl.call(
+ self.chanl.make_msg("list_nic_devices"), target)
return respond
def src_install(self, host, config_file):
@@ -118,8 +120,8 @@ class OpsChains(object):
return Fabricant(host, self.chanl).affctl_list()
def _create_task(self, scenario):
- taskid = self.dbconn.create_task(str(uuid.uuid4()), time.strftime(cst.TIME_FORMAT),
- desc=scenario + "Test")
+ taskid = self.dbconn.create_task(str(uuid.uuid4()), time.strftime(
+ cst.TIME_FORMAT), desc=scenario + "Test")
LOG.info("new Task id:%s" % taskid)
if -1 == taskid:
raise Exception("DB create task failed.")
@@ -142,7 +144,8 @@ class OpsChains(object):
LOG.info(nic_info)
- os_info, cpu_info, mem_info, hw_info = self.collection.collect_host_info(host["agent"])
+ os_info, cpu_info, mem_info, hw_info = self.collection.collect_host_info(host[
+ "agent"])
LOG.info(os_info)
LOG.info(cpu_info)
LOG.info(mem_info)
@@ -165,11 +168,11 @@ class OpsChains(object):
forward_settings = ForwardingSettings()
head_d = {
"ip": head,
- "namespace":forward_settings.settings["head"]["namespace"]
+ "namespace": forward_settings.settings["head"]["namespace"]
}
tail_d = {
"ip": tail,
- "namespace":forward_settings.settings["tail"]["namespace"]
+ "namespace": forward_settings.settings["tail"]["namespace"]
}
LOG.info(head_d)
LOG.info(tail_d)
@@ -184,10 +187,19 @@ class OpsChains(object):
info_str = "do report over"
return info_str
- def run_perf_cmd(self, case, rpath='./', affctl=False, build_on=False, save_on=False, report_on=False,
- mail_on=False):
+ def run_perf_cmd(
+ self,
+ case,
+ rpath='./',
+ affctl=False,
+ build_on=False,
+ save_on=False,
+ report_on=False,
+ mail_on=False):
LOG.info(case)
- LOG.info("build_on:%s report_on:%s mail_on:%s" % (build_on, report_on, mail_on))
+ LOG.info(
+ "build_on:%s report_on:%s mail_on:%s" %
+ (build_on, report_on, mail_on))
casetag = case['case']
tool = case['tool']
protocol = case['protocol']
@@ -216,7 +228,10 @@ class OpsChains(object):
tool_settings = ToolSettings()
tester_settings = TesterSettings()
flow_producer = FlowsProducer(self.chanl, flows_settings)
- provider = PerfProvider(flows_settings.settings, tool_settings.settings, tester_settings.settings)
+ provider = PerfProvider(
+ flows_settings.settings,
+ tool_settings.settings,
+ tester_settings.settings)
perf = pf.Performance(self.chanl, provider)
flow_producer.create(scenario, casetag)
@@ -225,20 +240,29 @@ class OpsChains(object):
LOG.info(result)
if save_on:
taskid = self._create_task(scenario)
- testid = self.dbconn.add_test_2task(taskid, casetag, protocol, ttype, switch, provider, tool)
+ testid = self.dbconn.add_test_2task(
+ taskid, casetag, protocol, ttype, switch, provider, tool)
LOG.info(testid)
self.dbconn.add_data_2test(testid, result)
if report_on:
self.report(rpath, not mail_on, taskid)
return result
- def run_perf_file(self, rpath='./', affctl=False, report_on=True, mail_on=True):
+ def run_perf_file(
+ self,
+ rpath='./',
+ affctl=False,
+ report_on=True,
+ mail_on=True):
perf_settings = PerfSettings()
flows_settings = FlowsSettings()
tool_settings = ToolSettings()
tester_settings = TesterSettings()
flow_producer = FlowsProducer(self.chanl, flows_settings)
- provider = PerfProvider(flows_settings.settings, tool_settings.settings, tester_settings.settings)
+ provider = PerfProvider(
+ flows_settings.settings,
+ tool_settings.settings,
+ tester_settings.settings)
perf = pf.Performance(self.chanl, provider)
tests = perf_settings.settings
@@ -274,7 +298,8 @@ class OpsChains(object):
result = perf.run(tool, protocol, ttype, sizes, affctl)
LOG.info(result)
- testid = self.dbconn.add_test_2task(taskid, casetag, protocol, ttype, switch, provider, tool)
+ testid = self.dbconn.add_test_2task(
+ taskid, casetag, protocol, ttype, switch, provider, tool)
LOG.info(testid)
self.dbconn.add_data_2test(testid, result)
@@ -293,6 +318,7 @@ class OpsChains(object):
class Manager(daemon.Daemon):
+
def __init__(self):
"""
The manager will create a socket for vstfadm.
@@ -356,13 +382,16 @@ class Manager(daemon.Daemon):
self.daemon_die()
raise e
except Exception as e:
- # here just the function failed no need exit, just return the msg
+ # here just the function failed no need exit, just return
+ # the msg
msg = "Run function failed. [ %s ]" % (e)
response = msg
LOG.error(msg)
try:
response = message.add_context(response, **context)
- LOG.debug("Manager send the response: <%(r)s", {'r': response})
+ LOG.debug(
+ "Manager send the response: <%(r)s", {
+ 'r': response})
message.send(conn.send, message.encode(response))
except Exception as e:
self.daemon_die()
@@ -374,7 +403,8 @@ class Manager(daemon.Daemon):
"""overwrite daemon.Daemon.daemon_die(self)"""
LOG.info("manage catch the signal %s to exit." % signum)
if self.conn:
- # we can not close the conn direct, just tell manager to stop accept
+ # we can not close the conn direct, just tell manager to stop
+ # accept
self.run_flag = False
if self.ops:
@@ -418,8 +448,13 @@ def do_stop(args):
def main():
"""this is for vstfctl"""
- setup_logging(level=logging.INFO, log_file="/var/log/vstf/vstf-manager.log", clevel=logging.INFO)
- parser = VstfParser(prog="vstf-manager", description="vstf manager command line")
+ setup_logging(
+ level=logging.INFO,
+ log_file="/var/log/vstf/vstf-manager.log",
+ clevel=logging.INFO)
+ parser = VstfParser(
+ prog="vstf-manager",
+ description="vstf manager command line")
parser.set_subcommand_parser(target=sys.modules[__name__])
args = parser.parse_args()
args.func(args)
diff --git a/testsuites/vstf/vstf_scripts/vstf/controller/database/__init__.py b/testsuites/vstf/vstf_scripts/vstf/controller/database/__init__.py
index df7d24d0..83b8d15d 100644
--- a/testsuites/vstf/vstf_scripts/vstf/controller/database/__init__.py
+++ b/testsuites/vstf/vstf_scripts/vstf/controller/database/__init__.py
@@ -6,4 +6,3 @@
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
-
diff --git a/testsuites/vstf/vstf_scripts/vstf/controller/database/dbinterface.py b/testsuites/vstf/vstf_scripts/vstf/controller/database/dbinterface.py
index 410e1ee5..a2aad9e8 100644
--- a/testsuites/vstf/vstf_scripts/vstf/controller/database/dbinterface.py
+++ b/testsuites/vstf/vstf_scripts/vstf/controller/database/dbinterface.py
@@ -33,6 +33,7 @@ def after_cursor_execute(conn, cursor, statement,
class DbManage(object):
+
def __init__(self, db_name=const.DBPATH):
db_exists = os.path.exists(db_name)
try:
@@ -165,9 +166,18 @@ class DbManage(object):
else:
return 0
- def add_test_2task(self, task, case, protocol, typ, switch, provider, tool):
+ def add_test_2task(
+ self,
+ task,
+ case,
+ protocol,
+ typ,
+ switch,
+ provider,
+ tool):
try:
- item = table.TblTestList(task, case, protocol, typ, switch, provider, tool)
+ item = table.TblTestList(
+ task, case, protocol, typ, switch, provider, tool)
self._session.add(item)
self._session.commit()
except Exception:
@@ -236,7 +246,8 @@ class DbManage(object):
ret = self._session.query(table.TblTaskList)
if ret:
for tmp in ret.all():
- result.append([tmp.TaskID, tmp.TaskName, tmp.Date, tmp.EXTInfo])
+ result.append(
+ [tmp.TaskID, tmp.TaskName, tmp.Date, tmp.EXTInfo])
return result
def query_all_task_id(self):
@@ -255,7 +266,9 @@ class DbManage(object):
return query.all()
def query_scenario(self, casetag):
- query = self._session.query(table.TblCaseInfo.ScenarioName).filter(table.TblCaseInfo.CaseTag == casetag)
+ query = self._session.query(
+ table.TblCaseInfo.ScenarioName).filter(
+ table.TblCaseInfo.CaseTag == casetag)
ret = ""
if query and query.first():
ret = query.first()[0]
@@ -282,10 +295,13 @@ class DbManage(object):
# Single TblTestList API
def query_caselist(self, taskid, scenario):
- query = self._session.query(table.TblTestList.CaseTag).filter(and_(
- table.TblTestList.CaseTag == table.TblCaseInfo.CaseTag,
- table.TblCaseInfo.ScenarioName == scenario,
- table.TblTestList.TaskID == taskid)).group_by(table.TblCaseInfo.CaseTag)
+ query = self._session.query(
+ table.TblTestList.CaseTag).filter(
+ and_(
+ table.TblTestList.CaseTag == table.TblCaseInfo.CaseTag,
+ table.TblCaseInfo.ScenarioName == scenario,
+ table.TblTestList.TaskID == taskid)).group_by(
+ table.TblCaseInfo.CaseTag)
return query.all()
def query_testlist(self, taskid, scenario):
@@ -308,65 +324,85 @@ class DbManage(object):
return query.all()
def query_casetools(self, taskid, casetag):
- query = self._session.query(table.TblTestList.Tools).filter(and_(
- table.TblTestList.CaseTag == casetag,
- table.TblTestList.TaskID == taskid)).group_by(table.TblTestList.Tools)
+ query = self._session.query(
+ table.TblTestList.Tools).filter(
+ and_(
+ table.TblTestList.CaseTag == casetag,
+ table.TblTestList.TaskID == taskid)).group_by(
+ table.TblTestList.Tools)
return query.all()
def query_scenariolist(self, taskid):
- query = self._session.query(table.TblCaseInfo.ScenarioName).filter(and_(
- table.TblTestList.CaseTag == table.TblCaseInfo.CaseTag,
- table.TblTestList.TaskID == taskid)).group_by(table.TblCaseInfo.ScenarioName)
+ query = self._session.query(
+ table.TblCaseInfo.ScenarioName).filter(
+ and_(
+ table.TblTestList.CaseTag == table.TblCaseInfo.CaseTag,
+ table.TblTestList.TaskID == taskid)).group_by(
+ table.TblCaseInfo.ScenarioName)
return query.all()
def query_throughput_load(self, taskid, casetag, provider):
ptype = 'throughput'
- query = self._session.query(table.TblThroughput.AvgFrameSize, table.TblThroughput.OfferedLoad).filter(and_(
- table.TblTestList.TaskID == taskid,
- table.TblTestList.CaseTag == casetag,
- table.TblTestList.Provider == provider, table.TblTestList.Type == ptype,
- table.TblTestList.TestID == table.TblThroughput.TestID))
+ query = self._session.query(
+ table.TblThroughput.AvgFrameSize,
+ table.TblThroughput.OfferedLoad).filter(
+ and_(
+ table.TblTestList.TaskID == taskid,
+ table.TblTestList.CaseTag == casetag,
+ table.TblTestList.Provider == provider,
+ table.TblTestList.Type == ptype,
+ table.TblTestList.TestID == table.TblThroughput.TestID))
return query.all()
def query_throughput_bandwidth(self, taskid, casetag, provider):
ptype = 'throughput'
- query = self._session.query(table.TblThroughput.AvgFrameSize, table.TblThroughput.Bandwidth).filter(and_(
- table.TblTestList.TaskID == taskid,
- table.TblTestList.CaseTag == casetag,
- table.TblTestList.Provider == provider, table.TblTestList.Type == ptype,
- table.TblTestList.TestID == table.TblThroughput.TestID))
+ query = self._session.query(
+ table.TblThroughput.AvgFrameSize,
+ table.TblThroughput.Bandwidth).filter(
+ and_(
+ table.TblTestList.TaskID == taskid,
+ table.TblTestList.CaseTag == casetag,
+ table.TblTestList.Provider == provider,
+ table.TblTestList.Type == ptype,
+ table.TblTestList.TestID == table.TblThroughput.TestID))
return query.all()
def query_throughput_table(self, taskid, casetag, provider):
ptype = 'throughput'
- query = self._session.query(table.TblThroughput.AvgFrameSize,
- table.TblThroughput.Bandwidth,
- table.TblThroughput.OfferedLoad,
- table.TblThroughput.CPU,
- table.TblThroughput.MppspGhz,
- table.TblThroughput.MinimumLatency,
- table.TblThroughput.MaximumLatency,
- table.TblThroughput.AverageLatency,
- ).filter(and_(
- table.TblTestList.TaskID == taskid,
- table.TblTestList.CaseTag == casetag,
- table.TblTestList.Provider == provider, table.TblTestList.Type == ptype,
- table.TblTestList.TestID == table.TblThroughput.TestID))
+ query = self._session.query(
+ table.TblThroughput.AvgFrameSize,
+ table.TblThroughput.Bandwidth,
+ table.TblThroughput.OfferedLoad,
+ table.TblThroughput.CPU,
+ table.TblThroughput.MppspGhz,
+ table.TblThroughput.MinimumLatency,
+ table.TblThroughput.MaximumLatency,
+ table.TblThroughput.AverageLatency,
+ ).filter(
+ and_(
+ table.TblTestList.TaskID == taskid,
+ table.TblTestList.CaseTag == casetag,
+ table.TblTestList.Provider == provider,
+ table.TblTestList.Type == ptype,
+ table.TblTestList.TestID == table.TblThroughput.TestID))
return query.all()
def query_throughput_simpletable(self, taskid, casetag, provider):
ptype = 'throughput'
- query = self._session.query(table.TblThroughput.AvgFrameSize,
- table.TblThroughput.Bandwidth,
- table.TblThroughput.OfferedLoad,
- table.TblThroughput.CPU,
- table.TblThroughput.MppspGhz,
- table.TblThroughput.AverageLatency,
- ).filter(and_(
- table.TblTestList.TaskID == taskid,
- table.TblTestList.CaseTag == casetag,
- table.TblTestList.Provider == provider, table.TblTestList.Type == ptype,
- table.TblTestList.TestID == table.TblThroughput.TestID))
+ query = self._session.query(
+ table.TblThroughput.AvgFrameSize,
+ table.TblThroughput.Bandwidth,
+ table.TblThroughput.OfferedLoad,
+ table.TblThroughput.CPU,
+ table.TblThroughput.MppspGhz,
+ table.TblThroughput.AverageLatency,
+ ).filter(
+ and_(
+ table.TblTestList.TaskID == taskid,
+ table.TblTestList.CaseTag == casetag,
+ table.TblTestList.Provider == provider,
+ table.TblTestList.Type == ptype,
+ table.TblTestList.TestID == table.TblThroughput.TestID))
return query.all()
def query_testdata(self, testid, ptype):
@@ -376,79 +412,103 @@ class DbManage(object):
def query_throughput_avg(self, taskid, casetag, provider):
ptype = 'throughput'
- query = self._session.query(table.TblThroughput.AvgFrameSize, table.TblThroughput.AverageLatency).filter(and_(
- table.TblTestList.TaskID == taskid,
- table.TblTestList.CaseTag == casetag,
- table.TblTestList.Provider == provider, table.TblTestList.Type == ptype,
- table.TblTestList.TestID == table.TblThroughput.TestID))
+ query = self._session.query(
+ table.TblThroughput.AvgFrameSize,
+ table.TblThroughput.AverageLatency).filter(
+ and_(
+ table.TblTestList.TaskID == taskid,
+ table.TblTestList.CaseTag == casetag,
+ table.TblTestList.Provider == provider,
+ table.TblTestList.Type == ptype,
+ table.TblTestList.TestID == table.TblThroughput.TestID))
return query.all()
def query_frameloss_bandwidth(self, taskid, casetag, provider):
ptype = 'frameloss'
- query = self._session.query(table.TblFrameloss.AvgFrameSize, table.TblFrameloss.Bandwidth).filter(and_(
- table.TblTestList.TaskID == taskid,
- table.TblTestList.CaseTag == casetag,
- table.TblTestList.Provider == provider, table.TblTestList.Type == ptype,
- table.TblTestList.TestID == table.TblFrameloss.TestID))
+ query = self._session.query(
+ table.TblFrameloss.AvgFrameSize,
+ table.TblFrameloss.Bandwidth).filter(
+ and_(
+ table.TblTestList.TaskID == taskid,
+ table.TblTestList.CaseTag == casetag,
+ table.TblTestList.Provider == provider,
+ table.TblTestList.Type == ptype,
+ table.TblTestList.TestID == table.TblFrameloss.TestID))
return query.all()
def query_frameloss_load(self, taskid, casetag, provider):
ptype = 'frameloss'
- query = self._session.query(table.TblFrameloss.AvgFrameSize, table.TblFrameloss.OfferedLoad).filter(and_(
- table.TblTestList.TaskID == taskid,
- table.TblTestList.CaseTag == casetag,
- table.TblTestList.Provider == provider, table.TblTestList.Type == ptype,
- table.TblTestList.TestID == table.TblFrameloss.TestID))
+ query = self._session.query(
+ table.TblFrameloss.AvgFrameSize,
+ table.TblFrameloss.OfferedLoad).filter(
+ and_(
+ table.TblTestList.TaskID == taskid,
+ table.TblTestList.CaseTag == casetag,
+ table.TblTestList.Provider == provider,
+ table.TblTestList.Type == ptype,
+ table.TblTestList.TestID == table.TblFrameloss.TestID))
return query.all()
def query_frameloss_table(self, taskid, casetag, provider):
ptype = 'frameloss'
- query = self._session.query(table.TblFrameloss.AvgFrameSize,
- table.TblFrameloss.Bandwidth,
- table.TblFrameloss.OfferedLoad,
- table.TblFrameloss.CPU,
- table.TblFrameloss.MppspGhz,
- table.TblFrameloss.MinimumLatency,
- table.TblFrameloss.MaximumLatency,
- table.TblFrameloss.AverageLatency
- ).filter(and_(
- table.TblTestList.TaskID == taskid,
- table.TblTestList.CaseTag == casetag,
- table.TblTestList.Provider == provider, table.TblTestList.Type == ptype,
- table.TblTestList.TestID == table.TblFrameloss.TestID))
+ query = self._session.query(
+ table.TblFrameloss.AvgFrameSize,
+ table.TblFrameloss.Bandwidth,
+ table.TblFrameloss.OfferedLoad,
+ table.TblFrameloss.CPU,
+ table.TblFrameloss.MppspGhz,
+ table.TblFrameloss.MinimumLatency,
+ table.TblFrameloss.MaximumLatency,
+ table.TblFrameloss.AverageLatency).filter(
+ and_(
+ table.TblTestList.TaskID == taskid,
+ table.TblTestList.CaseTag == casetag,
+ table.TblTestList.Provider == provider,
+ table.TblTestList.Type == ptype,
+ table.TblTestList.TestID == table.TblFrameloss.TestID))
return query.all()
def query_frameloss_simpletable(self, taskid, casetag, provider):
ptype = 'frameloss'
- query = self._session.query(table.TblFrameloss.AvgFrameSize,
- table.TblFrameloss.Bandwidth,
- table.TblFrameloss.OfferedLoad,
- table.TblFrameloss.CPU,
- table.TblFrameloss.MppspGhz,
- table.TblFrameloss.AverageLatency
- ).filter(and_(
- table.TblTestList.TaskID == taskid,
- table.TblTestList.CaseTag == casetag,
- table.TblTestList.Provider == provider, table.TblTestList.Type == ptype,
- table.TblTestList.TestID == table.TblFrameloss.TestID))
+ query = self._session.query(
+ table.TblFrameloss.AvgFrameSize,
+ table.TblFrameloss.Bandwidth,
+ table.TblFrameloss.OfferedLoad,
+ table.TblFrameloss.CPU,
+ table.TblFrameloss.MppspGhz,
+ table.TblFrameloss.AverageLatency).filter(
+ and_(
+ table.TblTestList.TaskID == taskid,
+ table.TblTestList.CaseTag == casetag,
+ table.TblTestList.Provider == provider,
+ table.TblTestList.Type == ptype,
+ table.TblTestList.TestID == table.TblFrameloss.TestID))
return query.all()
def query_frameloss_avg(self, taskid, casetag, provider):
ptype = 'frameloss'
- query = self._session.query(table.TblFrameloss.AvgFrameSize, table.TblFrameloss.AverageLatency).filter(and_(
- table.TblTestList.TaskID == taskid,
- table.TblTestList.CaseTag == casetag,
- table.TblTestList.Provider == provider, table.TblTestList.Type == ptype,
- table.TblTestList.TestID == table.TblFrameloss.TestID))
+ query = self._session.query(
+ table.TblFrameloss.AvgFrameSize,
+ table.TblFrameloss.AverageLatency).filter(
+ and_(
+ table.TblTestList.TaskID == taskid,
+ table.TblTestList.CaseTag == casetag,
+ table.TblTestList.Provider == provider,
+ table.TblTestList.Type == ptype,
+ table.TblTestList.TestID == table.TblFrameloss.TestID))
return query.all()
def query_latency_avg(self, taskid, casetag, provider):
ptype = 'latency'
- query = self._session.query(table.TblLatency.AvgFrameSize, table.TblLatency.AverageLatency).filter(and_(
- table.TblTestList.TaskID == taskid,
- table.TblTestList.CaseTag == casetag,
- table.TblTestList.Provider == provider, table.TblTestList.Type == ptype,
- table.TblTestList.TestID == table.TblLatency.TestID))
+ query = self._session.query(
+ table.TblLatency.AvgFrameSize,
+ table.TblLatency.AverageLatency).filter(
+ and_(
+ table.TblTestList.TaskID == taskid,
+ table.TblTestList.CaseTag == casetag,
+ table.TblTestList.Provider == provider,
+ table.TblTestList.Type == ptype,
+ table.TblTestList.TestID == table.TblLatency.TestID))
return query.all()
def query_summary_table(self, taskid, casetag, provider, ptype):
@@ -482,51 +542,71 @@ class DbManage(object):
return []
def query_throughput_provider(self, taskid, casetag, provider):
- query = self._session.query(table.TblThroughput).filter(and_(table.TblTestList.CaseTag == casetag,
- table.TblTestList.Provider == provider,
- table.TblTestList.TaskID == taskid,
- table.TblTestList.TestID == table.TblThroughput.TestID))
+ query = self._session.query(
+ table.TblThroughput).filter(
+ and_(
+ table.TblTestList.CaseTag == casetag,
+ table.TblTestList.Provider == provider,
+ table.TblTestList.TaskID == taskid,
+ table.TblTestList.TestID == table.TblThroughput.TestID))
return query.all()
def query_frameloss_provider(self, taskid, casetag, provider):
- query = self._session.query(table.TblFrameloss).filter(and_(table.TblTestList.CaseTag == casetag,
- table.TblTestList.Provider == provider,
- table.TblTestList.TaskID == taskid,
- table.TblTestList.TestID == table.TblFrameloss.TestID))
+ query = self._session.query(
+ table.TblFrameloss).filter(
+ and_(
+ table.TblTestList.CaseTag == casetag,
+ table.TblTestList.Provider == provider,
+ table.TblTestList.TaskID == taskid,
+ table.TblTestList.TestID == table.TblFrameloss.TestID))
return query.all()
def query_latency_provider(self, taskid, casetag, provider):
- query = self._session.query(table.TblLatency).filter(and_(table.TblTestList.CaseTag == casetag,
- table.TblTestList.Provider == provider,
- table.TblTestList.TaskID == taskid,
- table.TblTestList.TestID == table.TblLatency.TestID))
+ query = self._session.query(
+ table.TblLatency).filter(
+ and_(
+ table.TblTestList.CaseTag == casetag,
+ table.TblTestList.Provider == provider,
+ table.TblTestList.TaskID == taskid,
+ table.TblTestList.TestID == table.TblLatency.TestID))
return query.all()
def query_case_type_count(self, taskid, casetag, ptype):
- query = self._session.query(table.TblTestList).filter(and_(table.TblTestList.CaseTag == casetag,
- table.TblTestList.Type == ptype,
- table.TblTestList.TaskID == taskid))
+ query = self._session.query(
+ table.TblTestList).filter(
+ and_(
+ table.TblTestList.CaseTag == casetag,
+ table.TblTestList.Type == ptype,
+ table.TblTestList.TaskID == taskid))
return query.count()
def query_case_provider_count(self, taskid, casetag, provider):
- query = self._session.query(table.TblTestList).filter(and_(table.TblTestList.CaseTag == casetag,
- table.TblTestList.Provider == provider,
- table.TblTestList.TaskID == taskid))
+ query = self._session.query(
+ table.TblTestList).filter(
+ and_(
+ table.TblTestList.CaseTag == casetag,
+ table.TblTestList.Provider == provider,
+ table.TblTestList.TaskID == taskid))
return query.count()
def query_case_type_provider_count(self, taskid, casetag, provider, ptype):
- query = self._session.query(table.TblTestList).filter(and_(table.TblTestList.CaseTag == casetag,
- table.TblTestList.Type == ptype,
- table.TblTestList.Provider == provider,
- table.TblTestList.TaskID == taskid))
+ query = self._session.query(
+ table.TblTestList).filter(
+ and_(
+ table.TblTestList.CaseTag == casetag,
+ table.TblTestList.Type == ptype,
+ table.TblTestList.Provider == provider,
+ table.TblTestList.TaskID == taskid))
return query.count()
def query_exten_info(self, taskid):
- query = self._session.query(table.TblEXTInfo.EXTName,
- table.TblEXTInfo.EXTContent,
- table.TblEXTInfo.Description).filter(table.TblEXTInfo.TaskID == taskid)
+ query = self._session.query(
+ table.TblEXTInfo.EXTName,
+ table.TblEXTInfo.EXTContent,
+ table.TblEXTInfo.Description).filter(
+ table.TblEXTInfo.TaskID == taskid)
return query.all()
@@ -534,12 +614,27 @@ def unit_test():
import time
dbase = DbManage()
- taskid = dbase.create_task("test", str(time.ctime()), "this is a unit test")
- dbase.add_host_2task(taskid, "hosta", "hw82576", "xxx", "x", "82599", "ubuntu")
+ taskid = dbase.create_task("test", str(
+ time.ctime()), "this is a unit test")
+ dbase.add_host_2task(
+ taskid,
+ "hosta",
+ "hw82576",
+ "xxx",
+ "x",
+ "82599",
+ "ubuntu")
dbase.add_extent_2task(taskid, "CETH", "driver", "version 2.0")
dbase.add_extent_2task(taskid, "EVS", "switch", "version 3.0")
- testid = dbase.add_test_2task(taskid, "Tn-1", 'udp', "throughput", "ovs", None, "netperf")
+ testid = dbase.add_test_2task(
+ taskid,
+ "Tn-1",
+ 'udp',
+ "throughput",
+ "ovs",
+ None,
+ "netperf")
data = {
'64': {
'OfferedLoad': 2,
@@ -557,7 +652,14 @@ def unit_test():
}
dbase.add_data_2test(testid, data)
- testid = dbase.add_test_2task(taskid, "Tn-1", 'udp', "frameloss", "ovs", None, "netperf")
+ testid = dbase.add_test_2task(
+ taskid,
+ "Tn-1",
+ 'udp',
+ "frameloss",
+ "ovs",
+ None,
+ "netperf")
data = {
'64': {
'OfferedLoad': 2,
@@ -575,13 +677,35 @@ def unit_test():
}
dbase.add_data_2test(testid, data)
- testid = dbase.add_test_2task(taskid, "Tn-1", 'udp', "latency", "ovs", None, "netperf")
+ testid = dbase.add_test_2task(
+ taskid,
+ "Tn-1",
+ 'udp',
+ "latency",
+ "ovs",
+ None,
+ "netperf")
data = {
- 64: {'MaximumLatency': 0.0, 'AverageLatency': 0.0, 'MinimumLatency': 0.0, 'OfferedLoad': 0.0},
- 128: {'MaximumLatency': 0.0, 'AverageLatency': 0.0, 'MinimumLatency': 0.0, 'OfferedLoad': 0.0},
- 512: {'MaximumLatency': 0.0, 'AverageLatency': 0.0, 'MinimumLatency': 0.0, 'OfferedLoad': 0.0},
- 1024: {'MaximumLatency': 0.0, 'AverageLatency': 0.0, 'MinimumLatency': 0.0, 'OfferedLoad': 0.0}
- }
+ 64: {
+ 'MaximumLatency': 0.0,
+ 'AverageLatency': 0.0,
+ 'MinimumLatency': 0.0,
+ 'OfferedLoad': 0.0},
+ 128: {
+ 'MaximumLatency': 0.0,
+ 'AverageLatency': 0.0,
+ 'MinimumLatency': 0.0,
+ 'OfferedLoad': 0.0},
+ 512: {
+ 'MaximumLatency': 0.0,
+ 'AverageLatency': 0.0,
+ 'MinimumLatency': 0.0,
+ 'OfferedLoad': 0.0},
+ 1024: {
+ 'MaximumLatency': 0.0,
+ 'AverageLatency': 0.0,
+ 'MinimumLatency': 0.0,
+ 'OfferedLoad': 0.0}}
dbase.add_data_2test(testid, data)
query = dbase.query_testlist(1, "Tn")
for item in query:
diff --git a/testsuites/vstf/vstf_scripts/vstf/controller/database/tables.py b/testsuites/vstf/vstf_scripts/vstf/controller/database/tables.py
index 55b02e5f..92f857a0 100644
--- a/testsuites/vstf/vstf_scripts/vstf/controller/database/tables.py
+++ b/testsuites/vstf/vstf_scripts/vstf/controller/database/tables.py
@@ -52,7 +52,7 @@ class TblCaseInfo(Base):
ScenarioName, FigurePath, Direction, Directiontag,
Configure, Description, **kwargs):
"""
- :param CaseID:
+ :param CaseID:
:param CaseTag: ??
:param CaseName: name of case, like tester-vm
:param ScenarioName: name of scenario, like Tn
@@ -135,7 +135,16 @@ class TblTestList(Base):
Provider = Column(String(const.PROVIDER_LEN))
Tools = Column(String(const.TOOLS_LEN))
- def __init__(self, taskid, casetag, protocol, typ, switch, provider, tools, **kwargs):
+ def __init__(
+ self,
+ taskid,
+ casetag,
+ protocol,
+ typ,
+ switch,
+ provider,
+ tools,
+ **kwargs):
"""Table of test"""
self.TaskID = taskid
self.CaseTag = casetag
diff --git a/testsuites/vstf/vstf_scripts/vstf/controller/env_build/cfg_intent_parse.py b/testsuites/vstf/vstf_scripts/vstf/controller/env_build/cfg_intent_parse.py
index b536e3b8..acc88d91 100644
--- a/testsuites/vstf/vstf_scripts/vstf/controller/env_build/cfg_intent_parse.py
+++ b/testsuites/vstf/vstf_scripts/vstf/controller/env_build/cfg_intent_parse.py
@@ -15,6 +15,7 @@ LOG = logging.getLogger(__name__)
class IntentParser(object):
+
def __init__(self, cfg_file):
self.cfg_file = cfg_file
with file(cfg_file) as fp:
@@ -59,7 +60,9 @@ class IntentParser(object):
for tap_cfg in vm_cfg['taps']:
br_type_set.add(tap_cfg["br_type"])
if len(br_type_set) > 1:
- raise Exception("specified more than one type of vswitchfor host:%s" % host_cfg['ip'])
+ raise Exception(
+ "specified more than one type of vswitchfor host:%s" %
+ host_cfg['ip'])
if len(br_type_set) > 0:
br_type = br_type_set.pop()
host_cfg['br_type'] = br_type
diff --git a/testsuites/vstf/vstf_scripts/vstf/controller/env_build/env_build.py b/testsuites/vstf/vstf_scripts/vstf/controller/env_build/env_build.py
index 1d201b77..40e25e9f 100644
--- a/testsuites/vstf/vstf_scripts/vstf/controller/env_build/env_build.py
+++ b/testsuites/vstf/vstf_scripts/vstf/controller/env_build/env_build.py
@@ -17,6 +17,7 @@ LOG = logging.getLogger(__name__)
class EnvBuildApi(object):
+
def __init__(self, conn, config_file):
LOG.info("welcome to EnvBuilder")
self.conn = conn
@@ -48,6 +49,7 @@ class EnvBuildApi(object):
class TransmitterBuild(object):
+
def __init__(self, conn, config_file):
LOG.info("welcome to TransmitterBuild")
self.conn = conn
@@ -72,7 +74,9 @@ if __name__ == "__main__":
import argparse
parser = argparse.ArgumentParser()
- parser.add_argument('--rpc_server', help='rabbitmq server for deliver messages.')
+ parser.add_argument(
+ '--rpc_server',
+ help='rabbitmq server for deliver messages.')
parser.add_argument('--config', help='config file to parse')
args = parser.parse_args()
logging.basicConfig(level=logging.INFO)
diff --git a/testsuites/vstf/vstf_scripts/vstf/controller/env_build/env_collect.py b/testsuites/vstf/vstf_scripts/vstf/controller/env_build/env_collect.py
index 6e32a05d..7861ad31 100644
--- a/testsuites/vstf/vstf_scripts/vstf/controller/env_build/env_collect.py
+++ b/testsuites/vstf/vstf_scripts/vstf/controller/env_build/env_collect.py
@@ -11,6 +11,7 @@ from vstf.rpc_frame_work import rpc_producer
class EnvCollectApi(object):
+
def __init__(self, rb_mq_server):
"""
When use collect, a connection of rabbitmq is needed.
diff --git a/testsuites/vstf/vstf_scripts/vstf/controller/fabricant.py b/testsuites/vstf/vstf_scripts/vstf/controller/fabricant.py
index 3b1c082f..3f6978e4 100644
--- a/testsuites/vstf/vstf_scripts/vstf/controller/fabricant.py
+++ b/testsuites/vstf/vstf_scripts/vstf/controller/fabricant.py
@@ -12,6 +12,7 @@ import vstf.common.constants as cst
class Fabricant(object):
+
def __init__(self, target, conn):
self.conn = conn
self.target = target
@@ -21,7 +22,12 @@ class Fabricant(object):
@property
def declare_commands(self):
- driver = {"install_drivers", "clean_drivers", "autoneg_on", "autoneg_off", "autoneg_query"}
+ driver = {
+ "install_drivers",
+ "clean_drivers",
+ "autoneg_on",
+ "autoneg_off",
+ "autoneg_query"}
builder = {"build_env", "clean_env"}
@@ -29,7 +35,10 @@ class Fabricant(object):
perf = {"perf_run", "run_vnstat", "kill_vnstat", "force_clean"}
- device_mgr = {"get_device_detail", "list_nic_devices", "get_device_verbose"}
+ device_mgr = {
+ "get_device_detail",
+ "list_nic_devices",
+ "get_device_verbose"}
netns = {"clean_all_namespace", "config_dev", "recover_dev", "ping"}
@@ -37,11 +46,22 @@ class Fabricant(object):
cmdline = {"execute"}
- spirent = {"send_packet", "stop_flow", "mac_learning", "run_rfc2544suite", "run_rfc2544_throughput",
- "run_rfc2544_frameloss", "run_rfc2544_latency"}
-
- equalizer = {"get_numa_core", "get_nic_numa", "get_nic_interrupt_proc", "get_vm_info", "bind_cpu",
- "catch_thread_info"}
+ spirent = {
+ "send_packet",
+ "stop_flow",
+ "mac_learning",
+ "run_rfc2544suite",
+ "run_rfc2544_throughput",
+ "run_rfc2544_frameloss",
+ "run_rfc2544_latency"}
+
+ equalizer = {
+ "get_numa_core",
+ "get_nic_numa",
+ "get_nic_interrupt_proc",
+ "get_vm_info",
+ "bind_cpu",
+ "catch_thread_info"}
return driver | cpu | builder | perf | device_mgr | netns | cmdline | collect | spirent | equalizer
diff --git a/testsuites/vstf/vstf_scripts/vstf/controller/reporters/__init__.py b/testsuites/vstf/vstf_scripts/vstf/controller/reporters/__init__.py
index df7d24d0..83b8d15d 100644
--- a/testsuites/vstf/vstf_scripts/vstf/controller/reporters/__init__.py
+++ b/testsuites/vstf/vstf_scripts/vstf/controller/reporters/__init__.py
@@ -6,4 +6,3 @@
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
-
diff --git a/testsuites/vstf/vstf_scripts/vstf/controller/reporters/mail/__init__.py b/testsuites/vstf/vstf_scripts/vstf/controller/reporters/mail/__init__.py
index df7d24d0..83b8d15d 100644
--- a/testsuites/vstf/vstf_scripts/vstf/controller/reporters/mail/__init__.py
+++ b/testsuites/vstf/vstf_scripts/vstf/controller/reporters/mail/__init__.py
@@ -6,4 +6,3 @@
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
-
diff --git a/testsuites/vstf/vstf_scripts/vstf/controller/reporters/mail/mail.py b/testsuites/vstf/vstf_scripts/vstf/controller/reporters/mail/mail.py
index 6792ad91..c217f9e5 100644
--- a/testsuites/vstf/vstf_scripts/vstf/controller/reporters/mail/mail.py
+++ b/testsuites/vstf/vstf_scripts/vstf/controller/reporters/mail/mail.py
@@ -21,6 +21,7 @@ PASSWD = None
class Mail(object):
+
def __init__(self, srv=SRV, user=USER, passwd=PASSWD):
self.srv = srv
self.user = USER
@@ -81,7 +82,10 @@ class Mail(object):
def attach_files(self, files):
for _file in files:
part = MIMEApplication(open(_file, "rb").read())
- part.add_header('Content-Disposition', 'attachment', filename=os.path.basename(_file))
+ part.add_header(
+ 'Content-Disposition',
+ 'attachment',
+ filename=os.path.basename(_file))
self._msg.attach(part)
def send(self):
@@ -114,11 +118,11 @@ if __name__ == "__main__":
<head>
<title>vstf</title>
</head>
-
+
<body>
hello vstf
</body>
-
+
</html>
"""
m.attach_text(context, m.HTML)
diff --git a/testsuites/vstf/vstf_scripts/vstf/controller/reporters/mail/sendmail.py b/testsuites/vstf/vstf_scripts/vstf/controller/reporters/mail/sendmail.py
index a4d7bb0a..42f991a8 100644
--- a/testsuites/vstf/vstf_scripts/vstf/controller/reporters/mail/sendmail.py
+++ b/testsuites/vstf/vstf_scripts/vstf/controller/reporters/mail/sendmail.py
@@ -15,6 +15,7 @@ LOG = logging.getLogger(__name__)
class SendMail(object):
+
def __init__(self, mail_info):
self._mail_info = mail_info
@@ -32,7 +33,9 @@ class SendMail(object):
if 'attach' in self._mail_info['body']:
send.attach_files(self._mail_info['body']['attach'])
- send.attach_text(self._mail_info['body']['content'], self._mail_info['body']['subtype'])
+ send.attach_text(
+ self._mail_info['body']['content'],
+ self._mail_info['body']['subtype'])
send.attach_title(self._mail_info['body']['subject'])
send.send()
@@ -50,11 +53,11 @@ def unit_test():
<head>
<title>vstf</title>
</head>
-
+
<body>
hello vstf
</body>
-
+
</html>
"""
mail_settings.set_subtype('html')
diff --git a/testsuites/vstf/vstf_scripts/vstf/controller/reporters/report/__init__.py b/testsuites/vstf/vstf_scripts/vstf/controller/reporters/report/__init__.py
index 547db686..83b8d15d 100644
--- a/testsuites/vstf/vstf_scripts/vstf/controller/reporters/report/__init__.py
+++ b/testsuites/vstf/vstf_scripts/vstf/controller/reporters/report/__init__.py
@@ -6,5 +6,3 @@
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
-
-
diff --git a/testsuites/vstf/vstf_scripts/vstf/controller/reporters/report/candy_generator.py b/testsuites/vstf/vstf_scripts/vstf/controller/reporters/report/candy_generator.py
index ea296550..a3285c9e 100644
--- a/testsuites/vstf/vstf_scripts/vstf/controller/reporters/report/candy_generator.py
+++ b/testsuites/vstf/vstf_scripts/vstf/controller/reporters/report/candy_generator.py
@@ -16,6 +16,7 @@ LOG = logging.getLogger(__name__)
class CandyGenerator(object):
+
def __init__(self, task):
self._task = task
@@ -99,7 +100,8 @@ class CandyGenerator(object):
"data": scenario_data.get_latency_bardata(case)
}
table = scenario_data.get_latency_tabledata(case)
- test_section = self.create_test(sectionid, params_info, table, draw)
+ test_section = self.create_test(
+ sectionid, params_info, table, draw)
scenario_chapter[name] = test_section
return scenario_chapter
@@ -125,7 +127,10 @@ class CandyGenerator(object):
def main():
from vstf.common.log import setup_logging
- setup_logging(level=logging.DEBUG, log_file="/var/log/vstf/vstf-candy.log", clevel=logging.INFO)
+ setup_logging(
+ level=logging.DEBUG,
+ log_file="/var/log/vstf/vstf-candy.log",
+ clevel=logging.INFO)
dbase = DbManage()
taskid = dbase.get_last_taskid()
@@ -135,4 +140,3 @@ def main():
creator.create("Tn")
if __name__ == '__main__':
main()
-
diff --git a/testsuites/vstf/vstf_scripts/vstf/controller/reporters/report/data_factory.py b/testsuites/vstf/vstf_scripts/vstf/controller/reporters/report/data_factory.py
index f9fc69d9..ded94ebd 100644
--- a/testsuites/vstf/vstf_scripts/vstf/controller/reporters/report/data_factory.py
+++ b/testsuites/vstf/vstf_scripts/vstf/controller/reporters/report/data_factory.py
@@ -12,12 +12,14 @@ import vstf.common.constants as cst
class DataProvider(object):
+
def __init__(self, taskid, dbase):
self._dbase = dbase
self._taskid = taskid
class CommonData(DataProvider):
+
def get_taskname(self):
return self._dbase.query_taskname(self._taskid)
@@ -67,6 +69,7 @@ class CommonData(DataProvider):
class ScenarioData(DataProvider):
+
def __init__(self, taskid, dbase, scenario):
print "ScenarioData in"
DataProvider.__init__(self, taskid, dbase)
@@ -96,13 +99,15 @@ class ScenarioData(DataProvider):
return query
def is_provider_start(self, case, provider):
- count = self._dbase.query_case_provider_count(self._taskid, case, provider)
+ count = self._dbase.query_case_provider_count(
+ self._taskid, case, provider)
if count:
return True
return False
def is_type_provider_start(self, case, provider, ptype):
- count = self._dbase.query_case_type_provider_count(self._taskid, case, provider, ptype)
+ count = self._dbase.query_case_type_provider_count(
+ self._taskid, case, provider, ptype)
if count:
return True
return False
@@ -133,7 +138,12 @@ class ScenarioData(DataProvider):
test_type = "frameloss"
return self.get_summary_tabledata(case, provider, test_type)
- def get_summary_tabledata(self, case, provider, test_type, table_type='pdf'):
+ def get_summary_tabledata(
+ self,
+ case,
+ provider,
+ test_type,
+ table_type='pdf'):
table_head = []
table_body = []
type_title = {
@@ -142,41 +152,77 @@ class ScenarioData(DataProvider):
}
tools = self.get_test_tools(case)
if "spirent" in tools:
- table_body = self._dbase.query_summary_table(self._taskid, case, provider, test_type)
+ table_body = self._dbase.query_summary_table(
+ self._taskid, case, provider, test_type)
if 'pdf' == table_type:
- table_head = [
- ["FrameSize (byte)", test_type, "", "", "", "Latency(uSec)", "", ""],
- ["", " Mpps ", " " + type_title[test_type] + " (%) ", "CPU Used (%)", " Mpps/Ghz ",
- " Min ", " Max ", " Avg "]
- ]
+ table_head = [["FrameSize (byte)",
+ test_type,
+ "",
+ "",
+ "",
+ "Latency(uSec)",
+ "",
+ ""],
+ ["",
+ " Mpps ",
+ " " + type_title[test_type] + " (%) ",
+ "CPU Used (%)",
+ " Mpps/Ghz ",
+ " Min ",
+ " Max ",
+ " Avg "]]
else:
- table_head = [
- ["FrameSize (byte)", " Mpps ", " " + type_title[test_type] + " (%) ", "CPU Used (%)",
- " Mpps/Ghz ", "MinLatency(uSec)", "MaxLatency(uSec)", "AvgLatency(uSec)"],
- ]
+ table_head = [["FrameSize (byte)",
+ " Mpps ",
+ " " + type_title[test_type] + " (%) ",
+ "CPU Used (%)",
+ " Mpps/Ghz ",
+ "MinLatency(uSec)",
+ "MaxLatency(uSec)",
+ "AvgLatency(uSec)"],
+ ]
else:
- table_body = self._dbase.query_summary_simpletable(self._taskid, case, provider, test_type)
+ table_body = self._dbase.query_summary_simpletable(
+ self._taskid, case, provider, test_type)
if 'pdf' == table_type:
- table_head = [
- ["FrameSize (byte)", test_type, "", "", "", "Latency(uSec)"],
- ["", " Mpps ", " " + type_title[test_type] + " (%)", "CPU Used (%)", " Mpps/Ghz ",
- " Avg "]
- ]
+ table_head = [["FrameSize (byte)",
+ test_type,
+ "",
+ "",
+ "",
+ "Latency(uSec)"],
+ ["",
+ " Mpps ",
+ " " + type_title[test_type] + " (%)",
+ "CPU Used (%)",
+ " Mpps/Ghz ",
+ " Avg "]]
else:
- table_head = [
- ["FrameSize (byte)", " Mpps ", " " + type_title[test_type] + " (%) ", "CPU Used (%)",
- " Mpps/Ghz ", "AvgLatency(uSec)"],
- ]
+ table_head = [["FrameSize (byte)",
+ " Mpps ",
+ " " + type_title[test_type] + " (%) ",
+ "CPU Used (%)",
+ " Mpps/Ghz ",
+ "AvgLatency(uSec)"],
+ ]
return table_head + table_body
def get_ratedata(self, testid, test_type):
- table_head = [
- ["FrameSize (bytes)", "Bandwidth(Mpps)", "Load (%)", "CPU Usage(%)", "Mpps/Ghz", "AvgLatency(uSec)"],
- ]
+ table_head = [["FrameSize (bytes)",
+ "Bandwidth(Mpps)",
+ "Load (%)",
+ "CPU Usage(%)",
+ "Mpps/Ghz",
+ "AvgLatency(uSec)"],
+ ]
query = self._dbase.query_testdata(testid, test_type)
table_body = []
for item in query:
- table_body.append([item.AvgFrameSize, item.Bandwidth, item.OfferedLoad, item.CPU, item.MppspGhz,
+ table_body.append([item.AvgFrameSize,
+ item.Bandwidth,
+ item.OfferedLoad,
+ item.CPU,
+ item.MppspGhz,
item.AverageLatency])
result = []
if table_body:
@@ -203,20 +249,29 @@ class ScenarioData(DataProvider):
for provider in cst.PROVIDERS:
if self.is_provider_start(case, provider):
if item == 'Percent':
- query = self._dbase.query_load(self._taskid, case, provider, test_type)
+ query = self._dbase.query_load(
+ self._taskid, case, provider, test_type)
elif item == 'Mpps':
- query = self._dbase.query_bandwidth(self._taskid, case, provider, test_type)
+ query = self._dbase.query_bandwidth(
+ self._taskid, case, provider, test_type)
else:
- query = self._dbase.query_avglatency(self._taskid, case, provider, test_type)
+ query = self._dbase.query_avglatency(
+ self._taskid, case, provider, test_type)
query = map(lambda x: list(x), zip(*query))
if query:
- table_head = [[type_dict["FrameSize"]] + map(lambda x: " %4d " % (x), query[0])]
+ table_head = [[type_dict["FrameSize"]] +
+ map(lambda x: " %4d " % (x), query[0])]
if item == "Avg":
- data = map(lambda x: item_dict[item] + "%.1f" % x + item_dict[item], query[1])
+ data = map(
+ lambda x: item_dict[item] + "%.1f" %
+ x + item_dict[item], query[1])
else:
- data = map(lambda x: item_dict[item] + "%.2f" % x + item_dict[item], query[1])
+ data = map(
+ lambda x: item_dict[item] + "%.2f" %
+ x + item_dict[item], query[1])
if item == "Mpps":
- line_table = map(lambda x: "%.2f" % (line_speed * 1000 / (8 * (x + 20))), query[0])
+ line_table = map(lambda x: "%.2f" % (
+ line_speed * 1000 / (8 * (x + 20))), query[0])
table.append([type_dict[provider]] + data)
if table:
if item == "Mpps":
@@ -260,7 +315,8 @@ class ScenarioData(DataProvider):
result = []
if table_data:
ytitle = "Average Latency (uSec)"
- category_names = map(lambda x: "FS:%4d" % int(float(x)) + "LOAD:50", table_data[0][1:])
+ category_names = map(lambda x: "FS:%4d" %
+ int(float(x)) + "LOAD:50", table_data[0][1:])
bar_ = map(lambda x: x[0], table_data[1:])
data = map(lambda x: x[1:], table_data[1:])
result = [ytitle, category_names, bar_, data]
@@ -268,10 +324,12 @@ class ScenarioData(DataProvider):
def get_bardata(self, case, provider, test_type):
if test_type == "latency":
- query = self._dbase.query_avglatency(self._taskid, case, provider, test_type)
+ query = self._dbase.query_avglatency(
+ self._taskid, case, provider, test_type)
item = "Avg"
else:
- query = self._dbase.query_load(self._taskid, case, provider, test_type)
+ query = self._dbase.query_load(
+ self._taskid, case, provider, test_type)
item = "Percent"
title_dict = {
@@ -290,7 +348,9 @@ class ScenarioData(DataProvider):
query = map(lambda x: list(x), zip(*query))
result = []
if query:
- category_names = map(lambda x: "FS:%4d" % x + name_dict[item], query[0])
+ category_names = map(
+ lambda x: "FS:%4d" %
+ x + name_dict[item], query[0])
data = query[1:]
bar_ = [color_dict[item]]
result = [ytitle, category_names, bar_, data]
@@ -298,6 +358,7 @@ class ScenarioData(DataProvider):
class TaskData(object):
+
def __init__(self, taskid, dbase):
self.__common = CommonData(taskid, dbase)
scenario_list = self.__common.get_scenariolist()
@@ -312,6 +373,7 @@ class TaskData(object):
class HistoryData(DataProvider):
+
def get_data(self, task_list, case, provider, ttype, item):
"""
@provider in ["fastlink", "rdp", "l2switch", ""]
@@ -324,17 +386,18 @@ class HistoryData(DataProvider):
sizes = []
for taskid in task_list:
if item == 'ratep':
- query = self._dbase.query_bandwidth(taskid, case, provider, ttype)
+ query = self._dbase.query_bandwidth(
+ taskid, case, provider, ttype)
else:
- query = self._dbase.query_avglatency(taskid, case, provider, ttype)
+ query = self._dbase.query_avglatency(
+ taskid, case, provider, ttype)
if query:
data = {}
for size, value in query:
data[size] = value
sizes.extend(data.keys())
- sizes = {}.fromkeys(sizes).keys()
- sizes.sort()
+ sizes = sorted({}.fromkeys(sizes).keys())
datas.append({taskid: data})
result = []
@@ -367,7 +430,10 @@ class HistoryData(DataProvider):
return task_list
def get_history_info(self, case):
- provider_dict = {"fastlink": "Fast Link ", "l2switch": "L2Switch ", "rdp": "Kernel RDP "}
+ provider_dict = {
+ "fastlink": "Fast Link ",
+ "l2switch": "L2Switch ",
+ "rdp": "Kernel RDP "}
ttype_dict = {
"throughput": "Throughput Testing ",
"frameloss": "Frame Loss Testing ",
@@ -390,7 +456,8 @@ class HistoryData(DataProvider):
item = "ratep"
for provider in cst.PROVIDERS:
- table_data = self.get_data(task_list, case, provider, ttype, item)
+ table_data = self.get_data(
+ task_list, case, provider, ttype, item)
if table_data:
data = {
"title": provider_dict[provider] + items_dict[item],
diff --git a/testsuites/vstf/vstf_scripts/vstf/controller/reporters/report/html/__init__.py b/testsuites/vstf/vstf_scripts/vstf/controller/reporters/report/html/__init__.py
index df7d24d0..83b8d15d 100644
--- a/testsuites/vstf/vstf_scripts/vstf/controller/reporters/report/html/__init__.py
+++ b/testsuites/vstf/vstf_scripts/vstf/controller/reporters/report/html/__init__.py
@@ -6,4 +6,3 @@
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
-
diff --git a/testsuites/vstf/vstf_scripts/vstf/controller/reporters/report/html/html_base.py b/testsuites/vstf/vstf_scripts/vstf/controller/reporters/report/html/html_base.py
index 5769da79..02606b4b 100644
--- a/testsuites/vstf/vstf_scripts/vstf/controller/reporters/report/html/html_base.py
+++ b/testsuites/vstf/vstf_scripts/vstf/controller/reporters/report/html/html_base.py
@@ -13,6 +13,7 @@ import vstf.common.pyhtml as pyhtm
class HtmlBase(object):
+
def __init__(self, provider):
self._page = pyhtm.PyHtml('Html Text')
self._provider = provider
diff --git a/testsuites/vstf/vstf_scripts/vstf/controller/reporters/report/html/htmlcreator.py b/testsuites/vstf/vstf_scripts/vstf/controller/reporters/report/html/htmlcreator.py
index 695ea37f..f866f185 100644
--- a/testsuites/vstf/vstf_scripts/vstf/controller/reporters/report/html/htmlcreator.py
+++ b/testsuites/vstf/vstf_scripts/vstf/controller/reporters/report/html/htmlcreator.py
@@ -20,6 +20,7 @@ LOG = logging.getLogger(__name__)
class HtmlCreator(HtmlBase):
+
def create_story(self):
self.add_context()
@@ -70,7 +71,10 @@ class HtmlCreator(HtmlBase):
def unit_test():
from vstf.common.log import setup_logging
- setup_logging(level=logging.DEBUG, log_file="/var/log/html-creator.log", clevel=logging.INFO)
+ setup_logging(
+ level=logging.DEBUG,
+ log_file="/var/log/html-creator.log",
+ clevel=logging.INFO)
out_file = "vstf_report.html"
diff --git a/testsuites/vstf/vstf_scripts/vstf/controller/reporters/report/pdf/__init__.py b/testsuites/vstf/vstf_scripts/vstf/controller/reporters/report/pdf/__init__.py
index df7d24d0..83b8d15d 100644
--- a/testsuites/vstf/vstf_scripts/vstf/controller/reporters/report/pdf/__init__.py
+++ b/testsuites/vstf/vstf_scripts/vstf/controller/reporters/report/pdf/__init__.py
@@ -6,4 +6,3 @@
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
-
diff --git a/testsuites/vstf/vstf_scripts/vstf/controller/reporters/report/pdf/element.py b/testsuites/vstf/vstf_scripts/vstf/controller/reporters/report/pdf/element.py
index ef8b54df..6622281b 100644
--- a/testsuites/vstf/vstf_scripts/vstf/controller/reporters/report/pdf/element.py
+++ b/testsuites/vstf/vstf_scripts/vstf/controller/reporters/report/pdf/element.py
@@ -32,8 +32,16 @@ from vstf.controller.reporters.report.pdf.styles import *
class eImage(Image):
""" an image(digital picture)which contains the function of auto zoom picture """
- def __init__(self, filename, width=None, height=None, kind='direct', mask="auto", lazy=1, hAlign='CENTRE',
- vAlign='BOTTOM'):
+ def __init__(
+ self,
+ filename,
+ width=None,
+ height=None,
+ kind='direct',
+ mask="auto",
+ lazy=1,
+ hAlign='CENTRE',
+ vAlign='BOTTOM'):
Image.__init__(self, filename, None, None, kind, mask, lazy)
print height, width
print self.drawHeight, self.drawWidth
@@ -78,6 +86,7 @@ class eTable(object):
class eCommonTable(eTable):
+
def analysisData(self, data):
self._style = [
('ALIGN', (0, 0), (-1, -1), 'CENTER'),
@@ -89,6 +98,7 @@ class eCommonTable(eTable):
class eConfigTable(eTable):
+
def analysisData(self, data):
self._style = [
('ALIGN', (0, 0), (-1, -1), 'CENTER'),
@@ -113,6 +123,7 @@ class eConfigTable(eTable):
class eSummaryTable(eTable):
+
def analysisData(self, data):
self._style = [
('ALIGN', (0, 0), (-1, -1), 'CENTER'),
@@ -127,6 +138,7 @@ class eSummaryTable(eTable):
class eGitInfoTable(eTable):
+
def analysisData(self, data):
self._style = [
('ALIGN', (0, 0), (-1, -1), 'CENTER'),
@@ -141,6 +153,7 @@ class eGitInfoTable(eTable):
class eScenarioTable(eTable):
+
def analysisData(self, data):
self._style = [
('ALIGN', (0, 0), (-1, -1), 'CENTER'),
@@ -157,6 +170,7 @@ class eScenarioTable(eTable):
class eOptionsTable(eTable):
+
def analysisData(self, data):
self._style = [
('ALIGN', (0, 0), (-1, -1), 'CENTER'),
@@ -181,6 +195,7 @@ class eOptionsTable(eTable):
class eProfileTable(eTable):
+
def analysisData(self, data):
self._style = [
('ALIGN', (0, 0), (-1, -1), 'CENTER'),
@@ -194,6 +209,7 @@ class eProfileTable(eTable):
class eDataTable(eTable):
+
def analysisData(self, data):
result = data
self._style = [
@@ -229,6 +245,7 @@ class eDataTable(eTable):
class eGraphicsTable(eTable):
+
def analysisData(self, data):
self._style = [
('ALIGN', (0, 0), (-1, -1), 'CENTER'),
@@ -238,12 +255,14 @@ class eGraphicsTable(eTable):
class noScaleXValueAxis(XValueAxis):
+
def __init__(self):
XValueAxis.__init__(self)
def makeTickLabels(self):
g = Group()
- if not self.visibleLabels: return g
+ if not self.visibleLabels:
+ return g
f = self._labelTextFormat # perhaps someone already set it
if f is None:
@@ -307,14 +326,17 @@ class noScaleXValueAxis(XValueAxis):
txt = f(t)
else:
raise ValueError('Invalid labelTextFormat %s' % f)
- if post: txt = post % txt
+ if post:
+ txt = post % txt
pos[d] = v
label.setOrigin(*pos)
label.setText(txt)
- # special property to ensure a label doesn't project beyond the bounds of an x-axis
+ # special property to ensure a label doesn't project beyond
+ # the bounds of an x-axis
if self.keepTickLabelsInside:
- if isinstance(self, XValueAxis): # not done yet for y axes
+ if isinstance(
+ self, XValueAxis): # not done yet for y axes
a_x = self._x
if not i: # first one
x0, y0, x1, y1 = label.getBounds()
@@ -324,7 +346,8 @@ class noScaleXValueAxis(XValueAxis):
a_x1 = a_x + self._length
x0, y0, x1, y1 = label.getBounds()
if x1 > a_x1:
- label = label.clone(dx=label.dx - x1 + a_x1)
+ label = label.clone(
+ dx=label.dx - x1 + a_x1)
g.add(label)
return g
@@ -342,8 +365,10 @@ class noScaleXValueAxis(XValueAxis):
The chart first configures the axis, then asks it to
"""
assert self._configured, "Axis cannot scale numbers before it is configured"
- if value is None: value = 0
- # this could be made more efficient by moving the definition of org and sf into the configuration
+ if value is None:
+ value = 0
+ # this could be made more efficient by moving the definition of org and
+ # sf into the configuration
org = (self._x, self._y)[self._dataIndex]
sf = self._length / (len(self._tickValues) + 1)
if self.reverseDirection:
@@ -353,6 +378,7 @@ class noScaleXValueAxis(XValueAxis):
class noScaleLinePlot(LinePlot):
+
def __init__(self):
LinePlot.__init__(self)
self.xValueAxis = noScaleXValueAxis()
@@ -373,7 +399,8 @@ class noScaleLinePlot(LinePlot):
for colNo in range(len_row):
datum = self.data[rowNo][colNo] # x, y value
x = self.x + self.width / (len_row + 1) * (colNo + 1)
- self.xValueAxis.labels[colNo].x = self.x + self.width / (len_row + 1) * (colNo + 1)
+ self.xValueAxis.labels[colNo].x = self.x + \
+ self.width / (len_row + 1) * (colNo + 1)
y = self.yValueAxis.scale(datum[1])
# print self.width, " ", x
line.append((x, y))
@@ -383,6 +410,7 @@ class noScaleLinePlot(LinePlot):
# def _innerDrawLabel(self, rowNo, colNo, x, y):
# return None
class eLinePlot(object):
+
def __init__(self, data, style):
self._lpstyle = style
self._linename = data[0]
@@ -485,9 +513,11 @@ class eLinePlot(object):
for i in range(line_cnts):
styleIndex = i % sytle_cnts
lp.lines[i].strokeColor = self._lpstyle.linestyle[styleIndex][0]
- lp.lines[i].symbol = makeMarker(self._lpstyle.linestyle[styleIndex][1])
+ lp.lines[i].symbol = makeMarker(
+ self._lpstyle.linestyle[styleIndex][1])
lp.lines[i].strokeWidth = self._lpstyle.linestyle[styleIndex][2]
- color_paris.append((self._lpstyle.linestyle[styleIndex][0], self._linename[i]))
+ color_paris.append(
+ (self._lpstyle.linestyle[styleIndex][0], self._linename[i]))
# lp.lineLabels[i].strokeColor = self._lpstyle.linestyle[styleIndex][0]
lp.lineLabelFormat = self._lpstyle.format[0]
@@ -501,8 +531,6 @@ class eLinePlot(object):
lp.yValueAxis.valueMin, lp.yValueAxis.valueMax, lp.yValueAxis.valueSteps = self._yvalue
-
-
# lp.xValueAxis.forceZero = 0
# lp.xValueAxis.avoidBoundFrac = 1
# lp.xValueAxis.tickDown = 3
@@ -540,6 +568,7 @@ class eLinePlot(object):
class eHorizontalLineChart(object):
+
def __init__(self, data, style):
self._lcstyle = style
if len(data) < 1:
@@ -630,9 +659,11 @@ class eHorizontalLineChart(object):
for i in range(line_cnts):
styleIndex = i % sytle_cnts
lc.lines[i].strokeColor = self._lcstyle.linestyle[styleIndex][0]
- lc.lines[i].symbol = makeMarker(self._lcstyle.linestyle[styleIndex][1])
+ lc.lines[i].symbol = makeMarker(
+ self._lcstyle.linestyle[styleIndex][1])
lc.lines[i].strokeWidth = self._lcstyle.linestyle[styleIndex][2]
- color_paris.append((self._lcstyle.linestyle[styleIndex][0], self._linename[i]))
+ color_paris.append(
+ (self._lcstyle.linestyle[styleIndex][0], self._linename[i]))
lc.lineLabels.fontSize = self._lcstyle.labelsfont - 2
@@ -660,6 +691,7 @@ class eHorizontalLineChart(object):
class eBarChartColumn(object):
+
def __init__(self, data, style):
self._bcstyle = style
if len(data) < 4:
@@ -702,7 +734,10 @@ class eBarChartColumn(object):
color_paris = []
for i in range(bar_cnt):
bc.bars[i].fillColor = self._bcstyle.pillarstyle[self._bar[i]][0]
- color_paris.append((self._bcstyle.pillarstyle[self._bar[i]][0], self._bar[i]))
+ color_paris.append(
+ (self._bcstyle.pillarstyle[
+ self._bar[i]][0],
+ self._bar[i]))
bc.fillColor = self._bcstyle.background
bc.barLabels.fontName = 'Helvetica'
@@ -761,6 +796,7 @@ class eBarChartColumn(object):
class eParagraph(object):
+
def __init__(self, data, style):
self._pstyle = style
self._data = self.analysisData(data)
diff --git a/testsuites/vstf/vstf_scripts/vstf/controller/reporters/report/pdf/pdfcreator.py b/testsuites/vstf/vstf_scripts/vstf/controller/reporters/report/pdf/pdfcreator.py
index c33974ec..67f988c9 100644
--- a/testsuites/vstf/vstf_scripts/vstf/controller/reporters/report/pdf/pdfcreator.py
+++ b/testsuites/vstf/vstf_scripts/vstf/controller/reporters/report/pdf/pdfcreator.py
@@ -22,6 +22,7 @@ LOG = logging.getLogger(__name__)
class PdfCreator(object):
+
def __init__(self, provider):
self._provider = provider
self._story = []
@@ -114,7 +115,10 @@ class PdfCreator(object):
def main():
from vstf.common.log import setup_logging
- setup_logging(level=logging.DEBUG, log_file="/var/log/pdf-creator.log", clevel=logging.INFO)
+ setup_logging(
+ level=logging.DEBUG,
+ log_file="/var/log/pdf-creator.log",
+ clevel=logging.INFO)
out_file = "vstf_report.pdf"
diff --git a/testsuites/vstf/vstf_scripts/vstf/controller/reporters/report/pdf/pdftemplate.py b/testsuites/vstf/vstf_scripts/vstf/controller/reporters/report/pdf/pdftemplate.py
index 69c65401..7e287814 100644
--- a/testsuites/vstf/vstf_scripts/vstf/controller/reporters/report/pdf/pdftemplate.py
+++ b/testsuites/vstf/vstf_scripts/vstf/controller/reporters/report/pdf/pdftemplate.py
@@ -13,9 +13,11 @@ from reportlab.platypus.doctemplate import SimpleDocTemplate
from reportlab.platypus import PageBreak
from vstf.controller.reporters.report.pdf.styles import TemplateStyle, ps_head_lv1, ps_head_lv2, ps_head_lv3
import vstf.common.constants as cst
+from functools import reduce
class BaseDocTemplate(SimpleDocTemplate):
+
def __init__(self, filename, **kw):
self.allowSplitting = 0
SimpleDocTemplate.__init__(self, filename, **kw)
@@ -34,6 +36,7 @@ class BaseDocTemplate(SimpleDocTemplate):
class PdfTemplate(object):
+
def __init__(self, title, logo, header, footer, note=[], style="default"):
self._style = TemplateStyle(name=style)
self._title = title
@@ -41,7 +44,8 @@ class PdfTemplate(object):
#self._header = header[0]
self._footer = footer
self._note = note
- info = " Generated on %s " % time.strftime(cst.TIME_FORMAT2, time.localtime())
+ info = " Generated on %s " % time.strftime(
+ cst.TIME_FORMAT2, time.localtime())
self._note += [info]
def myFirstPage(self, canvas, doc):
@@ -54,46 +58,78 @@ class PdfTemplate(object):
sizes = (self._style.page_wight, self._style.page_height)
doc = BaseDocTemplate(output, pagesize=sizes)
# doc.build(story, onFirstPage=self.myFirstPage, onLaterPages=self.myLaterPages)
- doc.multiBuild(story, onFirstPage=self.myFirstPage, onLaterPages=self.myLaterPages)
+ doc.multiBuild(
+ story,
+ onFirstPage=self.myFirstPage,
+ onLaterPages=self.myLaterPages)
class PdfVswitch(PdfTemplate):
+
def myFirstPage(self, canvas, doc):
canvas.saveState()
title_lines = len(self._title)
line_size = [self._style.title_size] * title_lines
line_size.append(0)
- canvas.drawImage(self._logo,
- (self._style.page_wight - self._style.logo_width) / 2.0,
- self._style.page_height / 2.0 + (1 + self._style.title_leading) * reduce(lambda x, y: x + y,
- line_size),
- self._style.logo_width,
- self._style.logo_height
- )
+ canvas.drawImage(
+ self._logo,
+ (self._style.page_wight -
+ self._style.logo_width) /
+ 2.0,
+ self._style.page_height /
+ 2.0 +
+ (
+ 1 +
+ self._style.title_leading) *
+ reduce(
+ lambda x,
+ y: x +
+ y,
+ line_size),
+ self._style.logo_width,
+ self._style.logo_height)
for i in range(title_lines):
canvas.setFont(self._style.title_font, line_size[i])
- canvas.drawCentredString(self._style.page_wight / 2.0,
- self._style.page_height / 2.0 + (1 + self._style.title_leading) * reduce(
- lambda x, y: x + y, line_size[i + 1:]),
- self._title[i]
- )
+ canvas.drawCentredString(
+ self._style.page_wight /
+ 2.0,
+ self._style.page_height /
+ 2.0 +
+ (
+ 1 +
+ self._style.title_leading) *
+ reduce(
+ lambda x,
+ y: x +
+ y,
+ line_size[
+ i +
+ 1:]),
+ self._title[i])
size = self._style.body_size
canvas.setFont(self._style.body_font, size)
note_line = len(self._note)
for i in range(note_line):
print self._note[i]
- canvas.drawCentredString(self._style.page_wight / 2.0,
- self._style.page_height / 5.0 + (1 + self._style.body_leading) * size * (
- note_line - i - 1),
- self._note[i]
- )
+ canvas.drawCentredString(self._style.page_wight /
+ 2.0, self._style.page_height /
+ 5.0 +
+ (1 +
+ self._style.body_leading) *
+ size *
+ (note_line -
+ i -
+ 1), self._note[i])
size = self._style.body_size - 2
canvas.setFont(self._style.body_font, size)
- canvas.drawCentredString(self._style.page_wight / 2.0,
- self._style.page_bottom / 2.0 + (1 + self._style.body_leading) * size,
- self._footer[0])
+ canvas.drawCentredString(self._style.page_wight /
+ 2.0, self._style.page_bottom /
+ 2.0 +
+ (1 +
+ self._style.body_leading) *
+ size, self._footer[0])
canvas.restoreState()
def myLaterPages(self, canvas, doc):
@@ -106,9 +142,7 @@ class PdfVswitch(PdfTemplate):
)
size = self._style.body_size - 2
canvas.setFont(self._style.body_font, size)
- canvas.drawCentredString(self._style.page_wight / 2.0,
- self._style.page_bottom - 24,
- "%s%s Page %2d " % (self._footer[0], " " * 8, doc.page - 1)
- )
+ canvas.drawCentredString(
+ self._style.page_wight / 2.0, self._style.page_bottom - 24, "%s%s Page %2d " %
+ (self._footer[0], " " * 8, doc.page - 1))
canvas.restoreState()
-
diff --git a/testsuites/vstf/vstf_scripts/vstf/controller/reporters/report/pdf/story.py b/testsuites/vstf/vstf_scripts/vstf/controller/reporters/report/pdf/story.py
index 940c20fb..f1442fe7 100644
--- a/testsuites/vstf/vstf_scripts/vstf/controller/reporters/report/pdf/story.py
+++ b/testsuites/vstf/vstf_scripts/vstf/controller/reporters/report/pdf/story.py
@@ -21,6 +21,7 @@ from element import *
class Story(object):
+
def __init__(self):
self._storylist = []
@@ -30,6 +31,7 @@ class Story(object):
class StoryDecorator(Story):
+
def __init__(self, story, data=None, style=None):
self._story = story
self._data = data
@@ -47,6 +49,7 @@ class StoryDecorator(Story):
class ImageStory(StoryDecorator):
+
def new_story(self):
print "Image Story"
for filename in self._data:
@@ -60,7 +63,12 @@ class ImageStory(StoryDecorator):
image_hAlign = style.image_hAlign
image_vAlign = style.image_vAlign
self._story.storylist.append(
- eImage(filename, image_width, image_height, hAlign=image_hAlign, vAlign=image_vAlign))
+ eImage(
+ filename,
+ image_width,
+ image_height,
+ hAlign=image_hAlign,
+ vAlign=image_vAlign))
else:
style = is_default
image_height = style.image_height
@@ -69,22 +77,30 @@ class ImageStory(StoryDecorator):
image_vAlign = style.image_vAlign
# self._story.storylist.append(eGraphicsTable([[' ' * 5, eImage(filename, image_width, image_height, hAlign=image_hAlign, vAlign=image_vAlign)]], ts_left).table)
self._story.storylist.append(
- eImage(filename, image_width, image_height, hAlign=image_hAlign, vAlign=image_vAlign))
+ eImage(
+ filename,
+ image_width,
+ image_height,
+ hAlign=image_hAlign,
+ vAlign=image_vAlign))
class HeaderStory(StoryDecorator):
+
def new_story(self):
print "header story"
self._story.storylist.append(PageBreak())
class PageBreakStory(StoryDecorator):
+
def new_story(self):
print "PageBreak story"
self._story.storylist.append(PageBreak())
class TableOfContentsStory(StoryDecorator):
+
def new_story(self):
print "TableOfContents story"
self._data = [" ", " ", "Table Of Contents", ""]
@@ -96,35 +112,43 @@ class TableOfContentsStory(StoryDecorator):
class SpaceStory(StoryDecorator):
+
def new_story(self):
style = ps_space
self._story.storylist.append(eParagraph([" ", " "], style).para)
class TableStory(StoryDecorator):
+
def new_story(self):
print "table story"
style = ts_default
if self._style == 1:
self._story.storylist.append(eDataTable(self._data, style).table)
- elif self._style ==2:
+ elif self._style == 2:
style = ts_left
self._story.storylist.append(eCommonTable(self._data, style).table)
elif self._style == 3:
self._story.storylist.append(eConfigTable(self._data, style).table)
elif self._style == 4:
- self._story.storylist.append(eOptionsTable(self._data, style).table)
+ self._story.storylist.append(
+ eOptionsTable(self._data, style).table)
elif self._style == 5:
- self._story.storylist.append(eProfileTable(self._data, style).table)
+ self._story.storylist.append(
+ eProfileTable(self._data, style).table)
elif self._style == 6:
- self._story.storylist.append(eSummaryTable(self._data, style).table)
+ self._story.storylist.append(
+ eSummaryTable(self._data, style).table)
elif self._style == 7:
- self._story.storylist.append(eScenarioTable(self._data, style).table)
+ self._story.storylist.append(
+ eScenarioTable(self._data, style).table)
elif self._style == 8:
- self._story.storylist.append(eGitInfoTable(self._data, style).table)
+ self._story.storylist.append(
+ eGitInfoTable(self._data, style).table)
class LinePlotStory(StoryDecorator):
+
def new_story(self):
print "LinePlot"
style = lps_default
@@ -137,18 +161,21 @@ class LinePlotStory(StoryDecorator):
class LineChartStory(StoryDecorator):
+
def new_story(self):
print "LineChartStory: "
style = lcs_default
if not self._data:
print "data error "
return
- data = eGraphicsTable([[eHorizontalLineChart(self._data, style).draw]]).table
+ data = eGraphicsTable(
+ [[eHorizontalLineChart(self._data, style).draw]]).table
if data:
self._story.storylist.append(data)
class BarChartStory(StoryDecorator):
+
def new_story(self):
print "BarChartStory: "
style = bcs_default
@@ -156,12 +183,14 @@ class BarChartStory(StoryDecorator):
print "data error "
return
- data = eGraphicsTable([[eBarChartColumn(self._data, style).draw]]).table
+ data = eGraphicsTable(
+ [[eBarChartColumn(self._data, style).draw]]).table
if data:
self._story.storylist.append(data)
class ParagraphStory(StoryDecorator):
+
def new_story(self):
print "Paragraph Story"
style = ps_body
@@ -174,6 +203,7 @@ class ParagraphStory(StoryDecorator):
class TitleStory(StoryDecorator):
+
def new_story(self):
print "Paragraph Story"
if self._style - 1 in range(9):
diff --git a/testsuites/vstf/vstf_scripts/vstf/controller/reporters/report/provider/html_provider.py b/testsuites/vstf/vstf_scripts/vstf/controller/reporters/report/provider/html_provider.py
index 74c4c593..2e0863ec 100644
--- a/testsuites/vstf/vstf_scripts/vstf/controller/reporters/report/provider/html_provider.py
+++ b/testsuites/vstf/vstf_scripts/vstf/controller/reporters/report/provider/html_provider.py
@@ -15,6 +15,7 @@ from vstf.controller.settings.template_settings import TemplateSettings
class HtmlProvider(object):
+
def __init__(self, info, style):
self._info = info
self._style = style
@@ -32,7 +33,10 @@ class HtmlProvider(object):
def main():
from vstf.common.log import setup_logging
- setup_logging(level=logging.DEBUG, log_file="/var/log/html-provder.log", clevel=logging.INFO)
+ setup_logging(
+ level=logging.DEBUG,
+ log_file="/var/log/html-provder.log",
+ clevel=logging.INFO)
html_settings = HtmlSettings()
LOG.info(html_settings.settings)
@@ -42,4 +46,4 @@ def main():
LOG.info(provider.get_context)
if __name__ == '__main__':
- main() \ No newline at end of file
+ main()
diff --git a/testsuites/vstf/vstf_scripts/vstf/controller/reporters/report/provider/pdf_provider.py b/testsuites/vstf/vstf_scripts/vstf/controller/reporters/report/provider/pdf_provider.py
index e1cb09ef..f7752016 100644
--- a/testsuites/vstf/vstf_scripts/vstf/controller/reporters/report/provider/pdf_provider.py
+++ b/testsuites/vstf/vstf_scripts/vstf/controller/reporters/report/provider/pdf_provider.py
@@ -15,6 +15,7 @@ from vstf.controller.settings.template_settings import TemplateSettings
class PdfProvider(object):
+
def __init__(self, info):
self._info = info
@@ -37,7 +38,10 @@ class PdfProvider(object):
def main():
from vstf.common.log import setup_logging
- setup_logging(level=logging.DEBUG, log_file="/var/log/pdf-provider.log", clevel=logging.INFO)
+ setup_logging(
+ level=logging.DEBUG,
+ log_file="/var/log/pdf-provider.log",
+ clevel=logging.INFO)
info = TemplateSettings()
provider = PdfProvider(info.settings)
@@ -46,4 +50,4 @@ def main():
LOG.info(provider.get_context)
if __name__ == '__main__':
- main() \ No newline at end of file
+ main()
diff --git a/testsuites/vstf/vstf_scripts/vstf/controller/reporters/reporter.py b/testsuites/vstf/vstf_scripts/vstf/controller/reporters/reporter.py
index 654c9b83..ea0a1ad0 100644
--- a/testsuites/vstf/vstf_scripts/vstf/controller/reporters/reporter.py
+++ b/testsuites/vstf/vstf_scripts/vstf/controller/reporters/reporter.py
@@ -30,6 +30,7 @@ LOG = logging.getLogger(__name__)
class Report(object):
+
def __init__(self, dbase, rpath):
"""
@@ -47,7 +48,10 @@ class Report(object):
creator = CandyGenerator(task)
attach_list = []
for scenario in scenario_list:
- out_file = os.path.join(self._rpath, "vstf_report_%s_%s.pdf" % (scenario, time.strftime(cst.TIME_FORMAT3)))
+ out_file = os.path.join(
+ self._rpath, "vstf_report_%s_%s.pdf" %
+ (scenario, time.strftime(
+ cst.TIME_FORMAT3)))
LOG.info(out_file)
creator.create(scenario)
info = TemplateSettings()
@@ -90,7 +94,10 @@ class Report(object):
def main():
from vstf.common.log import setup_logging
- setup_logging(level=logging.DEBUG, log_file="/var/log/vstf/vstf-reporter.log", clevel=logging.INFO)
+ setup_logging(
+ level=logging.DEBUG,
+ log_file="/var/log/vstf/vstf-reporter.log",
+ clevel=logging.INFO)
parser = argparse.ArgumentParser(add_help=True)
parser.add_argument('-rpath',
diff --git a/testsuites/vstf/vstf_scripts/vstf/controller/settings/cpu_settings.py b/testsuites/vstf/vstf_scripts/vstf/controller/settings/cpu_settings.py
index a25af4c1..9589e119 100644
--- a/testsuites/vstf/vstf_scripts/vstf/controller/settings/cpu_settings.py
+++ b/testsuites/vstf/vstf_scripts/vstf/controller/settings/cpu_settings.py
@@ -18,6 +18,7 @@ LOG = logging.getLogger(__name__)
class CpuSettings(sets.Settings):
+
def __init__(self, path="/etc/vstf/perf/",
filename="sw_perf.cpu-settings",
mode=sets.SETS_SINGLE):
@@ -32,9 +33,22 @@ class CpuSettings(sets.Settings):
for item in body:
item = item.encode()
func_name = "set_%s" % item
- setattr(self, func_name, self._setting_file(func_name, self._mset['affctl'], self._fset['affctl'], item))
+ setattr(
+ self,
+ func_name,
+ self._setting_file(
+ func_name,
+ self._mset['affctl'],
+ self._fset['affctl'],
+ item))
func_name = "mset_%s" % item
- setattr(self, func_name, self._setting_memory(func_name, self._mset['affctl'], item))
+ setattr(
+ self,
+ func_name,
+ self._setting_memory(
+ func_name,
+ self._mset['affctl'],
+ item))
LOG.debug(self.__dict__)
@@ -59,8 +73,10 @@ class CpuSettings(sets.Settings):
def unit_test():
from vstf.common.log import setup_logging
- setup_logging(level=logging.DEBUG, log_file="/var/log/vstf/vstf-cpu-settings.log", clevel=logging.INFO)
+ setup_logging(
+ level=logging.DEBUG,
+ log_file="/var/log/vstf/vstf-cpu-settings.log",
+ clevel=logging.INFO)
if __name__ == '__main__':
unit_test()
-
diff --git a/testsuites/vstf/vstf_scripts/vstf/controller/settings/device_settings.py b/testsuites/vstf/vstf_scripts/vstf/controller/settings/device_settings.py
index 25f2c5bf..5fe3976f 100644
--- a/testsuites/vstf/vstf_scripts/vstf/controller/settings/device_settings.py
+++ b/testsuites/vstf/vstf_scripts/vstf/controller/settings/device_settings.py
@@ -15,6 +15,7 @@ LOG = logging.getLogger(__name__)
class DeviceSettings(sets.Settings):
+
def __init__(self, path="/etc/vstf/perf/",
filename="sw_perf.device-settings",
mode=sets.SETS_SINGLE):
diff --git a/testsuites/vstf/vstf_scripts/vstf/controller/settings/flows_settings.py b/testsuites/vstf/vstf_scripts/vstf/controller/settings/flows_settings.py
index 9cd1a1b7..f28d5b5b 100644
--- a/testsuites/vstf/vstf_scripts/vstf/controller/settings/flows_settings.py
+++ b/testsuites/vstf/vstf_scripts/vstf/controller/settings/flows_settings.py
@@ -15,6 +15,7 @@ LOG = logging.getLogger(__name__)
class FlowsSettings(sets.Settings):
+
def __init__(self, path="/etc/vstf/perf/",
filename="sw_perf.flownodes-settings",
mode=sets.SETS_SINGLE):
@@ -27,16 +28,44 @@ class FlowsSettings(sets.Settings):
for actor in self._check_actors:
actor = actor.encode()
func_name = "add_%s" % actor
- setattr(self, func_name, self._adding_file(func_name, self._mset, self._fset, actor, self._check_add))
+ setattr(
+ self,
+ func_name,
+ self._adding_file(
+ func_name,
+ self._mset,
+ self._fset,
+ actor,
+ self._check_add))
func_name = "madd_%s" % actor
- setattr(self, func_name, self._adding_memory(func_name, self._mset, actor, self._check_add))
+ setattr(
+ self,
+ func_name,
+ self._adding_memory(
+ func_name,
+ self._mset,
+ actor,
+ self._check_add))
for actor in self._nocheck_actors:
actor = actor.encode()
func_name = "add_%s" % actor
- setattr(self, func_name, self._adding_file(func_name, self._mset, self._fset, actor))
+ setattr(
+ self,
+ func_name,
+ self._adding_file(
+ func_name,
+ self._mset,
+ self._fset,
+ actor))
func_name = "madd_%s" % actor
- setattr(self, func_name, self._adding_memory(func_name, self._mset, actor))
+ setattr(
+ self,
+ func_name,
+ self._adding_memory(
+ func_name,
+ self._mset,
+ actor))
LOG.debug(self.__dict__.keys())
@@ -70,7 +99,10 @@ class FlowsSettings(sets.Settings):
def unit_test():
from vstf.common.log import setup_logging
- setup_logging(level=logging.DEBUG, log_file="/var/log/vstf/vstf-flows-settings.log", clevel=logging.INFO)
+ setup_logging(
+ level=logging.DEBUG,
+ log_file="/var/log/vstf/vstf-flows-settings.log",
+ clevel=logging.INFO)
flows_settings = FlowsSettings()
LOG.info(flows_settings.settings)
@@ -113,7 +145,7 @@ def unit_test():
cpu = {
"agent": "192.168.188.16",
- "affctl":{
+ "affctl": {
"policy": 2
}
}
diff --git a/testsuites/vstf/vstf_scripts/vstf/controller/settings/forwarding_settings.py b/testsuites/vstf/vstf_scripts/vstf/controller/settings/forwarding_settings.py
index 636ddfda..138337cb 100644
--- a/testsuites/vstf/vstf_scripts/vstf/controller/settings/forwarding_settings.py
+++ b/testsuites/vstf/vstf_scripts/vstf/controller/settings/forwarding_settings.py
@@ -15,6 +15,7 @@ LOG = logging.getLogger(__name__)
class ForwardingSettings(sets.Settings):
+
def __init__(self, path="/etc/vstf/perf/",
filename="sw_perf.forwarding-settings",
mode=sets.SETS_SINGLE):
diff --git a/testsuites/vstf/vstf_scripts/vstf/controller/settings/html_settings.py b/testsuites/vstf/vstf_scripts/vstf/controller/settings/html_settings.py
index ce87733e..89af7a54 100644
--- a/testsuites/vstf/vstf_scripts/vstf/controller/settings/html_settings.py
+++ b/testsuites/vstf/vstf_scripts/vstf/controller/settings/html_settings.py
@@ -15,13 +15,21 @@ LOG = logging.getLogger(__name__)
class HtmlSettings(sets.Settings):
- def __init__(self, path="/etc/vstf/", filename="reporters.html-settings", mode=sets.SETS_DEFAULT):
+
+ def __init__(
+ self,
+ path="/etc/vstf/",
+ filename="reporters.html-settings",
+ mode=sets.SETS_DEFAULT):
super(HtmlSettings, self).__init__(path, filename, mode)
def unit_test():
from vstf.common.log import setup_logging
- setup_logging(level=logging.DEBUG, log_file="/var/log/html-settings.log", clevel=logging.DEBUG)
+ setup_logging(
+ level=logging.DEBUG,
+ log_file="/var/log/html-settings.log",
+ clevel=logging.DEBUG)
html_settings = HtmlSettings()
style = {
'table': {
@@ -36,13 +44,13 @@ def unit_test():
'border': '1px solid green',
'padding': '8px',
'word-wrap': 'break-all'
- },
+ },
'th':
{
'background-color': '#EAF2D3',
'border': '1px solid green',
'padding': '8px'
- }
+ }
}
html_settings.set_style(style)
diff --git a/testsuites/vstf/vstf_scripts/vstf/controller/settings/mail_settings.py b/testsuites/vstf/vstf_scripts/vstf/controller/settings/mail_settings.py
index db01097f..967aa601 100644
--- a/testsuites/vstf/vstf_scripts/vstf/controller/settings/mail_settings.py
+++ b/testsuites/vstf/vstf_scripts/vstf/controller/settings/mail_settings.py
@@ -18,7 +18,12 @@ LOG = logging.getLogger(__name__)
class MailSettings(sets.Settings):
- def __init__(self, path="/etc/vstf", filename="reporters.mail.mail-settings", mode=sets.SETS_DEFAULT):
+
+ def __init__(
+ self,
+ path="/etc/vstf",
+ filename="reporters.mail.mail-settings",
+ mode=sets.SETS_DEFAULT):
super(MailSettings, self).__init__(path, filename, mode)
def _register_func(self):
@@ -30,11 +35,24 @@ class MailSettings(sets.Settings):
for item in body:
item = item.encode()
func_name = "set_%s" % item
- setattr(self, func_name, self._setting_file(func_name, self._mset['body'], self._fset['body'], item))
+ setattr(
+ self,
+ func_name,
+ self._setting_file(
+ func_name,
+ self._mset['body'],
+ self._fset['body'],
+ item))
other = {"attach", "content", "subtype"}
for item in other:
func_name = "mset_%s" % item
- setattr(self, func_name, self._setting_memory(func_name, self._mset['body'], item))
+ setattr(
+ self,
+ func_name,
+ self._setting_memory(
+ func_name,
+ self._mset['body'],
+ item))
LOG.debug(self.__dict__)
@@ -80,7 +98,10 @@ class MailSettings(sets.Settings):
def unit_test():
from vstf.common.log import setup_logging
- setup_logging(level=logging.DEBUG, log_file="/var/log/vstf/vstf-mail-settings.log", clevel=logging.INFO)
+ setup_logging(
+ level=logging.DEBUG,
+ log_file="/var/log/vstf/vstf-mail-settings.log",
+ clevel=logging.INFO)
mail_settings = MailSettings()
mail_settings.sinput()
diff --git a/testsuites/vstf/vstf_scripts/vstf/controller/settings/perf_settings.py b/testsuites/vstf/vstf_scripts/vstf/controller/settings/perf_settings.py
index 610cb4ae..adc8dee4 100644
--- a/testsuites/vstf/vstf_scripts/vstf/controller/settings/perf_settings.py
+++ b/testsuites/vstf/vstf_scripts/vstf/controller/settings/perf_settings.py
@@ -20,6 +20,7 @@ LOG = logging.getLogger(__name__)
class PerfSettings(sets.Settings):
+
def __init__(self, path="/etc/vstf/perf/",
filename="sw_perf.batch-settings",
mode=sets.SETS_SINGLE):
@@ -42,14 +43,23 @@ class PerfSettings(sets.Settings):
if not scenario:
LOG.warn("not support the case:%s", value["case"])
return
- self._adding_file("add", self._mset, self._fset, scenario, check=self._check_add)(value)
+ self._adding_file(
+ "add",
+ self._mset,
+ self._fset,
+ scenario,
+ check=self._check_add)(value)
def madd_case(self, case):
scenario = self.dbconn.query_scenario(case)
if not scenario:
LOG.warn("not support the case:%s", case)
return
- self._adding_memory("madd", self._mset, scenario, check=self._check_add)(case)
+ self._adding_memory(
+ "madd",
+ self._mset,
+ scenario,
+ check=self._check_add)(case)
@deco.dcheck('sizes')
@deco.dcheck("type", choices=cst.TTYPES)
@@ -74,7 +84,7 @@ class PerfSettings(sets.Settings):
pprint.pprint(self.settings)
print "+++++++++++++++++++++++++++++++++++"
return True
-
+
@deco.vstf_input('sizes', types=list)
@deco.vstf_input("type", types=str, choices=cst.TTYPES)
@deco.vstf_input("profile", types=str, choices=cst.PROVIDERS)
@@ -98,7 +108,10 @@ def unit_test():
perf_settings.sinput()
from vstf.common.log import setup_logging
- setup_logging(level=logging.DEBUG, log_file="/var/log/vstf/vstf-perf-settings.log", clevel=logging.DEBUG)
+ setup_logging(
+ level=logging.DEBUG,
+ log_file="/var/log/vstf/vstf-perf-settings.log",
+ clevel=logging.DEBUG)
if __name__ == '__main__':
diff --git a/testsuites/vstf/vstf_scripts/vstf/controller/settings/settings.py b/testsuites/vstf/vstf_scripts/vstf/controller/settings/settings.py
index 2c712bb2..a01689d5 100644
--- a/testsuites/vstf/vstf_scripts/vstf/controller/settings/settings.py
+++ b/testsuites/vstf/vstf_scripts/vstf/controller/settings/settings.py
@@ -31,7 +31,8 @@ def dict2object(dic):
module_name = dic.pop('__module__')
module = __import__(module_name)
class_ = getattr(module, class_name)
- args = dict((key.encode('ascii'), value) for key, value in dic.items()) # get args
+ args = dict((key.encode('ascii'), value)
+ for key, value in dic.items()) # get args
inst = class_(**args) # create new instance
else:
inst = dic
@@ -52,6 +53,7 @@ def filter_comments(filename, flags="//"):
class BaseSettings(object):
+
def _load(self, fullname):
data = filter_comments(fullname)
LOG.debug(fullname)
@@ -68,7 +70,11 @@ class BaseSettings(object):
for litem in ldata:
if rdata:
for ritem in rdata:
- if isinstance(litem, dict) or isinstance(litem, list):
+ if isinstance(
+ litem,
+ dict) or isinstance(
+ litem,
+ list):
tmp = self._sub(litem, ritem)
else:
tmp = ritem
@@ -104,15 +110,22 @@ class BaseSettings(object):
if os.path.exists(filename):
os.remove(filename)
with open(filename, 'w') as ofile:
- content = json.dumps(data, sort_keys=True, indent=4, separators=(',', ':'))
+ content = json.dumps(
+ data,
+ sort_keys=True,
+ indent=4,
+ separators=(
+ ',',
+ ':'))
ofile.write(content)
class DefaultSettings(BaseSettings):
+
def __init__(self, path):
self._default = os.path.join(path, 'default')
self._user = os.path.join(path, 'user')
-
+
def load(self, filename):
dfile = os.path.join(self._default, filename)
if os.path.exists(dfile):
@@ -137,6 +150,7 @@ class DefaultSettings(BaseSettings):
class SingleSettings(BaseSettings):
+
def __init__(self, path):
self._path = path
@@ -161,6 +175,7 @@ SETTINGS = [SETS_SINGLE, SETS_DEFAULT]
class Settings(object):
+
def __init__(self, path, filename, mode=SETS_SINGLE):
if mode not in SETTINGS:
raise Exception("error Settings mode : %s" % (mode))
@@ -257,23 +272,65 @@ class Settings(object):
for item in items:
item = item.encode()
func_name = "set_%s" % item
- setattr(self, func_name, self._setting_file(func_name, self._mset, self._fset, item))
+ setattr(
+ self,
+ func_name,
+ self._setting_file(
+ func_name,
+ self._mset,
+ self._fset,
+ item))
func_name = "mset_%s" % item
- setattr(self, func_name, self._setting_memory(func_name, self._mset, item))
+ setattr(
+ self,
+ func_name,
+ self._setting_memory(
+ func_name,
+ self._mset,
+ item))
elif isinstance(self._fset, list):
func_name = "set"
- setattr(self, func_name, self._setting_file(func_name, self._mset, self._fset, None))
+ setattr(
+ self,
+ func_name,
+ self._setting_file(
+ func_name,
+ self._mset,
+ self._fset,
+ None))
func_name = "mset"
- setattr(self, func_name, self._setting_memory(func_name, self._mset, None))
+ setattr(
+ self,
+ func_name,
+ self._setting_memory(
+ func_name,
+ self._mset,
+ None))
func_name = "add"
- setattr(self, func_name, self._adding_file(func_name, self._mset, self._fset, None))
+ setattr(
+ self,
+ func_name,
+ self._adding_file(
+ func_name,
+ self._mset,
+ self._fset,
+ None))
func_name = "madd"
- setattr(self, func_name, self._adding_memory(func_name, self._mset, None))
+ setattr(
+ self,
+ func_name,
+ self._adding_memory(
+ func_name,
+ self._mset,
+ None))
def unit_test():
from vstf.common.log import setup_logging
- setup_logging(level=logging.DEBUG, log_file="/var/log/vstf-settings.log", clevel=logging.INFO)
+ setup_logging(
+ level=logging.DEBUG,
+ log_file="/var/log/vstf-settings.log",
+ clevel=logging.INFO)
path = '/etc/vstf'
setting = DefaultSettings(path)
diff --git a/testsuites/vstf/vstf_scripts/vstf/controller/settings/template_settings.py b/testsuites/vstf/vstf_scripts/vstf/controller/settings/template_settings.py
index b677c539..2e449fef 100644
--- a/testsuites/vstf/vstf_scripts/vstf/controller/settings/template_settings.py
+++ b/testsuites/vstf/vstf_scripts/vstf/controller/settings/template_settings.py
@@ -16,6 +16,7 @@ LOG = logging.getLogger(__name__)
class TemplateSettings(sets.Settings):
+
def __init__(self, path="/etc/vstf/reporter/",
filename="reporters.template-settings",
mode=sets.SETS_SINGLE):
diff --git a/testsuites/vstf/vstf_scripts/vstf/controller/settings/tester_settings.py b/testsuites/vstf/vstf_scripts/vstf/controller/settings/tester_settings.py
index 554c8042..5d64d29c 100644
--- a/testsuites/vstf/vstf_scripts/vstf/controller/settings/tester_settings.py
+++ b/testsuites/vstf/vstf_scripts/vstf/controller/settings/tester_settings.py
@@ -16,6 +16,7 @@ LOG = logging.getLogger(__name__)
class TesterSettings(sets.Settings):
+
def __init__(self, path="/etc/vstf/env/",
filename="tester.json",
mode=sets.SETS_SINGLE):
diff --git a/testsuites/vstf/vstf_scripts/vstf/controller/settings/tool_settings.py b/testsuites/vstf/vstf_scripts/vstf/controller/settings/tool_settings.py
index a84bc59f..aed3306f 100644
--- a/testsuites/vstf/vstf_scripts/vstf/controller/settings/tool_settings.py
+++ b/testsuites/vstf/vstf_scripts/vstf/controller/settings/tool_settings.py
@@ -18,7 +18,12 @@ LOG = logging.getLogger(__name__)
class ToolSettings(sets.Settings):
- def __init__(self, path="/etc/vstf", filename="sw_perf.tool-settings", mode=sets.SETS_DEFAULT):
+
+ def __init__(
+ self,
+ path="/etc/vstf",
+ filename="sw_perf.tool-settings",
+ mode=sets.SETS_DEFAULT):
super(ToolSettings, self).__init__(path, filename, mode)
def _register_func(self):
@@ -29,8 +34,15 @@ class ToolSettings(sets.Settings):
for item in body:
item = item.encode()
func_name = "set_%s" % (item)
- setattr(self, func_name,
- self._setting_file(func_name, self._mset, self._fset, item, check=self._check_keys))
+ setattr(
+ self,
+ func_name,
+ self._setting_file(
+ func_name,
+ self._mset,
+ self._fset,
+ item,
+ check=self._check_keys))
def _check_keys(self, value):
keys = ['threads', 'wait', 'time']
@@ -70,7 +82,10 @@ class ToolSettings(sets.Settings):
def unit_test():
from vstf.common.log import setup_logging
- setup_logging(level=logging.DEBUG, log_file="/var/log/vstf/tool-settings.log", clevel=logging.INFO)
+ setup_logging(
+ level=logging.DEBUG,
+ log_file="/var/log/vstf/tool-settings.log",
+ clevel=logging.INFO)
tool_settings = ToolSettings()
value = {
"time": 10,
diff --git a/testsuites/vstf/vstf_scripts/vstf/controller/spirent/__init__.py b/testsuites/vstf/vstf_scripts/vstf/controller/spirent/__init__.py
index df7d24d0..83b8d15d 100644
--- a/testsuites/vstf/vstf_scripts/vstf/controller/spirent/__init__.py
+++ b/testsuites/vstf/vstf_scripts/vstf/controller/spirent/__init__.py
@@ -6,4 +6,3 @@
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
-
diff --git a/testsuites/vstf/vstf_scripts/vstf/controller/spirent/appliance.py b/testsuites/vstf/vstf_scripts/vstf/controller/spirent/appliance.py
index d4c5be64..610b27dc 100644
--- a/testsuites/vstf/vstf_scripts/vstf/controller/spirent/appliance.py
+++ b/testsuites/vstf/vstf_scripts/vstf/controller/spirent/appliance.py
@@ -16,6 +16,7 @@ LOG = logging.getLogger(__name__)
class spirentSTC(object):
+
def __init__(self):
super(spirentSTC, self).__init__()
self.runmodel = None
@@ -25,7 +26,7 @@ class spirentSTC(object):
:param str conner: the spirent tester, the agent id of spirent vm
:param list measurand: the tested host's agent id
:param str model: the model used of the tested host
-
+
"""
mgr = stevedore.driver.DriverManager(namespace="spirent.model.plugins",
name=model,
@@ -41,7 +42,7 @@ class spirentSTC(object):
def run(config):
- # test option parser
+ # test option parser
if not os.path.exists(config['configfile']):
LOG.error('The config file %s does exist.', config.get("configfile"))
return False
@@ -54,7 +55,7 @@ def run(config):
LOG.error("[ERROR]Check parameter invalid.")
return False
- # check logical parameter in the
+ # check logical parameter in the
flag = runmodel.check_logic_invalid
if not flag:
LOG.error("[ERROR]Check logic parameter with host invalid.")
@@ -86,7 +87,8 @@ def run(config):
LOG.error("[ERROR]Restructure the test data failed.")
perfdata = getResult(result_dict)
columndata = getResultColumn(result_dict)
- column_array, data_array = analysis_instance.analyseResult(suite, columndata, perfdata)
+ column_array, data_array = analysis_instance.analyseResult(
+ suite, columndata, perfdata)
temp = {'columns': column_array, 'data': data_array}
result[suite] = temp
return result
diff --git a/testsuites/vstf/vstf_scripts/vstf/controller/spirent/common/model.py b/testsuites/vstf/vstf_scripts/vstf/controller/spirent/common/model.py
index a29794f4..38bfa70e 100644
--- a/testsuites/vstf/vstf_scripts/vstf/controller/spirent/common/model.py
+++ b/testsuites/vstf/vstf_scripts/vstf/controller/spirent/common/model.py
@@ -24,6 +24,7 @@ reverse_dict = {
class BaseModel(object):
+
def __init__(self, config):
self.config = config
@@ -117,6 +118,7 @@ def _tranfer_array_to_range(array):
class TnV(BaseModel):
+
def __init__(self, config):
super(TnV, self).__init__(config)
self.config = config
@@ -178,7 +180,8 @@ class TnV(BaseModel):
info = self.handle.get(option, 'macs')
macs = info.split()
if len(macs) != int(self.config['virtenv']) or macs == []:
- print("[ERROR]The macs number is not equal to vms or containers.")
+ print(
+ "[ERROR]The macs number is not equal to vms or containers.")
return False
for mac in macs:
# check mac valid
@@ -211,12 +214,12 @@ class TnV(BaseModel):
@property
def check_logic_invalid(self):
return self.flow_match() and self.match_virt_env() and \
- self.match_flows_and_nic and self.check_mac_valid() and \
- self.check_vlan_valid()
+ self.match_flows_and_nic and self.check_mac_valid() and \
+ self.check_vlan_valid()
@property
def read_flow_init(self):
- # The
+ # The
temp_flow = {}
src_macs = self._get_range('send', 'macs')
dst_macs = self._get_range('recv', 'macs')
@@ -233,7 +236,7 @@ class TnV(BaseModel):
temp_flow['tester_ip'] = self._get_nic_from_file('common', 'tester_ip')
vlan = src_vlan
avg_flow = int(self.config['flows']) / int(self.config['virtenv'])
- # build the main dictionary
+ # build the main dictionary
for _direct in sorted(fwd[self.config['direct']]):
i = 0
j = 0
@@ -267,9 +270,11 @@ class TnV(BaseModel):
temp_flow['qemu_thread_list'] = _vm_info['qemu_thread']
forward_core = {
- "forward": _vm_info['qemu_thread'][_queue + avg_flow * vm_index],
- "reverse": _vm_info['qemu_thread'][_queue + avg_flow * vm_index + int(self.config['flows'])]
- }
+ "forward": _vm_info['qemu_thread'][
+ _queue + avg_flow * vm_index],
+ "reverse": _vm_info['qemu_thread'][
+ _queue + avg_flow * vm_index + int(
+ self.config['flows'])]}
temp_flow['fwd_thread'] = forward_core[_direct]
temp_flow['fwd_vhost'] = None
@@ -280,7 +285,8 @@ class TnV(BaseModel):
temp_flow['dst_nic'] = dst_nic
# above all
j += 1
- self.init_flows[_direct + '_' + _vm + '_' + str(_queue)] = copy.deepcopy(temp_flow)
+ self.init_flows[_direct + '_' + _vm + '_' +
+ str(_queue)] = copy.deepcopy(temp_flow)
i += 1
src_nic_irq, dst_nic_irq = dst_nic_irq, src_nic_irq
vlan = dst_vlan
@@ -323,30 +329,67 @@ class TnV(BaseModel):
try:
i += 1
thread_info = None
- self.mac_learning(self.init_flows[_direct + '_' + _vm + '_' + str(_queue)],
- self.init_flows[reverse_dict[_direct] + '_' + _vm + '_' + str(_queue)])
- streamblock = self.send_packet(self.init_flows[_direct + '_' + _vm + '_' + str(_queue)])
+ self.mac_learning(
+ self.init_flows[
+ _direct +
+ '_' +
+ _vm +
+ '_' +
+ str(_queue)],
+ self.init_flows[
+ reverse_dict[_direct] +
+ '_' +
+ _vm +
+ '_' +
+ str(_queue)])
+ streamblock = self.send_packet(
+ self.init_flows[_direct + '_' + _vm + '_' + str(_queue)])
time.sleep(1)
result, thread_info = self.catch_thread_info()
thread_info = eval(thread_info)
- self.stop_flow(streamblock, self.init_flows[_direct + '_' + _vm + '_' + str(_queue)])
+ self.stop_flow(
+ streamblock, self.init_flows[
+ _direct + '_' + _vm + '_' + str(_queue)])
time.sleep(1)
if not result:
print("[ERROR]Catch the thread info failed.")
break
except:
- print("[ERROR]send flow failed error or get host thread info failed.")
+ print(
+ "[ERROR]send flow failed error or get host thread info failed.")
# compare the got thread info to
- if check_dict(thread_info, self.init_flows[_direct + '_' + _vm + '_' + str(_queue)]):
- self.set_thread2flow(thread_info, self.init_flows[_direct + '_' + _vm + '_' + str(_queue)])
- print("[INFO]Flow %s_%s_%s : fwd_vhost %s src_recv_irq %s dst_send_irq %s"
- % (_direct, _vm, _queue, thread_info['fwd_vhost'], thread_info['src_recv_irq'],
- thread_info['dst_send_irq']))
- print("%s" % (self.init_flows[_direct + '_' + _vm + '_' + str(_queue)]))
+ if check_dict(
+ thread_info, self.init_flows[
+ _direct + '_' + _vm + '_' + str(_queue)]):
+ self.set_thread2flow(
+ thread_info, self.init_flows[
+ _direct + '_' + _vm + '_' + str(_queue)])
+ print(
+ "[INFO]Flow %s_%s_%s : fwd_vhost %s src_recv_irq %s dst_send_irq %s" %
+ (_direct,
+ _vm,
+ _queue,
+ thread_info['fwd_vhost'],
+ thread_info['src_recv_irq'],
+ thread_info['dst_send_irq']))
+ print(
+ "%s" %
+ (self.init_flows[
+ _direct +
+ '_' +
+ _vm +
+ '_' +
+ str(_queue)]))
break
else:
- dst_ip_update(self.init_flows[_direct + '_' + _vm + '_' + str(_queue)])
+ dst_ip_update(
+ self.init_flows[
+ _direct +
+ '_' +
+ _vm +
+ '_' +
+ str(_queue)])
return self.init_flows
def affinity_bind(self, aff_strategy):
@@ -361,7 +404,8 @@ class TnV(BaseModel):
# recognize the thread id
for flowname in sorted(self.init_flows.keys()):
tmp_thread = self.init_flows[flowname]['fwd_thread']
- qemu_other = qemu_other + copy.deepcopy(self.init_flows[flowname]['qemu_thread_list'])
+ qemu_other = qemu_other + \
+ copy.deepcopy(self.init_flows[flowname]['qemu_thread_list'])
qemu_list.append(tmp_thread)
if self.init_flows[flowname]['direct'] == 'forward':
dst_vhost.append(self.init_flows[flowname]['fwd_vhost'])
@@ -386,16 +430,38 @@ class TnV(BaseModel):
handle = ConfigParser.ConfigParser()
handle.read(self.config['strategyfile'])
try:
- qemu_numa = handle.get('strategy' + self.config['strategy'], 'qemu_numa')
- src_vhost_numa = handle.get('strategy' + self.config['strategy'], 'src_vhost_numa')
- dst_vhost_numa = handle.get('strategy' + self.config['strategy'], 'dst_vhost_numa')
- src_irq_numa = handle.get('strategy' + self.config['strategy'], 'src_irq_numa')
- dst_irq_numa = handle.get('strategy' + self.config['strategy'], 'dst_irq_numa')
- loan_numa = handle.get('strategy' + self.config['strategy'], 'loan_numa')
+ qemu_numa = handle.get(
+ 'strategy' +
+ self.config['strategy'],
+ 'qemu_numa')
+ src_vhost_numa = handle.get(
+ 'strategy' + self.config['strategy'],
+ 'src_vhost_numa')
+ dst_vhost_numa = handle.get(
+ 'strategy' + self.config['strategy'],
+ 'dst_vhost_numa')
+ src_irq_numa = handle.get(
+ 'strategy' +
+ self.config['strategy'],
+ 'src_irq_numa')
+ dst_irq_numa = handle.get(
+ 'strategy' +
+ self.config['strategy'],
+ 'dst_irq_numa')
+ loan_numa = handle.get(
+ 'strategy' +
+ self.config['strategy'],
+ 'loan_numa')
except:
print("[ERROR]Parse the strategy file failed or get the options failed.")
- for value in [qemu_numa, src_vhost_numa, dst_vhost_numa, src_irq_numa, dst_irq_numa, loan_numa]:
+ for value in [
+ qemu_numa,
+ src_vhost_numa,
+ dst_vhost_numa,
+ src_irq_numa,
+ dst_irq_numa,
+ loan_numa]:
if value is not None or value == '':
raise ValueError('some option in the strategy file is none.')
# cores mapping thread
@@ -407,26 +473,39 @@ class TnV(BaseModel):
for node in numa_topo.keys():
numa_topo[node]['process'] = []
if 'node' + src_irq_numa == node:
- numa_topo[node]['process'] = numa_topo[node]['process'] + src_irq
+ numa_topo[node]['process'] = numa_topo[
+ node]['process'] + src_irq
if 'node' + dst_irq_numa == node:
- numa_topo[node]['process'] = numa_topo[node]['process'] + dst_irq
+ numa_topo[node]['process'] = numa_topo[
+ node]['process'] + dst_irq
if 'node' + src_vhost_numa == node:
- numa_topo[node]['process'] = numa_topo[node]['process'] + src_vhost
+ numa_topo[node]['process'] = numa_topo[
+ node]['process'] + src_vhost
if 'node' + dst_vhost_numa == node:
- numa_topo[node]['process'] = numa_topo[node]['process'] + dst_vhost
+ numa_topo[node]['process'] = numa_topo[
+ node]['process'] + dst_vhost
if 'node' + qemu_numa == node:
- numa_topo[node]['process'] = numa_topo[node]['process'] + qemu_list
+ numa_topo[node]['process'] = numa_topo[
+ node]['process'] + qemu_list
loan_cores = ''
for node in numa_topo.keys():
- if len(numa_topo[node]['process']) > len(numa_topo[node]['phy_cores']):
+ if len(
+ numa_topo[node]['process']) > len(
+ numa_topo[node]['phy_cores']):
# length distance
- diff = len(numa_topo[node]['process']) - len(numa_topo[node]['phy_cores'])
+ diff = len(numa_topo[node]['process']) - \
+ len(numa_topo[node]['phy_cores'])
# first deep copy
- numa_topo['node' + loan_numa]['process'] = numa_topo['node' + loan_numa]['process'] + copy.deepcopy(
- numa_topo[node]['process'][-diff:])
- cores_str = _tranfer_array_to_range(numa_topo['node' + loan_numa]['phy_cores'][diff:])
+ numa_topo['node' + loan_numa]['process'] = numa_topo['node' + loan_numa][
+ 'process'] + copy.deepcopy(numa_topo[node]['process'][-diff:])
+ cores_str = _tranfer_array_to_range(
+ numa_topo[
+ 'node' +
+ loan_numa]['phy_cores'][
+ diff:])
loan_cores = ','.join([loan_cores, cores_str])
- numa_topo[node]['process'] = numa_topo[node]['process'][0:-diff]
+ numa_topo[node]['process'] = numa_topo[
+ node]['process'][0:-diff]
loan_cores = loan_cores[1:]
loan_bind_list = {}
for proc_loan in qemu_other:
@@ -435,7 +514,8 @@ class TnV(BaseModel):
bind_list = {}
for node in numa_topo.keys():
for i in range(len(numa_topo[node]['process'])):
- bind_list[numa_topo[node]['process'][i]] = str(numa_topo[node]['phy_cores'][i])
+ bind_list[numa_topo[node]['process'][i]] = str(
+ numa_topo[node]['phy_cores'][i])
bind_list.update(loan_bind_list)
for key in bind_list.keys():
self.host_instance.bind_cpu(bind_list[key], key)
@@ -459,8 +539,10 @@ class TnV(BaseModel):
if suite == "throughput":
print("[INFO]!!!!!!!!!!!!!!!Now begin to throughput test")
- ret, result = self.send_instace.run_rfc2544_throughput(forward_init_flows, reverse_init_flows)
+ ret, result = self.send_instace.run_rfc2544_throughput(
+ forward_init_flows, reverse_init_flows)
elif suite == "frameloss":
print("[INFO]!!!!!!!!!!!1!!!Now begin to frameloss test")
- ret, result = self.send_instace.run_rfc2544_frameloss(forward_init_flows, reverse_init_flows)
+ ret, result = self.send_instace.run_rfc2544_frameloss(
+ forward_init_flows, reverse_init_flows)
return ret, result
diff --git a/testsuites/vstf/vstf_scripts/vstf/controller/spirent/common/result_analysis.py b/testsuites/vstf/vstf_scripts/vstf/controller/spirent/common/result_analysis.py
index b09a846d..9003f063 100644
--- a/testsuites/vstf/vstf_scripts/vstf/controller/spirent/common/result_analysis.py
+++ b/testsuites/vstf/vstf_scripts/vstf/controller/spirent/common/result_analysis.py
@@ -29,9 +29,11 @@ def restrucData(data_string):
try:
data_dict = {}
p = re.compile('-Columns.*-Output')
- data_dict['Columns'] = p.findall(data_string)[0].strip('-Columns {} -Output')
+ data_dict['Columns'] = p.findall(
+ data_string)[0].strip('-Columns {} -Output')
p = re.compile('-Output.*-State')
- data_dict['Output'] = p.findall(data_string)[0].strip('-Output {} -State')
+ data_dict['Output'] = p.findall(
+ data_string)[0].strip('-Output {} -State')
if data_dict['Columns'] is not None or data_dict['Output'] is not None:
return False, None
return True, data_dict
@@ -90,6 +92,7 @@ def framelossData(column, perfdata):
class analysis(object):
+
def __init__(self):
pass
@@ -148,7 +151,8 @@ class analysis(object):
line[column_name_dict['FrameSize']],
line[column_name_dict['Load(%)']],
line[column_name_dict['Result']],
- str(float(line[column_name_dict['ForwardingRate(mpps)']]) / 1000000),
+ str(float(line[column_name_dict[
+ 'ForwardingRate(mpps)']]) / 1000000),
line[column_name_dict['TxFrameCount']],
line[column_name_dict['RxFrameCount']],
line[column_name_dict['AverageLatency(us)']],
diff --git a/testsuites/vstf/vstf_scripts/vstf/controller/sw_perf/__init__.py b/testsuites/vstf/vstf_scripts/vstf/controller/sw_perf/__init__.py
index df7d24d0..83b8d15d 100644
--- a/testsuites/vstf/vstf_scripts/vstf/controller/sw_perf/__init__.py
+++ b/testsuites/vstf/vstf_scripts/vstf/controller/sw_perf/__init__.py
@@ -6,4 +6,3 @@
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
-
diff --git a/testsuites/vstf/vstf_scripts/vstf/controller/sw_perf/flow_producer.py b/testsuites/vstf/vstf_scripts/vstf/controller/sw_perf/flow_producer.py
index 4a3b02c2..a4bd1467 100644
--- a/testsuites/vstf/vstf_scripts/vstf/controller/sw_perf/flow_producer.py
+++ b/testsuites/vstf/vstf_scripts/vstf/controller/sw_perf/flow_producer.py
@@ -21,6 +21,7 @@ LOG = logging.getLogger(__name__)
class FlowsProducer(object):
+
def __init__(self, conn, flows_settings):
self._perf = flows_settings
self._forwarding = ForwardingSettings().settings
@@ -43,12 +44,13 @@ class FlowsProducer(object):
raise Exception("error devs :%s", devs)
LOG.info(agent)
LOG.info(name)
- if not self._devs_map.has_key((agent, name)):
+ if (agent, name) not in self._devs_map:
query = Fabricant(agent, self._conn)
query.clean_all_namespace()
dev_info = query.get_device_verbose(identity=name)
if not isinstance(dev_info, dict):
- err = "get device detail failed, agent:%s net:%s" % (agent, name)
+ err = "get device detail failed, agent:%s net:%s" % (
+ agent, name)
raise Exception(err)
dev = {
"agent": agent,
@@ -127,7 +129,10 @@ class FlowsProducer(object):
def unit_test():
from vstf.rpc_frame_work.rpc_producer import Server
from vstf.common.log import setup_logging
- setup_logging(level=logging.INFO, log_file="/var/log/vstf/vstf-producer.log", clevel=logging.INFO)
+ setup_logging(
+ level=logging.INFO,
+ log_file="/var/log/vstf/vstf-producer.log",
+ clevel=logging.INFO)
conn = Server("192.168.188.10")
flow_settings = FlowsSettings()
diff --git a/testsuites/vstf/vstf_scripts/vstf/controller/sw_perf/model.py b/testsuites/vstf/vstf_scripts/vstf/controller/sw_perf/model.py
index c49df041..8e3e7b22 100644
--- a/testsuites/vstf/vstf_scripts/vstf/controller/sw_perf/model.py
+++ b/testsuites/vstf/vstf_scripts/vstf/controller/sw_perf/model.py
@@ -17,6 +17,7 @@ LOG = logging.getLogger(__name__)
class NetDeviceMgr(Fabricant):
+
@classmethod
def add(cls, dst, conn, dev):
self = cls(dst, conn)
@@ -38,6 +39,7 @@ class NetDeviceMgr(Fabricant):
class Actor(Fabricant):
+
def __init__(self, dst, conn, tool, params):
super(Actor, self).__init__(dst, conn)
self._tool = tool
@@ -46,12 +48,13 @@ class Actor(Fabricant):
def __repr__(self):
repr_dict = self.__dict__
- repr_keys = list(repr_dict.keys())
- repr_keys.sort()
- return '%s(%s)' % (self.__class__.__name__, ', '.join(['%s=%r' % (k, repr_dict[k]) for k in repr_keys]))
+ repr_keys = sorted(repr_dict.keys())
+ return '%s(%s)' % (self.__class__.__name__, ', '.join(
+ ['%s=%r' % (k, repr_dict[k]) for k in repr_keys]))
class Sender(Actor):
+
def start(self, pktsize, **kwargs):
LOG.info("Sender.start")
if 'ratep' in kwargs and kwargs['ratep']:
@@ -106,6 +109,7 @@ class Sender(Actor):
class Receiver(Actor):
+
def start(self, **kwargs):
LOG.info("Receiver.start")
ret, info = self.perf_run(
@@ -136,6 +140,7 @@ class Receiver(Actor):
class NicWatcher(Fabricant):
+
def __init__(self, dst, conn, params):
super(NicWatcher, self).__init__(dst, conn)
self._params = params
@@ -144,7 +149,9 @@ class NicWatcher(Fabricant):
def start(self):
print "NicWatcher.start"
- self._pid = self.run_vnstat(device=self._params["iface"], namespace=self._params["namespace"])
+ self._pid = self.run_vnstat(
+ device=self._params["iface"],
+ namespace=self._params["namespace"])
print self._pid
def stop(self):
@@ -161,6 +168,7 @@ class NicWatcher(Fabricant):
class CpuWatcher(Fabricant):
+
def __init__(self, dst, conn):
super(CpuWatcher, self).__init__(dst, conn)
self._pid = None
diff --git a/testsuites/vstf/vstf_scripts/vstf/controller/sw_perf/perf_provider.py b/testsuites/vstf/vstf_scripts/vstf/controller/sw_perf/perf_provider.py
index 396e6eef..3fdbad60 100644
--- a/testsuites/vstf/vstf_scripts/vstf/controller/sw_perf/perf_provider.py
+++ b/testsuites/vstf/vstf_scripts/vstf/controller/sw_perf/perf_provider.py
@@ -26,6 +26,7 @@ def get_agent_dict(nodes):
class PerfProvider(object):
+
def __init__(self, flows_info, tool_info, tester_info):
self._flows_info = flows_info
self._tool_info = tool_info
@@ -33,7 +34,8 @@ class PerfProvider(object):
def _islation(self):
flows = self._flows_info["flows"]
- if flows == 2 and self._flows_info["senders"][0]["agent"] == self._flows_info["senders"][1]["agent"]:
+ if flows == 2 and self._flows_info["senders"][0][
+ "agent"] == self._flows_info["senders"][1]["agent"]:
return True
return False
@@ -53,8 +55,10 @@ class PerfProvider(object):
}
}
for i in range(flows):
- sender['params']['src'].append(self._flows_info["senders"][i]['dev'])
- sender['params']['dst'].append(self._flows_info["receivers"][i]['dev'])
+ sender['params']['src'].append(
+ self._flows_info["senders"][i]['dev'])
+ sender['params']['dst'].append(
+ self._flows_info["receivers"][i]['dev'])
result.append(sender)
else:
for i in range(flows):
@@ -63,12 +67,12 @@ class PerfProvider(object):
"params": {
"protocol": protocol,
"namespace": None if "netmap" == tool else self._flows_info["senders"][i]['dev']['namespace'],
- "src": [self._flows_info["senders"][i]['dev']],
- "dst": [self._flows_info["receivers"][i]['dev']],
+ "src": [
+ self._flows_info["senders"][i]['dev']],
+ "dst": [
+ self._flows_info["receivers"][i]['dev']],
"time": self._tool_info[tool]["time"],
- "threads": self._tool_info[tool]["threads"]
- }
- }
+ "threads": self._tool_info[tool]["threads"]}}
result.append(sender)
return result
@@ -91,9 +95,8 @@ class PerfProvider(object):
"params": {
"namespace": None if "netmap" == tool else self._flows_info["receivers"][i]['dev']['namespace'],
"protocol": protocol,
- "dst": [self._flows_info["receivers"][i]['dev']]
- }
- }
+ "dst": [
+ self._flows_info["receivers"][i]['dev']]}}
result.append(receiver)
return result
@@ -104,9 +107,10 @@ class PerfProvider(object):
"agent": watcher["agent"],
"params": {
"iface": watcher['dev']["iface"],
- "namespace": None if tool in ["pktgen", "netmap"] else watcher['dev']["namespace"],
- }
- }
+ "namespace": None if tool in [
+ "pktgen",
+ "netmap"] else watcher['dev']["namespace"],
+ }}
result.append(node)
return result
@@ -118,10 +122,12 @@ class PerfProvider(object):
"agent": watcher["agent"],
"params": {
"iface": watcher['dev']["iface"],
- "namespace": watcher['dev']["namespace"] if tool not in ["pktgen", "netmap"] else None,
- "ip": watcher['dev']["ip"] + '/24',
- }
- }
+ "namespace": watcher['dev']["namespace"] if tool not in [
+ "pktgen",
+ "netmap"] else None,
+ "ip": watcher['dev']["ip"] +
+ '/24',
+ }}
result.append(node)
return result
@@ -176,7 +182,10 @@ class PerfProvider(object):
def unit_test():
from vstf.common.log import setup_logging
- setup_logging(level=logging.DEBUG, log_file="/var/log/vstf/vstf-perf-provider.log", clevel=logging.INFO)
+ setup_logging(
+ level=logging.DEBUG,
+ log_file="/var/log/vstf/vstf-perf-provider.log",
+ clevel=logging.INFO)
from vstf.controller.settings.flows_settings import FlowsSettings
from vstf.controller.settings.tool_settings import ToolSettings
@@ -186,7 +195,10 @@ def unit_test():
tool_settings = ToolSettings()
tester_settings = TesterSettings()
- provider = PerfProvider(flows_settings.settings, tool_settings.settings, tester_settings.settings)
+ provider = PerfProvider(
+ flows_settings.settings,
+ tool_settings.settings,
+ tester_settings.settings)
tools = ['pktgen']
protocols = ['udp_bw', 'udp_lat']
diff --git a/testsuites/vstf/vstf_scripts/vstf/controller/sw_perf/performance.py b/testsuites/vstf/vstf_scripts/vstf/controller/sw_perf/performance.py
index 3fe91e93..7dc426f8 100644
--- a/testsuites/vstf/vstf_scripts/vstf/controller/sw_perf/performance.py
+++ b/testsuites/vstf/vstf_scripts/vstf/controller/sw_perf/performance.py
@@ -29,6 +29,7 @@ LOG = logging.getLogger(__name__)
class Performance(object):
+
def __init__(self, conn, provider):
self._provider = provider
self._conn = conn
@@ -221,7 +222,8 @@ class Performance(object):
lat_tool = "qperf"
lat_type = 'latency'
lat_tpro = protocol + '_lat'
- self.run_latency_test(lat_tool, lat_tpro, size, ratep=realspeed)
+ self.run_latency_test(
+ lat_tool, lat_tpro, size, ratep=realspeed)
lat_result = self.result(tool, lat_type)
LOG.info(bw_result)
LOG.info(lat_result)
@@ -272,23 +274,32 @@ class Performance(object):
record[mark.txMbps] += nic_data['txmB/s'] * 8
if record[mark.rxMbps] > record[mark.txMbps]:
- record[mark.rxMbps], record[mark.txMbps] = record[mark.txMbps], record[mark.rxMbps]
+ record[
+ mark.rxMbps], record[
+ mark.txMbps] = record[
+ mark.txMbps], record[
+ mark.rxMbps]
if record[mark.rxCount] > record[mark.txCount]:
- record[mark.rxCount], record[mark.txCount] = record[mark.txCount], record[mark.rxCount]
+ record[
+ mark.rxCount], record[
+ mark.txCount] = record[
+ mark.txCount], record[
+ mark.rxCount]
if record[mark.txCount]:
- record[mark.percentLoss] = round(100 * (1 - record[mark.rxCount] / record[mark.txCount]),
- cst.PKTLOSS_ROUND)
+ record[mark.percentLoss] = round(
+ 100 * (1 - record[mark.rxCount] / record[mark.txCount]), cst.PKTLOSS_ROUND)
else:
record[mark.percentLoss] = 100
record[mark.bandwidth] /= 1000000.0
if cpu_mhz and record[mark.cpu]:
- record[mark.mppsGhz] = round(record[mark.bandwidth] / (record[mark.cpu] * cpu_mhz / 100000),
- cst.CPU_USAGE_ROUND)
+ record[mark.mppsGhz] = round(
+ record[mark.bandwidth] / (record[mark.cpu] * cpu_mhz / 100000), cst.CPU_USAGE_ROUND)
- record[mark.bandwidth] = round(record[mark.bandwidth], cst.RATEP_ROUND)
+ record[mark.bandwidth] = round(
+ record[mark.bandwidth], cst.RATEP_ROUND)
elif ttype in {'latency'}:
record = {
@@ -319,7 +330,10 @@ class Performance(object):
def unit_test():
from vstf.common.log import setup_logging
- setup_logging(level=logging.DEBUG, log_file="/var/log/vstf/vstf-sw_perf.log", clevel=logging.INFO)
+ setup_logging(
+ level=logging.DEBUG,
+ log_file="/var/log/vstf/vstf-sw_perf.log",
+ clevel=logging.INFO)
conn = Server("192.168.188.10")
perf_settings = PerfSettings()
@@ -327,7 +341,10 @@ def unit_test():
tool_settings = ToolSettings()
tester_settings = TesterSettings()
flow_producer = FlowsProducer(conn, flows_settings)
- provider = PerfProvider(flows_settings.settings, tool_settings.settings, tester_settings.settings)
+ provider = PerfProvider(
+ flows_settings.settings,
+ tool_settings.settings,
+ tester_settings.settings)
perf = Performance(conn, provider)
tests = perf_settings.settings
for scenario, cases in tests.items():
@@ -348,7 +365,10 @@ def unit_test():
def main():
from vstf.common.log import setup_logging
- setup_logging(level=logging.DEBUG, log_file="/var/log/vstf/vstf-performance.log", clevel=logging.INFO)
+ setup_logging(
+ level=logging.DEBUG,
+ log_file="/var/log/vstf/vstf-performance.log",
+ clevel=logging.INFO)
from vstf.controller.database.dbinterface import DbManage
parser = argparse.ArgumentParser(add_help=True)
parser.add_argument("case",
@@ -374,9 +394,10 @@ def main():
action="store",
default="64",
help='test size list "64 128"')
- parser.add_argument("--affctl",
- action="store_true",
- help="when input '--affctl', the performance will do affctl before testing")
+ parser.add_argument(
+ "--affctl",
+ action="store_true",
+ help="when input '--affctl', the performance will do affctl before testing")
parser.add_argument("--monitor",
dest="monitor",
default="localhost",
@@ -399,7 +420,10 @@ def main():
tool_settings = ToolSettings()
tester_settings = TesterSettings()
flow_producer = FlowsProducer(conn, flows_settings)
- provider = PerfProvider(flows_settings.settings, tool_settings.settings, tester_settings.settings)
+ provider = PerfProvider(
+ flows_settings.settings,
+ tool_settings.settings,
+ tester_settings.settings)
perf = Performance(conn, provider)
scenario = db_mgr.query_scenario(casetag)
flow_producer.create(scenario, casetag)
diff --git a/testsuites/vstf/vstf_scripts/vstf/controller/sw_perf/raw_data.py b/testsuites/vstf/vstf_scripts/vstf/controller/sw_perf/raw_data.py
index aefb863d..828981db 100644
--- a/testsuites/vstf/vstf_scripts/vstf/controller/sw_perf/raw_data.py
+++ b/testsuites/vstf/vstf_scripts/vstf/controller/sw_perf/raw_data.py
@@ -15,6 +15,7 @@ LOG = logging.getLogger(__name__)
class RawDataProcess(object):
+
def __init__(self):
pass
@@ -24,7 +25,9 @@ class RawDataProcess(object):
buf = ' '.join(buf)
m = {}
digits = re.compile(r"\d{1,}\.?\d*")
- units = re.compile(r"(?:gib|mib|kib|kbit/s|gbit/s|mbit/s|p/s)", re.IGNORECASE | re.MULTILINE)
+ units = re.compile(
+ r"(?:gib|mib|kib|kbit/s|gbit/s|mbit/s|p/s)",
+ re.IGNORECASE | re.MULTILINE)
units_arr = units.findall(buf)
LOG.debug(units_arr)
digits_arr = digits.findall(buf)
@@ -96,9 +99,9 @@ class RawDataProcess(object):
m = self.process_vnstat(data)
if tool == 'sar' and data_type == 'cpu':
m = self.process_sar_cpu(data)
- if raw.has_key('cpu_num'):
+ if 'cpu_num' in raw:
m['cpu_num'] = raw['cpu_num']
- if raw.has_key('cpu_mhz'):
+ if 'cpu_mhz' in raw:
m['cpu_mhz'] = raw['cpu_mhz']
if tool == 'qperf':
m = self.process_qperf(data)
@@ -121,7 +124,10 @@ if __name__ == '__main__':
print p.process_vnstat(data)
cmd = "sar -u 2"
- child = subprocess.Popen(cmd.split(), stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+ child = subprocess.Popen(
+ cmd.split(),
+ stdout=subprocess.PIPE,
+ stderr=subprocess.PIPE)
import time
import os
from signal import SIGINT
diff --git a/testsuites/vstf/vstf_scripts/vstf/controller/unittest/__init__.py b/testsuites/vstf/vstf_scripts/vstf/controller/unittest/__init__.py
index df7d24d0..83b8d15d 100644
--- a/testsuites/vstf/vstf_scripts/vstf/controller/unittest/__init__.py
+++ b/testsuites/vstf/vstf_scripts/vstf/controller/unittest/__init__.py
@@ -6,4 +6,3 @@
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
-
diff --git a/testsuites/vstf/vstf_scripts/vstf/controller/unittest/configuration.py b/testsuites/vstf/vstf_scripts/vstf/controller/unittest/configuration.py
index 6312efa2..5131e8d4 100644
--- a/testsuites/vstf/vstf_scripts/vstf/controller/unittest/configuration.py
+++ b/testsuites/vstf/vstf_scripts/vstf/controller/unittest/configuration.py
@@ -18,4 +18,4 @@ source_repo = {
"passwd": "root",
"ip": "192.168.188.10",
"user": "root"
-} \ No newline at end of file
+}
diff --git a/testsuites/vstf/vstf_scripts/vstf/controller/unittest/model.py b/testsuites/vstf/vstf_scripts/vstf/controller/unittest/model.py
index 4c38973e..b6e37ff5 100644
--- a/testsuites/vstf/vstf_scripts/vstf/controller/unittest/model.py
+++ b/testsuites/vstf/vstf_scripts/vstf/controller/unittest/model.py
@@ -28,4 +28,4 @@ class Test(unittest.TestCase):
if __name__ == "__main__":
#import sys;sys.argv = ['', 'Test.testName']
- unittest.main() \ No newline at end of file
+ unittest.main()
diff --git a/testsuites/vstf/vstf_scripts/vstf/controller/unittest/test_cfg_intent_parse.py b/testsuites/vstf/vstf_scripts/vstf/controller/unittest/test_cfg_intent_parse.py
index a08607bb..a0cf2a33 100644
--- a/testsuites/vstf/vstf_scripts/vstf/controller/unittest/test_cfg_intent_parse.py
+++ b/testsuites/vstf/vstf_scripts/vstf/controller/unittest/test_cfg_intent_parse.py
@@ -15,6 +15,7 @@ from vstf.controller.env_build.cfg_intent_parse import IntentParser
class Test(model.Test):
+
def setUp(self):
super(Test, self).setUp()
self.dir = os.path.dirname(__file__)
@@ -33,4 +34,4 @@ if __name__ == "__main__":
import logging
logging.basicConfig(level=logging.INFO)
- unittest.main() \ No newline at end of file
+ unittest.main()
diff --git a/testsuites/vstf/vstf_scripts/vstf/controller/unittest/test_collect.py b/testsuites/vstf/vstf_scripts/vstf/controller/unittest/test_collect.py
index 3e84d019..e8e9dd8c 100644
--- a/testsuites/vstf/vstf_scripts/vstf/controller/unittest/test_collect.py
+++ b/testsuites/vstf/vstf_scripts/vstf/controller/unittest/test_collect.py
@@ -15,31 +15,41 @@ from vstf.controller.unittest import model
class TestCollect(model.Test):
-
+
def setUp(self):
super(TestCollect, self).setUp()
self.obj = env_collect.EnvCollectApi(self.conn)
-
+
def test_collect_host_info(self):
- ret_str = json.dumps(self.obj.collect_host_info(self.tester_host), indent = 4)
- for key in ("CPU INFO","MEMORY INFO","HW_INFO","OS INFO"):
- self.assertTrue(key in ret_str, "collect_host_info failed, ret_str = %s" % ret_str)
-
+ ret_str = json.dumps(
+ self.obj.collect_host_info(
+ self.tester_host), indent=4)
+ for key in ("CPU INFO", "MEMORY INFO", "HW_INFO", "OS INFO"):
+ self.assertTrue(
+ key in ret_str,
+ "collect_host_info failed, ret_str = %s" %
+ ret_str)
+
def test_list_nic_devices(self):
- ret_str = json.dumps(self.obj.list_nic_devices(self.tester_host), indent = 4)
- for key in ("device","mac","bdf","desc"):
- self.assertTrue(key in ret_str, "list_nic_devices failed, ret_str = %s" % ret_str)
+ ret_str = json.dumps(
+ self.obj.list_nic_devices(
+ self.tester_host), indent=4)
+ for key in ("device", "mac", "bdf", "desc"):
+ self.assertTrue(
+ key in ret_str,
+ "list_nic_devices failed, ret_str = %s" %
+ ret_str)
print ret_str
-
+
def test_get_device_detail(self):
identity = "01:00.0"
ret = self.obj.get_device_detail(self.tester_host, "01:00.0")
- for key in ("device","mac","bdf","desc"):
+ for key in ("device", "mac", "bdf", "desc"):
self.assertTrue(key in ret)
self.assertTrue(ret['bdf'] == identity)
if __name__ == "__main__":
import logging
- logging.basicConfig(level = logging.INFO)
- unittest.main() \ No newline at end of file
+ logging.basicConfig(level=logging.INFO)
+ unittest.main()
diff --git a/testsuites/vstf/vstf_scripts/vstf/controller/unittest/test_driver_function.py b/testsuites/vstf/vstf_scripts/vstf/controller/unittest/test_driver_function.py
index 8d45c7b3..a8b1b018 100644
--- a/testsuites/vstf/vstf_scripts/vstf/controller/unittest/test_driver_function.py
+++ b/testsuites/vstf/vstf_scripts/vstf/controller/unittest/test_driver_function.py
@@ -14,19 +14,22 @@ from vstf.controller.functiontest.driver.drivertest import config_setup
from vstf.controller.unittest import model
-class TestDriverFunction(model.Test):
+class TestDriverFunction(model.Test):
+
def setUp(self):
logging.info("start driver function test unit test.")
-
+
def test_config_setup(self):
- config ,_ = config_setup()
- for key in ("test_scene","bond_flag","switch_module"):
- self.assertTrue(key in config.keys(), "config_setup function failure.")
+ config, _ = config_setup()
+ for key in ("test_scene", "bond_flag", "switch_module"):
+ self.assertTrue(
+ key in config.keys(),
+ "config_setup function failure.")
def teardown(self):
logging.info("stop driver function test unit test.")
if __name__ == "__main__":
import logging
- logging.basicConfig(level = logging.INFO)
- unittest.main() \ No newline at end of file
+ logging.basicConfig(level=logging.INFO)
+ unittest.main()
diff --git a/testsuites/vstf/vstf_scripts/vstf/controller/unittest/test_env_build.py b/testsuites/vstf/vstf_scripts/vstf/controller/unittest/test_env_build.py
index e4529e48..5f9d047f 100644
--- a/testsuites/vstf/vstf_scripts/vstf/controller/unittest/test_env_build.py
+++ b/testsuites/vstf/vstf_scripts/vstf/controller/unittest/test_env_build.py
@@ -15,45 +15,46 @@ from vstf.controller.env_build import env_build
class TestEnvBuilder(model.Test):
+
def setUp(self):
super(TestEnvBuilder, self).setUp()
self.dir = os.path.dirname(__file__)
-
+
@unittest.skip('for now')
def test_build_tn(self):
- filepath = os.path.join(self.dir,'../../../etc/vstf/env/Tn.json')
+ filepath = os.path.join(self.dir, '../../../etc/vstf/env/Tn.json')
self.mgr = env_build.EnvBuildApi(self.conn, filepath)
ret = self.mgr.build()
self.assertTrue(ret, "build_tn failed,ret = %s" % ret)
-
+
@unittest.skip('for now')
def test_build_tn1v(self):
- filepath = os.path.join(self.dir,'../../../etc/vstf/env/Tnv.json')
+ filepath = os.path.join(self.dir, '../../../etc/vstf/env/Tnv.json')
self.mgr = env_build.EnvBuildApi(self.conn, filepath)
ret = self.mgr.build()
self.assertTrue(ret, "build_tn1v failed,ret = %s" % ret)
-
+
@unittest.skip('for now')
def test_build_ti(self):
- filepath = os.path.join(self.dir,'../../../etc/vstf/env/Ti.json')
+ filepath = os.path.join(self.dir, '../../../etc/vstf/env/Ti.json')
self.mgr = env_build.EnvBuildApi(self.conn, filepath)
ret = self.mgr.build()
self.assertTrue(ret, "build_ti failed,ret = %s" % ret)
-
+
@unittest.skip('for now')
def test_build_tu(self):
- filepath = os.path.join(self.dir,'../../../etc/vstf/env/Tu.json')
+ filepath = os.path.join(self.dir, '../../../etc/vstf/env/Tu.json')
self.mgr = env_build.EnvBuildApi(self.conn, filepath)
ret = self.mgr.build()
self.assertTrue(ret, "build_tu failed,ret = %s" % ret)
-
+
def test_build_tu_bridge(self):
- filepath = os.path.join(self.dir,'../../../etc/vstf/env/Tu_br.json')
+ filepath = os.path.join(self.dir, '../../../etc/vstf/env/Tu_br.json')
self.mgr = env_build.EnvBuildApi(self.conn, filepath)
ret = self.mgr.build()
self.assertTrue(ret, "build_tu failed,ret = %s" % ret)
-
+
if __name__ == "__main__":
import logging
- logging.basicConfig(level = logging.INFO)
- unittest.main() \ No newline at end of file
+ logging.basicConfig(level=logging.INFO)
+ unittest.main()
diff --git a/testsuites/vstf/vstf_scripts/vstf/controller/unittest/test_perf.py b/testsuites/vstf/vstf_scripts/vstf/controller/unittest/test_perf.py
index 0258ab65..4e2a2ea9 100644
--- a/testsuites/vstf/vstf_scripts/vstf/controller/unittest/test_perf.py
+++ b/testsuites/vstf/vstf_scripts/vstf/controller/unittest/test_perf.py
@@ -27,7 +27,7 @@ LOG = logging.getLogger(__name__)
class TestPerf(model.Test):
-
+
def setUp(self):
LOG.info("start performance unit test.")
super(TestPerf, self).setUp()
@@ -48,7 +48,10 @@ class TestPerf(model.Test):
tool_settings = ToolSettings(path=self.base_path)
tester_settings = TesterSettings(path=self.base_path)
flow_producer = FlowsProducer(self.conn, flows_settings)
- provider = PerfProvider(flows_settings.settings, tool_settings.settings, tester_settings.settings)
+ provider = PerfProvider(
+ flows_settings.settings,
+ tool_settings.settings,
+ tester_settings.settings)
perf = pf.Performance(self.conn, provider)
tests = perf_settings.settings
for scenario, cases in tests.items():
@@ -120,5 +123,8 @@ class TestPerf(model.Test):
if __name__ == "__main__":
- setup_logging(level=logging.INFO, log_file="/var/log/vstf/vstf-unit-test.log", clevel=logging.INFO)
- unittest.main() \ No newline at end of file
+ setup_logging(
+ level=logging.INFO,
+ log_file="/var/log/vstf/vstf-unit-test.log",
+ clevel=logging.INFO)
+ unittest.main()
diff --git a/testsuites/vstf/vstf_scripts/vstf/controller/unittest/test_ssh.py b/testsuites/vstf/vstf_scripts/vstf/controller/unittest/test_ssh.py
index f2403551..c9aadb04 100644
--- a/testsuites/vstf/vstf_scripts/vstf/controller/unittest/test_ssh.py
+++ b/testsuites/vstf/vstf_scripts/vstf/controller/unittest/test_ssh.py
@@ -21,16 +21,14 @@ class Test(model.Test):
self.user = self.source_repo["user"]
self.passwd = self.source_repo["passwd"]
-
def tearDown(self):
super(Test, self).tearDown()
-
def test_run_cmd(self):
ssh.run_cmd(self.host, self.user, self.passwd, 'ls')
if __name__ == "__main__":
import logging
- logging.basicConfig(level = logging.INFO)
- unittest.main() \ No newline at end of file
+ logging.basicConfig(level=logging.INFO)
+ unittest.main()
diff --git a/testsuites/vstf/vstf_scripts/vstf/controller/vstfadm.py b/testsuites/vstf/vstf_scripts/vstf/controller/vstfadm.py
index 86641e7d..1546b47c 100644
--- a/testsuites/vstf/vstf_scripts/vstf/controller/vstfadm.py
+++ b/testsuites/vstf/vstf_scripts/vstf/controller/vstfadm.py
@@ -36,7 +36,8 @@ def make_msg(method, **kwargs):
return {"method": method, "args": kwargs}
-@cliutil.arg("--host", dest="host", default="", action="store", help="list nic devices of specified host")
+@cliutil.arg("--host", dest="host", default="", action="store",
+ help="list nic devices of specified host")
def do_list_devs(args):
"""List the host's all netdev."""
ret = call(make_msg("list_devs", host=args.host))
@@ -51,19 +52,44 @@ def do_src_install(args):
"""work agent to pull source code and compile.
use git as underlying mechanism, please make sure the host has access to git repo.
"""
- ret = call(make_msg("src_install", host=args.host, config_file=args.config_file))
+ ret = call(
+ make_msg(
+ "src_install",
+ host=args.host,
+ config_file=args.config_file))
print_stdout(ret)
-@cliutil.arg("--host", dest="host", action="store", default=None,
- help="which host to build, must exists in your config file, use default[None] value to build all hosts.")
-@cliutil.arg("--model", dest="model", action="store", choices=('Tn', 'Ti', 'Tu', 'Tnv'),
- help="which model to build, if specified, the according config file /etc/vstf/env/{model}.json must exist.")
-@cliutil.arg("--config_file", dest="config_file", action="store", default=None,
- help="if specified, the config file will replace the default config file from /etc/vstf/env.")
+@cliutil.arg(
+ "--host",
+ dest="host",
+ action="store",
+ default=None,
+ help="which host to build, must exists in your config file, use default[None] value to build all hosts.")
+@cliutil.arg(
+ "--model",
+ dest="model",
+ action="store",
+ choices=(
+ 'Tn',
+ 'Ti',
+ 'Tu',
+ 'Tnv'),
+ help="which model to build, if specified, the according config file /etc/vstf/env/{model}.json must exist.")
+@cliutil.arg(
+ "--config_file",
+ dest="config_file",
+ action="store",
+ default=None,
+ help="if specified, the config file will replace the default config file from /etc/vstf/env.")
def do_apply_model(args):
"""Apply model to the host."""
- ret = call(make_msg("apply_model", host=args.host, model=args.model, config_file=args.config_file))
+ ret = call(
+ make_msg(
+ "apply_model",
+ host=args.host,
+ model=args.model,
+ config_file=args.config_file))
print_stdout(ret)
@@ -73,7 +99,11 @@ def do_apply_model(args):
help="configuration file for image creation.")
def do_create_images(args):
"""create images on host, images are configed by configuration file."""
- ret = call(make_msg("create_images", host=args.host, config_file=args.config_file))
+ ret = call(
+ make_msg(
+ "create_images",
+ host=args.host,
+ config_file=args.config_file))
print_stdout(ret)
@@ -83,23 +113,49 @@ def do_create_images(args):
help="configuration file for images.")
def do_clean_images(args):
"""clean images on host, images are configed by configuration file."""
- ret = call(make_msg("clean_images", host=args.host, config_file=args.config_file))
+ ret = call(
+ make_msg(
+ "clean_images",
+ host=args.host,
+ config_file=args.config_file))
print_stdout(ret)
-@cliutil.arg("--host", dest="host", action="store", default=None,
- help="which host to clean, must exists in your config file, use default[None] value to clean all hosts.")
-@cliutil.arg("--model", dest="model", action="store", choices=('Tn', 'Ti', 'Tu', 'Tnv'),
- help="if specified, the according config file /etc/vstf/env/{model}.json must exist.")
-@cliutil.arg("--config_file", dest="config_file", action="store", default=None,
- help="if specified, the config file will replace the default config file from /etc/vstf/env.")
+@cliutil.arg(
+ "--host",
+ dest="host",
+ action="store",
+ default=None,
+ help="which host to clean, must exists in your config file, use default[None] value to clean all hosts.")
+@cliutil.arg(
+ "--model",
+ dest="model",
+ action="store",
+ choices=(
+ 'Tn',
+ 'Ti',
+ 'Tu',
+ 'Tnv'),
+ help="if specified, the according config file /etc/vstf/env/{model}.json must exist.")
+@cliutil.arg(
+ "--config_file",
+ dest="config_file",
+ action="store",
+ default=None,
+ help="if specified, the config file will replace the default config file from /etc/vstf/env.")
def do_disapply_model(args):
"""Apply model to the host."""
- ret = call(make_msg("disapply_model", host=args.host, model=args.model, config_file=args.config_file))
+ ret = call(
+ make_msg(
+ "disapply_model",
+ host=args.host,
+ model=args.model,
+ config_file=args.config_file))
print_stdout(ret)
-@cliutil.arg("--host", dest="host", action="store", help="collect host information about cpu/mem etc")
+@cliutil.arg("--host", dest="host", action="store",
+ help="collect host information about cpu/mem etc")
def do_collect_host_info(args):
"""Show the host's CPU/MEN info"""
ret = call(make_msg("collect_host_info", target=args.host))
@@ -113,12 +169,22 @@ def do_show_tasks(args):
print_stdout(ret)
-@cliutil.arg("case", action="store", help="test case like Ti-1, Tn-1, Tnv-1, Tu-1, see case definition in documents")
+@cliutil.arg(
+ "case",
+ action="store",
+ help="test case like Ti-1, Tn-1, Tnv-1, Tu-1, see case definition in documents")
@cliutil.arg("tool", action="store", choices=cst.TOOLS)
@cliutil.arg("protocol", action="store", choices=cst.TPROTOCOLS)
@cliutil.arg("type", action="store", choices=cst.TTYPES)
-@cliutil.arg("sizes", action="store", default="64", help='test size list "64 128"')
-@cliutil.arg("--affctl", action="store_true", help="when affctl is True, it will do affctl before testing")
+@cliutil.arg(
+ "sizes",
+ action="store",
+ default="64",
+ help='test size list "64 128"')
+@cliutil.arg(
+ "--affctl",
+ action="store_true",
+ help="when affctl is True, it will do affctl before testing")
def do_perf_test(args):
"""Runs a quick single software performance test without envbuild and generating reports.
Outputs the result to the stdout immediately."""
@@ -270,7 +336,10 @@ def main():
args = parser.parse_args()
if args.func is None:
sys.exit(-1)
- setup_logging(level=logging.DEBUG, log_file="/var/log/vstf/vstf-adm.log", clevel=logging.INFO)
+ setup_logging(
+ level=logging.DEBUG,
+ log_file="/var/log/vstf/vstf-adm.log",
+ clevel=logging.INFO)
# connect to manage
global CONN
try:
diff --git a/testsuites/vstf/vstf_scripts/vstf/rpc_frame_work/__init__.py b/testsuites/vstf/vstf_scripts/vstf/rpc_frame_work/__init__.py
index 547db686..83b8d15d 100644
--- a/testsuites/vstf/vstf_scripts/vstf/rpc_frame_work/__init__.py
+++ b/testsuites/vstf/vstf_scripts/vstf/rpc_frame_work/__init__.py
@@ -6,5 +6,3 @@
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
-
-
diff --git a/testsuites/vstf/vstf_scripts/vstf/rpc_frame_work/rpc_consumer.py b/testsuites/vstf/vstf_scripts/vstf/rpc_frame_work/rpc_consumer.py
index fb54e5db..049b86fa 100644
--- a/testsuites/vstf/vstf_scripts/vstf/rpc_frame_work/rpc_consumer.py
+++ b/testsuites/vstf/vstf_scripts/vstf/rpc_frame_work/rpc_consumer.py
@@ -57,7 +57,8 @@ class VstfConsumer(object):
self.srv = host
self.port = port
self.agent_id = agent_id
- self.url = 'amqp://' + self.user + ':' + self.passwd + '@' + self.srv + ':' + self.port + '/%2F'
+ self.url = 'amqp://' + self.user + ':' + self.passwd + \
+ '@' + self.srv + ':' + self.port + '/%2F'
# load the agent_funcs
try:
@@ -122,8 +123,10 @@ class VstfConsumer(object):
if self._closing:
self._connection.ioloop.stop()
else:
- LOGGER.warning('Connection closed, reopening in 2 seconds: (%s) %s',
- reply_code, reply_text)
+ LOGGER.warning(
+ 'Connection closed, reopening in 2 seconds: (%s) %s',
+ reply_code,
+ reply_text)
self._connection.add_timeout(2, self.reconnect)
def reconnect(self):
@@ -206,7 +209,10 @@ class VstfConsumer(object):
:param str|unicode exchange_name: The name of the exchange to declare
"""
- LOGGER.info('Declaring %s exchange %s', constant.DIRECT, constant.exchange_d)
+ LOGGER.info(
+ 'Declaring %s exchange %s',
+ constant.DIRECT,
+ constant.exchange_d)
self._channel.exchange_declare(self.on_direct_exchange_declareok,
constant.exchange_d,
constant.DIRECT)
@@ -342,14 +348,15 @@ class VstfConsumer(object):
'args': e.args}}
finally:
response = message.add_context(response, **head)
- LOGGER.debug("response the msg: head:%(h)s, body:%(b)s",
- {'h': response.get('head'), 'b': response.get('body')})
-
- respone_chanl.basic_publish(exchange=constant.exchange_d,
- routing_key=properties.reply_to,
- properties=pika.BasicProperties(correlation_id=properties.correlation_id),
- body=message.encode(response)
- )
+ LOGGER.debug("response the msg: head:%(h)s, body:%(b)s", {
+ 'h': response.get('head'), 'b': response.get('body')})
+
+ respone_chanl.basic_publish(
+ exchange=constant.exchange_d,
+ routing_key=properties.reply_to,
+ properties=pika.BasicProperties(
+ correlation_id=properties.correlation_id),
+ body=message.encode(response))
# no matter what happend, tell the mq-server to drop this msg.
self.acknowledge_message(basic_deliver.delivery_tag)
diff --git a/testsuites/vstf/vstf_scripts/vstf/rpc_frame_work/rpc_producer.py b/testsuites/vstf/vstf_scripts/vstf/rpc_frame_work/rpc_producer.py
index abf2a7fc..cb72b45d 100644
--- a/testsuites/vstf/vstf_scripts/vstf/rpc_frame_work/rpc_producer.py
+++ b/testsuites/vstf/vstf_scripts/vstf/rpc_frame_work/rpc_producer.py
@@ -22,6 +22,7 @@ LOG = logging.getLogger(__name__)
class RpcProxy(object):
+
def __init__(self, host,
user='guest',
passwd='guest',
@@ -39,7 +40,8 @@ class RpcProxy(object):
self.passwd = passwd
self.srv = host
self.port = port
- self.url = 'amqp://' + self.user + ':' + self.passwd + '@' + self.srv + ':' + self.port + '/%2F'
+ self.url = 'amqp://' + self.user + ':' + self.passwd + \
+ '@' + self.srv + ':' + self.port + '/%2F'
try:
self.connect(host, self.setup_vstf_producer)
except Exception as e:
@@ -51,13 +53,14 @@ class RpcProxy(object):
def connect(self, host, ok_callback):
"""Create a Blocking connection to the rabbitmq-server
-
+
:param str host: the rabbitmq-server's host
:param obj ok_callback: if connect success than do this function
-
+
"""
LOG.info("Connect to the server %s", host)
- self._connection = pika.BlockingConnection(pika.URLParameters(self.url))
+ self._connection = pika.BlockingConnection(
+ pika.URLParameters(self.url))
if self._connection:
ok_callback()
@@ -80,7 +83,9 @@ class RpcProxy(object):
LOG.info("Declare queue %s and bind it to exchange %s",
self._queue, constant.exchange_d)
self._channel.queue_declare(queue=self._queue, exclusive=True)
- self._channel.queue_bind(exchange=constant.exchange_d, queue=self._queue)
+ self._channel.queue_bind(
+ exchange=constant.exchange_d,
+ queue=self._queue)
def start_consumer(self):
LOG.info("Start response consumer")
@@ -121,8 +126,8 @@ class RpcProxy(object):
self.response = None
if self.corr_id == props.correlation_id:
self.response = json.loads(body)
- LOG.debug("Proxy producer reciver the msg: head:%(h)s, body:%(b)s",
- {'h': self.response.get('head'), 'b': self.response.get('body')})
+ LOG.debug("Proxy producer reciver the msg: head:%(h)s, body:%(b)s", {
+ 'h': self.response.get('head'), 'b': self.response.get('body')})
else:
LOG.warn("Proxy producer Drop the msg "
"because of the wrong correlation id, %s\n" % body)
@@ -130,8 +135,11 @@ class RpcProxy(object):
def publish(self, target, corrid, body):
properties = pika.BasicProperties(reply_to=self._queue,
correlation_id=corrid)
- LOG.debug("start to publish message to the exchange=%s, target=%s, msg=%s"
- , constant.exchange_d, target, body)
+ LOG.debug(
+ "start to publish message to the exchange=%s, target=%s, msg=%s",
+ constant.exchange_d,
+ target,
+ body)
return self._channel.basic_publish(exchange=constant.exchange_d,
routing_key=target,
mandatory=True,
@@ -149,7 +157,7 @@ class RpcProxy(object):
queue = constant.queue_common + target
# the msg request and respone must be match by corr_id
self.corr_id = str(uuid.uuid4())
- # same msg format
+ # same msg format
msg = message.add_context(msg, corrid=self.corr_id)
# send msg to the queue
@@ -182,7 +190,7 @@ class RpcProxy(object):
# deal with exceptions
if msg_body \
and isinstance(msg_body, dict) \
- and msg_body.has_key('exception'):
+ and 'exception' in msg_body:
ename = str(msg_body['exception'].get('name'))
if hasattr(exceptions, ename):
e = getattr(exceptions, ename)()
@@ -199,6 +207,7 @@ class RpcProxy(object):
class Server(object):
+
def __init__(self, host=None,
user='guest',
passwd='guest',
@@ -206,7 +215,8 @@ class Server(object):
super(Server, self).__init__()
# Default use salt's master ip as rabbit rpc server ip
if host is None:
- raise Exception("Can not create rpc proxy because of the None rabbitmq server address.")
+ raise Exception(
+ "Can not create rpc proxy because of the None rabbitmq server address.")
self.host = host
self.port = port
diff --git a/utils/dashboard/process_data.py b/utils/dashboard/process_data.py
index d4b2ccfb..e71a1e82 100644
--- a/utils/dashboard/process_data.py
+++ b/utils/dashboard/process_data.py
@@ -13,6 +13,7 @@ import sys
from rubbos_collector import RubbosCollector
from uploader import Uploader
+
def printUsage():
print "Usage: python process_data.py required_params(**) optional_params([])"
print " ** -i|--input input_data_dir"
@@ -21,12 +22,14 @@ def printUsage():
print " [] -o|--output output_file"
print " [] -u|--upload yes|no"
+
def process(input_dir, suite_name):
result = dict()
if suite_name == "rubbos":
result = RubbosCollector().collect_data(input_dir)
return result
+
def writeResult(output_file, result):
f = open(output_file, "w")
if isinstance(result, list):
@@ -34,41 +37,43 @@ def writeResult(output_file, result):
f.write(str(elem) + "\n")
f.close()
+
def uploadResult(conf, suite_name, result):
Uploader(conf).upload_result(suite_name, result)
+
def main():
if len(sys.argv) < 7 or len(sys.argv) % 2 == 0:
printUsage()
- exit (1)
+ exit(1)
i = 1
params = dict()
while (i < len(sys.argv)):
- if sys.argv[i]=="-i" or sys.argv[i]=="--input":
- params["input"] = sys.argv[i+1]
- if sys.argv[i]=="-s" or sys.argv[i]=="--suite":
- params["suite"] = sys.argv[i+1]
- if sys.argv[i]=="-c" or sys.argv[i]=="--conf":
- params["conf"] = sys.argv[i+1]
- if sys.argv[i]=="-o" or sys.argv[i]=="--output":
- params["output"] = sys.argv[i+1]
- if sys.argv[i]=="-u" or sys.argv[i]=="--upload":
- params["upload"] = sys.argv[i+1]
- i = i+2
- if not(params.has_key("input") and params.has_key("suite") and params.has_key("conf")):
+ if sys.argv[i] == "-i" or sys.argv[i] == "--input":
+ params["input"] = sys.argv[i + 1]
+ if sys.argv[i] == "-s" or sys.argv[i] == "--suite":
+ params["suite"] = sys.argv[i + 1]
+ if sys.argv[i] == "-c" or sys.argv[i] == "--conf":
+ params["conf"] = sys.argv[i + 1]
+ if sys.argv[i] == "-o" or sys.argv[i] == "--output":
+ params["output"] = sys.argv[i + 1]
+ if sys.argv[i] == "-u" or sys.argv[i] == "--upload":
+ params["upload"] = sys.argv[i + 1]
+ i = i + 2
+ if not("input" in params and "suite" in params and "conf" in params):
print "Lack some required parameters."
- exit (1)
+ exit(1)
result = process(params["input"], params["suite"])
print "Results:"
for elem in result:
print elem
- if params.has_key("output"):
- writeResult(params["output"],result)
+ if "output" in params:
+ writeResult(params["output"], result)
- if params.has_key("upload") and params["upload"].lower()=="yes":
+ if "upload" in params and params["upload"].lower() == "yes":
uploadResult(params["conf"], params["suite"], result)
-if __name__=="__main__":
+if __name__ == "__main__":
main()
diff --git a/utils/dashboard/rubbos_collector.py b/utils/dashboard/rubbos_collector.py
index c9851739..d9f86032 100755
--- a/utils/dashboard/rubbos_collector.py
+++ b/utils/dashboard/rubbos_collector.py
@@ -10,16 +10,18 @@
import subprocess as subp
+
def exec_shell(cmd):
- out,err = subp.Popen(cmd, stdout=subp.PIPE, shell=True).communicate()
+ out, err = subp.Popen(cmd, stdout=subp.PIPE, shell=True).communicate()
return out.strip()
+
def get_onetime_data(dir_name):
cmd = "grep -in 'remote client nodes' %s/index.html|awk '{print $5}'|awk -F '<' '{print $1}'" % dir_name
client_node_num = int(exec_shell(cmd))
cmd = "grep -n 'Number of clients' %s/index.html|awk '{print $5}'|awk -F '<' '{print $1}'" % dir_name
each_client_num = int(exec_shell(cmd))
- total_client = (client_node_num+1) * each_client_num
+ total_client = (client_node_num + 1) * each_client_num
cmd = 'grep -n "throughput" %s/stat_client*.html |awk -F "<B>" \'{if (FNR%%2==0 && FNR%%4!=0) {printf "%%s\\n", $3}}\'|awk \'BEGIN{sum=0;}{sum=sum+$1;}END{print sum}\'' % dir_name
throughput = int(exec_shell(cmd))
@@ -39,11 +41,15 @@ class RubbosCollector(object):
pass
def collect_data(self, data_home):
- cmd = 'ls -l %s |grep ^d|awk \'{print $9}\'' % data_home
+ cmd = 'ls -l %s |grep ^d|awk \'{print $9}\'' % data_home
result = []
for subdir in exec_shell(cmd).split('\n'):
- total_client, throughput, request, error_request = get_onetime_data(data_home+'/'+subdir)
- result.append({'client':total_client, 'throughput':throughput, 'request':request, 'error_request':error_request})
- result.sort(key=lambda x:x['client'])
-
- return result;
+ total_client, throughput, request, error_request = get_onetime_data(
+ data_home + '/' + subdir)
+ result.append({'client': total_client,
+ 'throughput': throughput,
+ 'request': request,
+ 'error_request': error_request})
+ result.sort(key=lambda x: x['client'])
+
+ return result
diff --git a/utils/dashboard/uploader.py b/utils/dashboard/uploader.py
index 07862fed..a4686560 100755
--- a/utils/dashboard/uploader.py
+++ b/utils/dashboard/uploader.py
@@ -29,7 +29,6 @@ class Uploader(object):
self.result['version'] = dashboard_conf['version']
self.target = dashboard_conf['target']
-
def upload_result(self, case_name, raw_data):
if self.target == '':
print('No target was set, so no data will be posted.')
@@ -43,7 +42,9 @@ class Uploader(object):
data=json.dumps(self.result),
headers=self.headers,
timeout=self.timeout)
- print('Test result posting finished with status code %d.' % res.status_code)
+ print(
+ 'Test result posting finished with status code %d.' %
+ res.status_code)
except Exception as err:
print ('Failed to record result data: %s', err)
@@ -55,10 +56,9 @@ def _test():
print ("no argumens input!!")
exit(1)
- with open(sys.argv[1],'r') as stream:
+ with open(sys.argv[1], 'r') as stream:
data = json.load(stream)
Uploader().upload_result(data)
if __name__ == "__main__":
_test()
-
diff --git a/utils/dispatcher/func.py b/utils/dispatcher/func.py
index 71830bf2..cb907e5e 100644
--- a/utils/dispatcher/func.py
+++ b/utils/dispatcher/func.py
@@ -1,4 +1,4 @@
-#Copyright 2013: Mirantis Inc.
+# Copyright 2013: Mirantis Inc.
# All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
diff --git a/utils/infra_setup/heat/common.py b/utils/infra_setup/heat/common.py
index 24de893f..c4a78249 100755
--- a/utils/infra_setup/heat/common.py
+++ b/utils/infra_setup/heat/common.py
@@ -34,6 +34,7 @@ TEMPLATE_EXTENSION = None
# Initialization and Input 'heat_templates/'validation
# ------------------------------------------------------
+
def init(api=False):
global BASE_DIR
# BASE_DIR = os.getcwd()
@@ -46,6 +47,7 @@ def init(api=False):
log_init()
general_vars_init(api)
+
def conf_file_init(api=False):
global CONF_FILE
if api:
@@ -66,24 +68,24 @@ def general_vars_init(api=False):
# Check Section in Configuration File
InputValidation.validate_configuration_file_section(
- files.GENERAL,
- "Section " + files.GENERAL +
- "is not present in configuration file")
+ files.GENERAL,
+ "Section " + files.GENERAL +
+ "is not present in configuration file")
InputValidation.validate_configuration_file_section(
- files.OPENSTACK,
- "Section " + files.OPENSTACK +
- "is not present in configuration file")
+ files.OPENSTACK,
+ "Section " + files.OPENSTACK +
+ "is not present in configuration file")
TEMPLATE_DIR = '/tmp/heat_templates/'
if not api:
# Validate template name
InputValidation.validate_configuration_file_parameter(
- files.GENERAL,
- files.TEMPLATE_NAME,
- "Parameter " + files.TEMPLATE_NAME +
- "is not present in configuration file")
+ files.GENERAL,
+ files.TEMPLATE_NAME,
+ "Parameter " + files.TEMPLATE_NAME +
+ "is not present in configuration file")
TEMPLATE_NAME = CONF_FILE.get_variable(files.GENERAL,
files.TEMPLATE_NAME)
InputValidation.validate_file_exist(
@@ -112,6 +114,7 @@ def log_init():
# Configuration file access
# ------------------------------------------------------
+
class ConfigurationFile:
"""
Used to extract data from the configuration file
@@ -188,6 +191,7 @@ class ConfigurationFile:
# Manage files
# ------------------------------------------------------
+
def get_heat_template_params():
"""
Returns the list of deployment parameters from the configuration file
@@ -203,6 +207,7 @@ def get_heat_template_params():
files.DEPLOYMENT_PARAMETERS, param)
return testcase_parameters
+
def get_testcase_params():
"""
Returns the list of testcase parameters from the configuration file
@@ -216,6 +221,7 @@ def get_testcase_params():
files.TESTCASE_PARAMETERS, param)
return testcase_parameters
+
def get_file_first_line(file_name):
"""
Returns the first line of a file
@@ -254,6 +260,8 @@ def replace_in_file(file, text_to_search, text_to_replace):
# ------------------------------------------------------
# Shell interaction
# ------------------------------------------------------
+
+
def run_command(command):
LOG.info("Running command: {}".format(command))
return os.system(command)
@@ -262,15 +270,19 @@ def run_command(command):
# Expose variables to other modules
# ------------------------------------------------------
+
def get_base_dir():
return BASE_DIR
+
def get_template_dir():
return TEMPLATE_DIR
# ------------------------------------------------------
# Configuration Variables from Config File
# ------------------------------------------------------
+
+
def get_deployment_configuration_variables_from_conf_file():
variables = dict()
types = dict()
@@ -289,13 +301,17 @@ def get_deployment_configuration_variables_from_conf_file():
# ------------------------------------------------------
# benchmarks from Config File
# ------------------------------------------------------
+
+
def get_benchmarks_from_conf_file():
requested_benchmarks = list()
- benchmarks = CONF_FILE.get_variable(files.GENERAL, files.BENCHMARKS).split(', ')
+ benchmarks = CONF_FILE.get_variable(
+ files.GENERAL, files.BENCHMARKS).split(', ')
for benchmark in benchmarks:
requested_benchmarks.append(benchmark)
return requested_benchmarks
+
class InputValidation(object):
@staticmethod
diff --git a/utils/infra_setup/heat/consts/files.py b/utils/infra_setup/heat/consts/files.py
index 2856650f..f148f103 100755
--- a/utils/infra_setup/heat/consts/files.py
+++ b/utils/infra_setup/heat/consts/files.py
@@ -12,6 +12,7 @@
# ------------------------------------------------------
GENERAL = 'General'
+
def get_sections():
return [
GENERAL,
diff --git a/utils/infra_setup/heat/manager.py b/utils/infra_setup/heat/manager.py
index 5902e8c4..f5a9b88d 100755
--- a/utils/infra_setup/heat/manager.py
+++ b/utils/infra_setup/heat/manager.py
@@ -13,6 +13,7 @@ from heatclient.common import template_utils
import heat.common as common
+
class HeatManager:
def __init__(self, credentials):
@@ -26,14 +27,14 @@ class HeatManager:
def heat_init(self):
keystone = keystone_client.Client(username=self.user,
- password=self.password,
- tenant_name=self.project_id,
- auth_url=self.auth_uri)
+ password=self.password,
+ tenant_name=self.project_id,
+ auth_url=self.auth_uri)
auth_token = keystone.auth_token
self.heat_url = keystone.service_catalog.url_for(
service_type='orchestration')
self.heat = heat_client.Client('1', endpoint=self.heat_url,
- token=auth_token)
+ token=auth_token)
def stacks_list(self, name=None):
for stack in self.heat.stacks.list():
@@ -44,7 +45,8 @@ class HeatManager:
def stack_generate(self, template_file, stack_name, parameters):
self.heat_init()
self.stacks_list()
- tpl_files, template = template_utils.get_template_contents(template_file)
+ tpl_files, template = template_utils.get_template_contents(
+ template_file)
fields = {
'template': template,
diff --git a/utils/infra_setup/heat/template.py b/utils/infra_setup/heat/template.py
index f05831de..f71e9166 100755
--- a/utils/infra_setup/heat/template.py
+++ b/utils/infra_setup/heat/template.py
@@ -15,6 +15,7 @@ import shutil
import common
import consts.parameters as parameters
+
class TreeNode:
def __init__(self):
@@ -80,6 +81,7 @@ class TreeNode:
template_name = parameters.TEST_TEMPLATE_NAME
+
def generates_templates(base_heat_template, deployment_configuration):
# parameters loaded from file
template_dir = common.get_template_dir()
@@ -148,7 +150,8 @@ def get_all_heat_templates(template_dir, template_extension):
template_files = list()
for dirname, dirnames, filenames in os.walk(template_dir):
for filename in filenames:
- if template_extension in filename and filename.endswith(template_extension) and template_name in filename:
+ if template_extension in filename and filename.endswith(
+ template_extension) and template_name in filename:
template_files.append(filename)
template_files.sort()
return template_files
diff --git a/utils/infra_setup/heat/tests/generate_template_test.py b/utils/infra_setup/heat/tests/generate_template_test.py
index d4e0a234..83c905ad 100755
--- a/utils/infra_setup/heat/tests/generate_template_test.py
+++ b/utils/infra_setup/heat/tests/generate_template_test.py
@@ -16,6 +16,7 @@ sys.path.append("..")
import template
import common
+
def reset_common():
common.LOG = None
common.CONF_FILE = None
@@ -26,7 +27,9 @@ def reset_common():
common.TEMPLATE_NAME = None
common.TEMPLATE_EXTENSION = None
+
class TestGeneratesTemplate(unittest.TestCase):
+
def setUp(self):
self.deployment_configuration = {
'flavor': ['medium']
@@ -42,7 +45,8 @@ class TestGeneratesTemplate(unittest.TestCase):
def test_generates_template_for_success(self, mock_template_dir,
mock_log):
tmp_generated_templates_dir = '/data/generated_templates/'
- generated_templates_dir = "{}{}".format(os.getcwd(), tmp_generated_templates_dir)
+ generated_templates_dir = "{}{}".format(
+ os.getcwd(), tmp_generated_templates_dir)
mock_template_dir.return_value = generated_templates_dir
tmp_test_templates = '/data/test_templates/'
test_templates = "{}{}".format(os.getcwd(), tmp_test_templates)
@@ -69,7 +73,8 @@ class TestGeneratesTemplate(unittest.TestCase):
@mock.patch('common.get_template_dir')
def test_get_all_heat_templates_for_success(self, template_dir):
tmp_generated_templates = '/data/generated_templates/'
- generated_templates = "{}{}".format(os.getcwd(), tmp_generated_templates)
+ generated_templates = "{}{}".format(
+ os.getcwd(), tmp_generated_templates)
template_dir.return_value = generated_templates
extension = '.yaml'
expected = ['test_template_1.yaml']