.. This work is licensed under a Creative Commons Attribution 4.0 International .. License. .. http://creativecommons.org/licenses/by/4.0 .. (c) OPNFV, Ericsson AB and others. ========= Yardstick ========= Overview ======== Yardstick is a framework to test non functional characteristics of an NFV Infrastructure as perceived by an application. An application is a set of virtual machines deployed using the orchestrator of the target cloud, for example OpenStack Heat. Yardstick measures a certain service performance but can also validate the service performance to be within a certain level of agreement. Yardstick is _not_ about testing OpenStack functionality (tempest) or benchmarking OpenStack APIs (rally). Concepts ======== Benchmark - assess the relative performance of something Benchmark configuration file - describes a single test case in yaml format Context - The set of cloud resources used by a benchmark (scenario) – Is a simplified Heat template (context is converted into a Heat template) Data - Output produced by running a benchmark, written to a file in json format Runner - Logic that determines how the test is run – For example number of iterations, input value stepping, duration etc Scenario - Type/class of measurement for example Ping, Pktgen, (Iperf, LmBench, ...) SLA - Some limit to be verified (specific to scenario), for example max_latency – Associated action to automatically take: assert, monitor etc Architecture ============ Yardstick is a command line tool written in python inspired by Rally. Yardstick is intended to run on a computer with access and credentials to a cloud. The test case is described in a configuration file given as an argument. How it works: the benchmark task configuration file is parsed and converted into an internal model. The context part of the model is converted into a Heat template and deployed into a stack. Each scenario is run using a runner, either serially or in parallel. Each runner runs in its own subprocess executing commands in a VM using SSH. The output of each command is written as json records to a file. Install ======= TBD Run === TBD Custom Image ============ pktgen test requires a ubuntu server cloud image TBD Development Environment ======================= Example setup known to work for development and test: - Development environment: Ubuntu14.04, eclipse, virtual environment - Cloud: Mirantis OpenStack 6.0 deployed using Virtualbox Install dependencies: $ sudo apt-get install python-virtualenv python-dev libffi-dev libssl-dev libxml2-dev libxslt1-dev Create a virtual environment: $ virtualenv ~/yardstick_venv $ source ~/yardstick_venv/bin/activate $ easy_install -U setuptools $ python setup.py develop