Configuring Fuze™ Test#
Introduction#
Fuze™ Test uses structured JSON configuration files to describe:
Execution environment: DUT types, DUT programming algorithms, known software packages, searchable file extensions, programming timeouts, and communication timeouts
Resources: DUT instances and their parameters, including their external mechanism control parameters, and their connected host’s network parameters and search paths
Real Time Status reporting: External messaging interfaces for real-time execution and breakage reporting
This document outlines each major system component and how to configure it.
Resources Configuration#
All configuration files are implemented using JSON. Configuration file selection starts with the location CLI option when executing Fuze™ Test. The value provided selects the <location>_resources.json file for the current execution.
A resources file consists of the following sections:
{
"rps": {
"comment": "List of power cycling devices deployed for testing"
},
"macro_subs": {
"comment": "List of Farm-level parameter:value pairs for use in test content, e.g., needed to control an external mechanism"
},
"dut": {
"comment": "List of DUTs and their components available for testing"
},
"pathing": {
"comment1": "Ordered list of recursive search paths, either absolute or relative to the execution folder, used to find host tools, custom scripts, data files, images, etc... referenced in test content"
},
"comment": "Environment and Default Test Suite list selectors",
"env": "default",
"tests": "default"
}
Configuring a DUT#
A DUT (Device Under Test) is an entry in the Resources file’s DUT list. A DUT can be specified with or without remote connect parameters. If not specified, the DUT is (hosted by) the localhost machine upon which the current test cycle is being executed.
Each DUT entry provides:
id - cross referenced in results files
rps - (Remote Power Switch) if equipped - YepKit YKUSH supported natively
type - cross-referenced to a device type in the selected Environment file and on the cycling
name - cross-referenced in results and log files, and any real-time reporting to configured
macro_subs - parameter:value pairs, to be referenced in test content and/or programming algorithms
{
"id": 2, "rps": 0, "type": "demo-stm32-nucleo-h5", "name": "DEMO-STM32-NUCLEO-H563ZI-1", "port": 0,
"components": { "mcu": { "type": "sth563", "port": 0 } },
"remote": {
"uri": "192.168.0.41",
"dir": "/home/user1/WS",
"usr": "user1",
"pwd": "password1234"
},
"macro_subs": {
"__DUT_MACRO_VALUE__": "This is a DUT level macro"
}
}
Environment Configuration#
The Resources configuration file selects the <select>_environment.json file for the current execution.
An Environment file consists of the following sections:
{
"labs": [ "List of logical names for labs to manage" ],
"power_cycle_recovery_strategies": {
"do_not_program": {
"programming": [],
"status_check": {}
},
...
},
"device_types": {
"comment": "Testable device types and the subcomponents that must be programmed for testing",
"none": {
"components": [],
"power_cycle_recovery": "do_not_program"
},
...
},
"pta": {
"comment": "Run-time config for using the Product Test Adapter interface",
"selfheal": {
"operation_timeout_seconds": 15,
"config_timeout_seconds": 120,
"testcase_timeout_seconds": 60,
"max_retries": 1
}
},
"comment": "Include any DUT programmable component parameters, such as default MUT subfolders to locate images and tools, refined by type/manufacturer",
"programmable_component_example": {
"comment": "Example of a programmable component",
"program": {
"comment1": "There are no default programming algorithms for this component",
"comment2": "Power Cycle Recovery feature must be used",
"comment3": "imageefilepatterns, subfolders, toolsfolders specified ",
"comment4": "here will be used in PCR algorithms if no other valid ",
"comment5": "overriding parameters are provided in PCR specifications",
"subfolder": "tbd/output",
"toolsfolder": "tbd/tools",
"serialnumbersub": "__TBD_PROGRAMMER_SN__",
"imagedirsub": "__TBD_IMG_DIR_PATH__",
"toolsdirsub": "__TBD_TOOLS_DIR_PATH__",
"commenttypes": "Note that any additions to the 'types' entry should also be added to the component definitions in common/utilities.py",
"tbd_component_type": {
"subfolder": "tbd/bin",
"toolsfolder": "tools/tbd",
"imagefilepattern": "tbd.bin"
},
"selfheal": {
"prog_timeout": 545,
"max_prog_retries": 1,
"recovery_time": 5
},
"types": {
"comment": "Component types and static information organized by logical names (used on command line)",
"tbd_component_hw_type": {
"name": "tbd",
"manufacturer": "tbd"
}
}
}
},
"software": {
"comment0": "Modules valid for test cycle module input, with additional ",
"comment1": "information can be used to determine dynamic information ",
"comment2": "about downloaded modules at run-time",
"comment3": "packageid entries use '{}' for run-time version ",
"comment4": "substitution; THIS MUST BE INCLUDED at the correct position",
"comment5": "(per packaging artifact/file)",
"modules": {
"example-mut": {
"parent": "",
"packageid": "package-name-v{}",
"versionsub": "__EXAMPLE_VERSION__",
"dest": [],
"plugins": [],
"testsuites": "atf/testsuites",
"testcases": "atf/testcases"
}
}
},
"producttestplugin": {
"comment": "Product information that can be used to determine dynamic information about downloaded modules at run-time",
"producttestplugins": {
"tbd_ptp": {
"packageid": "TB-PTP-{}"
}
}
},
"file_extensions": {
"comment1": "List of file extensions usable for command scripts, data input, or data output",
"comment2": "Using glob patterns is ok",
"comment3": "The purpose of this feature is to reduce the scope of files Fuze-Test will consider when finding files for test content configuration",
"comment4": "Including an empty string (i.e., 'all files', or '*') will defeat the purpose of this feature",
"data": [
".csv",
".txt"
],
"script": {
"windows": [
".exe",
".bat",
".ps1",
".py"
],
"linux": [
".sh",
".jcsh",
".py"
],
"darwin": [
".sh",
".jcsh",
".py"
]
}
}
}
Real Time Status Reporting Configuration#
The RTSR configuration file configures endpoints for reporting real-time execution and breakage for the current execution.
An RTSR file consists of the following sections:
{
"available_services": ["slack", "email", "text"],
"active_services" : ["slack"],
"slack": {
"comms_timeout_sec": 30,
"update_interval_mins": 30,
"error_reporting_url": "TBD",
"trending_url": "TBD",
"test_case_fail_url": "TBD"
},
"email": {
"server": {
"address": "a.b.c.d:port",
"uname": "tbd",
"pword": "password",
"tls": true
},
"groups": {
"all" : ["All emails"],
"development" : ["someone's email"],
"helloworld" : ["someone's phone number"]
}
},
"Text": {
"groups": {
"all" : ["All phone numbers"],
"example-mut" : ["someone's phone number"]
}
},
"modules": {
"example-mut": {
"slack": {
"url" : "http://TBD"
}
}
}
}