def __init__(self, path): """Create a dmg Command object.""" super(DmgCommand, self).__init__("/run/dmg/*", "daos_shell", path) self.request = BasicParameter("{}") self.action = BasicParameter("{}") # daos_shell options self.hostlist = FormattedParameter("-l {}") self.hostfile = FormattedParameter("-f {}") self.configpath = FormattedParameter("-o {}") self.insecure = FormattedParameter("-i", None) # dmg options self.gid = FormattedParameter("--gid={}") self.uid = FormattedParameter("--uid={}") self.group = FormattedParameter("--group={}") self.mode = FormattedParameter("--mode={}") self.size = FormattedParameter("--size={}") self.nvme = FormattedParameter("--nvme={}") self.svcn = FormattedParameter("--svcn={}") self.target = FormattedParameter("--target={}") self.force = FormattedParameter("--force", False) self.pool = FormattedParameter("--pool={}") self.svc = FormattedParameter("--svc={}") self.rank = FormattedParameter("--rank={}") self.cont = FormattedParameter("--cont={}") self.oid = FormattedParameter("--oid={}")
def __init__(self, daosbinpath, runnerpath, attach="/tmp", timeout=300): """Create a ServerManager object. Args: daosbinpath (str): Path to daos bin runnerpath (str): Path to Orterun binary. attach (str, optional): Defaults to "/tmp". timeout (int, optional): Time for the server to start. Defaults to 300. """ super(ServerManager, self).__init__("/run/server_manager/*", "", "") self.daosbinpath = daosbinpath self._hosts = None # Setup orterun command defaults self.runner = Orterun(DaosServer(self.daosbinpath), runnerpath, True) # Setup server command defaults self.runner.job.action.value = "start" self.runner.job.get_action_command() # Set server environment os.environ["CRT_ATTACH_INFO_PATH"] = attach # Parameters that user can specify in the test yaml to modify behavior. self.debug = BasicParameter(None, True) # ServerCommand param self.attach = BasicParameter(None, attach) # ServerCommand param self.insecure = BasicParameter(None, True) # ServerCommand param self.recreate = BasicParameter(None, True) # ServerCommand param self.sudo = BasicParameter(None, False) # ServerCommand param self.srv_timeout = BasicParameter(None, timeout) # ServerCommand param self.report_uri = BasicParameter(None) # Orterun param self.enable_recovery = BasicParameter(None, True) # Orterun param self.export = BasicParameter(None) # Orterun param
def __init__(self, path=""): """Create a FioCommand object. Args: path (str, optional): path to location of command binary file. Defaults to "". """ super(FioCommand, self).__init__("/run/fio/*", "fio", path) # fio commandline options self.debug = FormattedParameter("--debug={}") self.parse_only = FormattedParameter("--parse-only", False) self.output = FormattedParameter("--output={}") self.bandwidth_log = FormattedParameter("--bandwidth-log", False) self.minimal = FormattedParameter("minimal", False) self.output_format = FormattedParameter("--output-format={}") self.terse_version = FormattedParameter("--terse-version={}") self.version = FormattedParameter("--version", False) self.fio_help = FormattedParameter("--help", False) self.cpuclock_test = FormattedParameter("--cpuclock-test", False) self.crctest = FormattedParameter("--crctest={}") self.cmdhelp = FormattedParameter("--cmdhelp={}") self.enghelp = FormattedParameter("--enghelp={}") self.showcmd = FormattedParameter("--showcmd={}") self.eta = FormattedParameter("--eta={}") self.eta_newline = FormattedParameter("--eta-newline={}") self.status_interval = FormattedParameter("--status-interval={}") self.readonly = FormattedParameter("--readonly", False) self.section = FormattedParameter("--section={}") self.alloc_size = FormattedParameter("--alloc-size={}") self.warnings_fatal = FormattedParameter("--warnings-fatal", False) self.max_jobs = FormattedParameter("--max-jobs={}") self.server = FormattedParameter("--server={}") self.daemonize = FormattedParameter("--daemonize={}") self.client = FormattedParameter("--client={}") self.remote_config = FormattedParameter("--remote-config={}") self.idle_prof = FormattedParameter("--idle-prof={}") self.inflate_log = FormattedParameter("--inflate-log={}") self.trigger_file = FormattedParameter("--trigger-file={}") self.trigger_timeout = FormattedParameter("--trigger-timeout={}") self.trigger = FormattedParameter("--trigger={}") self.trigger_remote = FormattedParameter("--trigger-remote={}") self.aux_path = FormattedParameter("--aux-path={}") # Middleware to use with fio. Needs to be configured externally prior # to calling run(). self.api = BasicParameter(None, "POSIX") # List of fio job names to run self.names = BasicParameter(None) self._jobs = {} # List of hosts on which the fio command will run. If not defined the # fio command will run locally self._hosts = None
def __init__(self, context, dmg_command, cb_handler=None): # pylint: disable=unused-argument """Initialize a TestPool object. Args: context (DaosContext): [description] dmg_command (DmgCommand): DmgCommand used to call dmg command. This value can be obtained by calling self.get_dmg_command() from a test. It'll return the object with -l <Access Point host:port> and --insecure. log (logging): logging object used to report the pool status cb_handler (CallbackHandler, optional): callback object to use with the API methods. Defaults to None. """ super(TestPool, self).__init__("/run/pool/*", cb_handler) self.context = context self.uid = os.geteuid() self.gid = os.getegid() self.mode = BasicParameter(None) self.name = BasicParameter(None) # server group name self.svcn = BasicParameter(None) self.target_list = BasicParameter(None) self.scm_size = BasicParameter(None) self.nvme_size = BasicParameter(None) self.prop_name = BasicParameter(None) # name of property to be set self.prop_value = BasicParameter(None) # value of property self.pool = None self.uuid = None self.info = None self.svc_ranks = None self.connected = False self.dmg = dmg_command self.query_data = []
def __init__(self): """Create a AgentSecurityConfig object.""" super(DaosAgentConfig.AgentSecurityConfig, self).__init__("/run/agent_config/transport_config/*") #transport_config: # allow_insecure: true # ca_cert: .daos/daosCA.crt # cert: .daos/daos_agent.crt # key: .daos/daos_agent.key # server_name: server self.allow_insecure = BasicParameter(None, True) self.ca_cert = BasicParameter(None, ".daos/daosCA.crt") self.cert = BasicParameter(None, ".daos/daos_agent.crt") self.key = BasicParameter(None, ".daos/daos_agent.key") self.server_name = BasicParameter(None, "server")
def __init__(self, path, host): """Create a daos_racer command object. Args: path (str): path of the daos_racer command host (str): host on which to run the daos_racer command """ super(DaosRacerCommand, self).__init__( "/run/daos_racer", "daos_racer", path) self.host = host # Number of seconds to run self.runtime = FormattedParameter("-t {}", 60) # Optional timeout for the clush command running the daos_racer command. # This should be set greater than the 'runtime' value but less than the # avocado test timeout value to allow for proper cleanup. Using a value # of None will result in no timeout being used. self.clush_timeout = BasicParameter(None) # Environment variable names required to be set when running the # daos_racer command. The values for these names are populated by the # get_environment() method and added to command line by the # set_environment() method. self._env_names = ["OFI_INTERFACE", "CRT_PHY_ADDR_STR", "D_LOG_FILE"]
def __init__(self, namespace, cb_handler=None): """Create a TestDaosApi object. Args: namespace (str): yaml namespace (path to parameters) cb_handler (CallbackHandler, optional): callback object to use with the API methods. Defaults to None. """ super(TestDaosApiBase, self).__init__(namespace) self.cb_handler = cb_handler self.debug = BasicParameter(None, False) # Test yaml parameter used to define the control method: # USE_API - use the API methods to create/destroy pools/containers # USE_DMG - use the dmg command to create/destroy pools/containers # USE_DAOS - use the daos command to create/destroy pools/containers self.control_method = BasicParameter(self.USE_API, self.USE_API)
def __init__(self, context, log, cb_handler=None): """[summary]. Args: context (DaosContext): [description] log (logging): logging object used to report the pool status cb_handler (CallbackHandler, optional): callback object to use with the API methods. Defaults to None. """ super(TestPool, self).__init__("/run/pool/*", cb_handler) self.context = context self.log = log self.uid = os.geteuid() self.gid = os.getegid() self.mode = BasicParameter(None) self.name = BasicParameter(None) self.group = BasicParameter(None) self.svcn = BasicParameter(None) self.target_list = BasicParameter(None) self.scm_size = BasicParameter(None) self.nvme_size = BasicParameter(None) self.pool = None self.uuid = None self.info = None self.svc_ranks = None self.connected = False
def __init__(self, namespace, name, data): """Create a ConfigurationParameters object. Args: name (str): configuration name; used to define param namespace data (ConfigurationData): object retaining the host data needed to verify the configuration requirement """ super(ConfigurationParameters, self).__init__(namespace + name + "/*") self.name = name self._config_data = data # Define the yaml entries that define the configuration # - Make sure to add any new parameter names defined here in the # ConfigurationData._data_key_map dictionary self.mem_size = BasicParameter(0, 0) self.nvme_size = BasicParameter(0, 0) self.scm_size = BasicParameter(0, 0)
def __init__(self, namespace, cb_handler=None): """Create a TestDaosApi object. Args: namespace (str): yaml namespace (path to parameters) cb_handler (CallbackHandler, optional): callback object to use with the API methods. Defaults to None. """ super(TestDaosApiBase, self).__init__(namespace) self.cb_handler = cb_handler self.debug = BasicParameter(None, False)
def __init__(self, context, log=None, cb_handler=None, dmg_bin_path=None): # pylint: disable=unused-argument """Initialize a TestPool object. Note: 'log' is now a defunct argument and will be removed in the future Args: context (DaosContext): [description] log (logging): logging object used to report the pool status cb_handler (CallbackHandler, optional): callback object to use with the API methods. Defaults to None. """ super(TestPool, self).__init__("/run/pool/*", cb_handler) self.context = context self.uid = os.geteuid() self.gid = os.getegid() self.mode = BasicParameter(None) self.name = BasicParameter(None) # server group name self.svcn = BasicParameter(None) self.target_list = BasicParameter(None) self.scm_size = BasicParameter(None) self.nvme_size = BasicParameter(None) # Set USE_API to use API or USE_DMG to use dmg. If it's not set, API is # used. self.control_method = BasicParameter(self.USE_API, self.USE_API) uname = getpass.getuser() gname = grp.getgrnam(uname)[0] self.username = BasicParameter(uname, uname) self.groupname = BasicParameter(gname, gname) self.pool = None self.uuid = None self.info = None self.svc_ranks = None self.connected = False self.dmg = None # Required to use dmg. It defined the directory where dmg is installed. # Use self.basepath + '/install/bin' in the test self.dmg_bin_path = dmg_bin_path if dmg_bin_path is not None: # We make dmg as the member of this class because the test would # have more flexibility over the usage of the command. self.dmg = DmgCommand(self.dmg_bin_path) self.dmg.insecure.value = True self.dmg.request.value = "pool"
def __init__(self): """Create a DaosServerConfig object.""" super(DaosServerConfig, self).__init__("/run/server_config/*") # Parameters self.name = BasicParameter(None, "daos_server") self.access_points = BasicParameter(None) # e.g. "<host>:<port>" self.port = BasicParameter(None, 10001) self.provider = BasicParameter(None, "ofi+sockets") self.socket_dir = BasicParameter(None) # /tmp/daos_sockets self.nr_hugepages = BasicParameter(None, 4096) self.control_log_mask = BasicParameter(None, "DEBUG") self.control_log_file = BasicParameter(None, "/tmp/daos_control.log") # Used to drop privileges before starting data plane # (if started as root to perform hardware provisioning) self.user_name = BasicParameter(None) # e.g. 'daosuser' self.group_name = BasicParameter(None) # e.g. 'daosgroup' # Single server config parameters self.server_params = [self.SingleServerConfig()]
def __init__(self, pool, cb_handler=None): """Create a TeestContainer object. Args: pool (TestPool): the test pool in which to create the container cb_handler (CallbackHandler, optional): callback object to use with the API methods. Defaults to None. """ super(TestContainer, self).__init__("/run/container/*", cb_handler) self.pool = pool self.object_qty = BasicParameter(None) self.record_qty = BasicParameter(None) self.akey_size = BasicParameter(None) self.dkey_size = BasicParameter(None) self.data_size = BasicParameter(None) self.container = None self.uuid = None self.opened = False self.written_data = []
def __init__(self, pool, cb_handler=None): """Create a TeestContainer object. Args: pool (TestPool): the test pool in which to create the container cb_handler (CallbackHandler, optional): callback object to use with the API methods. Defaults to None. """ super(TestContainer, self).__init__("/run/container/*", cb_handler) self.pool = pool self.object_qty = BasicParameter(None) self.record_qty = BasicParameter(None) self.akey_size = BasicParameter(None) self.dkey_size = BasicParameter(None) self.data_size = BasicParameter(None) self.data_array_size = BasicParameter(0, 0) # Provider access to get input params values # for enabling different container properties self.input_params = DaosInputParams() self.container = None self.uuid = None self.info = None self.opened = False self.written_data = []
def __init__(self, context, log=None, cb_handler=None): # pylint: disable=unused-argument """Initialize a TestPool object. Note: 'log' is now a defunct argument and will be removed in the future Args: context (DaosContext): [description] log (logging): logging object used to report the pool status cb_handler (CallbackHandler, optional): callback object to use with the API methods. Defaults to None. """ super(TestPool, self).__init__("/run/pool/*", cb_handler) self.context = context self.uid = os.geteuid() self.gid = os.getegid() self.mode = BasicParameter(None) self.name = BasicParameter(None) # server group name self.svcn = BasicParameter(None) self.target_list = BasicParameter(None) self.scm_size = BasicParameter(None) self.nvme_size = BasicParameter(None) self.pool = None self.uuid = None self.info = None self.svc_ranks = None self.connected = False
def __init__(self, context, log=None, cb_handler=None, dmg_command=None): # pylint: disable=unused-argument """Initialize a TestPool object. Note: 'log' is now a defunct argument and will be removed in the future Args: context (DaosContext): [description] log (logging): logging object used to report the pool status cb_handler (CallbackHandler, optional): callback object to use with the API methods. Defaults to None. dmg_command (DmgCommand): DmgCommand used to call dmg command. If control_method is set to dmg, this value needs to be set. It can be obtained by calling self.get_dmg_command() from a test. It'll return the object with -l <Access Point host:port> and --insecure. """ super(TestPool, self).__init__("/run/pool/*", cb_handler) self.context = context self.uid = os.geteuid() self.gid = os.getegid() self.mode = BasicParameter(None) self.name = BasicParameter(None) # server group name self.svcn = BasicParameter(None) self.target_list = BasicParameter(None) self.scm_size = BasicParameter(None) self.nvme_size = BasicParameter(None) # Set USE_API to use API or USE_DMG to use dmg. If it's not set, API is # used. self.control_method = BasicParameter(self.USE_API, self.USE_API) uname = getpass.getuser() gname = grp.getgrgid(self.gid)[0] self.username = BasicParameter(uname, uname) self.groupname = BasicParameter(gname, gname) self.pool = None self.uuid = None self.info = None self.svc_ranks = None self.connected = False self.dmg = dmg_command
def __init__(self, path="", env=None): """Create a ExecutableCommand object. Uses Avocado's utils.process module to run a command str provided. Args: command (str): string of the command to be executed. path (str, optional): path to location of command binary file. Defaults to "" """ super(IoConfGen, self).__init__("/run/gen_io_conf/*", "daos_gen_io_conf", path) self.verbose = True self.env = env self.ranks = FormattedParameter("-g {}") self.targets = FormattedParameter("-t {}") self.obj_num = FormattedParameter("-o {}") self.akeys = FormattedParameter("-a {}") self.dkeys = FormattedParameter("-d {}") self.record_size = FormattedParameter("-s {}") self.obj_class = FormattedParameter("-O {}") self.filename = BasicParameter(None, "testfile")
def __init__(self): """Create a DaosAgentConfig object.""" super(DaosAgentConfig, self).__init__("/run/agent_config/*") # DaosAgentConfig Parameters # name: daos # access_points: ['server[0]:10001'] # port: 10001 # hostlist: ['host1', 'host2'] # runtime_dir: /var/run/daos_agent # log_file: /tmp/daos_agent.log self.name = BasicParameter(None, "daos") self.access_points = BasicParameter(None) self.port = BasicParameter(None, 10001) self.hostlist = BasicParameter(None) self.runtime_dir = BasicParameter(None, "/var/run/daos_agent") self.log_file = BasicParameter(None, "/tmp/daos_agent.log") # Agent transport_config parameters self.transport_params = self.AgentSecurityConfig()
def __init__(self, context, dmg_command, cb_handler=None, label_generator=None): # pylint: disable=unused-argument """Initialize a TestPool object. Args: context (DaosContext): The daos environment and other info. Use self.context when calling from a test. dmg_command (DmgCommand): DmgCommand used to call dmg command. This value can be obtained by calling self.get_dmg_command() from a test. It'll return the object with -l <Access Point host:port> and --insecure. cb_handler (CallbackHandler, optional): callback object to use with the API methods. Defaults to None. label_generator (LabelGenerator, optional): Generates label by adding number to the end of the prefix set in self.label. There's a link between label_generator and label. If the label is used as it is, i.e., not None, label_generator must be provided in order to call create(). Defaults to None. """ super().__init__("/run/pool/*", cb_handler) self.context = context self.uid = os.geteuid() self.gid = os.getegid() self.mode = BasicParameter(None) self.name = BasicParameter(None) # server group name self.svcn = BasicParameter(None) self.target_list = BasicParameter(None) self.nranks = BasicParameter(None) self.size = BasicParameter(None) self.tier_ratio = BasicParameter(None) self.scm_size = BasicParameter(None) self.nvme_size = BasicParameter(None) self.prop_name = BasicParameter(None) # name of property to be set self.prop_value = BasicParameter(None) # value of property self.properties = BasicParameter(None) # string of cs name:value self.rebuild_timeout = BasicParameter(None) self.pool_query_timeout = BasicParameter(None) self.acl_file = BasicParameter(None) self.label = BasicParameter(None, "TestLabel") self.label_generator = label_generator # Optional TestPool parameters used to autosize the dmg pool create # 'size', 'scm_size', and/or 'nvme_size' values: # server_index: TestWithServers.server_managers list index # quantity: number of pools to account for in sizing # min_targets: minimum number of targets allowed self.server_index = BasicParameter(None, 0) self.quantity = BasicParameter(None, 1) self.min_targets = BasicParameter(None, 1) self.pool = None self.info = None self.svc_ranks = None self.connected = False # Flag to allow the non-create operations to use UUID. e.g., if you want # to destroy the pool with UUID, set this to False, then call destroy(). self.use_label = True self._dmg = None self.dmg = dmg_command self.query_data = []
def __init__(self, index=None): """Create a SingleServerConfig object. Args: index (int, optional): index number for the namespace path used when specifying multiple servers per host. Defaults to None. """ namespace = "/run/server_config/servers/*" if isinstance(index, int): namespace = "/run/server_config/servers/{}/*".format(index) super(DaosServerConfig.SingleServerConfig, self).__init__(namespace) # Use environment variables to get default parameters default_interface = os.environ.get("OFI_INTERFACE", "eth0") default_port = os.environ.get("OFI_PORT", 31416) # Parameters # targets: count of VOS targets # first_core: starting index for targets # nr_xs_helpers: offload helpers per server # fabric_iface: map to OFI_INTERFACE=eth0 # fabric_iface_port: map to OFI_PORT=31416 # log_mask: map to D_LOG_MASK env # log_file: map to D_LOG_FILE env # env_vars: influences DAOS IO Server behaviour # Add to enable scalable endpoint: # - CRT_CREDIT_EP_CTX=0 # - CRT_CTX_SHARE_ADDR=1 # - CRT_CTX_NUM=8 # nvme options: # - IO_STAT_PERIOD=10 self.targets = BasicParameter(None, 8) self.first_core = BasicParameter(None, 0) self.nr_xs_helpers = BasicParameter(None, 16) self.fabric_iface = BasicParameter(None, default_interface) self.fabric_iface_port = BasicParameter(None, default_port) self.pinned_numa_node = BasicParameter(None) self.log_mask = BasicParameter(None, "DEBUG") self.log_file = BasicParameter(None, "daos_server.log") self.env_vars = BasicParameter(None, [ "ABT_ENV_MAX_NUM_XSTREAMS=100", "ABT_MAX_NUM_XSTREAMS=100", "DAOS_MD_CAP=1024", "CRT_CTX_SHARE_ADDR=0", "CRT_TIMEOUT=30", "FI_SOCKETS_MAX_CONN_RETRY=1", "FI_SOCKETS_CONN_TIMEOUT=2000", "DD_MASK=mgmt,io,md,epc,rebuild" ]) # Storage definition parameters: # # When scm_class is set to ram, tmpfs will be used to emulate SCM. # scm_mount: /mnt/daos - map to -s /mnt/daos # scm_class: ram # scm_size: 6 - size in GB units # # When scm_class is set to dcpm, scm_list is the list of device # paths for AppDirect pmem namespaces (currently only one per # server supported). # scm_class: dcpm # scm_list: [/dev/pmem0] # # If using NVMe SSD (will write /mnt/daos/daos_nvme.conf and start # I/O service with -n <path>) # bdev_class: nvme # bdev_list: ["0000:81:00.0"] - generate regular nvme.conf # # If emulating NVMe SSD with malloc devices # bdev_class: malloc - map to VOS_BDEV_CLASS=MALLOC # bdev_size: 4 - malloc size of each device in GB. # bdev_number: 1 - generate nvme.conf as follows: # [Malloc] # NumberOfLuns 1 # LunSizeInMB 4000 # # If emulating NVMe SSD over kernel block device # bdev_class: kdev - map to VOS_BDEV_CLASS=AIO # bdev_list: [/dev/sdc] - generate nvme.conf as follows: # [AIO] # AIO /dev/sdc AIO2 # # If emulating NVMe SSD with backend file # bdev_class: file - map to VOS_BDEV_CLASS=AIO # bdev_size: 16 - file size in GB. Create file if # it does not exist. # bdev_list: [/tmp/daos-bdev] - generate nvme.conf as follows: # [AIO] # AIO /tmp/aiofile AIO1 4096 self.scm_mount = BasicParameter(None, "/mnt/daos") self.scm_class = BasicParameter(None, "ram") self.scm_size = BasicParameter(None, 16) self.scm_list = BasicParameter(None) self.bdev_class = BasicParameter(None) self.bdev_list = BasicParameter(None) self.bdev_size = BasicParameter(None) self.bdev_number = BasicParameter(None)
def __init__(self): """Initialize a RebuildTestParams object.""" super(RebuildTestParams, self).__init__("/run/rebuild/*") self.object_class = BasicParameter(None) self.rank = BasicParameter(None)
def __init__(self, pool, cb_handler=None, daos_command=None): """Create a TeestContainer object. Args: pool (TestPool): the test pool in which to create the container cb_handler (CallbackHandler, optional): callback object to use with the API methods. Defaults to None. """ super(TestContainer, self).__init__("/run/container/*", cb_handler) self.pool = pool self.object_qty = BasicParameter(None) self.record_qty = BasicParameter(None) self.akey_size = BasicParameter(None) self.dkey_size = BasicParameter(None) self.data_size = BasicParameter(None) self.data_array_size = BasicParameter(0, 0) # Provider access to get input params values # for enabling different container properties self.input_params = DaosInputParams() # Optional daos command objec to use with the USE_DAOS control method self.daos = daos_command # Optional daos command argument values to use with the USE_DAOS control # method when creating/destroying containers self.path = BasicParameter(None) self.type = BasicParameter(None) self.oclass = BasicParameter(None) self.chunk_size = BasicParameter(None) self.properties = BasicParameter(None) self.container = None self.uuid = None self.info = None self.opened = False self.written_data = []
def __init__(self, namespace, command, test): """Create a fio Command object.""" super(FioCommand, self).__init__(namespace, command) self.test = test # fio commandline options self.debug = FormattedParameter("--debug={}") self.parse_only = FormattedParameter("--parse-only", False) self.output = FormattedParameter("--output={}") self.bandwidth_log = FormattedParameter("--bandwidth-log", False) self.minimal = FormattedParameter("minimal", False) self.output_format = FormattedParameter("--output-format={}") self.terse_version = FormattedParameter("--terse-version={}") self.version = FormattedParameter("--version", False) self.fio_help = FormattedParameter("--help", False) self.cpuclock_test = FormattedParameter("--cpuclock-test", False) self.crctest = FormattedParameter("--crctest={}") self.cmdhelp = FormattedParameter("--cmdhelp={}") self.enghelp = FormattedParameter("--enghelp={}") self.showcmd = FormattedParameter("--showcmd={}") self.eta = FormattedParameter("--eta={}") self.eta_newline = FormattedParameter("--eta-newline={}") self.status_interval = FormattedParameter("--status-interval={}") self.readonly = FormattedParameter("--readonly", False) self.section = FormattedParameter("--section={}") self.alloc_size = FormattedParameter("--alloc-size={}") self.warnings_fatal = FormattedParameter("--warnings-fatal", False) self.max_jobs = FormattedParameter("--max-jobs={}") self.server = FormattedParameter("--server={}") self.daemonize = FormattedParameter("--daemonize={}") self.client = FormattedParameter("--client={}") self.remote_config = FormattedParameter("--remote-config={}") self.idle_prof = FormattedParameter("--idle-prof={}") self.inflate_log = FormattedParameter("--inflate-log={}") self.trigger_file = FormattedParameter("--trigger-file={}") self.trigger_timeout = FormattedParameter("--trigger-timeout={}") self.trigger = FormattedParameter("--trigger={}") self.trigger_remote = FormattedParameter("--trigger-remote={}") self.aux_path = FormattedParameter("--aux-path={}") # fio job options self.description = FormattedParameter("--description={}") self.name = FormattedParameter("--name={}") self.wait_for = FormattedParameter("--wait_for={}") self.filename = FormattedParameter("--filename={}") self.lockfile = FormattedParameter("--lockfile={}") self.directory = FormattedParameter("--directory={}") self.filename_format = FormattedParameter("--filename_format={}") self.unique_filename = FormattedParameter("--unique_filename={}") self.opendir = FormattedParameter("--opendir={}") self.rw = FormattedParameter("--rw={}") self.blocksize = FormattedParameter("--bs={}") self.blockalign = FormattedParameter("--ba={}") self.bsrange = FormattedParameter("--bsrange={}") self.bssplit = FormattedParameter("--bssplit={}") self.bs_unaligned = FormattedParameter("--bs_unaligned", False) self.randrepeat = FormattedParameter("--randrepeat={}") self.randseed = FormattedParameter("--randseed={}") self.norandommap = FormattedParameter("--norandommap", False) self.ignore_error = FormattedParameter("--ignore_error={}") self.rw_sequencer = FormattedParameter("--rw_sequencer={}") self.ioengine = FormattedParameter("--ioengine={}") self.iodepth = FormattedParameter("--iodepth={}") self.iodepth_batch = FormattedParameter("--iodepth_batch={}") self.iodepth_batch_complete_min = FormattedParameter( "--iodepth_batch_complete_min={}") self.iodepth_batch_complete_max = FormattedParameter( "--iodepth_batch_complete_max={}") self.iodepth_low = FormattedParameter("--iodepth_low={}") self.serialize_overlap = FormattedParameter("--serialize_overlap={}") self.io_submit_mode = FormattedParameter("--io_submit_mode={}") self.size = FormattedParameter("--size={}") self.io_size = FormattedParameter("--io_size={}") self.fill_device = FormattedParameter("--fill_device={}") self.filesize = FormattedParameter("--filesize={}") self.file_append = FormattedParameter("--file_append={}") self.offset = FormattedParameter("--offset={}") self.offset_increment = FormattedParameter("--offset_increment={}") self.offset_align = FormattedParameter("--offset_align={}") self.number_ios = FormattedParameter("--number_ios={}") self.random_generator = FormattedParameter("--random_generator={}") self.random_distribution = FormattedParameter( "--random_distribution={}") self.percentage_random = FormattedParameter("--percentage_random={}") self.allrandrepeat = FormattedParameter("--allrandrepeat={}") self.nrfiles = FormattedParameter("--nrfiles={}") self.file_service_type = FormattedParameter("--file_service_type={}") self.openfiles = FormattedParameter("--openfiles={}") self.fallocate = FormattedParameter("--fallocate={}") self.fadvise_hint = FormattedParameter("--fadvise_hint={}") self.fsync = FormattedParameter("--fsync={}") self.fdatasync = FormattedParameter("--fdatasync={}") self.write_barrier = FormattedParameter("--write_barrier={}") self.sync_file_range = FormattedParameter("--sync_file_range={}") self.direct = FormattedParameter("--direct={}") self.atomic = FormattedParameter("--atomic={}") self.buffered = FormattedParameter("--buffered={}") self.sync = FormattedParameter("--sync={}") self.overwrite = FormattedParameter("--overwrite={}") self.loops = FormattedParameter("--loops={}") self.numjobs = FormattedParameter("--numjobs={}") self.startdelay = FormattedParameter("--startdelay={}") self.runtime = FormattedParameter("--runtime={}") self.time_based = FormattedParameter("--time_based={}") self.verify_only = FormattedParameter("--verify_only", False) self.ramp_time = FormattedParameter("--ramp_time={}") self.clocksource = FormattedParameter("--clocksource={}") self.mem = FormattedParameter("--mem={}") self.verify = FormattedParameter("--verify={}") self.do_verify = FormattedParameter("--do_verify={}") self.verifysort = FormattedParameter("--verifysort={}") self.verifysort_nr = FormattedParameter("--verifysort_nr={}") self.verify_interval = FormattedParameter("--verify_interval={}") self.verify_offset = FormattedParameter("--verify_offset={}") self.verify_pattern = FormattedParameter("--verify_pattern={}") self.verify_fatal = FormattedParameter("--verify_fatal={}") self.verify_dump = FormattedParameter("--verify_dump={}") self.verify_async = FormattedParameter("--verify_async={}") self.verify_backlog = FormattedParameter("--verify_backlog={}") self.verify_backlog_batch = FormattedParameter( "--verify_backlog_batch={}") self.experimental_verify = FormattedParameter( "--experimental_verify={}") self.verify_state_load = FormattedParameter("--verify_state_load={}") self.verify_state_save = FormattedParameter("--verify_state_save={}") self.trim_percentage = FormattedParameter("--trim_percentage={}") self.trim_verify_zero = FormattedParameter("--trim_verify_zero={}") self.trim_backlog = FormattedParameter("--trim_backlog={}") self.trim_backlog_batch = FormattedParameter("--trim_backlog_batch={}") self.write_iolog = FormattedParameter("--write_iolog={}") self.read_iolog = FormattedParameter("--read_iolog={}") self.replay_no_stall = FormattedParameter("--replay_no_stall={}") self.replay_redirect = FormattedParameter("--replay_redirect={}") self.replay_scale = FormattedParameter("--replay_scale={}") self.replay_align = FormattedParameter("--replay_align={}") self.exec_prerun = FormattedParameter("--exec_prerun={}") self.exec_postrun = FormattedParameter("--exec_postrun={}") self.ioscheduler = FormattedParameter("--ioscheduler={}") self.zonesize = FormattedParameter("--zonesize={}") self.zonerange = FormattedParameter("--zonerange={}") self.zoneskip = FormattedParameter("--zoneskip={}") self.lockmem = FormattedParameter("--lockmem={}") self.rwmixread = FormattedParameter("--rwmixread={}") self.rwmixwrite = FormattedParameter("--rwmixwrite={}") self.nice = FormattedParameter("--nice={}") self.prio = FormattedParameter("--prio={}") self.prioclass = FormattedParameter("--prioclass={}") self.thinktime = FormattedParameter("--thinktime={}") self.thinktime_spin = FormattedParameter("--thinktime_spin={}") self.thinktime_blocks = FormattedParameter("--thinktime_blocks={}") self.rate = FormattedParameter("--rate={}") self.rate_min = FormattedParameter("--rate_min={}") self.rate_process = FormattedParameter("--rate_process={}") self.rate_cycle = FormattedParameter("--rate_cycle={}") self.rate_ignore_thinktime = FormattedParameter( "--rate_ignore_thinktime={}") self.rate_iops = FormattedParameter("--rate_iops={}") self.rate_iops_min = FormattedParameter("--rate_iops_min={}") self.max_latency = FormattedParameter("--max_latency={}") self.latency_target = FormattedParameter("--latency_target={}") self.latency_window = FormattedParameter("--latency_window={}") self.latency_percentile = FormattedParameter("--latency_percentile={}") self.invalidate = FormattedParameter("--invalidate={}") self.write_hint = FormattedParameter("--write_hint={}") self.create_serialize = FormattedParameter("--create_serialize={}") self.create_fsync = FormattedParameter("--create_fsync={}") self.create_on_open = FormattedParameter("--create_on_open={}") self.create_only = FormattedParameter("--create_only={}") self.allow_file_create = FormattedParameter("--allow_file_create={}") self.allow_mounted_write = FormattedParameter( "--allow_mounted_write={}") self.pre_read = FormattedParameter("--pre_read={}") self.cpumask = FormattedParameter("--cpumask={}") self.cpus_allowed = FormattedParameter("--cpus_allowed={}") self.cpus_allowed_policy = FormattedParameter( "--cpus_allowed_policy={}") self.numa_cpu_nodes = FormattedParameter("--numa_cpu_nodes={}") self.numa_mem_policy = FormattedParameter("--numa_mem_policy={}") self.end_fsync = FormattedParameter("--end_fsync={}") self.fsync_on_close = FormattedParameter("--fsync_on_close={}") self.unlink = FormattedParameter("--unlink={}") self.unlink_each_loop = FormattedParameter("--unlink_each_loop={}") self.exitall = FormattedParameter("--exitall", False) self.exitall_on_error = FormattedParameter("--exitall_on_error", False) self.stonewall = FormattedParameter("--stonewall", False) self.new_group = FormattedParameter("--new_group", False) self.thread = FormattedParameter("--thread={}") self.per_job_logs = FormattedParameter("--per_job_logs={}") self.write_bw_log = FormattedParameter("--write_bw_log={}") self.bwavgtime = FormattedParameter("--bwavgtime={}") self.write_lat_log = FormattedParameter("--write_lat_log={}") self.write_iops_log = FormattedParameter("--write_iops_log={}") self.iopsavgtime = FormattedParameter("--iopsavgtime={}") self.log_avg_msec = FormattedParameter("--log_avg_msec={}") self.log_hist_msec = FormattedParameter("--log_hist_msec={}") self.log_hist_coarseness = FormattedParameter( "--log_hist_coarseness={}") self.write_hist_log = FormattedParameter("--write_hist_log={}") self.log_max_value = FormattedParameter("--log_max_value={}") self.log_offset = FormattedParameter("--log_offset={}") self.log_compression = FormattedParameter("--log_compression={}") self.log_compression_cpus = FormattedParameter( "--log_compression_cpus={}") self.log_store_compressed = FormattedParameter( "--log_store_compressed={}") self.log_unix_epoch = FormattedParameter("--log_unix_epoch={}") self.block_error_percentiles = FormattedParameter( "--block_error_percentiles={}") self.group_reporting = FormattedParameter("--group_reporting={}") self.stats = FormattedParameter("--stats={}") self.zero_buffers = FormattedParameter("--zero_buffers={}") self.refill_buffers = FormattedParameter("--refill_buffers={}") self.scramble_buffers = FormattedParameter("--scramble_buffers={}") self.buffer_pattern = FormattedParameter("--buffer_pattern={}") self.buffer_compress_percentage = FormattedParameter( "--buffer_compress_percentage={}") self.buffer_compress_chunk = FormattedParameter( "--buffer_compress_chunk={}") self.dedupe_percentage = FormattedParameter("--dedupe_percentage={}") self.clat_percentiles = FormattedParameter("--clat_percentiles={}") self.lat_percentiles = FormattedParameter("--lat_percentiles={}") self.percentile_list = FormattedParameter("--percentile_list={}") self.significant_figures = FormattedParameter( "--significant_figures={}") self.disk_util = FormattedParameter("--disk_util={}") self.gtod_reduce = FormattedParameter("--gtod_reduce={}") self.disable_lat = FormattedParameter("--disable_lat={}") self.disable_clat = FormattedParameter("--disable_clat={}") self.disable_slat = FormattedParameter("--disable_slat={}") self.disable_bw_measurement = FormattedParameter( "--disable_bw_measurement={}") self.gtod_cpu = FormattedParameter("--gtod_cpu={}") self.unified_rw_reporting = FormattedParameter( "--unified_rw_reporting={}") self.continue_on_error = FormattedParameter("--continue_on_error={}") self.error_dump = FormattedParameter("--error_dump={}") self.profile = FormattedParameter("--profile={}") self.cgroup = FormattedParameter("--cgroup={}") self.cgroup_nodelete = FormattedParameter("--cgroup_nodelete={}") self.cgroup_weight = FormattedParameter("--cgroup_weight={}") self.uid = FormattedParameter("--uid={}") self.gid = FormattedParameter("--gid={}") self.kb_base = FormattedParameter("--kb_base={}") self.unit_base = FormattedParameter("--unit_base={}") self.hugepage_size = FormattedParameter("--hugepage-size={}") self.flow_id = FormattedParameter("--flow_id={}") self.flow = FormattedParameter("--flow={}") self.flow_watermark = FormattedParameter("--flow_watermark={}") self.flow_sleep = FormattedParameter("--flow_sleep={}") self.steadystate = FormattedParameter("--steadystate={}") self.steadystate_duration = FormattedParameter( "--steadystate_duration={}") self.steadystate_ramp_time = FormattedParameter( "--steadystate_ramp_time={}") # fio api self.api = BasicParameter(None, "POSIX")