##############################################################################
# Copyright (c) 2017 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
##############################################################################
---

schema: "yardstick:task:0.1"
description: >
    Yardstick TC071 config file;
    Measure cache hit/miss ratio and usage, network throughput and latency;
    Different amounts of flows are tested with, from 2 up to 1001000;
    All tests are run 2 times each. First 2 times with the least
    amount of ports, then 2 times with the next amount of ports,
    and so on until all packet sizes have been run with;
    During the measurements cache hit/miss ration, cache usage statistics and
    network latency are recorded/measured using cachestat and ping, respectively;

{% set provider = provider or none %}
{% set physical_network = physical_network or 'physnet1' %}
{% set segmentation_id = segmentation_id or none %}

scenarios:
-
  type: CACHEstat
  run_in_background: true

  options:
    interval: 1

  host: demeter.yardstick-TC071
-
  type: CACHEstat
  run_in_background: true

  options:
    interval: 1

  host: poseidon.yardstick-TC071
-
  type: Ping
  run_in_background: true

  options:
    packetsize: 100

  host: demeter.yardstick-TC071
  target: poseidon.yardstick-TC071

  sla:
    max_rtt: 10
    action: monitor
{% for num_ports in [1, 10, 50, 100, 300, 500, 750, 1000] %}
-
  type: Pktgen
  options:
    packetsize: 64
    number_of_ports: {{num_ports}}
    duration: 20

  host: demeter.yardstick-TC071
  target: poseidon.yardstick-TC071

  runner:
    type: Iteration
    iterations: 2
    interval: 1

  sla:
    max_ppm: 1000
    action: monitor
{% endfor %}

context:
  name: yardstick-TC071
  image: yardstick-image
  flavor: yardstick-flavor
  user: ubuntu

  placement_groups:
    pgrp1:
      policy: "availability"

  servers:
    demeter:
      floating_ip: true
      placement: "pgrp1"
    poseidon:
      floating_ip: true
      placement: "pgrp1"

  networks:
    test:
      cidr: '10.0.1.0/24'
      {% if provider == "vlan" or provider == "sriov" %}
      provider: {{provider}}
      physical_network: {{physical_network}}
        {% if segmentation_id %}
      segmentation_id: {{segmentation_id}}
        {% endif %}
      {% endif %}