# Copyright 2015-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. # ########################### # Common setting potentially accessed by all components. # ########################### import os import copy # default language and encoding, which will be set in case # that locale is not set properly DEFAULT_LOCALE = 'en_US.UTF-8' # default language and encoding, which will be used by external # commands; This values will be set in case, that VSPERF parses # command output. DEFAULT_CMD_LOCALE = 'en_US.UTF-8' # ############################ # Directories # ############################ ROOT_DIR = os.path.normpath(os.path.join( os.path.dirname(os.path.realpath(__file__)), '../')) TRAFFICGEN_DIR = os.path.join(ROOT_DIR, 'tools/pkt_gen') SYSMETRICS_DIR = os.path.join(ROOT_DIR, 'tools/collectors') # Dictionary PATHS is used for configuration of vswitches, dpdk and qemu. # It contains paths to various utilities, temporary directories and kernel # modules used by VSPERF. Particular sections of PATHS dictionary are spread # among several configuration files, i.e.: # conf/02_vswtich.conf - configuration of vswitches (i.e. PATHS['vswitch']) # and dpdk (i.e. PATHS['dpdk']) can be found there # conf/04_vnf.conf - configuration of qemu (i.e. PATHS['qemu']) can # be found there # # VSPERF will process PATHS dictionary before execution of every testcase # and it will create a testcase specific dictionary TOOLS with paths to the # utilities used by the test. During PATHS processing, following rules # will apply for every item of PATHS dictionary: # item 'type' - string, which defines the type of paths ('src' or 'bin') to be selected # for a given section: # 'src' means, that VSPERF will use OVS, DPDK or QEMU built from sources # e.g. by execution of systems/build_base_machine.sh script during VSPERF # installation # 'bin' means, that VSPERF will use OVS, DPDK or QEMU binaries installed # in the OS, e.g. via OS specific packaging system # item 'path' - string with valid path; Its content is checked for existence, prefixed # with section name and stored into TOOLS for later use # e.g. TOOLS['dpdk_src'] or TOOLS['vswitch_src'] # item 'modules' - list of strings; Every value from given list is checked for '.ko' # suffix. In case it matches and it is not an absolute path to the module, then # module name is prefixed with 'path' defined for the same section # e.g. TOOLS['vswitch_modules'] = [ # '/tmp/vsperf/src_vanilla/ovs/ovs/datapath/linux/openvswitch.ko'] # all other items - string - if given string is a relative path and item 'path' # is defined for a given section, then item content will be prefixed with # content of the 'path'. Otherwise tool name will be searched within # standard system directories. Also any OS filename wildcards will be # expanded to the real path. At the end of processing, every absolute # path is checked for its existence. In case that temporary path (i.e. path # with '_tmp' suffix) doesn't exist, then log will be written and vsperf will # continue. If any other path will not exist, then vsperf execution will # be terminated with runtime error. # # Note: In case that 'bin' type is set for DPDK, then TOOLS['dpdk_src'] will be set to # the value of PATHS['dpdk']['src']['path']. The reason is, that VSPERF uses downloaded # DPDK sources to copy DPDK and testpmd into the GUEST, where testpmd is built. In case, # that DPDK sources are not available, then vsperf will continue with test execution, # but testpmd can't be used as a guest loopback. This is useful in case, that other guest # loopback applications (e.g. buildin) are used by CI jobs, etc. PATHS = {} # ############################ # Process configuration # ############################ # shell command to use when running commands through Pexpect SHELL_CMD = ['/bin/bash', '-c'] # ############################ # Logging configuration # ############################ # default log output directory for all logs LOG_DIR = '/tmp' # default log for all "small" executables LOG_FILE_DEFAULT = 'overall.log' # log file for all commands executed on host LOG_FILE_HOST_CMDS = 'host-cmds.log' # ############################ # Test configuration # ############################ # verbosity of output to 'stdout' # NOTE: output to log files is always 'debug' level VERBOSITY = 'debug' # dictionary of test-specific parameters. These values are accessible # from anywhere in the test framework so be careful with naming # conventions TEST_PARAMS = {} # delay enforced after every step to allow system to process changes TEST_STEP_DELAY = 5 # parameter used, when running mupltiple tests, to accumulate _PARAMS_LIST # parameters for multiple tests running in a series CUMULATIVE_PARAMS = False # metric used by the performance matrix for comparision and analysis # of tests run in a series. Must always refer to a numeric value. # For example: 'throughput_rx_mbps', 'throughput_rx_fps', 'avg_latency_ns' MATRIX_METRIC = 'throughput_rx_fps' # ############################ # Modules # ############################ # following modules will be excluded from automatic load by LoaderServant # it can be used to suppress automatic load of obsoleted or abstract modules # Example: # EXCLUDE_MODULES = ['ovs_vanilla', 'qemu_virtio_net', 'pidstat'] EXCLUDE_MODULES = ["testcenter-rfc2544-throughput"] # ############################ # Vsperf Internal Options # ############################ # following options should not be changed by the user # internal list to keep track of PIDs of jobs executed by vsperf _EXECUTED_PIDS = [] # dictionary containing the test-specific parameters of all tests being run # for the purposes of cummulative parameter assignment using performance matrix _PARAMS_LIST = {} # index number of the current test, used for naming of result files _TEST_INDEX = 0