From 6cbbd5acfd08459777868c48ced7800ddd34b1d0 Mon Sep 17 00:00:00 2001 From: Sergey Galkin Date: Wed, 29 Mar 2017 18:07:22 +0400 Subject: [PATCH] Add Fuel CCP upgrade testing Add Fuel CCP upgrade test plan and results Change-Id: Ib68d19575967b8792a3ae693c6c06481e360d210 --- .../test_plans/fuel_ccp_upgrade/plan.rst | 189 +++ .../configs/Network_Scheme.png | Bin 0 -> 9940 bytes .../fuel_ccp_upgrade/configs/ccp.yaml | 16 + .../fuel_ccp_upgrade/configs/configs.yaml | 63 + .../configs/create_and_delete.yaml | 34 + .../configs/rally_deployment.json | 16 + .../fuel_ccp_upgrade/configs/repos.yaml | 38 + .../fuel_ccp_upgrade/configs/topology.yaml | 92 ++ .../configs/versions-mitaka.yaml | 39 + .../configs/versions-newton.yaml | 80 ++ .../test_results/fuel_ccp_upgrade/index.rst | 144 +++ .../reports/upgrade_newton_to_mitaka.html | 1043 +++++++++++++++++ .../reports/upgrade_newton_to_mitaka.png | Bin 0 -> 37014 bytes 13 files changed, 1754 insertions(+) create mode 100644 doc/source/test_plans/fuel_ccp_upgrade/plan.rst create mode 100644 doc/source/test_results/fuel_ccp_upgrade/configs/Network_Scheme.png create mode 100644 doc/source/test_results/fuel_ccp_upgrade/configs/ccp.yaml create mode 100644 doc/source/test_results/fuel_ccp_upgrade/configs/configs.yaml create mode 100644 doc/source/test_results/fuel_ccp_upgrade/configs/create_and_delete.yaml create mode 100644 doc/source/test_results/fuel_ccp_upgrade/configs/rally_deployment.json create mode 100644 doc/source/test_results/fuel_ccp_upgrade/configs/repos.yaml create mode 100644 doc/source/test_results/fuel_ccp_upgrade/configs/topology.yaml create mode 100644 doc/source/test_results/fuel_ccp_upgrade/configs/versions-mitaka.yaml create mode 100644 doc/source/test_results/fuel_ccp_upgrade/configs/versions-newton.yaml create mode 100644 doc/source/test_results/fuel_ccp_upgrade/index.rst create mode 100644 doc/source/test_results/fuel_ccp_upgrade/reports/upgrade_newton_to_mitaka.html create mode 100644 doc/source/test_results/fuel_ccp_upgrade/reports/upgrade_newton_to_mitaka.png diff --git a/doc/source/test_plans/fuel_ccp_upgrade/plan.rst b/doc/source/test_plans/fuel_ccp_upgrade/plan.rst new file mode 100644 index 0000000..ac0b8c6 --- /dev/null +++ b/doc/source/test_plans/fuel_ccp_upgrade/plan.rst @@ -0,0 +1,189 @@ +.. _fuel_ccp_upgrade_test_plan: + +================================================================== +Fuel Containerized Control Plane upgradability performance testing +================================================================== + +:status: **ready** +:version: 1.0 + +:Abstract: + + This test plan aims to provide set of tests to identify OpenStack + performance against given containerized OpenStack cloud (installed + on the top of pre-deployed Kubernetes cluster) using simple minimalistic set + of Rally tests during upgrade from Mitaka to Newton. + +Test Plan +========= + +This document is inspired by +:ref:`openstack_control_plane_performance_test_plan`, and aims to cover +baseline cloud operations and extend this test suite to verify containerized +deployment approach. As :ref:`openstack_control_plane_performance_test_plan` +this test plan covers basic cloud operation VMs creation, as well as +long-running test suites to verify cloud stability during update Open +Stack from Mitaka to Newton. + +Test Environment +---------------- + +Preparation +^^^^^^^^^^^ + +This test plan is performed against existing OpenStack cloud installed on top +of pre-deployed Kubernetes cluster with `fuel-ccp`_ tool with pre-installed Rally +framework. + +.. _fuel-ccp: http://fuel-ccp.readthedocs.io/en/latest/ + +Environment description +^^^^^^^^^^^^^^^^^^^^^^^ +The environment description includes hardware specification of servers, +network parameters, operation system and OpenStack deployment characteristics. + +Hardware +~~~~~~~~ + +This section contains list of all types of hardware nodes (table below is +an example). + ++-----------+-------+----------------------------------------------------+ +| Parameter | Value | Comments | ++-----------+-------+----------------------------------------------------+ +| model | | e.g. Supermicro X9SRD-F | ++-----------+-------+----------------------------------------------------+ +| CPU | | e.g. 6 x Intel(R) Xeon(R) CPU E5-2620 v2 @ 2.10GHz | ++-----------+-------+----------------------------------------------------+ +| role | | e.g. compute or network | ++-----------+-------+----------------------------------------------------+ + +Network +~~~~~~~ + +This section contains list of interfaces and network parameters. For +complicated cases this section may include topology diagram and switch +parameters (table below is an example). + ++------------------+-------+-------------------------+ +| Parameter | Value | Comments | ++------------------+-------+-------------------------+ +| network role | | e.g. provider or public | ++------------------+-------+-------------------------+ +| card model | | e.g. Intel | ++------------------+-------+-------------------------+ +| driver | | e.g. ixgbe | ++------------------+-------+-------------------------+ +| speed | | e.g. 10G or 1G | ++------------------+-------+-------------------------+ +| MTU | | e.g. 9000 | ++------------------+-------+-------------------------+ +| offloading modes | | e.g. default | ++------------------+-------+-------------------------+ + +Software +~~~~~~~~ + +This section describes installed software (table below is an example). + ++-----------------+-------+---------------------------+ +| Parameter | Value | Comments | ++-----------------+-------+---------------------------+ +| OS | | e.g. Ubuntu 14.04.3 | ++-----------------+-------+---------------------------+ +| OpenStack | | e.g. Mitaka | ++-----------------+-------+---------------------------+ +| Hypervisor | | e.g. KVM | ++-----------------+-------+---------------------------+ +| Neutron plugin | | e.g. ML2 + OVS | ++-----------------+-------+---------------------------+ +| L2 segmentation | | e.g. VLAN / VxLAN / GRE | ++-----------------+-------+---------------------------+ +| virtual routers | | e.g. HA / DVR | ++-----------------+-------+---------------------------+ + +Test tool +--------- + +**Rally** is a benchmarking tool that was designed specifically for OpenStack +API testing. To make this possible, **Rally** automates and unifies multi-node +OpenStack deployment, cloud verification, benchmarking & profiling. This is a +simple way to check cloud workability and performance of control plane +operations running on it. + +Test Case 1: Boot and delete server during Open Stack update +------------------------------------------------------------ + +Description +^^^^^^^^^^^ + +The most user-facing control plane operation is new virtual machine creation. +This scenario covers the most basic OpenStack server creation to present the +baseline numbers for Nova (OpenStack Compute) control plane. + +Parameters +^^^^^^^^^^ + ++-------------------------+-----------------------------------------+ +|Name | Description | ++=========================+=========================================+ +|IMAGE | Image from which boot server | ++-------------------------+-----------------------------------------+ +|FLAVOR | Flavor type from which boot server | ++-------------------------+-----------------------------------------+ +|ASSIGN_NIC | Bool, whether or not to auto assign | +| | NICs in Rally scenario | ++-------------------------+-----------------------------------------+ +|CONCURRENCY | Amount of parallel executors | ++-------------------------+-----------------------------------------+ +|ITERATIONS | Total amount of iterations processed by | +| | all executors | ++-------------------------+-----------------------------------------+ + + +List of performance metrics +^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ++----------+-------+-------------------+---------------------------+ +| Priority | Value | Measurement Units | Description | ++==========+=======+===================+===========================+ +| 1 | | sec | Time of atomic operations | ++----------+-------+-------------------+---------------------------+ + +Measuring performance values +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +1. Create server with FLAVOR flavor from IMAGE image through Nova API +2. Delete server through Nova API. + +These 2 steps executed successively in CONCURRENCY parallel executors. +ASSIGN_NIC parameter reflects Rally scenario configuration whether to assign +NIC to the booted server in automatic fashion. + +One cycle of these 2 steps is called an iteration. +ITERATIONS is a total amount of iterations which was processed by executors. + +During this testing + +At the end of this test case you should calculate average, 90% percentile, +50% percentile, minimum and maximum for each step. You need to fill the +following tables with calculated values: + + +Nova +---- + ++---------------+------+--------+--------+-------+-------+ +| Operation | Mean | 90%ile | 50%ile | Max | Min | +| | (sec)| (sec) | (sec) | (sec) | (sec) | ++===============+======+========+========+=======+=======+ +| create_server | | | | | | ++---------------+------+--------+--------+-------+-------+ +| delete_server | | | | | | ++---------------+------+--------+--------+-------+-------+ + +Example of Rally scenario configuration +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. literalinclude:: test_plans/021-nova-boot-and-delete-baseline.yaml + :language: bash diff --git a/doc/source/test_results/fuel_ccp_upgrade/configs/Network_Scheme.png b/doc/source/test_results/fuel_ccp_upgrade/configs/Network_Scheme.png new file mode 100644 index 0000000000000000000000000000000000000000..46a664bb7d8dc9363dca2f855982d5053734be2a GIT binary patch literal 9940 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 + +CCP Cluster configuration +:download:`configs.yaml ` + +CCP Cluster topology +:download:`topology.yaml ` + +CCP repositories configuration +:download:`repos.yaml ` + +CCP versions configuration for Mitaka +:download:`versions-mitaka.yaml ` + +CCP versions configuration for upgrade from Mitaka to Newton +:download:`versions-newton.yaml ` + +Rally configuration and scenario +-------------------------------- +Rally deployment +:download:`rally_deployment.json ` + +Rally scenario +:download:`create_and_delete.yaml ` + +Upgrade and tests procedure +--------------------------- +* Install fuel-ccp +* Rename ``ccp.yaml`` to ``/root/.ccp.ymal`` +* Copy all yaml files to ``/root/`` +* Rename ``versions-mitaka.yaml`` to ``versions.yaml`` +* Execute ``ccp deploy`` and wait ok status for all services +* Create rally deployment with ``rally_deployment.json`` +* Create role for rally ``openstack --insecure role create member`` +* Start rally tests ``rally task start --task-args 'gre_enabled: true' ./create_and_delete.yaml`` +* Rename ``versions-newton.yaml`` to ``versions.yaml`` +* Execute ``ccp deploy`` and wait ok status for all services +* Wait tests results from rally + +Test results +============ + +Test Case 1: Boot and delete server +----------------------------------- + +The following set of results is dedicated to investigate how Nova installed +against Kubernetes cluster via fuel-ccp tool is behaving during update from +Mitaka to Newton. Upgrade started on 100 iteration and finished on the 156 +iteration. + +149 nodes OpenStack cluster, concurrency 5, 1530 iterations +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +NovaServers.boot_and_delete_server scenario in +:download:`upgrade_newton_to_mitaka.html ` + +.. image:: reports/upgrade_newton_to_mitaka.png + :alt: Boot and delete servers Rally scenario (200 nodes) + :width: 650px + ++----------------------+-----------+-----------+-----------+-----------+-----------+ +| Operation | Median| 90%ile | 95%ile | Max | Min | +| | (sec) | (sec) | (sec) | (sec) | (sec) | ++======================+===========+===========+===========+===========+===========+ +| boot_server | 11.879 | 16.753 | 18.708 | 48.84 | 7.563 | ++----------------------+-----------+-----------+-----------+-----------+-----------+ +| delete_server | 2.593 | 4.754 | 4.898 | 6.829 | 2.313 | ++----------------------+-----------+-----------+-----------+-----------+-----------+ + +The control plane downtime of keystone upgrades will be avoided in the feature +versions of fuel-ccp diff --git a/doc/source/test_results/fuel_ccp_upgrade/reports/upgrade_newton_to_mitaka.html b/doc/source/test_results/fuel_ccp_upgrade/reports/upgrade_newton_to_mitaka.html new file mode 100644 index 0000000..baf2a73 --- /dev/null +++ b/doc/source/test_results/fuel_ccp_upgrade/reports/upgrade_newton_to_mitaka.html @@ -0,0 +1,1043 @@ + + + + + + + Rally | Rally Task Report + + + + + + + + + + + + + + + +
+ + + + +
+
+ + +
+
+ + +
+
+ +
+ +
+

Task overview

+ + + + + + + + + +
+ Scenario + + + + + + Load duration (s) + + + + + + Full duration (s) + + + + + + Iterations + + + + + + Runner + + + + + + Errors + + + + + + Hooks + + + + + + Success (SLA) + + + + +
{{sc.ref}} + {{sc.load_duration | number:3}} + {{sc.full_duration | number:3}} + {{sc.iterations_count}} + {{sc.runner}} + {{sc.errors.length}} + {{sc.hooks.length}} + + + +
+
+ +
+

Input file

+
{{source}}
+
+ +
+

{{scenario.cls}}.{{scenario.name}} ({{scenario.full_duration | number:3}}s)

+
    +
  • +
    {{t.name}}
    +
  • +
    +
+
+ + + + + + + + + + + + +
+ +
+
+ + +
+ + + + \ No newline at end of file diff --git a/doc/source/test_results/fuel_ccp_upgrade/reports/upgrade_newton_to_mitaka.png b/doc/source/test_results/fuel_ccp_upgrade/reports/upgrade_newton_to_mitaka.png new file mode 100644 index 0000000000000000000000000000000000000000..743ee7d5456a04af02f7a74c85d4df5d0634cf06 GIT binary patch literal 37014 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