Merge "Extend vBNG PPPoE test cases functionality"
authorVolodymyr Mytnyk <volodymyrx.mytnyk@intel.com>
Mon, 17 Dec 2018 13:26:05 +0000 (13:26 +0000)
committerGerrit Code Review <gerrit@opnfv.org>
Mon, 17 Dec 2018 13:26:05 +0000 (13:26 +0000)
29 files changed:
ansible/build_yardstick_image.yml
ansible/group_vars/all.yml
ansible/install.yaml
ansible/prepare_openstack.yml
ansible/roles/add_repos_jumphost/tasks/Debian.yml
ansible/roles/build_yardstick_image/vars/main.yml
ansible/roles/configure_gui/tasks/main.yml
ansible/roles/configure_rabbitmq/tasks/main.yml
ansible/roles/configure_rabbitmq/templates/rabbitmq.config.j2 [deleted file]
ansible/roles/configure_rabbitmq/templates/user_definitions.json.j2 [deleted file]
ansible/roles/download_drivers/defaults/main.yml
ansible/roles/enable_iommu_on_boot/tasks/main.yml
ansible/roles/install_dependencies_jumphost/tasks/Debian.yml
ansible/roles/install_dependencies_jumphost/tasks/RedHat.yml
ansible/roles/install_dependencies_jumphost/tasks/Suse.yml
ansible/roles/install_dpdk/tasks/Debian.yml
ansible/roles/install_yardstick/tasks/main.yml
docker/Dockerfile_ubuntu18 [new file with mode: 0644]
docker/supervisor.sh
docs/release/release-notes/release-notes.rst
docs/testing/user/userguide/nsb/nsb-list-of-tcs.rst
docs/testing/user/userguide/nsb/tc_vfw_rfc2544.rst [new file with mode: 0644]
docs/testing/user/userguide/nsb/tc_vfw_rfc2544_correlated.rst [new file with mode: 0644]
docs/testing/user/userguide/nsb/tc_vfw_rfc3511.rst [new file with mode: 0644]
yardstick/benchmark/runners/iteration.py
yardstick/network_services/traffic_profile/base.py
yardstick/network_services/traffic_profile/ixia_rfc2544.py
yardstick/tests/unit/benchmark/runner/test_iteration.py [new file with mode: 0644]
yardstick/tests/unit/network_services/traffic_profile/test_base.py

index 072c12c..495a547 100644 (file)
       'amd64': disk1
       'arm64': uefi1
     boot_mode: "{{ boot_modes[YARD_IMG_ARCH] }}"
-    image_filename: "{{ release }}-server-cloudimg-{{ YARD_IMG_ARCH }}-{{ boot_mode }}.img"
-    image_path: "{{ release }}/current/{{ image_filename }}"
+    image_filename:
+      'xenial': "{{ release }}-server-cloudimg-{{ YARD_IMG_ARCH }}-{{ boot_mode }}.img"
+      'bionic': "{{ release }}-server-cloudimg-{{ YARD_IMG_ARCH }}.img"
+    image_path: "{{ release }}/current/{{ image_filename[release] }}"
     host: "{{ lookup('env', 'HOST')|default('cloud-images.ubuntu.com', true)}}"
     image_url: "{{ lookup('env', 'IMAGE_URL')|default('https://' ~ host ~ '/' ~ image_path, true) }}"
-    image_dest: "{{ workspace }}/{{ image_filename }}"
+    image_dest: "{{ workspace }}/{{ image_filename[release] }}"
     sha256sums_path: "{{ release }}/current/SHA256SUMS"
     sha256sums_filename: "{{ sha256sums_path|basename }}"
     sha256sums_url: "{{ lookup('env', 'SHA256SUMS_URL')|default('https://' ~ host ~ '/' ~ sha256sums_path, true) }}"
index 5965605..0e8ad5b 100644 (file)
@@ -1,9 +1,9 @@
 ---\r
 target_os: "Ubuntu"\r
 YARD_IMG_ARCH: "amd64"\r
-IMG_PROPERTY: "normal"\r
+IMG_PROPERTY: "{{ IMAGE_PROPERTY | default('normal') }}"\r
 clone_dest: /opt/tempT\r
-release: xenial\r
+release: "{{ OS_RELEASE  | default('xenial') }}"\r
 normal_image_file: "{{ workspace }}/yardstick-image.img"\r
 nsb_image_file: "{{ workspace }}/yardstick-nsb-image.img"\r
 ubuntu_image_file: /tmp/workspace/yardstick/yardstick-trusty-server.raw\r
index 01478fb..0c7ad7e 100644 (file)
@@ -21,7 +21,7 @@
 
   pre_tasks:
 
-    - name: Create NSB binaries directory, accesible to any user
+    - name: Create NSB binaries directory, accessible to any user
       file:
         path: "{{ nsb_dir }}"
         state: directory
         - installation_mode != inst_mode_container_pull
 
   roles:
-    - { role: add_repos_jumphost, when: installation_mode != inst_mode_container_pull }
-    - { role: install_dependencies_jumphost, when: installation_mode != inst_mode_container_pull }
+    - add_repos_jumphost
+    - install_dependencies_jumphost
     - { role: install_yardstick, when: installation_mode != inst_mode_container_pull }
     - { role: configure_uwsgi, when: installation_mode != inst_mode_container_pull }
     - { role: configure_nginx, when: installation_mode != inst_mode_container_pull }
     - { role: configure_gui, when: installation_mode != inst_mode_container_pull }
     - { role: download_trex, when: installation_mode != inst_mode_container_pull }
     - { role: install_trex, when: installation_mode != inst_mode_container_pull }
-    - { role: configure_rabbitmq, when: installation_mode != inst_mode_container_pull }
+    - { role: configure_rabbitmq, when: installation_mode == inst_mode_baremetal }
 
 
   post_tasks:
   hosts: jumphost
 
   tasks:
-    - include_role:
-        name: install_dependencies_jumphost
-      when: installation_mode == inst_mode_container_pull
-
     - include_role:
         name: docker
       when: installation_mode == inst_mode_container_pull
index 6f54ef5..c9067c9 100644 (file)
@@ -23,7 +23,6 @@
   include: build_yardstick_image.yml
   vars:
     YARD_IMG_ARCH: amd64
-    release: xenial
     img_property: nsb
 
 - name: Cleanup old OpenStack images and upload the new one
index 626f0b0..e156996 100644 (file)
@@ -71,7 +71,6 @@
       deb [arch={{ extra_arch }}] {{ extra_repo }} {{ ansible_distribution_release }} main universe multiverse restricted
       deb [arch={{ extra_arch }}] {{ extra_repo }} {{ ansible_distribution_release }}-updates main universe multiverse restricted
       deb [arch={{ extra_arch }}] {{ extra_repo }} {{ ansible_distribution_release }}-security main universe multiverse restricted
-      deb [arch={{ extra_arch }}] {{ extra_repo }} {{ ansible_distribution_release }}-proposed main universe multiverse restricted
   when: installation_mode == "container"
 
 - name: Remove the marker
index 6728e5a..3d40544 100644 (file)
@@ -16,11 +16,13 @@ boot_modes:
   'amd64': disk1\r
   'arm64': uefi1\r
 boot_mode: "{{ boot_modes[YARD_IMG_ARCH] }}"\r
-image_filename: "{{ release }}-server-cloudimg-{{ YARD_IMG_ARCH }}-{{ boot_mode }}.img"\r
-image_path: "{{ release }}/current/{{ image_filename }}"\r
+image_filename:\r
+  'xenial': "{{ release }}-server-cloudimg-{{ YARD_IMG_ARCH }}-{{ boot_mode }}.img"\r
+  'bionic': "{{ release }}-server-cloudimg-{{ YARD_IMG_ARCH }}.img"\r
+image_path: "{{ release }}/current/{{ image_filename[release] }}"\r
 host: "{{ lookup('env', 'HOST')|default('cloud-images.ubuntu.com', true)}}"\r
 image_url: "{{ lookup('env', 'IMAGE_URL')|default('https://' ~ host ~ '/' ~ image_path, true) }}"\r
-image_dest: "{{ workspace }}/{{ image_filename }}"\r
+image_dest: "{{ workspace }}/{{ image_filename[release] }}"\r
 sha256sums_path: "{{ release }}/current/SHA256SUMS"\r
 sha256sums_filename: "{{ sha256sums_path|basename }}"\r
 sha256sums_url: "{{ lookup('env', 'SHA256SUMS_URL')|default('https://' ~ host ~ '/' ~ sha256sums_path, true) }}"\r
index 846a9cb..665053c 100644 (file)
     state: directory
     recurse: yes
 
+- name: Remove /etc/nginx/yardstick/gui/dist directory if it exists
+  file:
+    path: /etc/nginx/yardstick/gui/dist
+    state: absent
+
 - name: Move dist to /etc/nginx/yardstick/gui
   shell:
     cmd: mv dist /etc/nginx/yardstick/gui
index 4ff4222..3ad60c1 100644 (file)
 # See the License for the specific language governing permissions and
 # limitations under the License.
 ---
-- name: Create rabbitmq configuration
-  template:
-    src: rabbitmq.config.j2
-    dest: /etc/rabbitmq/rabbitmq.config
-
-- name: Define user definitions file
-  template:
-    src: user_definitions.json.j2
-    dest: /etc/rabbitmq/definitions.json
-
 - name: Restart rabbitmq
   service:
     name: rabbitmq-server
 - name: rabbitmqctl start_app
   shell: rabbitmqctl start_app
 
-- name: Enable management plugin
-  shell: rabbitmq-plugins enable rabbitmq_management
+- name: Configure rabbitmq
+  rabbitmq_user:
+    user: yardstick
+    password: yardstick
+    configure_priv: .*
+    read_priv: .*
+    write_priv: .*
+    state: present
diff --git a/ansible/roles/configure_rabbitmq/templates/rabbitmq.config.j2 b/ansible/roles/configure_rabbitmq/templates/rabbitmq.config.j2
deleted file mode 100644 (file)
index 8f07edf..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
- [\r
-    {rabbitmq_management, [\r
-       {load_definitions, "/etc/rabbitmq/definitions.json"}\r
-    ]}\r
-].
\ No newline at end of file
diff --git a/ansible/roles/configure_rabbitmq/templates/user_definitions.json.j2 b/ansible/roles/configure_rabbitmq/templates/user_definitions.json.j2
deleted file mode 100644 (file)
index 7c811f1..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
- {\r
-    "users": [{\r
-        "name": "yardstick",\r
-        "password_hash": "XHp9fBOE3vjTEf7ktiUBHqefW2g=",\r
-        "hashing_algorithm": "rabbit_password_hashing_sha256",\r
-        "tags": ""\r
-    }],\r
-    "vhosts": [{\r
-        "name": "/"\r
-    }],\r
-    "permissions": [{\r
-        "user": "yardstick",\r
-        "vhost": "/",\r
-        "configure": ".*",\r
-        "write": ".*",\r
-        "read": ".*"\r
-    }],\r
-    "parameters": [],\r
-    "policies": [],\r
-    "queues": [],\r
-    "exchanges": [],\r
-    "bindings": []\r
-}\r
index ab68a3c..bf1e48a 100644 (file)
 # See the License for the specific language governing permissions and
 # limitations under the License.
 ---
-i40evf_version: "3.4.2"
+i40evf_version: "3.5.13"
 i40evf_gzfile: "i40evf-{{ i40evf_version }}.tar.gz"
 i40evf_url: "https://netix.dl.sourceforge.net/project/e1000/i40evf%20stable/{{ i40evf_version }}/{{ i40evf_gzfile }}"
 i40evf_dest: "{{ clone_dest }}/"
 i40evf_path: "{{ i40evf_dest }}/{{ i40evf_gzfile|regex_replace('[.]tar[.]gz$', '') }}"
 i40evf_checksum:
   "3.4.2": "sha256:a8e2a722fb2f8ac874cb39545a331761841f1724830ff1581d2012dd37314645"
+  "3.5.13": "sha256:e57b95b694c8480b905e72ea13caac8714d6bb0c9eabe37cca655505b808f033"
\ No newline at end of file
index e406fcc..188b329 100644 (file)
     iommu_boot_params: ' amd_iommu=on iommu=pt'
   when: hostvars[inventory_hostname]['ansible_system_vendor'] == "AuthenticAMD"
 
-- name: Define grub string for IOMMU
-  set_fact:
-    enable_iommu: 'GRUB_CMDLINE_LINUX="$GRUB_CMDLINE_LINUX{{ iommu_boot_params }}'
+- block:
+  - name: Define grub string for IOMMU
+    set_fact:
+      enable_iommu: 'GRUB_CMDLINE_LINUX="$GRUB_CMDLINE_LINUX{{ iommu_boot_params }}'
 
-- name: check if iommu is set by this role in {{ grub_file}}
-  lineinfile:
-    path: "{{ grub_file}}"
-    regexp: '{{ iommu_help_string }}'
-    line: '{{ iommu_help_string }}'
-    state: absent
-  check_mode: yes
-  register: is_nsb_iommu_role
-  ignore_errors: True
+  - name: check if iommu is set by this role in {{ grub_file}}
+    lineinfile:
+      path: "{{ grub_file}}"
+      regexp: '{{ iommu_help_string }}'
+      line: '{{ iommu_help_string }}'
+      state: absent
+    check_mode: yes
+    register: is_nsb_iommu_role
+    ignore_errors: True
 
-- name: Check if IOMMU is set by someone else
-  lineinfile:
-    path: "{{ grub_file}}"
-    regexp: "_iommu="
-    line: '{{ iommu_help_string }}'
-    state: absent
-  check_mode: yes
-  register: is_iommu
-  ignore_errors: True
+  - name: Check if IOMMU is set by someone else
+    lineinfile:
+      path: "{{ grub_file}}"
+      regexp: "_iommu="
+      line: '{{ iommu_help_string }}'
+      state: absent
+    check_mode: yes
+    register: is_iommu
+    ignore_errors: True
 
-- name: Send info that IOMMU is configured by someone else
-  debug:
-    msg: "INFO: NOT modified, IOMMU is already configured by someone."
-  when:
-    - not is_nsb_iommu_role.changed
-    - is_iommu.changed
+  - name: Send info that IOMMU is configured by someone else
+    debug:
+      msg: "INFO: NOT modified, IOMMU is already configured by someone."
+    when:
+      - not is_nsb_iommu_role.changed
+      - is_iommu.changed
 
-- name: Add IOMMU when it is not set
-  lineinfile:
-    path: "{{ grub_file }}"
-    regexp: "{{ iommu_help_string }}"
-    line: '{{ enable_iommu }}" {{ iommu_help_string }}'
-  when:
-    - not is_nsb_iommu_role.changed
-    - not is_iommu.changed
+  - name: Add IOMMU when it is not set
+    lineinfile:
+      path: "{{ grub_file }}"
+      regexp: "{{ iommu_help_string }}"
+      line: '{{ enable_iommu }}" {{ iommu_help_string }}'
+    when:
+      - not is_nsb_iommu_role.changed
+      - not is_iommu.changed
 
-- name: find boot grub.cfg
-  find:
-    paths: /boot
-    file_type: file
-    patterns: 'grub*.cfg'
-    recurse: yes
-  register: grub_files
+  - name: find boot grub.cfg
+    find:
+      paths: /boot
+      file_type: file
+      patterns: 'grub*.cfg'
+      recurse: yes
+    register: grub_files
 
-- include: manual_modify_grub.yml
-  # only tested on Ubuntu, kernel line is probably different on other distros
-  with_items: "{{ grub_files.files }}"
-  when: ansible_distribution == "Ubuntu"
+  - include: manual_modify_grub.yml
+    # only tested on Ubuntu, kernel line is probably different on other distros
+    with_items: "{{ grub_files.files }}"
+    when: ansible_distribution == "Ubuntu"
+  when: iommu_boot_params is defined
index 9baf7e5..6c3900d 100755 (executable)
   apt:
     update_cache: yes
 
+- name: Install dependency for Ubuntu 18
+  action: "{{ ansible_pkg_mgr }} name=libssl1.0-dev state=present"
+  when:
+    - ansible_distribution == 'Ubuntu'
+    - ansible_distribution_major_version|int >= 17
+
 - name: Install core packages
   action: "{{ ansible_pkg_mgr }} name={{ item }} state=present"
   with_items:
     - vim
     - libffi-dev
     - libfuse-dev
-    - libssl-dev
     - libxft-dev
     - libxml2-dev
     - libxss-dev
-    - libxslt-dev
     - libxslt1-dev
-    - libzmq-dev
+    - libzmq3-dev
     - qemu-user-static
     - qemu-utils
     - kpartx
     - python
     - python-setuptools
     - python-dev
-    - python-pip
     - python-libvirt
     - python-virtualenv
     - bridge-utils
@@ -54,7 +57,6 @@
     - uwsgi-plugin-python
     - supervisor
     - lsof
-    - nodejs
     - npm
     - rabbitmq-server
 
 - name: Remove useless packages from the cache
   apt:
     autoclean: yes
+
+# There is a bug with the easy install ansible module in Ubuntu 16.04 linux.
+# Refer https://github.com/ansible/ansible/issues/23534
+- name: Install pip
+  shell: easy_install -U pip
+  when:
+    - ansible_distribution == 'Ubuntu'
+    - ansible_distribution_major_version|int <= 16
+
+- name: Install python-pip
+  action: "{{ ansible_pkg_mgr }} name=python-pip state=present"
+  when:
+    - ansible_distribution == 'Ubuntu'
+    - ansible_distribution_major_version|int >= 17
+
+- name: Install required docker-py module
+  pip:
+    name: docker-py
+    state: latest
+  environment: "{{ proxy_env }}"
index af53c9c..7932ed9 100644 (file)
@@ -47,3 +47,9 @@
     - openssl
     - python-virtualenv
     - ccze
+
+# There is a bug with the easy install ansible module in suse linux.
+# Until this is fixed the shell command must be used
+# Refer https://github.com/ansible/ansible/issues/37296
+- name: Install pip
+  shell: easy_install -U pip
index 4f0c3c8..b76a0fb 100755 (executable)
@@ -17,6 +17,7 @@
   with_items:
     - libpcap-dev
     - pciutils
+    - libelf-dev
 
 - name: Install kernel headers
   action: "{{ ansible_pkg_mgr }} name=linux-headers-{{ dpdk_kernel }} state=present"
index 203acc3..f93f8ee 100644 (file)
     scope: global
     value: False
 
-# There is a bug with the easy install ansible module in suse linux.
-# Until this is fixed the shell command must be used
-- name: Install pip
-  shell: easy_install -U pip
-#    easy_install:
-#    name: pip
-#    state: latest
-
 - name: Install Yardstick requirements (venv)
   pip:
     requirements: "{{ yardstick_dir }}/requirements.txt"
diff --git a/docker/Dockerfile_ubuntu18 b/docker/Dockerfile_ubuntu18
new file mode 100644 (file)
index 0000000..a9dfaeb
--- /dev/null
@@ -0,0 +1,62 @@
+##############################################################################
+# Copyright (c) 2015 Ericsson AB and others.
+#
+# All rights reserved. This program and the accompanying materials
+# 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
+##############################################################################
+
+FROM ubuntu:18.04
+
+LABEL image=opnfv/yardstick
+
+ARG BRANCH=master
+
+# GIT repo directory
+ENV REPOS_DIR="/home/opnfv/repos" \
+    IMAGE_DIR="/home/opnfv/images/"
+
+# Set work directory
+
+# Yardstick repo
+ENV YARDSTICK_REPO_DIR="${REPOS_DIR}/yardstick/" \
+    RELENG_REPO_DIR="${REPOS_DIR}/releng" \
+    STORPERF_REPO_DIR="${REPOS_DIR}/storperf"
+
+RUN apt-get update && apt-get install -y git python python-setuptools python-pip iputils-ping && apt-get -y autoremove && apt-get clean
+
+RUN pip install appdirs==1.4.0 pyopenssl==17.5.0 openstacksdk==0.9.17 python-openstackclient==3.12.1 python-heatclient==1.11.1 ansible==2.5.5
+
+RUN mkdir -p ${REPOS_DIR}
+
+RUN git config --global http.sslVerify false
+#For developers: To test your changes you must comment out the git clone for ${YARDSTICK_REPO_DIR}.
+#You must also uncomment the RUN and COPY commands below.
+#You must run docker build from your yardstick directory on the host.
+RUN git clone --depth 1 -b $BRANCH https://gerrit.opnfv.org/gerrit/yardstick ${YARDSTICK_REPO_DIR}
+#RUN mkdir ${YARDSTICK_REPO_DIR}
+#COPY ./ ${YARDSTICK_REPO_DIR}
+RUN git clone --depth 1 https://gerrit.opnfv.org/gerrit/releng ${RELENG_REPO_DIR}
+RUN git clone --depth 1 -b $BRANCH https://gerrit.opnfv.org/gerrit/storperf ${STORPERF_REPO_DIR}
+
+RUN ansible-playbook -i ${YARDSTICK_REPO_DIR}/ansible/install-inventory.ini -c local -vvv -e INSTALLATION_MODE="container" ${YARDSTICK_REPO_DIR}/ansible/install.yaml
+
+RUN ${YARDSTICK_REPO_DIR}/docker/supervisor.sh
+
+RUN echo "daemon off;" >> /etc/nginx/nginx.conf
+# nginx=5000, rabbitmq=5672
+EXPOSE 5000 5672
+
+ADD http://download.cirros-cloud.net/0.3.5/cirros-0.3.5-x86_64-disk.img ${IMAGE_DIR}
+ADD http://cloud-images.ubuntu.com/xenial/current/xenial-server-cloudimg-amd64-disk1.img ${IMAGE_DIR}
+
+# For developers: when `docker build ...` is running from YARDSTICK_REPO_DIR, please change
+#                 path `./exec_tests.sh` -> `./docker/exec_tests.sh``.
+COPY ./exec_tests.sh /usr/local/bin/
+
+ENV NSB_DIR="/opt/nsb_bin"
+ENV PYTHONPATH="${PYTHONPATH}:${NSB_DIR}/trex_client:${NSB_DIR}/trex_client/stl"
+
+WORKDIR ${REPOS_DIR}
+CMD ["/usr/bin/supervisord"]
index 44e34fb..bd17cfb 100755 (executable)
 
 # nginx service start when boot
 supervisor_config='/etc/supervisor/conf.d/yardstick.conf'
+rabbitmq_config='/etc/supervisor/conf.d/rabbitmq.conf'
 
 if [[ ! -e "${supervisor_config}" ]]; then
+
     cat << EOF > "${supervisor_config}"
 [supervisord]
 nodaemon = true
@@ -22,8 +24,18 @@ command = service nginx restart
 [program:yardstick_uwsgi]
 directory = /etc/yardstick
 command = uwsgi -i yardstick.ini
+EOF
+
+fi
+
+if [[ ! -e "${rabbitmq_config}" ]]; then
 
+    cat << EOF > "${rabbitmq_config}"
 [program:rabbitmq]
-command = service rabbitmq-server restart
+command = /bin/bash -c "service rabbitmq-server restart
+    rabbitmqctl start_app
+    rabbitmqctl add_user yardstick yardstick
+    rabbitmqctl set_permissions -p / yardstick '.*' '.*'"
 EOF
+
 fi
index 4b3f12b..914daa3 100644 (file)
@@ -33,6 +33,9 @@ Version History
 | November 9, 2018  | 7.0.0     | Yardstick for Gambia release    |
 |                   |           |                                 |
 +-------------------+-----------+---------------------------------+
+| December 14, 2018 | 7.1.0     | Yardstick for Gambia release    |
+|                   |           |                                 |
++-------------------+-----------+---------------------------------+
 
 
 Important Notes
@@ -111,19 +114,19 @@ Release Data
 | **Project**                    | Yardstick             |
 |                                |                       |
 +--------------------------------+-----------------------+
-| **Repo/tag**                   | yardstick/opnfv-7.0.0 |
+| **Repo/tag**                   | yardstick/opnfv-7.1.0 |
 |                                |                       |
 +--------------------------------+-----------------------+
-| **Yardstick Docker image tag** | opnfv-7.0.0           |
+| **Yardstick Docker image tag** | opnfv-7.1.0           |
 |                                |                       |
 +--------------------------------+-----------------------+
-| **Release designation**        | Gambia 7.0            |
+| **Release designation**        | Gambia 7.1            |
 |                                |                       |
 +--------------------------------+-----------------------+
-| **Release date**               | November 9, 2018      |
+| **Release date**               | December 14, 2018     |
 |                                |                       |
 +--------------------------------+-----------------------+
-| **Purpose of the delivery**    | OPNFV Gambia 7.0.0    |
+| **Purpose of the delivery**    | OPNFV Gambia 7.1.0    |
 |                                |                       |
 +--------------------------------+-----------------------+
 
@@ -269,7 +272,7 @@ List of Scenarios
 New Test cases
 --------------
 
-.. note:: Yardstick Gambia 7.0.0 adds no new test cases.
+.. note:: Yardstick Gambia 7.1.0 adds no new test cases.
 
 * Generic NFVI test cases
 
@@ -326,7 +329,7 @@ Feature additions
 Scenario Matrix
 ===============
 
-For Gambia 7.0.0, Yardstick was tested on the following scenarios:
+For Gambia 7.1.0, Yardstick was tested on the following scenarios:
 
 +-------------------------+------+---------+----------+------+
 |        Scenario         | Apex | Compass | Fuel-arm | Fuel |
@@ -370,58 +373,35 @@ Known Issues/Faults
 Corrected Faults
 ----------------
 
-Gambia 7.0.0:
+Gambia 7.1.0:
 
 +--------------------+--------------------------------------------------------------------------+
 | **JIRA REFERENCE** |                             **DESCRIPTION**                              |
 +====================+==========================================================================+
-| YARDSTICK-1137     | Fix CLI argument handling in nsb_setup.sh                                |
-+--------------------+--------------------------------------------------------------------------+
-| YARDSTICK-1220     | Get stats for multiple port simultaneously                               |
-+--------------------+--------------------------------------------------------------------------+
-| YARDSTICK-1260     | Added missing functionality to start VM and access it using SSH keys     |
-|                    | in Standalone contexts.                                                  |
-+--------------------+--------------------------------------------------------------------------+
-| YARDSTICK-1298     | Allows for in-line overriding/modification of traffic profile variables  |
-|                    | from the testcase file.                                                  |
+| YARDSTICK-1241     | Update NSB PROX devguide.                                                |
 +--------------------+--------------------------------------------------------------------------+
-| YARDSTICK-1368     | Updated existing test cases in Yardstick to minimize changes done        |
-|                    | manually to run standalone tests for Trex.                               |
+| YARDSTICK-1458     | NSB NFVi PROX Should report realtime port activity not historical data.  |
 +--------------------+--------------------------------------------------------------------------+
-| YARDSTICK-1389     | Add status filed for RFC2544 TC iterations                               |
+| YARDSTICK-1471     | Add Testcase Prox Standalone SRIOV.                                      |
 +--------------------+--------------------------------------------------------------------------+
-| YARDSTICK-1395     | Update 'configure_uwsgi' role to work in baremetal/container modes.      |
+| YARDSTICK-1475     | Adding Testcase for Prox Stanalone OvS-DPDK.                             |
 +--------------------+--------------------------------------------------------------------------+
-| YARDSTICK-1402     | Change IP assignment for VM to static for standalone context             |
+| YARDSTICK-1500     | Adding Testcase for Prox L2FWD PktTouch Stanalone OvS-DPDK.              |
 +--------------------+--------------------------------------------------------------------------+
-| YARDSTICK-1404     | CPU Utilization for VNF and traffic generator are now graphed on Grafana |
+| YARDSTICK-1517     | Missing opnfv "os-ovn-nofeature-ha" scenario test suite.                 |
 +--------------------+--------------------------------------------------------------------------+
-| YARDSTICK-1411     | Fix Yardstick Docker image ARM build                                     |
+| YARDSTICK-l526     | Run testcase 074 result overridden by job status.                        |
 +--------------------+--------------------------------------------------------------------------+
-| YARDSTICK-1414     | Update the pinned sampleVNF version to use a commit instead of a branch  |
+| YARDSTICK-1547     | Adding scale up test case for l3fwd OvS-DPDK.                            |
 +--------------------+--------------------------------------------------------------------------+
-| YARDSTICK-1418     | NSB PROX NFVi test now stops after reaching expected precision           |
+| YARDSTICK-1560     | Fix pip environment.                                                     |
 +--------------------+--------------------------------------------------------------------------+
-| YARDSTICK-1457     | Fix influxdb "field type conflict" error                                 |
+| YARDSTICK-1561     | L3FWD Gradana Dashboards Out-of-date and incorrect.                      |
 +--------------------+--------------------------------------------------------------------------+
-| YARDSTICK-1458     | Update Grafana to display "real-time" data instead of historical data.   |
-+--------------------+--------------------------------------------------------------------------+
-| YARDSTICK-1462     | NSB: Add OvS 2.8.1 support in SA context                                 |
-+--------------------+--------------------------------------------------------------------------+
-| YARDSTICK-1492     | Make OvS server to listen on TCP                                         |
-+--------------------+--------------------------------------------------------------------------+
-| YARDSTICK-1493     | The RX queues number is hard-codded and cannot be changed                |
-+--------------------+--------------------------------------------------------------------------+
-
 
-Gambia 7.0.0 known restrictions/issues
+Gambia 7.1.0 known restrictions/issues
 ======================================
 
-+-----------+-----------------------+------------------+
-| Installer |       Scenario        |      Issue       |
-+===========+=======================+==================+
-|   apex    |  os-ovn-nofeature-ha  |  YARDSTICK-1517  |
-+-----------+-----------------------+------------------+
 
 Useful links
 ============
index 723cd6f..52b738f 100644 (file)
@@ -33,3 +33,6 @@ NSB PROX Test Case Descriptions
    tc_epc_saegw_tput_relocation_landslide
    tc_epc_network_service_request_landslide
    tc_epc_ue_service_request_landslide
+   tc_vfw_rfc2544.rst
+   tc_vfw_rfc2544_correlated.rst
+   tc_vfw_rfc3511.rst
diff --git a/docs/testing/user/userguide/nsb/tc_vfw_rfc2544.rst b/docs/testing/user/userguide/nsb/tc_vfw_rfc2544.rst
new file mode 100644 (file)
index 0000000..139990b
--- /dev/null
@@ -0,0 +1,189 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International
+.. License.
+.. http://creativecommons.org/licenses/by/4.0
+.. (c) OPNFV, 2018 Intel Corporation.
+
+************************************************
+Yardstick Test Case Description: NSB vFW RFC2544
+************************************************
+
++------------------------------------------------------------------------------+
+| NSB vFW test for VNF characterization                                        |
+|                                                                              |
++---------------+--------------------------------------------------------------+
+| test case id  | tc_{context}_rfc2544_ipv4_1rule_1flow_{pkt_size}_{tg_type}   |
+|               |                                                              |
+|               | * context = baremetal, heat, heat_external, ovs, sriov       |
+|               |             heat_sriov_external contexts;                    |
+|               | * tg_type = ixia (context != heat,heat_sriov_external),      |
+|               |             trex;                                            |
+|               | * pkt_size = 64B - all contexts;                             |
+|               |              128B, 256B, 512B, 1024B, 1280B, 1518B -         |
+|               |              (context = heat, tg_type = ixia)                |
+|               |                                                              |
++---------------+--------------------------------------------------------------+
+| metric        | * Network Throughput;                                        |
+|               | * TG Packets Out;                                            |
+|               | * TG Packets In;                                             |
+|               | * TG Latency;                                                |
+|               | * VNF Packets Out;                                           |
+|               | * VNF Packets In;                                            |
+|               | * VNF Packets Fwd;                                           |
+|               | * Dropped packets;                                           |
+|               |                                                              |
++---------------+--------------------------------------------------------------+
+| test purpose  | The VFW RFC2544 tests measure performance characteristics of |
+|               | the SUT (multiple ports) and sends UDP bidirectional traffic |
+|               | from all TG ports to SampleVNF vFW application. The          |
+|               | application forwards received traffic based on rules         |
+|               | provided by the user in the TC configuration and default     |
+|               | rules created by vFW to send traffic from uplink ports to    |
+|               | downlink and voice versa.                                    |
+|               |                                                              |
++---------------+--------------------------------------------------------------+
+| configuration | The 2 ports RFC2544 test cases are listed below:             |
+|               |                                                              |
+|               | * tc_baremetal_rfc2544_ipv4_1rule_1flow_64B_ixia.yaml        |
+|               | * tc_baremetal_rfc2544_ipv4_1rule_1flow_64B_trex.yaml        |
+|               | * tc_heat_external_rfc2544_ipv4_1rule_1flow_1024B_ixia.yaml  |
+|               | * tc_heat_external_rfc2544_ipv4_1rule_1flow_1280B_ixia.yaml  |
+|               | * tc_heat_external_rfc2544_ipv4_1rule_1flow_128B_ixia.yaml   |
+|               | * tc_heat_external_rfc2544_ipv4_1rule_1flow_1518B_ixia.yaml  |
+|               | * tc_heat_external_rfc2544_ipv4_1rule_1flow_256B_ixia.yaml   |
+|               | * tc_heat_external_rfc2544_ipv4_1rule_1flow_512B_ixia.yaml   |
+|               | * tc_heat_external_rfc2544_ipv4_1rule_1flow_64B_ixia.yaml    |
+|               | * tc_heat_external_rfc2544_ipv4_1rule_1flow_64B_trex.yaml    |
+|               | * tc_heat_sriov_external_rfc2544_ipv4_1rule_1flow_64B_trex.  |
+|               |   yaml                                                       |
+|               | * tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex.yaml             |
+|               | * tc_ovs_rfc2544_ipv4_1rule_1flow_64B_ixia.yaml              |
+|               | * tc_ovs_rfc2544_ipv4_1rule_1flow_64B_trex.yaml              |
+|               | * tc_sriov_rfc2544_ipv4_1rule_1flow_64B_ixia.yaml            |
+|               | * tc_sriov_rfc2544_ipv4_1rule_1flow_64B_trex.yaml            |
+|               |                                                              |
+|               | The 4 ports RFC2544 test cases are listed below:             |
+|               |                                                              |
+|               | * tc_baremetal_rfc2544_ipv4_1rule_1flow_64B_ixia_4port.yaml  |
+|               | * tc_tc_baremetal_rfc2544_ipv4_1rule_1flow_64B_trex_4port.   |
+|               |   yaml                                                       |
+|               | * tc_tc_heat_external_rfc2544_ipv4_1rule_1flow_64B_trex_4    |
+|               |   port.yaml                                                  |
+|               | * tc_tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_4port.yaml    |
+|               |                                                              |
+|               | The scale-up RFC2544 test cases are listed below:            |
+|               |                                                              |
+|               | * tc_tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_scale-up.yaml |
+|               |                                                              |
+|               | The scale-out RFC2544 test cases are listed below:           |
+|               |                                                              |
+|               | * tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_scale_out.yaml   |
+|               |                                                              |
+|               | Test duration is set as 30 sec for each test and default     |
+|               | number of rules are applied. These can be configured         |
+|               |                                                              |
++---------------+--------------------------------------------------------------+
+| test tool     | The vFW is a DPDK application that performs basic filtering  |
+|               | for malformed packets and dynamic packet filtering of        |
+|               | incoming packets using the connection tracker library.       |
+|               |                                                              |
++---------------+--------------------------------------------------------------+
+| applicability | The vFW RFC2544 test cases can be configured with different: |
+|               |                                                              |
+|               |  * packet sizes;                                             |
+|               |  * test duration;                                            |
+|               |  * tolerated loss;                                           |
+|               |  * traffic flows;                                            |
+|               |  * rules;                                                    |
+|               |                                                              |
+|               | Default values exist.                                        |
+|               |                                                              |
++---------------+--------------------------------------------------------------+
+| pre-test      | For OpenStack test case image (yardstick-samplevnf) needs    |
+| conditions    | to be installed into Glance with vFW and DPDK included in    |
+|               | it (NSB install).                                            |
+|               |                                                              |
+|               | For Baremetal tests cases vFW and DPDK must be installed on  |
+|               | the hosts where the test is executed. The pod.yaml file must |
+|               | have the necessary system and NIC information.               |
+|               |                                                              |
+|               | For standalone (SA) SRIOV/OvS test cases the                 |
+|               | yardstick-samplevnf image needs to be installed on hosts and |
+|               | pod.yaml file must be provided with necessary system, NIC    |
+|               | information.                                                 |
+|               |                                                              |
++---------------+--------------------------------------------------------------+
+| test sequence | Description and expected result                              |
+|               |                                                              |
++---------------+--------------------------------------------------------------+
+| step 1        | For Baremetal test: The TG (except IXIA) and VNF are started |
+|               | on the hosts based on the pod file.                          |
+|               |                                                              |
+|               | For Heat test: Two host VMs are booted, as Traffic generator |
+|               | and VNF(vFW) based on the test flavor. In case of scale-out  |
+|               | scenario the multiple VNF VMs will be started.               |
+|               |                                                              |
+|               | For Heat external test: vFW VM is booted and TG (except IXIA)|
+|               | generator is started on the external host based on the pod   |
+|               | file. In case of scale-out scenario the multiple VNF VMs     |
+|               | will be deployed.                                            |
+|               |                                                              |
+|               | For Heat SRIOV external test: vFW VM is booted with network  |
+|               | interfaces of `direct` type which are mapped to VFs that are |
+|               | available to OpenStack. TG (except IXIA) is started on the   |
+|               | external host based on the pod file. In case of scale-out    |
+|               | scenario the multiple VNF VMs will be deployed.              |
+|               |                                                              |
+|               | For SRIOV test: VF ports are created on host's PFs specified |
+|               | in the TC file and VM is booed using those ports and image   |
+|               | provided in the configuration. TG (except IXIA) is started   |
+|               | on other host connected to VNF machine based on the pod      |
+|               | file. The vFW is started in the booted VM. In case of        |
+|               | scale-out scenario the multiple VNF VMs will be created.     |
+|               |                                                              |
+|               | For OvS-DPDK test: OvS DPDK switch is started and bridges    |
+|               | are created with ports specified in the TC file. DPDK vHost  |
+|               | ports are added to corresponding bridge and VM is booed      |
+|               | using those ports and image provided in the configuration.   |
+|               | TG (except IXIA) is started on other host connected to VNF   |
+|               | machine based on the pod file. The vFW is started in the     |
+|               | booted VM. In case of scale-out scenario the multiple VNF    |
+|               | VMs will be deployed.                                        |
+|               |                                                              |
++---------------+--------------------------------------------------------------+
+| step 2        | Yardstick is connected with the TG and VNF by using ssh (in  |
+|               | case of IXIA TG is connected via TCL interface). The test    |
+|               | will resolve the topology and instantiate all VNFs           |
+|               | and TG and collect the KPI's/metrics.                        |
+|               |                                                              |
++---------------+--------------------------------------------------------------+
+| step 3        | The TG will send packets to the VNFs. If the number of       |
+|               | dropped packets is more than the tolerated loss the line     |
+|               | rate or throughput is halved. This is done until the dropped |
+|               | packets are within an acceptable tolerated loss.             |
+|               |                                                              |
+|               | The KPI is the number of packets per second for different    |
+|               | packet size with an accepted minimal packet loss for the     |
+|               | default configuration.                                       |
+|               |                                                              |
++---------------+--------------------------------------------------------------+
+| step 4        | In Baremetal test: The test quits the application and unbind |
+|               | the DPDK ports.                                              |
+|               |                                                              |
+|               | In Heat test: All VNF VMs and TG are deleted on test         |
+|               | completion.                                                  |
+|               |                                                              |
+|               | In SRIOV test: The deployed VM with vFW is destroyed on the  |
+|               | host and TG (exclude IXIA) is stopped.                       |
+|               |                                                              |
+|               | In Heat SRIOV test: The deployed VM with vFW is destroyed,   |
+|               | VFs are released and TG (exclude IXIA) is stopped.           |
+|               |                                                              |
+|               | In OvS test: The deployed VM with vFW is destroyed on the    |
+|               | host and OvS DPDK switch is stopped and ports are unbinded.  |
+|               | The TG (exclude IXIA) is stopped.                            |
+|               |                                                              |
++---------------+--------------------------------------------------------------+
+| test verdict  | The test case will achieve a Throughput with an accepted     |
+|               | minimal tolerated packet loss.                               |
++---------------+--------------------------------------------------------------+
+
diff --git a/docs/testing/user/userguide/nsb/tc_vfw_rfc2544_correlated.rst b/docs/testing/user/userguide/nsb/tc_vfw_rfc2544_correlated.rst
new file mode 100644 (file)
index 0000000..de49090
--- /dev/null
@@ -0,0 +1,130 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International
+.. License.
+.. http://creativecommons.org/licenses/by/4.0
+.. (c) OPNFV, 2018 Intel Corporation.
+
+*************************************************************
+Yardstick Test Case Description: NSB vFW RFC2544 (correlated)
+*************************************************************
+
++------------------------------------------------------------------------------+
+| NSB vFW test for VNF characterization using correlated traffic               |
+|                                                                              |
++---------------+--------------------------------------------------------------+
+| test case id  | tc_{context}_rfc2544_ipv4_1rule_1flow_64B_trex_corelated     |
+|               |                                                              |
+|               | * context = baremetal, heat                                  |
+|               |                                                              |
++---------------+--------------------------------------------------------------+
+| metric        | * Network Throughput;                                        |
+|               | * TG Packets Out;                                            |
+|               | * TG Packets In;                                             |
+|               | * TG Latency;                                                |
+|               | * VNF Packets Out;                                           |
+|               | * VNF Packets In;                                            |
+|               | * VNF Packets Fwd;                                           |
+|               | * Dropped packets;                                           |
+|               |                                                              |
+|               | NOTE: For correlated TCs the TG metrics are available on     |
+|               | uplink ports.                                                |
+|               |                                                              |
++---------------+--------------------------------------------------------------+
+| test purpose  | The VFW RFC2544 correlated tests measure performance         |
+|               | characteristics of the SUT (multiple ports) and sends UDP    |
+|               | traffic from uplink TG ports to SampleVNF vFW application.   |
+|               | The application forwards received traffic from uplink ports  |
+|               | to downlink ports based on rules provided by the user in the |
+|               | TC configuration and default rules created by vFW. The VNF   |
+|               | downlink traffic is received by another UDPReplay VNF and it |
+|               | is mirrored back to the VNF on the same port. Finally, the   |
+|               | traffic is received back to the TG uplink port.              |
+|               |                                                              |
++---------------+--------------------------------------------------------------+
+| configuration | The 2 ports RFC2544 correlated test cases are listed below:  |
+|               |                                                              |
+|               | * tc_baremetal_rfc2544_ipv4_1rule_1flow_64B_trex_corelated   |
+|               |   _traffic.yaml                                              |
+|               |                                                              |
+|               | Multiple VNF (2, 4, 10) RFC2544 correlated test cases are    |
+|               | listed below:                                                |
+|               |                                                              |
+|               | * tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated       |
+|               |   _scale_10.yaml                                             |
+|               | * tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_scale |
+|               |   _2.yaml                                                    |
+|               | * tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_scale |
+|               |   _4.yaml                                                    |
+|               |                                                              |
+|               | The scale-out RFC2544 test cases are listed below:           |
+|               |                                                              |
+|               | * tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_scale |
+|               |   _out.yaml                                                  |
+|               |                                                              |
+|               | Test duration is set as 30 sec for each test and default     |
+|               | number of rules are applied. These can be configured         |
+|               |                                                              |
++---------------+--------------------------------------------------------------+
+| test tool     | The vFW is a DPDK application that performs basic filtering  |
+|               | for malformed packets and dynamic packet filtering of        |
+|               | incoming packets using the connection tracker library.       |
+|               |                                                              |
++---------------+--------------------------------------------------------------+
+| applicability | The vFW RFC2544 test cases can be configured with different: |
+|               |                                                              |
+|               |  * packet sizes;                                             |
+|               |  * test duration;                                            |
+|               |  * tolerated loss;                                           |
+|               |  * traffic flows;                                            |
+|               |  * rules;                                                    |
+|               |                                                              |
+|               | Default values exist.                                        |
+|               |                                                              |
++---------------+--------------------------------------------------------------+
+| pre-test      | For OpenStack test case image (yardstick-samplevnf) needs    |
+| conditions    | to be installed into Glance with vFW and DPDK included in    |
+|               | it (NSB install).                                            |
+|               |                                                              |
+|               | For Baremetal tests cases vFW and DPDK must be installed on  |
+|               | the hosts where the test is executed. The pod.yaml file must |
+|               | have the necessary system and NIC information.               |
+|               |                                                              |
++---------------+--------------------------------------------------------------+
+| test sequence | Description and expected result                              |
+|               |                                                              |
++---------------+--------------------------------------------------------------+
+| step 1        | For Baremetal test: The TG (except IXIA), vFW and UDPReplay  |
+|               | VNFs are started on the hosts based on the pod file.         |
+|               |                                                              |
+|               | For Heat test: Three host VMs are booted, as Traffic         |
+|               | generator, vFW and UDPReplay VNF(vFW) based on the test      |
+|               | flavor. In case of scale-out scenario the multiple vFW VNF   |
+|               | VMs will be started.                                         |
+|               |                                                              |
++---------------+--------------------------------------------------------------+
+| step 2        | Yardstick is connected with the TG, vFW and UDPReplay VNF by |
+|               | using ssh (in case of IXIA TG is connected via TCL           |
+|               | interface). The test will resolve the topology and           |
+|               | instantiate all VNFs and TG and collect the KPI's/metrics.   |
+|               |                                                              |
++---------------+--------------------------------------------------------------+
+| step 3        | The TG will send packets to the VNFs. If the number of       |
+|               | dropped packets is more than the tolerated loss the line     |
+|               | rate or throughput is halved. This is done until the dropped |
+|               | packets are within an acceptable tolerated loss.             |
+|               |                                                              |
+|               | The KPI is the number of packets per second for 64B packet   |
+|               | size with an accepted minimal packet loss for the default    |
+|               | configuration.                                               |
+|               |                                                              |
++---------------+--------------------------------------------------------------+
+| step 4        | In Baremetal test: The test quits the application and unbind |
+|               | the DPDK ports.                                              |
+|               |                                                              |
+|               | In Heat test: All VNF VMs and TG are deleted on test         |
+|               | completion.                                                  |
+|               |                                                              |
++---------------+--------------------------------------------------------------+
+| test verdict  | The test case will achieve a Throughput with an accepted     |
+|               | minimal tolerated packet loss.                               |
++---------------+--------------------------------------------------------------+
+
diff --git a/docs/testing/user/userguide/nsb/tc_vfw_rfc3511.rst b/docs/testing/user/userguide/nsb/tc_vfw_rfc3511.rst
new file mode 100644 (file)
index 0000000..9051fc4
--- /dev/null
@@ -0,0 +1,133 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International
+.. License.
+.. http://creativecommons.org/licenses/by/4.0
+.. (c) OPNFV, 2018 Intel Corporation.
+
+*******************************************************
+Yardstick Test Case Description: NSB vFW RFC3511 (HTTP)
+*******************************************************
+
++------------------------------------------------------------------------------+
+| NSB vFW test for VNF characterization based on RFC3511 and IXIA              |
+|                                                                              |
++---------------+--------------------------------------------------------------+
+| test case id  | tc_{context}_http_ixload_{http_size}_Requests-65000_{type}   |
+|               |                                                              |
+|               | * context = baremetal, heat_external                         |
+|               | * http_size = 1b, 4k, 64k, 256k, 512k, 1024k payload size    |
+|               | * type = Concurrency, Connections, Throughput                |
+|               |                                                              |
++---------------+--------------------------------------------------------------+
+| metric        | * HTTP Total Throughput (Kbps);                              |
+|               | * HTTP Simulated Users;                                      |
+|               | * HTTP Concurrent Connections;                               |
+|               | * HTTP Connection Rate;                                      |
+|               | * HTTP Transaction Rate                                      |
+|               |                                                              |
++---------------+--------------------------------------------------------------+
+| test purpose  | The vFW RFC3511 tests measure performance characteristics of |
+|               | the SUT by sending the HTTP traffic from uplink to downlink  |
+|               | TG ports through vFW VNF. The application forwards received  |
+|               | traffic based on rules provided by the user in the TC        |
+|               | configuration and default rules created by vFW to send       |
+|               | traffic from uplink ports to downlink and voice versa.       |
+|               |                                                              |
++---------------+--------------------------------------------------------------+
+| configuration | The 2 ports RFC3511 test cases are listed below:             |
+|               |                                                              |
+|               | * tc_baremetal_http_ixload_1024k_Requests-65000              |
+|               |   _Concurrency.yaml                                          |
+|               | * tc_baremetal_http_ixload_1b_Requests-65000                 |
+|               |   _Concurrency.yaml                                          |
+|               | * tc_baremetal_http_ixload_256k_Requests-65000               |
+|               |   _Concurrency.yaml                                          |
+|               | * tc_baremetal_http_ixload_4k_Requests-65000                 |
+|               |   _Concurrency.yaml                                          |
+|               | * tc_baremetal_http_ixload_512k_Requests-65000               |
+|               |   _Concurrency.yaml                                          |
+|               | * tc_baremetal_http_ixload_64k_Requests-65000                |
+|               |   _Concurrency.yaml                                          |
+|               | * tc_heat_external_http_ixload_1b_Requests-10Gbps            |
+|               |   _Throughput.yaml                                           |
+|               | * tc_heat_external_http_ixload_1b_Requests-65000             |
+|               |   _Concurrency.yaml                                          |
+|               | * tc_heat_external_http_ixload_1b_Requests-65000             |
+|               |   _Connections.yaml                                          |
+|               |                                                              |
+|               | The 4 ports RFC3511 test cases are listed below:             |
+|               |                                                              |
+|               | * tc_baremetal_http_ixload_1b_Requests-65000                 |
+|               |   _Concurrency_4port.yaml                                    |
+|               |                                                              |
++---------------+--------------------------------------------------------------+
+| test tool     | The vFW is a DPDK application that performs basic filtering  |
+|               | for malformed packets and dynamic packet filtering of        |
+|               | incoming packets using the connection tracker library.       |
+|               |                                                              |
++---------------+--------------------------------------------------------------+
+| applicability | The vFW RFC3511 test cases can be configured with different: |
+|               |                                                              |
+|               |  * http payload sizes;                                       |
+|               |  * traffic flows;                                            |
+|               |  * rules;                                                    |
+|               |                                                              |
+|               | Default values exist.                                        |
+|               |                                                              |
++---------------+--------------------------------------------------------------+
+| pre-test      | For OpenStack test case image (yardstick-samplevnf) needs    |
+| conditions    | to be installed into Glance with vFW and DPDK included in    |
+|               | it (NSB install).                                            |
+|               |                                                              |
+|               | For Baremetal tests cases vFW and DPDK must be installed on  |
+|               | the hosts where the test is executed. The pod.yaml file must |
+|               | have the necessary system and NIC information.               |
+|               |                                                              |
++---------------+--------------------------------------------------------------+
+| test sequence | Description and expected result                              |
+|               |                                                              |
++---------------+--------------------------------------------------------------+
+| step 1        | For Baremetal test: The vFW VNF is started on the hosts      |
+|               | based on the pod file.                                       |
+|               |                                                              |
+|               | For Heat external test: The vFW VM are deployed and booted.  |
+|               |                                                              |
++---------------+--------------------------------------------------------------+
+| step 2        | Yardstick is connected with the TG (IxLoad) via IxLoad API   |
+|               | and VNF by using ssh. The test will resolve the topology and |
+|               | instantiate all VNFs and TG and collect the KPI's/metrics.   |
+|               |                                                              |
++---------------+--------------------------------------------------------------+
+| step 3        | The TG simulates HTTP traffic based on selected type of TC.  |
+|               |                                                              |
+|               | Concurrency:                                                 |
+|               |   The TC attempts to simulate some number of human users.    |
+|               |   The simulated users are gradually brought online until 64K |
+|               |   users is met (the Ramp-Up phase), then taken offline (the  |
+|               |   Ramp Down phase).                                          |
+|               |                                                              |
+|               | Connections:                                                 |
+|               |   The TC creates some number of HTTP connections per second. |
+|               |   It will attempt to generate the 64K of HTTP connections    |
+|               |   per second.                                                |
+|               |                                                              |
+|               | Throughput:                                                  |
+|               |   TC simultaneously transmits and receives TCP payload       |
+|               |   (bytes) at a certain rate measured in Megabits per second  |
+|               |   (Mbps), Kilobits per second (Kbps), or Gigabits per        |
+|               |   second. The 10 Gbits is default throughput.                |
+|               |                                                              |
+|               | At the end of the TC, the KPIs are collected and stored      |
+|               | (depends on the selected dispatcher).                        |
+|               |                                                              |
++---------------+--------------------------------------------------------------+
+| step 4        | In Baremetal test: The test quits the application and        |
+|               | unbinds the DPDK ports.                                      |
+|               |                                                              |
+|               | In Heat test: All VNF VMs are deleted and connections to TG  |
+|               | are terminated.                                              |
+|               |                                                              |
++---------------+--------------------------------------------------------------+
+| test verdict  | The test case will try to achieve the configured HTTP        |
+|               | Concurrency/Throughput/Connections.                          |
++---------------+--------------------------------------------------------------+
+
index 4c88f36..58ab06a 100644 (file)
@@ -96,6 +96,7 @@ def _worker_process(queue, cls, method_name, scenario_cfg,
             except Exception:  # pylint: disable=broad-except
                 errors = traceback.format_exc()
                 LOG.exception("")
+                raise
             else:
                 if result:
                     # add timeout for put so we don't block test
index ea3f178..2fdf6ce 100644 (file)
@@ -36,7 +36,7 @@ class TrafficProfileConfig(object):
         self.description = tp_config.get('description')
         tprofile = tp_config['traffic_profile']
         self.traffic_type = tprofile.get('traffic_type')
-        self.frame_rate, self.rate_unit = self._parse_rate(
+        self.frame_rate, self.rate_unit = self.parse_rate(
             tprofile.get('frame_rate', self.DEFAULT_FRAME_RATE))
         self.test_precision = tprofile.get('test_precision')
         self.packet_sizes = tprofile.get('packet_sizes')
@@ -46,7 +46,7 @@ class TrafficProfileConfig(object):
         self.step_interval = tprofile.get('step_interval')
         self.enable_latency = tprofile.get('enable_latency', False)
 
-    def _parse_rate(self, rate):
+    def parse_rate(self, rate):
         """Parse traffic profile rate
 
         The line rate can be defined in fps or percentage over the maximum line
index 9328953..3503889 100644 (file)
@@ -80,6 +80,12 @@ class IXIARFC2544Profile(trex_traffic_profile.TrexProfile):
                 'outer_l4': {},
             }
 
+            frame_rate = value.get('frame_rate')
+            if frame_rate:
+                flow_rate, flow_rate_unit = self.config.parse_rate(frame_rate)
+                result[traffickey]['rate'] = flow_rate
+                result[traffickey]['rate_unit'] = flow_rate_unit
+
             outer_l2 = value.get('outer_l2')
             if outer_l2:
                 result[traffickey]['outer_l2'].update({
diff --git a/yardstick/tests/unit/benchmark/runner/test_iteration.py b/yardstick/tests/unit/benchmark/runner/test_iteration.py
new file mode 100644 (file)
index 0000000..783b236
--- /dev/null
@@ -0,0 +1,45 @@
+##############################################################################
+# Copyright (c) 2018 Huawei Technologies Co.,Ltd and others.
+#
+# All rights reserved. This program and the accompanying materials
+# 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
+##############################################################################
+
+import mock
+import unittest
+import multiprocessing
+from yardstick.benchmark.runners import iteration
+from yardstick.common import exceptions as y_exc
+
+
+class IterationRunnerTest(unittest.TestCase):
+    def setUp(self):
+        self.scenario_cfg = {
+            'runner': {'interval': 0, "duration": 0},
+            'type': 'some_type'
+        }
+
+        self.benchmark = mock.Mock()
+        self.benchmark_cls = mock.Mock(return_value=self.benchmark)
+
+    def _assert_defaults__worker_run_setup_and_teardown(self):
+        self.benchmark_cls.assert_called_once_with(self.scenario_cfg, {})
+        self.benchmark.setup.assert_called_once()
+
+    def _assert_defaults__worker_run_one_iteration(self):
+        self.benchmark.pre_run_wait_time.assert_called_once_with(0)
+        self.benchmark.my_method.assert_called_once_with({})
+
+    def test__worker_process_broad_exception(self):
+        self.benchmark.my_method = mock.Mock(
+            side_effect=y_exc.YardstickException)
+
+        with self.assertRaises(Exception):
+            iteration._worker_process(mock.Mock(), self.benchmark_cls, 'my_method',
+                                 self.scenario_cfg, {},
+                                 multiprocessing.Event(), mock.Mock())
+
+        self._assert_defaults__worker_run_one_iteration()
+        self._assert_defaults__worker_run_setup_and_teardown()
index 0dc3e05..d9244e3 100644 (file)
@@ -95,18 +95,18 @@ class TrafficProfileConfigTestCase(unittest.TestCase):
     def test__parse_rate(self):
         tp_config = {'traffic_profile': {'packet_sizes': {'64B': 100}}}
         tp_config_obj = base.TrafficProfileConfig(tp_config)
-        self.assertEqual((100.0, 'fps'), tp_config_obj._parse_rate('100  '))
-        self.assertEqual((200.5, 'fps'), tp_config_obj._parse_rate('200.5'))
-        self.assertEqual((300.8, 'fps'), tp_config_obj._parse_rate('300.8fps'))
+        self.assertEqual((100.0, 'fps'), tp_config_obj.parse_rate('100  '))
+        self.assertEqual((200.5, 'fps'), tp_config_obj.parse_rate('200.5'))
+        self.assertEqual((300.8, 'fps'), tp_config_obj.parse_rate('300.8fps'))
         self.assertEqual((400.2, 'fps'),
-                         tp_config_obj._parse_rate('400.2 fps'))
-        self.assertEqual((500.3, '%'), tp_config_obj._parse_rate('500.3%'))
-        self.assertEqual((600.1, '%'), tp_config_obj._parse_rate('600.1 %'))
+                         tp_config_obj.parse_rate('400.2 fps'))
+        self.assertEqual((500.3, '%'), tp_config_obj.parse_rate('500.3%'))
+        self.assertEqual((600.1, '%'), tp_config_obj.parse_rate('600.1 %'))
 
     def test__parse_rate_exception(self):
         tp_config = {'traffic_profile': {'packet_sizes': {'64B': 100}}}
         tp_config_obj = base.TrafficProfileConfig(tp_config)
         with self.assertRaises(exceptions.TrafficProfileRate):
-            tp_config_obj._parse_rate('100Fps')
+            tp_config_obj.parse_rate('100Fps')
         with self.assertRaises(exceptions.TrafficProfileRate):
-            tp_config_obj._parse_rate('100 kbps')
+            tp_config_obj.parse_rate('100 kbps')