Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion src/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
**/__pycache__
harness/logs
!harness/logs/README.md
harness/responses/*.json
harness/test_vectors/*/responses/*.json
harness/auth
!harness/auth/*.py
!harness/auth/README.md
6 changes: 3 additions & 3 deletions src/harness/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,14 +46,14 @@ Harness configuration files are located in `./cfg`. Detailed descriptions of eac
* **./cfg/afc.toml**: AFC SUT connection options, including SUT URL, network timeouts, and any authentication information. See the documentation for the `AfcConnectionHandler` class in `./afc.py` or the descriptions in `./cfg/afc.toml` for more details.
* NOTE: As of 2023-08-31, this file overrides the default network timeout value (15 minutes instead of 10 seconds). This value may be raised or lowered as desired for testing any given AFC SUT.
* **./cfg/tests_to_run.py**: Specify tests to run from the `{inquiries_dir}` directory. If 'all' is listed first, harness executes on all `(test_name).json` files in `{inquiries_dir}`. Corresponding response masks should be placed in the `{masks_dir}` directory, named as `(test_name)_mask.json`. This file should contain a valid python function that returns a list of test names.
* By default, the `{inquiries_dir}` directory is `./inquiries` and the `{masks_dir}` directory is `./masks`.
* By default, the `{inquiries_dir}` directory is `./test_vectors/latest/inquiries` and the `{masks_dir}` directory is `./test_vectors/latest/masks`.

## Specification versions
AFC communication and message validation is performed according to the current version of the Wi-Fi Alliance AFC System to AFC Device Interface Specification Protocol (protocol v1.4, as defined in specification v1.5).

Tests are executed and evaluated according to the current version of the Wi-Fi Alliance AFC System Under Test (SUT) Compliance Test Plan (v1.5).

JSON-formatted test vector inquiries and response masks provided in `./inquiries` and `./masks` are from the Wi-Fi Alliance AFC System (SUT) Compliance Test Vectors (v1.2). The mask file for AFCS.SRS.1 is created to allow the maximum allowed power for the requested frequency ranges and all channel indices in the requested global operating classes (according to the channel index list in Table E-4 of [IEEE 802.11ax-2021](https://ieeexplore.ieee.org/document/9442429)).
JSON-formatted test vector inquiries and response masks provided in `./test_vectors` are from the Wi-Fi Alliance AFC System (SUT) Compliance Test Vectors (v1.2 and v1.3). The mask file for AFCS.SRS.1 is created to allow the maximum allowed power for the requested frequency ranges and all channel indices in the requested global operating classes (according to the channel index list in Table E-4 of [IEEE 802.11ax-2021](https://ieeexplore.ieee.org/document/9442429)).

These specifications and test vectors are available from the [Wi-Fi Alliance website](https://www.wi-fi.org/discover-wi-fi/specifications) under "AFC Specification and Test Plans."

Expand All @@ -74,7 +74,7 @@ Example json files for the inquiry request, response, and response mask are prov
* By default, `logs_dir` is `./logs`
* **{response_dir}/(test_name)\_response\_(datetime).json**
* Copies of the received response for `test_name`
* By default, `response_dir` is `./responses`
* By default, `response_dir` is `./test_vectors/latest/responses`

## Code location
* Test framework:
Expand Down
6 changes: 3 additions & 3 deletions src/harness/cfg/harness.toml
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ sut_config = 'cfg/afc.toml'
# mask_dir - Path to the directory containing the expected inquiry responses for each test
# log_dir = Path where test harness output will be logged during execution

#inquiry_dir = 'inquiries'
#response_dir = 'responses'
#mask_dir = 'masks'
#inquiry_dir = 'test_vectors/latest/inquiries'
#response_dir = 'test_vectors/latest/responses'
#mask_dir = 'test_vectors/latest/masks'
#log_dir = 'logs'
6 changes: 3 additions & 3 deletions src/harness/test_main.py
Original file line number Diff line number Diff line change
Expand Up @@ -124,9 +124,9 @@ def main():
## Setup directories
paths_cfg = harness_cfg.get("paths", {})
log_dir = paths_cfg.get("log_dir", "logs")
request_dir = paths_cfg.get("inquiry_dir", "inquiries")
response_dir = paths_cfg.get("response_dir", "responses")
mask_dir = paths_cfg.get("mask_dir", "masks")
request_dir = paths_cfg.get("inquiry_dir", "test_vectors/latest/inquiries")
response_dir = paths_cfg.get("response_dir", "test_vectors/latest/responses")
mask_dir = paths_cfg.get("mask_dir", "test_vectors/latest/masks")

## Choose SUT config file
if args.sut_cfg is not None:
Expand Down
64 changes: 64 additions & 0 deletions src/harness/test_vectors/latest/inquiries/AFCS.FSP.1.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
{
"version": "1.4",
"availableSpectrumInquiryRequests": [
{
"requestId": "REQ-FSP1",
"deviceDescriptor": {
"serialNumber": "FSP1",
"certificationId": [
{
"rulesetId": "US_47_CFR_PART_15_SUBPART_E",
"id": "FCCID-FSP1"
}
]
},
"location": {
"elevation": {
"height": 3.0,
"heightType": "AGL",
"verticalUncertainty": 2
},
"ellipse": {
"center": {
"longitude": -97.560614,
"latitude": 33.180621
},
"majorAxis": 100,
"minorAxis": 50,
"orientation": 45.0
},
"indoorDeployment": 1
},
"inquiredFrequencyRange": [
{
"lowFrequency": 5925,
"highFrequency": 6425
},
{
"lowFrequency": 6525,
"highFrequency": 6875
}
],
"inquiredChannels": [
{
"globalOperatingClass": 131
},
{
"globalOperatingClass": 132
},
{
"globalOperatingClass": 133
},
{
"globalOperatingClass": 134
},
{
"globalOperatingClass": 136
},
{
"globalOperatingClass": 137
}
]
}
]
}
64 changes: 64 additions & 0 deletions src/harness/test_vectors/latest/inquiries/AFCS.FSP.10.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
{
"version": "1.4",
"availableSpectrumInquiryRequests": [
{
"requestId": "REQ-FSP10",
"deviceDescriptor": {
"serialNumber": "FSP10",
"certificationId": [
{
"rulesetId": "US_47_CFR_PART_15_SUBPART_E",
"id": "FCCID-FSP10"
}
]
},
"location": {
"elevation": {
"height": 100.0,
"heightType": "AGL",
"verticalUncertainty": 10
},
"ellipse": {
"center": {
"longitude": -87.636215,
"latitude": 41.879231
},
"majorAxis": 100,
"minorAxis": 50,
"orientation": 45.0
},
"indoorDeployment": 2
},
"inquiredFrequencyRange": [
{
"lowFrequency": 5925,
"highFrequency": 6425
},
{
"lowFrequency": 6525,
"highFrequency": 6875
}
],
"inquiredChannels": [
{
"globalOperatingClass": 131
},
{
"globalOperatingClass": 132
},
{
"globalOperatingClass": 133
},
{
"globalOperatingClass": 134
},
{
"globalOperatingClass": 136
},
{
"globalOperatingClass": 137
}
]
}
]
}
Loading