diff options
-rw-r--r-- | ansible/scale_out_test_templates.yml | 4 | ||||
-rw-r--r-- | docs/testing/user/userguide/08-api.rst | 521 | ||||
-rw-r--r-- | samples/vnf_samples/nsut/vfw/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_scale_10.yaml | 32 | ||||
-rw-r--r-- | samples/vnf_samples/nsut/vfw/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_scale_4.yaml | 20 | ||||
-rw-r--r-- | samples/vnf_samples/nsut/vfw/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_scale_out.yaml | 14 | ||||
-rw-r--r-- | samples/vnf_samples/nsut/vfw/vfw-tg-topology-3node-10.yaml | 260 | ||||
-rw-r--r-- | samples/vnf_samples/nsut/vfw/vfw-tg-topology-3node-2.yaml | 76 | ||||
-rw-r--r-- | samples/vnf_samples/nsut/vfw/vfw-tg-topology-3node-4.yaml | 122 | ||||
-rw-r--r-- | samples/vnf_samples/nsut/vfw/vfw-tg-topology-3node-scale-out.yaml | 57 | ||||
-rw-r--r-- | tests/opnfv/test_suites/opnfv_os-odl-fdio_dvr-noha_daily.yaml (renamed from opnfv_os-odl-fdio_dvr-noha_daily.yaml) | 0 | ||||
-rw-r--r-- | yardstick/benchmark/contexts/standalone/ovs_dpdk.py | 1 |
11 files changed, 1056 insertions, 51 deletions
diff --git a/ansible/scale_out_test_templates.yml b/ansible/scale_out_test_templates.yml index 4213816fa..487319f2a 100644 --- a/ansible/scale_out_test_templates.yml +++ b/ansible/scale_out_test_templates.yml @@ -40,6 +40,10 @@ dest: ../samples/vnf_samples/nsut/vfw/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_scale_{{ num_vnfs }}.yaml - template: + src: ../samples/vnf_samples/nsut/vfw/vfw-tg-topology-3node-scale-out.yaml + dest: ../samples/vnf_samples/nsut/vfw/vfw-tg-topology-3node-{{ num_vnfs }}.yaml + +- template: src: ../samples/vnf_samples/nsut/cgnapt/tc_heat_rfc2544_ipv4_1flow_64B_trex_correlated_scale_out.yaml dest: ../samples/vnf_samples/nsut/cgnapt/tc_heat_rfc2544_ipv4_1flow_64B_trex_correlated_scale_{{ num_vnfs }}.yaml diff --git a/docs/testing/user/userguide/08-api.rst b/docs/testing/user/userguide/08-api.rst index 1d9ea6d64..ff6e62228 100644 --- a/docs/testing/user/userguide/08-api.rst +++ b/docs/testing/user/userguide/08-api.rst @@ -10,7 +10,7 @@ Yardstick Restful API Abstract -------- -Yardstick support restful API in danube. +Yardstick support restful API since Danube. Available API @@ -19,19 +19,19 @@ Available API /yardstick/env/action ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -Description: This API is used to do some work related to environment. For now, we support: +Description: This API is used to prepare Yardstick test environment. For Euphrates, it supports: -1. Prepare yardstick environment(Including fetch openrc file, get external network and load images) -2. Start a InfluxDB docker container and config yardstick output to InfluxDB. -3. Start a Grafana docker container and config with the InfluxDB. +1. Prepare yardstick test environment, including set external network environment variable, load Yardstick VM images and create flavors; +2. Start an InfluxDB Docker container and config Yardstick output to InfluxDB; +3. Start a Grafana Docker container and config it with the InfluxDB. -Which API to call will depend on the Parameters. +Which API to call will depend on the parameters. Method: POST -Prepare Yardstick Environment +Prepare Yardstick test environment Example:: { @@ -41,7 +41,7 @@ Example:: This is an asynchronous API. You need to call /yardstick/asynctask API to get the task result. -Start and Config InfluxDB docker container +Start and config an InfluxDB docker container Example:: { @@ -51,7 +51,7 @@ Example:: This is an asynchronous API. You need to call /yardstick/asynctask API to get the task result. -Start and Config Grafana docker container +Start and config a Grafana docker container Example:: { @@ -64,13 +64,13 @@ This is an asynchronous API. You need to call /yardstick/asynctask API to get th /yardstick/asynctask ^^^^^^^^^^^^^^^^^^^^ -Description: This API is used to get the status of asynchronous task +Description: This API is used to get the status of asynchronous tasks Method: GET -Get the status of asynchronous task +Get the status of asynchronous tasks Example:: http://localhost:8888/yardstick/asynctask?task_id=3f3f5e03-972a-4847-a5f8-154f1b31db8c @@ -81,13 +81,13 @@ The returned status will be 0(running), 1(finished) and 2(failed). /yardstick/testcases ^^^^^^^^^^^^^^^^^^^^ -Description: This API is used to list all release test cases now in yardstick. +Description: This API is used to list all released Yardstick test cases. Method: GET -Get a list of release test cases +Get a list of released test cases Example:: http://localhost:8888/yardstick/testcases @@ -96,13 +96,13 @@ Example:: /yardstick/testcases/release/action ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -Description: This API is used to run a yardstick release test case. +Description: This API is used to run a Yardstick released test case. Method: POST -Run a release test case +Run a released test case Example:: { @@ -119,7 +119,7 @@ This is an asynchronous API. You need to call /yardstick/results to get the resu /yardstick/testcases/samples/action ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -Description: This API is used to run a yardstick sample test case. +Description: This API is used to run a Yardstick sample test case. Method: POST @@ -139,10 +139,25 @@ Example:: This is an asynchronous API. You need to call /yardstick/results to get the result. +/yardstick/testcases/<testcase_name>/docs +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description: This API is used to the documentation of a certain released test case. + + +Method: GET + + +Get the documentation of a certain test case +Example:: + + http://localhost:8888/yardstick/taskcases/opnfv_yardstick_tc002/docs + + /yardstick/testsuites/action ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -Description: This API is used to run a yardstick test suite. +Description: This API is used to run a Yardstick test suite. Method: POST @@ -162,11 +177,27 @@ Example:: This is an asynchronous API. You need to call /yardstick/results to get the result. +/yardstick/tasks/<task_id>/log + +Description: This API is used to get the real time log of test case execution. + + +Method: GET + + +Get real time of test case execution +Example:: + + http://localhost:8888/yardstick/tasks/14795be8-f144-4f54-81ce-43f4e3eab33f/log?index=0 + + /yardstick/results ^^^^^^^^^^^^^^^^^^ +Description: This API is used to get the test results of tasks. If you call /yardstick/testcases/samples/action API, it will return a task id. You can use the returned task id to get the results by using this API. + -Description: This API is used to get the test results of certain task. If you call /yardstick/testcases/samples/action API, it will return a task id. You can use the returned task id to get the results by using this API. +Method: GET Get test results of one task @@ -175,3 +206,457 @@ Example:: http://localhost:8888/yardstick/results?task_id=3f3f5e03-972a-4847-a5f8-154f1b31db8c This API will return a list of test case result + + +/api/v2/yardstick/openrcs/action + +Description: This API provides functionality of handling OpenStack credential file (openrc). For Euphrates, it supports: + +1. Upload an openrc file for an OpenStack environment; +2. Update an openrc file; +3. Get openrc file information; +4. Delete an openrc file. + +Which API to call will depend on the parameters. + + +METHOD: POST + + +Upload an openrc file for an OpenStack environment +Example:: + + { + 'action': 'upload_openrc', + 'args': { + 'file': file, + 'environment_id': environment_id + } + } + + +METHOD: POST + + +Update an openrc file +Example:: + + { + 'action': 'update_openrc', + 'args': { + 'openrc': { + "EXTERNAL_NETWORK": "ext-net", + "OS_AUTH_URL": "http://192.168.23.51:5000/v3", + "OS_IDENTITY_API_VERSION": "3", + "OS_IMAGE_API_VERSION": "2", + "OS_PASSWORD": "console", + "OS_PROJECT_DOMAIN_NAME": "default", + "OS_PROJECT_NAME": "admin", + "OS_TENANT_NAME": "admin", + "OS_USERNAME": "admin", + "OS_USER_DOMAIN_NAME": "default" + }, + 'environment_id': environment_id + } + } + + +METHOD: GET + +Get openrc file information +Example:: + + http://localhost:8888/api/v2/yardstick/openrcs/5g6g3e02-155a-4847-a5f8-154f1b31db8c + + +METHOD: DELETE + + +Delete openrc file +Example:: + + http://localhost:8888/api/v2/yardstick/openrcs/5g6g3e02-155a-4847-a5f8-154f1b31db8c + + +/api/v2/yardstick/pods/action + +Description: This API provides functionality of handling Yardstick pod file (pod.yaml). For Euphrates, it supports: + +1. Upload a pod file; +2. Get pod file information; +3. Delete an openrc file. + +Which API to call will depend on the parameters. + + +METHOD: POST + + +Upload a pod.yaml file +Example:: + + { + 'action': 'upload_pod_file', + 'args': { + 'file': file, + 'environment_id': environment_id + } + } + + +METHOD: GET + +Get pod file information +Example:: + + http://localhost:8888/api/v2/yardstick/pods/5g6g3e02-155a-4847-a5f8-154f1b31db8c + + +METHOD: DELETE + +Delete openrc file +Example:: + + http://localhost:8888/api/v2/yardstick/pods/5g6g3e02-155a-4847-a5f8-154f1b31db8c + + +/api/v2/yardstick/images/action + +Description: This API is used to do some work related to Yardstick VM images. For Euphrates, it supports: + +1. Load Yardstick VM images; +2. Get image's information; +3. Delete images. + +Which API to call will depend on the parameters. + + +METHOD: POST + + +Load VM images +Example:: + + { + 'action': 'load_images' + } + + +METHOD: GET + +Get image information +Example:: + + http://localhost:8888/api/v2/yardstick/images/5g6g3e02-155a-4847-a5f8-154f1b31db8c + + +METHOD: DELETE + +Delete images +Example:: + + http://localhost:8888/api/v2/yardstick/images/5g6g3e02-155a-4847-a5f8-154f1b31db8c + + +/api/v2/yardstick/tasks/action + +Description: This API is used to do some work related to yardstick tasks. For Euphrates, it supports: + +1. Create a Yardstick task; +2. run a Yardstick task; +3. Add a test case to a task; +4. Add a test suite to a task; +5. Get a tasks' information; +6. Delete a task. + +Which API to call will depend on the parameters. + + +METHOD: POST + + +Create a Yardstick task +Example:: + + { + 'action': 'create_task', + 'args': { + 'name': 'task1', + 'project_id': project_id + } + } + + +METHOD: PUT + + +Run a task +Example:: + + { + 'action': 'run' + } + + +METHOD: PUT + + +Add a test case to a task +Example:: + + { + 'action': 'add_case', + 'args': { + 'case_name': 'opnfv_yardstick_tc002', + 'case_content': case_content + } + } + + +METHOD: PUT + + +Add a test suite to a task +Example:: + + { + 'action': 'add_suite', + 'args': { + 'suite_name': 'opnfv_smoke', + 'suite_content': suite_content + } + } + + +METHOD: GET + +Get a task's information +Example:: + + http://localhost:8888/api/v2/yardstick/tasks/5g6g3e02-155a-4847-a5f8-154f1b31db8c + + +METHOD: DELETE + +Delete a task +Example:: + http://localhost:8888/api/v2/yardstick/tasks/5g6g3e02-155a-4847-a5f8-154f1b31db8c + + +/api/v2/yardstick/testcases/action + +Description: This API is used to do some work related to yardstick testcases. For Euphrates, it supports: + +1. Upload a test case; +2. Get all released test cases' information; +3. Get a certain released test case's information; +4. Delete a test case. + +Which API to call will depend on the parameters. + + +METHOD: POST + + +Upload a test case +Example:: + + { + 'action': 'upload_case', + 'args': { + 'file': file + } + } + + +METHOD: GET + + +Get all released test cases' information +Example:: + + http://localhost:8888/api/v2/yardstick/testcases + + +METHOD: GET + + +Get a certain released test case's information +Example:: + + http://localhost:8888/api/v2/yardstick/testcases/opnfv_yardstick_tc002 + + +METHOD: DELETE + + +Delete a certain test case +Example:: + http://localhost:8888/api/v2/yardstick/testcases/opnfv_yardstick_tc002 + + +/api/v2/yardstick/testsuites/action + +Description: This API is used to do some work related to yardstick test suites. For Euphrates, it supports: + +1. Create a test suite; +2. Get a certain test suite's information; +3. Get all test suites; +4. Delete a test case. + +Which API to call will depend on the parameters. + + +METHOD: POST + + +Create a test suite +Example:: + + { + 'action': 'create_sutie', + 'args': { + 'name': <suite_name>, + 'testcases': [ + 'opnfv_yardstick_tc002' + ] + } + } + + +METHOD: GET + + +Get a certain test suite's information +Example:: + + http://localhost:8888/api/v2/yardstick/testsuites/<suite_name> + + +METHOD: GET + + +Get all test suite +Example:: + + http://localhost:8888/api/v2/yardstick/testsuites + + +METHOD: DELETE + + +Delete a certain test suite +Example:: + + http://localhost:8888/api/v2/yardstick/testsuites/<suite_name> + + +/api/v2/yardstick/projects/action + +Description: This API is used to do some work related to yardstick test projects. For Euphrates, it supports: + +1. Create a Yardstick project; +2. Get a certain project's information; +3. Get all projects; +4. Delete a project. + +Which API to call will depend on the parameters. + + +METHOD: POST + + +Create a Yardstick project +Example:: + + { + 'action': 'create_project', + 'args': { + 'name': 'project1' + } + } + + +METHOD: GET + + +Get a certain project's information +Example:: + + http://localhost:8888/api/v2/yardstick/projects/<project_id> + + +METHOD: GET + + +Get all projects' information +Example:: + + http://localhost:8888/api/v2/yardstick/projects + + +METHOD: DELETE + + +Delete a certain project +Example:: + + http://localhost:8888/api/v2/yardstick/projects/<project_id> + + +/api/v2/yardstick/containers/action + +Description: This API is used to do some work related to Docker containers. For Euphrates, it supports: + +1. Create a Grafana Docker container; +2. Create an InfluxDB Docker container; +3. Get a certain container's information; +4. Delete a container. + +Which API to call will depend on the parameters. + + +METHOD: POST + + +Create a Grafana Docker container +Example:: + + { + 'action': 'create_grafana', + 'args': { + 'environment_id': <environment_id> + } + } + + +METHOD: POST + + +Create an InfluxDB Docker container +Example:: + + { + 'action': 'create_influxdb', + 'args': { + 'environment_id': <environment_id> + } + } + + +METHOD: GET + + +Get a certain container's information +Example:: + + http://localhost:8888/api/v2/yardstick/containers/<container_id> + + +METHOD: DELETE + + +Delete a certain container +Example:: + + http://localhost:8888/api/v2/yardstick/containers/<container_id> diff --git a/samples/vnf_samples/nsut/vfw/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_scale_10.yaml b/samples/vnf_samples/nsut/vfw/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_scale_10.yaml index cf60ba1f9..1d9c4e1c6 100644 --- a/samples/vnf_samples/nsut/vfw/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_scale_10.yaml +++ b/samples/vnf_samples/nsut/vfw/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_scale_10.yaml @@ -15,22 +15,22 @@ --- schema: yardstick:task:0.1 scenarios: -- type: NSPerf - traffic_profile: ../../traffic_profiles/ipv4_throughput-10.yaml - topology: vfw-tg-topology-3node-10.yaml - nodes: - tg__0: tg_0.yardstick - tg__1: tg_1.yardstick - vnf__0: vnf_0.yardstick - vnf__1: vnf_1.yardstick - vnf__2: vnf_2.yardstick - vnf__3: vnf_3.yardstick - vnf__4: vnf_4.yardstick - vnf__5: vnf_5.yardstick - vnf__6: vnf_6.yardstick - vnf__7: vnf_7.yardstick - vnf__8: vnf_8.yardstick - vnf__9: vnf_9.yardstick + - type: NSPerf + traffic_profile: ../../traffic_profiles/ipv4_throughput-10.yaml + topology: vfw-tg-topology-3node-10.yaml + nodes: + tg__0: tg_0.yardstick + tg__1: tg_1.yardstick + vnf__0: vnf_0.yardstick + vnf__1: vnf_1.yardstick + vnf__2: vnf_2.yardstick + vnf__3: vnf_3.yardstick + vnf__4: vnf_4.yardstick + vnf__5: vnf_5.yardstick + vnf__6: vnf_6.yardstick + vnf__7: vnf_7.yardstick + vnf__8: vnf_8.yardstick + vnf__9: vnf_9.yardstick options: framesize: uplink: {64B: 100} diff --git a/samples/vnf_samples/nsut/vfw/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_scale_4.yaml b/samples/vnf_samples/nsut/vfw/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_scale_4.yaml index 64633eb77..bd29ab76c 100644 --- a/samples/vnf_samples/nsut/vfw/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_scale_4.yaml +++ b/samples/vnf_samples/nsut/vfw/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_scale_4.yaml @@ -15,16 +15,16 @@ --- schema: yardstick:task:0.1 scenarios: -- type: NSPerf - traffic_profile: ../../traffic_profiles/ipv4_throughput-4.yaml - topology: vfw-tg-topology-3node-4.yaml - nodes: - tg__0: tg_0.yardstick - tg__1: tg_1.yardstick - vnf__0: vnf_0.yardstick - vnf__1: vnf_1.yardstick - vnf__2: vnf_2.yardstick - vnf__3: vnf_3.yardstick + - type: NSPerf + traffic_profile: ../../traffic_profiles/ipv4_throughput-4.yaml + topology: vfw-tg-topology-3node-4.yaml + nodes: + tg__0: tg_0.yardstick + tg__1: tg_1.yardstick + vnf__0: vnf_0.yardstick + vnf__1: vnf_1.yardstick + vnf__2: vnf_2.yardstick + vnf__3: vnf_3.yardstick options: framesize: uplink: {64B: 100} diff --git a/samples/vnf_samples/nsut/vfw/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_scale_out.yaml b/samples/vnf_samples/nsut/vfw/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_scale_out.yaml index 767ecbc1c..be15e4550 100644 --- a/samples/vnf_samples/nsut/vfw/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_scale_out.yaml +++ b/samples/vnf_samples/nsut/vfw/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_scale_out.yaml @@ -15,14 +15,14 @@ --- schema: yardstick:task:0.1 scenarios: -- type: NSPerf - traffic_profile: ../../traffic_profiles/ipv4_throughput-{{ num_vnfs }}.yaml - topology: vfw-tg-topology-3node-{{ num_vnfs }}.yaml - nodes: - tg__0: tg_0.yardstick - tg__1: tg_1.yardstick + - type: NSPerf + traffic_profile: ../../traffic_profiles/ipv4_throughput-{{ num_vnfs }}.yaml + topology: vfw-tg-topology-3node-{{ num_vnfs }}.yaml + nodes: + tg__0: tg_0.yardstick + tg__1: tg_1.yardstick {% for vnf_num in range(num_vnfs|int) %} - vnf__{{ vnf_num }}: vnf_{{ vnf_num }}.yardstick + vnf__{{ vnf_num }}: vnf_{{ vnf_num }}.yardstick {% endfor %} options: framesize: diff --git a/samples/vnf_samples/nsut/vfw/vfw-tg-topology-3node-10.yaml b/samples/vnf_samples/nsut/vfw/vfw-tg-topology-3node-10.yaml new file mode 100644 index 000000000..99ac9e8c9 --- /dev/null +++ b/samples/vnf_samples/nsut/vfw/vfw-tg-topology-3node-10.yaml @@ -0,0 +1,260 @@ +# Copyright (c) 2016 Intel Corporation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +--- +nsd:nsd-catalog: + nsd: + - id: 10-vnf-correlated + name: 10-vnf-correlated + short-name: 10-vnf-correlated + description: 10-vnf-correlated + constituent-vnfd: + - member-vnf-index: '0' + vnfd-id-ref: tg__0 + VNF model: ../../vnf_descriptors/tg_rfc2544_tpl.yaml #VNF type + - member-vnf-index: '1' + vnfd-id-ref: tg__1 + VNF model: ../../vnf_descriptors/udp_replay_vnf.yaml #VNF type + - member-vnf-index: '2' + vnfd-id-ref: vnf__0 + VNF model: ../../vnf_descriptors/vfw_vnf.yaml #VNF type + - member-vnf-index: '3' + vnfd-id-ref: vnf__1 + VNF model: ../../vnf_descriptors/vfw_vnf.yaml #VNF type + - member-vnf-index: '4' + vnfd-id-ref: vnf__2 + VNF model: ../../vnf_descriptors/vfw_vnf.yaml #VNF type + - member-vnf-index: '5' + vnfd-id-ref: vnf__3 + VNF model: ../../vnf_descriptors/vfw_vnf.yaml #VNF type + - member-vnf-index: '6' + vnfd-id-ref: vnf__4 + VNF model: ../../vnf_descriptors/vfw_vnf.yaml #VNF type + - member-vnf-index: '7' + vnfd-id-ref: vnf__5 + VNF model: ../../vnf_descriptors/vfw_vnf.yaml #VNF type + - member-vnf-index: '8' + vnfd-id-ref: vnf__6 + VNF model: ../../vnf_descriptors/vfw_vnf.yaml #VNF type + - member-vnf-index: '9' + vnfd-id-ref: vnf__7 + VNF model: ../../vnf_descriptors/vfw_vnf.yaml #VNF type + - member-vnf-index: '10' + vnfd-id-ref: vnf__8 + VNF model: ../../vnf_descriptors/vfw_vnf.yaml #VNF type + - member-vnf-index: '11' + vnfd-id-ref: vnf__9 + VNF model: ../../vnf_descriptors/vfw_vnf.yaml #VNF type + + vld: + - id: uplink_0 + name: "tg__0 to vnf__0 link 0" + type: ELAN + vnfd-connection-point-ref: + - member-vnf-index-ref: '0' + vnfd-connection-point-ref: xe0 + vnfd-id-ref: tg__0 + - member-vnf-index-ref: '2' + vnfd-connection-point-ref: xe0 + vnfd-id-ref: vnf__0 + - id: downlink_0 + name: "vnf__0 to tg__1 link 0" + type: ELAN + vnfd-connection-point-ref: + - member-vnf-index-ref: '2' + vnfd-connection-point-ref: xe1 + vnfd-id-ref: vnf__0 + - member-vnf-index-ref: '1' + vnfd-connection-point-ref: xe0 + vnfd-id-ref: tg__1 + - id: uplink_1 + name: "tg__0 to vnf__1 link 1" + type: ELAN + vnfd-connection-point-ref: + - member-vnf-index-ref: '0' + vnfd-connection-point-ref: xe1 + vnfd-id-ref: tg__0 + - member-vnf-index-ref: '3' + vnfd-connection-point-ref: xe0 + vnfd-id-ref: vnf__1 + - id: downlink_1 + name: "vnf__1 to tg__1 link 1" + type: ELAN + vnfd-connection-point-ref: + - member-vnf-index-ref: '3' + vnfd-connection-point-ref: xe1 + vnfd-id-ref: vnf__1 + - member-vnf-index-ref: '1' + vnfd-connection-point-ref: xe1 + vnfd-id-ref: tg__1 + - id: uplink_2 + name: "tg__0 to vnf__2 link 2" + type: ELAN + vnfd-connection-point-ref: + - member-vnf-index-ref: '0' + vnfd-connection-point-ref: xe2 + vnfd-id-ref: tg__0 + - member-vnf-index-ref: '4' + vnfd-connection-point-ref: xe0 + vnfd-id-ref: vnf__2 + - id: downlink_2 + name: "vnf__2 to tg__1 link 2" + type: ELAN + vnfd-connection-point-ref: + - member-vnf-index-ref: '4' + vnfd-connection-point-ref: xe1 + vnfd-id-ref: vnf__2 + - member-vnf-index-ref: '1' + vnfd-connection-point-ref: xe2 + vnfd-id-ref: tg__1 + - id: uplink_3 + name: "tg__0 to vnf__3 link 3" + type: ELAN + vnfd-connection-point-ref: + - member-vnf-index-ref: '0' + vnfd-connection-point-ref: xe3 + vnfd-id-ref: tg__0 + - member-vnf-index-ref: '5' + vnfd-connection-point-ref: xe0 + vnfd-id-ref: vnf__3 + - id: downlink_3 + name: "vnf__3 to tg__1 link 3" + type: ELAN + vnfd-connection-point-ref: + - member-vnf-index-ref: '5' + vnfd-connection-point-ref: xe1 + vnfd-id-ref: vnf__3 + - member-vnf-index-ref: '1' + vnfd-connection-point-ref: xe3 + vnfd-id-ref: tg__1 + - id: uplink_4 + name: "tg__0 to vnf__4 link 4" + type: ELAN + vnfd-connection-point-ref: + - member-vnf-index-ref: '0' + vnfd-connection-point-ref: xe4 + vnfd-id-ref: tg__0 + - member-vnf-index-ref: '6' + vnfd-connection-point-ref: xe0 + vnfd-id-ref: vnf__4 + - id: downlink_4 + name: "vnf__4 to tg__1 link 4" + type: ELAN + vnfd-connection-point-ref: + - member-vnf-index-ref: '6' + vnfd-connection-point-ref: xe1 + vnfd-id-ref: vnf__4 + - member-vnf-index-ref: '1' + vnfd-connection-point-ref: xe4 + vnfd-id-ref: tg__1 + - id: uplink_5 + name: "tg__0 to vnf__5 link 5" + type: ELAN + vnfd-connection-point-ref: + - member-vnf-index-ref: '0' + vnfd-connection-point-ref: xe5 + vnfd-id-ref: tg__0 + - member-vnf-index-ref: '7' + vnfd-connection-point-ref: xe0 + vnfd-id-ref: vnf__5 + - id: downlink_5 + name: "vnf__5 to tg__1 link 5" + type: ELAN + vnfd-connection-point-ref: + - member-vnf-index-ref: '7' + vnfd-connection-point-ref: xe1 + vnfd-id-ref: vnf__5 + - member-vnf-index-ref: '1' + vnfd-connection-point-ref: xe5 + vnfd-id-ref: tg__1 + - id: uplink_6 + name: "tg__0 to vnf__6 link 6" + type: ELAN + vnfd-connection-point-ref: + - member-vnf-index-ref: '0' + vnfd-connection-point-ref: xe6 + vnfd-id-ref: tg__0 + - member-vnf-index-ref: '8' + vnfd-connection-point-ref: xe0 + vnfd-id-ref: vnf__6 + - id: downlink_6 + name: "vnf__6 to tg__1 link 6" + type: ELAN + vnfd-connection-point-ref: + - member-vnf-index-ref: '8' + vnfd-connection-point-ref: xe1 + vnfd-id-ref: vnf__6 + - member-vnf-index-ref: '1' + vnfd-connection-point-ref: xe6 + vnfd-id-ref: tg__1 + - id: uplink_7 + name: "tg__0 to vnf__7 link 7" + type: ELAN + vnfd-connection-point-ref: + - member-vnf-index-ref: '0' + vnfd-connection-point-ref: xe7 + vnfd-id-ref: tg__0 + - member-vnf-index-ref: '9' + vnfd-connection-point-ref: xe0 + vnfd-id-ref: vnf__7 + - id: downlink_7 + name: "vnf__7 to tg__1 link 7" + type: ELAN + vnfd-connection-point-ref: + - member-vnf-index-ref: '9' + vnfd-connection-point-ref: xe1 + vnfd-id-ref: vnf__7 + - member-vnf-index-ref: '1' + vnfd-connection-point-ref: xe7 + vnfd-id-ref: tg__1 + - id: uplink_8 + name: "tg__0 to vnf__8 link 8" + type: ELAN + vnfd-connection-point-ref: + - member-vnf-index-ref: '0' + vnfd-connection-point-ref: xe8 + vnfd-id-ref: tg__0 + - member-vnf-index-ref: '10' + vnfd-connection-point-ref: xe0 + vnfd-id-ref: vnf__8 + - id: downlink_8 + name: "vnf__8 to tg__1 link 8" + type: ELAN + vnfd-connection-point-ref: + - member-vnf-index-ref: '10' + vnfd-connection-point-ref: xe1 + vnfd-id-ref: vnf__8 + - member-vnf-index-ref: '1' + vnfd-connection-point-ref: xe8 + vnfd-id-ref: tg__1 + - id: uplink_9 + name: "tg__0 to vnf__9 link 9" + type: ELAN + vnfd-connection-point-ref: + - member-vnf-index-ref: '0' + vnfd-connection-point-ref: xe9 + vnfd-id-ref: tg__0 + - member-vnf-index-ref: '11' + vnfd-connection-point-ref: xe0 + vnfd-id-ref: vnf__9 + - id: downlink_9 + name: "vnf__9 to tg__1 link 9" + type: ELAN + vnfd-connection-point-ref: + - member-vnf-index-ref: '11' + vnfd-connection-point-ref: xe1 + vnfd-id-ref: vnf__9 + - member-vnf-index-ref: '1' + vnfd-connection-point-ref: xe9 + vnfd-id-ref: tg__1 + diff --git a/samples/vnf_samples/nsut/vfw/vfw-tg-topology-3node-2.yaml b/samples/vnf_samples/nsut/vfw/vfw-tg-topology-3node-2.yaml new file mode 100644 index 000000000..a1043c280 --- /dev/null +++ b/samples/vnf_samples/nsut/vfw/vfw-tg-topology-3node-2.yaml @@ -0,0 +1,76 @@ +# Copyright (c) 2016 Intel Corporation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +--- +nsd:nsd-catalog: + nsd: + - id: 2-vnf-correlated + name: 2-vnf-correlated + short-name: 2-vnf-correlated + description: 2-vnf-correlated + constituent-vnfd: + - member-vnf-index: '0' + vnfd-id-ref: tg__0 + VNF model: ../../vnf_descriptors/tg_rfc2544_tpl.yaml #VNF type + - member-vnf-index: '1' + vnfd-id-ref: tg__1 + VNF model: ../../vnf_descriptors/udp_replay_vnf.yaml #VNF type + - member-vnf-index: '2' + vnfd-id-ref: vnf__0 + VNF model: ../../vnf_descriptors/vfw_vnf.yaml #VNF type + - member-vnf-index: '3' + vnfd-id-ref: vnf__1 + VNF model: ../../vnf_descriptors/vfw_vnf.yaml #VNF type + + vld: + - id: uplink_0 + name: "tg__0 to vnf__0 link 0" + type: ELAN + vnfd-connection-point-ref: + - member-vnf-index-ref: '0' + vnfd-connection-point-ref: xe0 + vnfd-id-ref: tg__0 + - member-vnf-index-ref: '2' + vnfd-connection-point-ref: xe0 + vnfd-id-ref: vnf__0 + - id: downlink_0 + name: "vnf__0 to tg__1 link 0" + type: ELAN + vnfd-connection-point-ref: + - member-vnf-index-ref: '2' + vnfd-connection-point-ref: xe1 + vnfd-id-ref: vnf__0 + - member-vnf-index-ref: '1' + vnfd-connection-point-ref: xe0 + vnfd-id-ref: tg__1 + - id: uplink_1 + name: "tg__0 to vnf__1 link 1" + type: ELAN + vnfd-connection-point-ref: + - member-vnf-index-ref: '0' + vnfd-connection-point-ref: xe1 + vnfd-id-ref: tg__0 + - member-vnf-index-ref: '3' + vnfd-connection-point-ref: xe0 + vnfd-id-ref: vnf__1 + - id: downlink_1 + name: "vnf__1 to tg__1 link 1" + type: ELAN + vnfd-connection-point-ref: + - member-vnf-index-ref: '3' + vnfd-connection-point-ref: xe1 + vnfd-id-ref: vnf__1 + - member-vnf-index-ref: '1' + vnfd-connection-point-ref: xe1 + vnfd-id-ref: tg__1 + diff --git a/samples/vnf_samples/nsut/vfw/vfw-tg-topology-3node-4.yaml b/samples/vnf_samples/nsut/vfw/vfw-tg-topology-3node-4.yaml new file mode 100644 index 000000000..22e172d58 --- /dev/null +++ b/samples/vnf_samples/nsut/vfw/vfw-tg-topology-3node-4.yaml @@ -0,0 +1,122 @@ +# Copyright (c) 2016 Intel Corporation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +--- +nsd:nsd-catalog: + nsd: + - id: 4-vnf-correlated + name: 4-vnf-correlated + short-name: 4-vnf-correlated + description: 4-vnf-correlated + constituent-vnfd: + - member-vnf-index: '0' + vnfd-id-ref: tg__0 + VNF model: ../../vnf_descriptors/tg_rfc2544_tpl.yaml #VNF type + - member-vnf-index: '1' + vnfd-id-ref: tg__1 + VNF model: ../../vnf_descriptors/udp_replay_vnf.yaml #VNF type + - member-vnf-index: '2' + vnfd-id-ref: vnf__0 + VNF model: ../../vnf_descriptors/vfw_vnf.yaml #VNF type + - member-vnf-index: '3' + vnfd-id-ref: vnf__1 + VNF model: ../../vnf_descriptors/vfw_vnf.yaml #VNF type + - member-vnf-index: '4' + vnfd-id-ref: vnf__2 + VNF model: ../../vnf_descriptors/vfw_vnf.yaml #VNF type + - member-vnf-index: '5' + vnfd-id-ref: vnf__3 + VNF model: ../../vnf_descriptors/vfw_vnf.yaml #VNF type + + vld: + - id: uplink_0 + name: "tg__0 to vnf__0 link 0" + type: ELAN + vnfd-connection-point-ref: + - member-vnf-index-ref: '0' + vnfd-connection-point-ref: xe0 + vnfd-id-ref: tg__0 + - member-vnf-index-ref: '2' + vnfd-connection-point-ref: xe0 + vnfd-id-ref: vnf__0 + - id: downlink_0 + name: "vnf__0 to tg__1 link 0" + type: ELAN + vnfd-connection-point-ref: + - member-vnf-index-ref: '2' + vnfd-connection-point-ref: xe1 + vnfd-id-ref: vnf__0 + - member-vnf-index-ref: '1' + vnfd-connection-point-ref: xe0 + vnfd-id-ref: tg__1 + - id: uplink_1 + name: "tg__0 to vnf__1 link 1" + type: ELAN + vnfd-connection-point-ref: + - member-vnf-index-ref: '0' + vnfd-connection-point-ref: xe1 + vnfd-id-ref: tg__0 + - member-vnf-index-ref: '3' + vnfd-connection-point-ref: xe0 + vnfd-id-ref: vnf__1 + - id: downlink_1 + name: "vnf__1 to tg__1 link 1" + type: ELAN + vnfd-connection-point-ref: + - member-vnf-index-ref: '3' + vnfd-connection-point-ref: xe1 + vnfd-id-ref: vnf__1 + - member-vnf-index-ref: '1' + vnfd-connection-point-ref: xe1 + vnfd-id-ref: tg__1 + - id: uplink_2 + name: "tg__0 to vnf__2 link 2" + type: ELAN + vnfd-connection-point-ref: + - member-vnf-index-ref: '0' + vnfd-connection-point-ref: xe2 + vnfd-id-ref: tg__0 + - member-vnf-index-ref: '4' + vnfd-connection-point-ref: xe0 + vnfd-id-ref: vnf__2 + - id: downlink_2 + name: "vnf__2 to tg__1 link 2" + type: ELAN + vnfd-connection-point-ref: + - member-vnf-index-ref: '4' + vnfd-connection-point-ref: xe1 + vnfd-id-ref: vnf__2 + - member-vnf-index-ref: '1' + vnfd-connection-point-ref: xe2 + vnfd-id-ref: tg__1 + - id: uplink_3 + name: "tg__0 to vnf__3 link 3" + type: ELAN + vnfd-connection-point-ref: + - member-vnf-index-ref: '0' + vnfd-connection-point-ref: xe3 + vnfd-id-ref: tg__0 + - member-vnf-index-ref: '5' + vnfd-connection-point-ref: xe0 + vnfd-id-ref: vnf__3 + - id: downlink_3 + name: "vnf__3 to tg__1 link 3" + type: ELAN + vnfd-connection-point-ref: + - member-vnf-index-ref: '5' + vnfd-connection-point-ref: xe1 + vnfd-id-ref: vnf__3 + - member-vnf-index-ref: '1' + vnfd-connection-point-ref: xe3 + vnfd-id-ref: tg__1 + diff --git a/samples/vnf_samples/nsut/vfw/vfw-tg-topology-3node-scale-out.yaml b/samples/vnf_samples/nsut/vfw/vfw-tg-topology-3node-scale-out.yaml new file mode 100644 index 000000000..0052c4139 --- /dev/null +++ b/samples/vnf_samples/nsut/vfw/vfw-tg-topology-3node-scale-out.yaml @@ -0,0 +1,57 @@ +# Copyright (c) 2016 Intel Corporation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +--- +nsd:nsd-catalog: + nsd: + - id: {{ num_vnfs }}-vnf-correlated + name: {{ num_vnfs }}-vnf-correlated + short-name: {{ num_vnfs }}-vnf-correlated + description: {{ num_vnfs }}-vnf-correlated + constituent-vnfd: + - member-vnf-index: '0' + vnfd-id-ref: tg__0 + VNF model: ../../vnf_descriptors/tg_rfc2544_tpl.yaml #VNF type + - member-vnf-index: '1' + vnfd-id-ref: tg__1 + VNF model: ../../vnf_descriptors/udp_replay_vnf.yaml #VNF type +{% for vnf_num in range(num_vnfs|int) %} + - member-vnf-index: '{{ vnf_num + 2 }}' + vnfd-id-ref: vnf__{{ vnf_num }} + VNF model: ../../vnf_descriptors/vfw_vnf.yaml #VNF type +{% endfor %} + + vld: +{% for vnf_num in range(num_vnfs|int) %} + - id: uplink_{{ vnf_num }} + name: "tg__0 to vnf__{{ vnf_num }} link {{ vnf_num }}" + type: ELAN + vnfd-connection-point-ref: + - member-vnf-index-ref: '0' + vnfd-connection-point-ref: xe{{ vnf_num }} + vnfd-id-ref: tg__0 + - member-vnf-index-ref: '{{ vnf_num + 2 }}' + vnfd-connection-point-ref: xe0 + vnfd-id-ref: vnf__{{ vnf_num }} + - id: downlink_{{ vnf_num }} + name: "vnf__{{ vnf_num }} to tg__1 link {{ vnf_num }}" + type: ELAN + vnfd-connection-point-ref: + - member-vnf-index-ref: '{{ vnf_num + 2}}' + vnfd-connection-point-ref: xe1 + vnfd-id-ref: vnf__{{ vnf_num }} + - member-vnf-index-ref: '1' + vnfd-connection-point-ref: xe{{ vnf_num }} + vnfd-id-ref: tg__1 +{% endfor %} + diff --git a/opnfv_os-odl-fdio_dvr-noha_daily.yaml b/tests/opnfv/test_suites/opnfv_os-odl-fdio_dvr-noha_daily.yaml index cd00b4c0c..cd00b4c0c 100644 --- a/opnfv_os-odl-fdio_dvr-noha_daily.yaml +++ b/tests/opnfv/test_suites/opnfv_os-odl-fdio_dvr-noha_daily.yaml diff --git a/yardstick/benchmark/contexts/standalone/ovs_dpdk.py b/yardstick/benchmark/contexts/standalone/ovs_dpdk.py index e990e46f5..fcb7bb66c 100644 --- a/yardstick/benchmark/contexts/standalone/ovs_dpdk.py +++ b/yardstick/benchmark/contexts/standalone/ovs_dpdk.py @@ -138,6 +138,7 @@ class OvsDpdkContext(Context): cmd_list = [ "mkdir -p /usr/local/var/run/openvswitch", + "mkdir -p {}".format(os.path.dirname(log_path)), "ovsdb-server --remote=punix:/{0}/{1} --pidfile --detach".format(vpath, ovs_sock_path), ovs_other_config.format("--no-wait ", "dpdk-init=true"), |