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

schema: "yardstick:task:0.1"
description: >
    Yardstick TC008 config file;
    Measure network throughput and packet loss using Pktgen;
    Different amount of flows, from 2 up to 1001000, in combination
    with different packet sizes are run in each test.
    Each combination of packet size and flow amount is run 10 times.
    First 10 times with the smallest packet size, starting with the
    least amount of ports/flows, then next amount of ports with same
    packet size, and so on. The test sequence continues with the next
    packet size, with same ports/flows sequence as before.

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

scenarios:
{% for pkt_size in [64, 128, 256, 512, 1024, 1280, 1518] %}
  {% for num_ports in [1, 10, 50, 100, 500, 1000] %}
-
  type: Pktgen
  options:
    packetsize: {{pkt_size}}
    number_of_ports: {{num_ports}}
    duration: 20
    # choose vnic name: default to eth0
    # vnic_name: 'ens3'
    # turn on multiqueue inside VM
    # multiqueue: True
    # choose starting pps: default 1M;
    # works with binary search runner Dynamictp to find max throughput per sla
    # pps: 3000000

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

  runner:
    type: Iteration
    # binary search runner
    # type: Dynamictp
    iterations: 10
    interval: 1

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

context:
  name: yardstick-TC008
  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 %}