1 # Copyright (c) 2022 Cisco and/or its affiliates.
2 # Licensed under the Apache License, Version 2.0 (the "License");
3 # you may not use this file except in compliance with the License.
4 # You may obtain a copy of the License at:
6 # http://www.apache.org/licenses/LICENSE-2.0
8 # Unless required by applicable law or agreed to in writing, software
9 # distributed under the License is distributed on an "AS IS" BASIS,
10 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11 # See the License for the specific language governing permissions and
12 # limitations under the License.
16 $id: https://fd.io/FIXME/CSIT/UTI/test_case/info/1.1.0
17 $schema: https://json-schema.org/draft/2020-12/schema
19 Schema for info output of test case.
22 The main structure, without conditional relations between fields yet.
24 additionalProperties: false
28 A derived quantity, present only in info output files.
29 Difference between start_time and end_time, in seconds.
30 $ref: "#/$defs/types/nonnegative_number"
33 DUT type used, e.g. VPP or DPDK.
38 Version string appropriate to DUT type used.
43 UTC date and time in RFC 3339 format, specifying calendar time
44 just before test case ended (at the end of test case teardown).
45 $ref: "#/$defs/types/date_time"
48 Array of hosts this test interacted with.
49 This can be used for identifying testbed number.
50 Valid tests shoud interact with at least one DUT or TG.
51 The array is usually sorted, but that is not a requirement.
56 Host identifier, usually numeric IPv4 address.
60 Array of telemetry entries. Each entry represent one captured
70 If passed is true, this value is empty.
71 Otherwise, value taken directly from TEST_MESSAGE
72 Robot variable, read at the end of test case
73 (in test teardown, before export and validation).
74 It contains information from the exception
75 that caused the failure, probably with additional
76 exceptions from teardown keywords.
80 Value set accordingly to TEST_STATUS Robot variable,
81 true if and only if the status is "PASS".
82 The status is read at the end of test case
83 (in test teardown, before export and validation).
89 Sub-schema common for all cases,
90 only result type identifier defined here.
94 Identifier of which result type case is applied.
100 Result type for unknown case.
101 This case represents a test with no specific result
102 (outside message), e.g. device test;
103 or a test with result not parsed into
104 this version of model yet, e.g. GSO test.
105 additionalProperties: false
110 Result type MRR case.
111 additionalProperties: false
117 The results refer to receive rates for multiple
118 MRR trials. For PPS, these are aggregate
119 (bidirectional) rates.
120 Currently, the tests are exporting
121 approximated receive rates.
122 That means the actual trial duration
123 is measured (as opposed to trusting traffic
124 generator to honor its target duration),
125 so the resulting values contain noise
126 from time measurement, and can be lower
127 than the real performance
128 (due to various time overheads).
129 Bandwidth values are supported, but currently
130 Robot does not export them.
131 $ref: "#/$defs/types/rate_list_with_bandwidth"
136 Result type NDRPDR case.
137 additionalProperties: false
143 The results refer to search for NDR
144 (Non Drop Rate). For PPS, this is aggregate
145 (bidirectional) rate.
146 Each bound was used as the target load value
147 in a full-duration trial measurement.
148 The accepted loss ratio for NDR is exact zero.
149 Note that packets the Traffic Generator
150 did not send are also counted as lost packets.
151 $ref: "#/$defs/macros/lower_and_upper_rate"
154 The results refer to search for PDR
155 (Partial Drop Rate). For PPS, this is aggregate
156 (bidirectional) rate.
157 Each bound was used as the target load value
158 in a full-duration trial measurement.
159 The accepted loss ratio for PDR is 0.5%.
160 Note that packets the Traffic Generator
161 did not send are also counted as lost packets.
162 $ref: "#/$defs/macros/lower_and_upper_rate"
165 Object with results related to latency part
166 of NDRPDR test, for forward traffic direction.
167 It is the direction used in unidirectional
169 ASTF profiles and IMIX STL profiles
170 do not support latency information,
171 so for those tests this object is missing.
172 It is also missing if Traffic Generator
173 fails to return valid latency results
174 for any other reasons,
175 e.g. latency rate is too high for CPU/NIC used.
176 $ref: "#/$defs/macros/latency_for_loads"
179 Object with results related to latency part
180 of NDRPDR test, for reverse traffic diration.
181 This object is not present
182 when unidirectional traffic profiles are used.
183 ASTF profiles and IMIX STL profiles
184 do not support latency information,
185 so for those tests this object is missing.
186 It is also missing if Traffic Generator
187 fails to return valid latency results
188 for any other reasons,
189 e.g. latency rate is too high for CPU/NIC used.
190 $ref: "#/$defs/macros/latency_for_loads"
196 Result type SOAK case.
197 additionalProperties: false
203 The results refer to bayesian estimate
204 of critical rate corresponding to
205 average loss ratio of 10^-7.
206 For PPS, this is aggregate (bidirectional) rate.
207 The bounds are computed from
208 trial measurement results,
209 but are not equal to any target load used.
210 Note that packets the Traffic Generator
211 did not send are also counted as lost packets.
212 $ref: "#/$defs/macros/lower_and_upper_rate"
218 UTC date and time in RFC 3339 format, specifying calendar time
219 just after test case started (at the start of test setup).
220 $ref: "#/$defs/types/date_time"
223 The list of strings comes directly
224 from Robot variable TEST_TAGS.
225 The content should include both static and dynamic tags
226 at the end of test case (teardown).
232 Value taken directly from TEST_DOCUMENTATION Robot variable.
233 The content is what you see in suite file
234 at test case definition, which is usually empty
235 as CSIT uses data driven test cases.
239 A derived quantity, present only in info output files.
240 It is the most complete and unique identifier for a test case.
241 This property has a value, of the following form:
242 {suite_name}.{test_name}
243 Here, suite name comes from SUITE_NAME robot variable,
244 test name comes from TEST_NAME robot variable,
245 but both are converted to lower case,
246 and spaces are replaced by underscores.
251 A derived quantity, present only in info output files.
252 This property has a value, of the following form:
253 {nic_short_name}-{frame_size}-{threads_and_cores}-{suite_part}
254 Here, suite part is very similar to suite tag,
255 but additionally may contain a prefix describing NIC driver used
256 (if it is not the default one, drv_vfio_pci for VPP tests).
257 Any space is replaced by underscore and letters are lower case.
262 A derived quantity, present only in info output files.
263 This property has a value very similar to suite tag,
264 but additionally may contain a prefix describing NIC driver used
265 (if it is not the default one, drv_vfio_pci for VPP tests).
266 Any space is replaced by underscore and letters are lower case.
271 A derived quantity, present only in info output files.
272 Test type identifier, PAL uses it to group similar tests,
273 e.g. for comparison tables.
274 Ideally, this information should be parseable from test name,
275 but the current naming scheme is not simple/consistent enough.
276 The current implementation queries the robot test tags.
277 The resulting value is frequently identical to result type,
278 but this schema version does not require any relation there,
279 as PAL may want to group tests differently.
292 TG type used, e.g. TREX.
297 Version string appropriate to TG type used.
302 CSIT model version (semver format)
303 the exporting code adhered to.
327 Subschema validating relation between status and message.
330 Subschema for passing tests, message has to be empty.
338 Subschema for failing tests, mesage cannot be empty.
368 Packets per second (pps) or connections per second (cps).
375 Unit of measurement for bandwidth values.
376 Currently a constant, but later versions of model
377 may allow more units.
382 Reusable composite type, value together with its
385 additionalProperties: false
389 Numeric value, context specified elsewhere.
390 The only assumption is that value is not negative.
391 $ref: "#/$defs/types/nonnegative_number"
394 Unit of measurement for the value.
395 Context and allowed values are specified elsewhere.
400 rate_without_bandwidth:
402 Reusable type, for various rate quantites.
404 - $ref: "#/$defs/types/value_with_unit"
408 Unless specified otherwise,
409 this is the aggregated rate
410 (sum of both traffic directions).
411 Depending on the usage, the value can express
412 intended load, offered load, receive rate,
413 and various approximations
414 or estimated bounds thereof.
417 A transaction rate unit the value is expressed in.
418 $ref: "#/$defs/types/rate_unit"
421 Reusable type, for various bandwidth quantites.
423 - $ref: "#/$defs/types/value_with_unit"
427 Bandwidth value computed
428 from the corresponding rate.
430 $ref: "#/$defs/types/bandwidth_unit"
433 Reusable composite type, joining primary rate
434 with optional derived bandwidth.
435 Not all test types currently compute bandwidth,
436 even if rate unit is pps.
438 additionalProperties: false
441 $ref: "#/$defs/types/rate_without_bandwidth"
443 $ref: "#/$defs/types/bandwidth"
446 value_list_with_unit_and_stats:
448 Reusable composite type, multiple values together with their
449 unit of measurement and derived statistics.
451 additionalProperties: false
455 List of values of the same unit, useful for MRR.
460 Numeric value, context specified elsewhere.
461 The only assumption is that the value is nonnegative.
462 $ref: "#/$defs/types/nonnegative_number"
465 A derived quantity, present only in info output files.
466 It is the arithmetic average of the values list.
467 $ref: "#/$defs/types/nonnegative_number"
470 A derived quantity, present only in info output files.
471 It is the standard deviation for the values list,
472 as computed by jumpavg library.
473 $ref: "#/$defs/types/nonnegative_number"
476 Unit of measurement for the values.
477 Context and allowed values are specified elsewhere.
484 rate_list_without_bandwidth:
486 Reusable composite type, multiple rate values.
488 - $ref: "#/$defs/types/value_list_with_unit_and_stats"
493 Unless specified otherwise,
494 this is the aggregated rate
495 (sum of both traffic directions).
496 Depending on the usage, the value can express
497 intended load, offered load, receive rate,
498 and various approximations or estimated bounds
501 $ref: "#/$defs/types/rate_unit"
504 Reusable composite type, multiple bandwidth values.
505 This is a derived entity, thus it only appears in info output,
506 and only if rate unit is pps.
508 - $ref: "#/$defs/types/value_list_with_unit_and_stats"
513 Unless specified otherwise,
514 this is the aggregated bandwidth
515 (sum of both traffic directions).
516 Depending on the usage, the value can express
517 intended load, offered load, receive rate,
518 and various approximations or estimated bounds
521 $ref: "#/$defs/types/bandwidth_unit"
522 rate_list_with_bandwidth:
524 Reusable composite type, joining primary rates
525 with optional derived bandwidths (and stats).
526 No test types currently computes the bandwidth part.
528 additionalProperties: false
531 $ref: "#/$defs/types/rate_list_without_bandwidth"
533 $ref: "#/$defs/types/bandwidth_list"
537 lower_and_upper_rate:
539 additionalProperties: false
543 The lower bound (or min_rate) for the estimate
544 of a particular searched value.
545 $ref: "#/$defs/types/rate_with_bandwidth"
548 The upper bound (or max_rate) for the estimate
549 of a particular searched value.
550 $ref: "#/$defs/types/rate_with_bandwidth"
556 additionalProperties: false
560 Rounded minimal latency time measured in this trial.
561 See unit property for the unit of measurement.
562 $ref: "#/$defs/types/nonnegative_integer"
565 Rounded maximal latency time measured in this trial.
566 See unit property for the unit of measurement.
567 Zero value is not allowed, as that is one of symptoms
568 of Traffic Generator failing to get proper latency.
569 $ref: "#/$defs/types/positive_integer"
572 Rounded average latency time measured in this trial.
573 See unit property for the unit of measurement.
574 $ref: "#/$defs/types/nonnegative_integer"
577 Base64-encoded compressed representation of HDRHistogram
578 of all latency sample times encountered
579 in this latency trial.
580 See unit property for the unit of measurement.
581 Note that some bins can be several units wide.
585 Unit of measurement for latency times.
586 Currently a constant, but later versions
587 of the model may allow more values.
599 additionalProperties: false
603 Object related to latency measurement performed
604 at minimal rate (currently 9000 pps per direction).
605 $ref: "#/$defs/macros/latency_numbers"
608 Object related to latency measurement performed
609 at 10% of PDR lower bound, if needed rounded up
610 to minimal rate (currently 9000 pps per direction).
611 $ref: "#/$defs/macros/latency_numbers"
614 Object related to latency measurement performed
615 at 50% of PDR lower bound, if needed rounded up
616 to minimal rate (currently 9000 pps per direction).
617 $ref: "#/$defs/macros/latency_numbers"
620 Object related to latency measurement performed
621 at 90% of PDR lower bound, if needed rounded up
622 to minimal rate (currently 9000 pps per direction).
623 $ref: "#/$defs/macros/latency_numbers"