summaryrefslogtreecommitdiffstats
path: root/samples/fio-template.yaml
AgeCommit message (Expand)AuthorFilesLines
2017-02-17Update missing license headersDeepak S1-0/+8
2016-11-09Upgrade yardstick VM image from Ubuntu 14.04 to 16.04JingLu51-1/+1
2016-01-15HeatContext model update to match heat code updateQiLiang1-2/+2
2015-09-25Add missing YAML document start boundariesKristian Hunt1-0/+1
2015-09-06Support to config external network by shell envQiLiang1-1/+0
2015-09-01add support for Jinja2 in task filekubi1-0/+40
> 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178
#!/bin/env python

##
## Copyright (c) 2010-2017 Intel Corporation
##
## Licensed under the Apache License, Version 2.0 (the "License");
## you may not use this file except in compliance with the License.
## You may obtain a copy of the License at
##
##     http://www.apache.org/licenses/LICENSE-2.0
##
## Unless required by applicable law or agreed to in writing, software
## distributed under the License is distributed on an "AS IS" BASIS,
## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
## See the License for the specific language governing permissions and
## limitations under the License.
##

import getopt
import sys
from systemconfig import *

class Config:
    _debug = False;
    _test_systems = [];
    _output_file_name = None;
    _input_file_name = None
    _input_file_name2 = None
    _max_port_rate = 0.85
    _sut = None
    _accuracy = 2;
    _threshold = 0.95
    _once = None
    _skipTime = 10
    _testLength = 120
    _dpiCoreList = range(1, 5)
    _checkConditions = False;
    _interCheckDuration = float(1)

    def getInputFileName(self):
        return self._input_file_name

    def getInputFileName2(self):
        return self._input_file_name2

    def toString(self):
        ret = ""
        ret += "Test systems: \n"
        for ts in self._test_systems:
            ret += ts.toString();

        if (self._sut is not None):
            ret += "SUT: \n"
            ret += self._sut.toString();

        ret += "Output file name: " + str(self._output_file_name) + "\n"
        ret += "Max port rate: " + str(self._max_port_rate) + "\n"
        ret += "Accuracy: " + str(self._accuracy) + " digits after point"
        return ret

    def getErrorTestOne(self):
        if (len(self._test_systems) == 0):
            return "Missing test systems";
        if (self._output_file_name is None):
            return "No output file or input file defined";
        return None

    def getErrorTestTwo(self):
        if (self._input_file_name is None):
            return "Input file is missing"
        if (self._input_file_name == self._output_file_name):
            return "Input file and output file are the same"
        return self.getErrorTestOne();

    def getErrorMakeTable(self):
        if (self._input_file_name is None):
            return "Missing input file"
        if (self._input_file_name2 is None):
            return "Missing file with performance resuilts"
        if (self._output_file_name is None):
            return "No output file or input file defined";
        if (self._input_file_name2 == self._input_file_name):
            return "Input file used multiple times"
        if (self._input_file_name == self._output_file_name):
            return "output file is the same as the input file"
        if (self._input_file_name2 == self._output_file_name):
            return "output file is the same as the input file 2"

        return None

    def usageAndExit(self, argv0):
        print "Usage: " + str(argv0)
        print "-t    Add a test system, syntax: " + SystemConfig.expectedSyntax()
        print "-s    Add SUT, syntax: " + SystemConfig.expectedSyntax()
        print "-o    Ouput file name"
        print "-a    Accuracy, number of digits after point"
        print "-i    Input file"
        print "-j    File with performance results"
        print "-m    Maximum per port rate, by default 0.85 (85%)"
        print "-d    Enable debugging"
        print "-w    Fraction of connections to reach, by default is 0.95 (95%)"
        print "-h    Show help"
        print "-q    Run a single test iteration, syntax of argument "
        print "-b    Skip time, by default 10 sec"
        print "-l    Test length, by default 120 sec"
        print "-n    Maximum number of DPI cores to test"
        print "-k    Period between checking conditions, 1 second by default"
        print "-c    Check conditions during 10 second period after convergence"
        print "      is msr,conn,ss (i.e. -q 4000,100000,38.91)"
        exit(-1);

    def parse(self, programName, args):
        try:
            opts, args = getopt.getopt(args, "t:s:o:a:i:q:m:dhw:j:b:l:n:k:c")
        except getopt.GetoptError as err:
            print str(err)
            return;
        for option, arg in opts:
            if(option == "-t"):
                for ts in arg.split(","):
                    syntaxErr = SystemConfig.checkSyntax(ts)
                    if (syntaxErr != ""):
                        print syntaxErr
                        exit(-1);
                    self._test_systems.append(SystemConfig(ts));
            elif(option == "-s"):
                syntaxErr = SystemConfig.checkSyntax(ts)
                if (syntaxErr != ""):
                    print syntaxErr
                    exit(-1);
                self._sut = SystemConfig(arg);
            elif(option == "-w"):
                self._threshold = float(arg)
            elif(option == "-o"):
                self._output_file_name = arg;
            elif(option == '-a'):
                self._accuracy = int(arg);
            elif(option == "-i"):
                self._input_file_name = arg;
            elif(option == "-j"):
                self._input_file_name2 = arg;
            elif(option == "-q"):
                self._once = arg.split(",")
            elif(option == "-c"):
                self._checkConditions = True;
            elif(option == "-m"):
                self._max_port_rate = float(arg);
            elif(option == "-k"):
                self._interCheckDuration = float(arg);
            elif(option == "-d"):
                self._debug = True
            elif(option == '-h'):
                self.usageAndExit(programName)
            elif(option == '-b'):
                self._skipTime = int(arg)
            elif(option == '-l'):
                self._testLength = int(arg)
            elif(option == '-n'):
                self._dpiCoreList = self.strToList(arg)
            else:
                self.usageAndExit(programName);

    def strToList(self, arg):
        elements = [];
        tokens = arg.split(",");

        for a in tokens:
            if (a.count('-') == 0):
                elements.append(int(a))
            elif (a.count('-') == 1):
                beg = int(a.split('-')[0]);
                end = int(a.split('-')[1]);
                if (beg > end):
                    raise Exception("Invalid list input format")
                elements += range(beg, end + 1);
            else:
                raise Exception("Invalid list input format")
        return elements;