Schemas¶
Schemas are based on the format defined by Cerberus
Global Parameters¶
# importable test/task package name, consumed on use
task_package:
type: string
required: True
default: null
nullable: True
# PIP compatible version string IE: >=1.0.0, consumed on use
package_version:
type: string
default: null
nullable: True
# test groups to execute, consumed on use
test_groups:
type: list
schema:
type: string
default: []
# ATS client for communication with the ATS resource manager, consumed on use
ats_client:
type: string
default: null
nullable: True
# any string not listed here will be considered a failure
valid_result:
type: list
schema:
type: string
default: [Passed, Completed, Skipped]
required: True
# Max number of threads to use in threading mode, consumed on use
thread_limit:
type: integer
default: 5
required: True
# Max number of processes to use in sub_process mode, consumed on use
process_limit:
type: integer
default: 5
required: True
# Resource reservation mode, consumed on use
resource_mode:
type: string
allowed: [all, per_task_separate, per_task_combine, custom_all, custom_separate, custom_combine]
default: all
required: True
# The Automated Test System
ats:
type: string
required: True
default: null
nullable: True
# The Device Under Test
dut:
type: string
required: True
default: null
nullable: True
# When ignore_prereq is set, all prereq checking will be ignored
ignore_prereq:
type: boolean
required: True
default: False
# kwargs to be passed to an auto ATS client
ats_client_kwargs:
type: dict
required: True
default: null
nullable: True
Task Parameters¶
# task name, typicly the module __name__
name:
type: string
required: True
# short description of the task
description:
type: string
required: True
# if this task fails, stop all further testsing
stop_suite_on_fail:
type: boolean
default: True
required: True
#
exclusive_resources:
type: list
default: []
schema:
type: string
required: True
#
shared_resources:
type: list
default: []
schema:
type: string
required: True
# configurations to be passed to the resource manager
# for each resource. Key name must match a resource,
# the value will be passed to the resource manager
resource_configs:
type: dict
default: {}
required: True
# if resources are busy, max number of times to retry
max_resource_retry:
type: integer
default: 5
required: True
#
thread_safe:
type: boolean
default: False
required: True
#
process_safe:
type: boolean
default: False
required: True
#
valid_ats:
type: list
default: [any]
schema:
type: string
required: True
#
valid_duts:
type: list
default: [any]
schema:
type: string
required: True
# keys required to be present in the global
# parameter dictionary
req_param_keys:
type: list
default: []
schema:
type: string
required: True
# optional keys that will be used if present
# in the global parameter dictionary
optional_param_keys:
type: list
default: []
schema:
type: string
required: True
# tasks that must successfully run before this task can run
prereq_tasks:
type: list
default: []
schema:
type: string
required: True
# All prereq_tasks must have been run in the same thread/process
prereq_same_thread:
type: boolean
default: True
required: True
# estimated test time in seconds (including optional
# task_setup and task_teardown execution time)
est_task_time:
type: integer
default: 3600
required: True
# if true, will always run teardown regardless of completion
# status of setup or run
always_teardown:
type: boolean
default: False
required: True
# other data to pass to the class, must be JSON
# serializable if thread_safe or process_safe are true
extra_metadata:
type: dict
default: null
nullable: True
# priorty level of the task, lower is given more
# prefence in multiprocess and threading modes
priority:
type: integer
default: 5
required: True
Task Return¶
# result of the task, see global param
# schema for default non-failure strings
result:
type: string
required: True
# optional dictionary of extra metadata to be reported
metadata:
type: dict
required: True
default: {}
schema:
message:
type: string
required: True
empty: True
default: ''
# optional key for reporting multiple test results
# via the registered reporting function
multi_result:
type: list
schema:
type: dict
schema:
name:
type: string
required: True
description:
type: string
required: True
default: ''
result:
type: string
required: True
metadata:
type: dict
required: True
default: {}
schema:
message:
type: string
required: True
empty: True
default: ''
Reporting¶
name:
type: string
required: True
description:
type: string
required: True
result:
type: string
required: True
metadata:
type: dict
schema:
run_time:
type: float
default: 0
required: True
est_task_time:
type: float
default: 0
required: True
run_time_delta:
type: float
default: 0
required: True
required: True