## -*- mode: python; coding: utf-8 -*-

## rrul test specification

include("netperf_definitions.inc")
DESCRIPTION="Realtime Response Under Load - Mixed v4/v6 compete"
DEFAULTS={'PLOT': "all_scaled"}

DATA_SETS = o([
    ('TCP upload BE',
     {'command': "%s -4 -Y CS0,CS0 -H %s -t TCP_STREAM -l %d -f m" % (GLOBAL_COMMAND, HOST, LENGTH),
      'delay': DELAY+2,
      'units': 'Mbits/s',
      'runner': 'netperf_demo',}),
    ('TCP upload BK',
     {'command': "%s -4 -Y CS1,CS1 -H %s -t TCP_STREAM -l %d -f m" % (GLOBAL_COMMAND, HOST, LENGTH),
      'delay': DELAY+1,
      'units': 'Mbits/s',
      'runner': 'netperf_demo',}),
    ('TCP upload 6BE',
     {'command': "%s -6 -Y CS0,CS0 -H %s -t TCP_STREAM -l %d -f m" % (GLOBAL_COMMAND, HOST, LENGTH),
      'delay': DELAY+4,
      'units': 'Mbits/s',
      'runner': 'netperf_demo',}),
    ('TCP upload 6BK',
     {'command': "%s -6 -Y CS1,CS1 -H %s -t TCP_STREAM -l %d -f m" % (GLOBAL_COMMAND, HOST, LENGTH),
       'delay': DELAY,
       'units': 'Mbits/s',
       'runner': 'netperf_demo',}),
    ('TCP upload avg',
     {'apply_to': [glob("TCP upload*", exclude=["TCP upload sum"])],
       'units': 'Mbits/s',
       'runner': 'average',}),
    ('TCP upload sum',
     {'apply_to': [glob("TCP upload*", exclude=["TCP upload avg"])],
       'units': 'Mbits/s',
       'runner': 'sum',}),

    ('TCP download BK',
     {'command': "%s -4 -Y CS1,CS1 -H %s -t TCP_MAERTS -l %d -f m" % (GLOBAL_COMMAND, HOST, LENGTH),
      'delay': DELAY,
      'units': 'Mbits/s',
      'runner': 'netperf_demo',}),
    ('TCP download 6BK',
     {'command': "%s -6 -Y CS1,CS1 -H %s -t TCP_MAERTS -l %d -f m" % (GLOBAL_COMMAND, HOST, LENGTH),
       'delay': DELAY,
       'units': 'Mbits/s',
       'runner': 'netperf_demo',}),
    ('TCP download BE',
     {'command': "%s -4 -Y CS0,CS0 -H %s -t TCP_MAERTS -l %d -f m" % (GLOBAL_COMMAND, HOST, LENGTH),
      'delay': DELAY,
      'units': 'Mbits/s',
      'runner': 'netperf_demo',}),
    ('TCP download 6BE',
     {'command': "%s -6 -Y CS0,CS0 -H %s -t TCP_MAERTS -l %d -f m" % (GLOBAL_COMMAND, HOST, LENGTH),
      'delay': DELAY,
      'units': 'Mbits/s',
      'runner': 'netperf_demo',}),
    ('TCP download avg',
     {'apply_to': [glob("TCP download*", exclude=["TCP download sum"])],
       'units': 'Mbits/s',
       'runner': 'average',}),
    ('TCP download sum',
     {'apply_to': [glob("TCP download*", exclude=["TCP download avg"])],
       'units': 'Mbits/s',
       'runner': 'sum',}),

    ('Ping (ms) UDP 6EF',
     {'command': "%s -6 -Y EF,EF -H %s -t UDP_RR -l %d" % (GLOBAL_COMMAND, HOST, TOTAL_LENGTH),
      'data_transform': 'rr_to_ms',
      'units': 'ms',
      'runner': 'netperf_demo',}),
    ('Ping (ms) UDP 6BK',
     {'command': "%s -6 -Y CS1,CS1 -H %s -t UDP_RR -l %d" % (GLOBAL_COMMAND, HOST, TOTAL_LENGTH),
      'data_transform': 'rr_to_ms',
      'units': 'ms',
      'runner': 'netperf_demo',}),
    ('Ping (ms) UDP BE',
     {'command': "%s -4 -H %s -t UDP_RR -l %d" % (GLOBAL_COMMAND, HOST, TOTAL_LENGTH),
      'data_transform': 'rr_to_ms',
      'units': 'ms',
      'runner': 'netperf_demo',}),
    ('Ping (ms) UDP 6BE',
     {'command': "%s -6 -H %s -t UDP_RR -l %d" % (GLOBAL_COMMAND, HOST, TOTAL_LENGTH),
      'data_transform': 'rr_to_ms',
      'units': 'ms',
      'runner': 'netperf_demo',}),
    ('Ping (ms) ICMP',
     {'command': find_ping(4, STEP_SIZE, TOTAL_LENGTH, HOST),
      'units': 'ms',
      'runner': 'ping',}),
    ('Ping (ms) ICMP6',
     {'command': find_ping(6, STEP_SIZE, TOTAL_LENGTH, HOST),
      'units': 'ms',
      'runner': 'ping',}),
    ('Ping (ms) avg',
     {'apply_to': [glob("Ping (ms)*")],
       'units': 'ms',
       'runner': 'average',}),
    ])

PLOTS = o([
    ('download',
     {'description': 'Download bandwidth plot',
      'type': 'timeseries',
      'legend_title': 'TCP download',
      'series': [{'data': 'TCP download BE',
                  'label': 'BE',
                  'linewidth': 2.0},
                 {'data': 'TCP download 6BE',
                  'label': '6BE'},
                 {'data': 'TCP download BK',
                  'label': 'BK'},
                 {'data': 'TCP download 6BK',
                  'label': '6BK'},
                 {'data': 'TCP download avg',
                  'label': 'Avg',
                  'smoothing': 10,
                  'color': 'black',
                  'linewidth': 2}]}),

    ('download_scaled',
     {'description': 'Download bandwidth w/axes scaled to remove outliers',
      'parent': 'download',
      'scaling': (5,95)}),

    ('upload',
     {'description': 'Upload bandwidth plot',
      'type': 'timeseries',
      'legend_title': 'TCP upload',
      'series': [{'data': 'TCP upload BE',
                  'label': 'BE',
                  'linewidth': 2.0},
                 {'data': 'TCP upload 6BE',
                  'label': '6BE'},
                 {'data': 'TCP upload BK',
                  'label': 'BK'},
                 {'data': 'TCP upload 6BK',
                  'label': '6BK'},
                 {'data': 'TCP upload avg',
                  'label': 'Avg',
                  'smoothing': 10,
                  'color': 'black',
                  'linewidth': 2}]}),

    ('upload_scaled',
     {'description': 'Upload bandwidth w/axes scaled to remove outliers',
      'parent': 'upload',
      'scaling': (5,95)}),

    ('ping',
     {'description': 'Ping plot',
      'type': 'timeseries',
      'legend_title': 'Ping (ms)',
      'series': [{'data': 'Ping (ms) UDP 6EF',
                  'label': 'UDP6 EF'},
                 {'data': 'Ping (ms) UDP 6BK',
                  'label': 'UDP6 BK'},
                 {'data': 'Ping (ms) UDP BE',
                  'label': 'UDP BE'},
                 {'data': 'Ping (ms) UDP 6BE',
                  'label': 'UDP6 BE'},
                 {'data': 'Ping (ms) ICMP',
                  'label': 'ICMP'},
                 {'data': 'Ping (ms) ICMP6',
                  'label': 'ICMP6'},
                 {'data': 'Ping (ms) avg',
                  'label': 'Avg',
                  'smoothing': 10,
                  'color': 'black',
                  'linewidth': 2}]}),

    ('ping_scaled',
     {'description': 'Ping w/axes scaled to remove outliers',
      'parent': 'ping',
      'scaling': (5,95)}),

    ('ping_cdf',
     {'description': 'Ping CDF plot',
      'type': 'cdf',
      'parent': 'ping',
      'cutoff': (DELAY,DELAY)}),

    ('totals',
     {'description': 'Total bandwidth and average ping plot',
      'type': 'timeseries',
      'dual_axes': True,
      'series': [{'data': 'TCP download sum',
                  'label': 'Download',
                  'smoothing': 10},
                 {'data': 'TCP upload sum',
                  'label': 'Upload',
                  'smoothing': 10},
                 {'data': 'Ping (ms) avg',
                  'label': 'Ping (ms)',
                  'smoothing': 10,
                  'color': 'red',
                  'axis': 2}]}),
    ('totals_scaled',
     {'description': 'Total bandwidth and average ping plot (scaled)',
      'parent': 'totals',
      'scaling': (5,95)}),

    ('all_scaled',
     {'description': 'Download, upload, ping (scaled versions)',
      'type': 'meta',
      'subplots': ('download_scaled', 'upload_scaled', 'ping_scaled')}),

    ('all',
     {'description': 'Download, upload, ping (unscaled versions)',
      'type': 'meta',
      'subplots': ('download', 'upload', 'ping')}),
    ])
