diff --git a/feature/platform/transceiver/tests/zr_cd_test/README.md b/feature/platform/transceiver/chromatic_dispersion/tests/zr_cd_test/README.md similarity index 100% rename from feature/platform/transceiver/tests/zr_cd_test/README.md rename to feature/platform/transceiver/chromatic_dispersion/tests/zr_cd_test/README.md diff --git a/feature/platform/transceiver/tests/zr_cd_test/metadata.textproto b/feature/platform/transceiver/chromatic_dispersion/tests/zr_cd_test/metadata.textproto similarity index 100% rename from feature/platform/transceiver/tests/zr_cd_test/metadata.textproto rename to feature/platform/transceiver/chromatic_dispersion/tests/zr_cd_test/metadata.textproto diff --git a/feature/platform/transceiver/tests/zr_cd_test/zr_cd_test.go b/feature/platform/transceiver/chromatic_dispersion/tests/zr_cd_test/zr_cd_test.go similarity index 100% rename from feature/platform/transceiver/tests/zr_cd_test/zr_cd_test.go rename to feature/platform/transceiver/chromatic_dispersion/tests/zr_cd_test/zr_cd_test.go diff --git a/feature/platform/transceiver/chromatic_dispersion/tests/zrp_cd_test/README.md b/feature/platform/transceiver/chromatic_dispersion/tests/zrp_cd_test/README.md new file mode 100644 index 00000000000..38d2a7baa9c --- /dev/null +++ b/feature/platform/transceiver/chromatic_dispersion/tests/zrp_cd_test/README.md @@ -0,0 +1,89 @@ +# TRANSCEIVER-1: Telemetry: 400ZR_PLUS Chromatic Dispersion(CD) telemetry values streaming + +## Summary + +Validate 400ZR_PLUS optics module reports accurate CD telemetry values. + +Chromatic Dispersion is frequency dependent change in signal phase velocity due +to fiber measured in ps/nm + +The test must be repeated for each supported operational-mode or as agreed between the vendor and customer. + +## Procedure + +* Connect two ZR_PLUS interfaces using a duplex LC fiber jumper such that TX + output power of one is the RX input power of the other module. Connection + between the modules should pass through an optical switch that can be + controlled through automation to simulate a fiber cut. +* To establish a point to point ZR_PLUS link ensure the following: + * Both transceivers states are enabled + * Both transceivers are set to a valid target TX output power + example -3 dBm + * Both transceivers are tuned to a valid centre frequency + example 193.1 THz +* With the ZR_PLUS link is established as explained above, verify that the + following ZR_PLUS transceiver telemetry paths exist and are streamed for both + the ZR_PLUS optics + * /platform/components/component/optical-channel/state/chromatic-dispersion/instant + * /platform/components/component/optical-channel/state/chromatic-dispersion/avg + * /platform/components/component/optical-channel/state/chromatic-dispersion/min + * /platform/components/component/optical-channel/state/chromatic-dispersion/max + +* When the modules or the devices are still in a boot stage, they must not + stream any invalid string values like "nil" or "-inf" until valid values + are available for streaming. + +* CD streamed values must always be of type Decimal64. + When link interfaces are in down state 0 must be reported as a valid + value. + +**Note:** For min, max, and avg values, 10 second sampling is preferred. If + 10 seconds is not supported, the sampling interval used must be + communicated. + + +* Verify that the optics CD is updated after the interface flaps. + + * Enable a pair of ZR_PLUS interfaces on the DUT as explained above. + * Verify the ZR_PLUS optics CD telemetry values are in the normal range. + * Disable or shut down the interface on the DUT. + * Verify with interfaces in down state both optics are streaming Decimal64 0 + value for CD. + * Re-enable the interfaces on the DUT. + * Verify the ZR_PLUS optics CD telemetry values are updated to the + value in the normal range again. + * Typical CD expected value range is 0 to 2400 ps/nm. + +* Verify that the optics CD is updated after a fiber cut. + + * Enable a pair of ZR_PLUS interfaces on the DUT as explained above. + * Verify the ZR_PLUS optics CD telemetry values are in the normal + range. + * Simulate a fiber cut using the optical switch that sits in-between the + DUT ports. + * Verify with link in down state due to fiber cut both optics are streaming + Decimal64 0 value for CD. + * Re-enable the optical switch connection to clear the fiber cut fault. + * Verify the ZR_PLUS optics CD telemetry values are updated to the value in the normal + range again. + * Typical CD expected value range is 0 to 2400 ps/nm. + +## Config Parameter coverage + +* /components/component/transceiver/config/enabled + +## Telemetry Parameter coverage + +* /platform/components/component/optical-channel/state/chromatic-dispersion/instant +* /platform/components/component/optical-channel/state/chromatic-dispersion/avg +* /platform/components/component/optical-channel/state/chromatic-dispersion/min +* /platform/components/component/optical-channel/state/chromatic-dispersion/max + +## OpenConfig Path and RPC Coverage +```yaml +rpcs: + gnmi: + gNMI.Get: + gNMI.Set: + gNMI.Subscribe: +``` diff --git a/feature/platform/transceiver/tests/zr_fec_uncorrectable_frames_test/README.md b/feature/platform/transceiver/fec_uncorrectable_frames/tests/zr_fec_uncorrectable_frames_test/README.md similarity index 100% rename from feature/platform/transceiver/tests/zr_fec_uncorrectable_frames_test/README.md rename to feature/platform/transceiver/fec_uncorrectable_frames/tests/zr_fec_uncorrectable_frames_test/README.md diff --git a/feature/platform/transceiver/tests/zr_fec_uncorrectable_frames_test/metadata.textproto b/feature/platform/transceiver/fec_uncorrectable_frames/tests/zr_fec_uncorrectable_frames_test/metadata.textproto similarity index 100% rename from feature/platform/transceiver/tests/zr_fec_uncorrectable_frames_test/metadata.textproto rename to feature/platform/transceiver/fec_uncorrectable_frames/tests/zr_fec_uncorrectable_frames_test/metadata.textproto diff --git a/feature/platform/transceiver/tests/zr_fec_uncorrectable_frames_test/zr_fec_uncorrectable_frames_test.go b/feature/platform/transceiver/fec_uncorrectable_frames/tests/zr_fec_uncorrectable_frames_test/zr_fec_uncorrectable_frames_test.go similarity index 100% rename from feature/platform/transceiver/tests/zr_fec_uncorrectable_frames_test/zr_fec_uncorrectable_frames_test.go rename to feature/platform/transceiver/fec_uncorrectable_frames/tests/zr_fec_uncorrectable_frames_test/zr_fec_uncorrectable_frames_test.go diff --git a/feature/platform/transceiver/fec_uncorrectable_frames/tests/zrp_fec_uncorrectable_frames_test/README.md b/feature/platform/transceiver/fec_uncorrectable_frames/tests/zrp_fec_uncorrectable_frames_test/README.md new file mode 100644 index 00000000000..9a36062a6b1 --- /dev/null +++ b/feature/platform/transceiver/fec_uncorrectable_frames/tests/zrp_fec_uncorrectable_frames_test/README.md @@ -0,0 +1,48 @@ +# TRANSCEIVER-10: Telemetry: 400ZR_PLUS Optics FEC(Forward Error Correction) Uncorrectable Frames Streaming. + +## Summary + +Validate 400ZR_PLUS optics module reports uncorrectable FEC frames count. + +This observable represents the number of uncorrectable FEC frames, +measured as RS(544,514) equivalent frames, in a short interval. +This is a post-FEC decoder error metric. + +## Procedure + +* Connect two ZR_PLUS interfaces using a duplex LC fiber jumper such that TX + output power of one is the RX input power of the other module. +* To establish a point to point ZR_PLUS link ensure the following: + * Both transceivers state is enabled + * Both transceivers are set to a valid target TX output power + example -3 dBm + * Both transceivers are tuned to a valid centre frequency + example 193.1 THz +* With the ZR_PLUS link established as explained above, verify that the + following ZR_PLUS transceiver telemetry path exist and is streamed for both + the ZR_PLUS optics. + * /terminal-device/logical-channels/channel/otn/state/fec-uncorrectable-blocks +* Verify that the reported data should be of type yang:counter64. +* When the modules or the devices are still in a boot stage, they must not + stream any invalid string values like "nil" or "-inf". +* Toggle the interface state using /interfaces/interface/config/enabled and + verify relevant FEC uncorrectable frame count is streamed. If there are no + errors a value of 0 should be streamed for no FEC uncorrectable frames. + +## OpenConfig Path and RPC Coverage + +```yaml +paths: + # Config Parameter coverage + /interfaces/interface/config/enabled: + /components/component/transceiver/config/enabled: + platform_type: ["OPTICAL_CHANNEL"] + # Telemetry Parameter coverage + /terminal-device/logical-channels/channel/otn/state/fec-uncorrectable-blocks: + +rpcs: + gnmi: + gNMI.Get: + gNMI.Set: + gNMI.Subscribe: +``` \ No newline at end of file diff --git a/feature/platform/transceiver/tests/zr_firmware_version_test/README.md b/feature/platform/transceiver/firmware_version/tests/zr_firmware_version_test/README.md similarity index 100% rename from feature/platform/transceiver/tests/zr_firmware_version_test/README.md rename to feature/platform/transceiver/firmware_version/tests/zr_firmware_version_test/README.md diff --git a/feature/platform/transceiver/tests/zr_firmware_version_test/metadata.textproto b/feature/platform/transceiver/firmware_version/tests/zr_firmware_version_test/metadata.textproto similarity index 100% rename from feature/platform/transceiver/tests/zr_firmware_version_test/metadata.textproto rename to feature/platform/transceiver/firmware_version/tests/zr_firmware_version_test/metadata.textproto diff --git a/feature/platform/transceiver/tests/zr_firmware_version_test/zr_firmware_version_test.go b/feature/platform/transceiver/firmware_version/tests/zr_firmware_version_test/zr_firmware_version_test.go similarity index 100% rename from feature/platform/transceiver/tests/zr_firmware_version_test/zr_firmware_version_test.go rename to feature/platform/transceiver/firmware_version/tests/zr_firmware_version_test/zr_firmware_version_test.go diff --git a/feature/platform/transceiver/firmware_version/tests/zrp_firmware_version_test/README.md b/feature/platform/transceiver/firmware_version/tests/zrp_firmware_version_test/README.md new file mode 100644 index 00000000000..a33fc2b72a7 --- /dev/null +++ b/feature/platform/transceiver/firmware_version/tests/zrp_firmware_version_test/README.md @@ -0,0 +1,39 @@ +# TRANSCEIVER-3: Telemetry: 400ZR_PLUS Optics firmware version streaming + +## Summary + +Validate 400ZR_PLUS optics module reports correct firmware version. + +## Procedure + +* Plug in the ZR_PLUS module in the host port and make sure the transceiver + state is enabled and host is able to detect the module. +* With the module correctly recognized verify it reports correct firmware + version through the following telemetry path + * /platform/components/component/state/firmware-version + +* Verify that the modules firmware version is reported correctly after a + optic software reset. + + * With ZR_PLUS module plugged in the host and properly recognized + * Verify the ZR_PLUS optics firmware version is correctly reported via the + streaming telemetry path above. + * Reset the optic through software + * Verify the ZR_PLUS optics still reports correct firmware version. + +## Config Parameter coverage + +* /components/component/oc-transceiver:transceiver/oc-transceiver/config/enabled + +## Telemetry Parameter coverage + + * /platform/components/component/state/firmware-version + +## OpenConfig Path and RPC Coverage +```yaml +rpcs: + gnmi: + gNMI.Get: + gNMI.Set: + gNMI.Subscribe: +``` diff --git a/feature/platform/transceiver/tests/zr_input_output_power_test/README.md b/feature/platform/transceiver/input_output_power/tests/zr_input_output_power_test/README.md similarity index 100% rename from feature/platform/transceiver/tests/zr_input_output_power_test/README.md rename to feature/platform/transceiver/input_output_power/tests/zr_input_output_power_test/README.md diff --git a/feature/platform/transceiver/tests/zr_input_output_power_test/metadata.textproto b/feature/platform/transceiver/input_output_power/tests/zr_input_output_power_test/metadata.textproto similarity index 100% rename from feature/platform/transceiver/tests/zr_input_output_power_test/metadata.textproto rename to feature/platform/transceiver/input_output_power/tests/zr_input_output_power_test/metadata.textproto diff --git a/feature/platform/transceiver/tests/zr_input_output_power_test/zr_input_output_power_test.go b/feature/platform/transceiver/input_output_power/tests/zr_input_output_power_test/zr_input_output_power_test.go similarity index 100% rename from feature/platform/transceiver/tests/zr_input_output_power_test/zr_input_output_power_test.go rename to feature/platform/transceiver/input_output_power/tests/zr_input_output_power_test/zr_input_output_power_test.go diff --git a/feature/platform/transceiver/input_output_power/tests/zrp_input_output_power_test/README.md b/feature/platform/transceiver/input_output_power/tests/zrp_input_output_power_test/README.md new file mode 100644 index 00000000000..44cdff7f15b --- /dev/null +++ b/feature/platform/transceiver/input_output_power/tests/zrp_input_output_power_test/README.md @@ -0,0 +1,138 @@ +# TRANSCEIVER-4: Telemetry: 400ZR_PLUS RX input and TX output power telemetry values streaming. + +## Summary + +Validate 400ZR_PLUS optics modules report accurate RX input and TX output power +telemetry values. + +As per CMIS ZR_PLUS modules report two types of RX input power and one TX output +power. +* RX Signal Power + * Reports the actual signal power after filtering out any extra noise. + * Is mapped to /component/optical-channel/ full path shown below +* RX Total Power + * Reports RX Signal Power plus noise without any filtering. + * Is mapped to /component/transceiver/physical-channel full path shown below +* TX Output Power + * This is the total TX output power + * Is mapped to component/optical-channel/ full path shown below + +The test must be repeated for each supported operational-mode or as agreed between the vendor and customer. + +## TRANSCEIVER-4.1 + +* Connect two ZR_PLUS interfaces using a duplex LC fiber jumper such that TX + output power of one is the RX input power of the other module. Connection + between the modules should pass through an optical switch that can be + controlled through automation to simulate a fiber cut. +* To establish a point to point ZR_PLUS link ensure the following: + * Both transceivers states are enabled + * Both transceivers are set to a valid target TX output power + example -3 dBm + * Both transceivers are tuned to a valid centre frequency + example 193.1 THz +* With the ZR_PLUS link is established as explained above, verify that the + following ZR_PLUS transceiver telemetry paths exist and are streamed for both + the ZR_PLUS optics + * /components/component/optical-channel/state/input-power/instant + * /components/component/optical-channel/state/input-power/avg + * /components/component/optical-channel/state/input-power/min + * /components/component/optical-channel/state/input-power/max + * /components/component/optical-channel/state/output-power/instant + * /components/component/optical-channel/state/output-power/avg + * /components/component/optical-channel/state/output-power/min + * /components/component/optical-channel/state/output-power/max + * /components/component/transceiver/physical-channel/channel/state/input-power/instant + * /components/component/transceiver/physical-channel/channel/state/input-power/min + * /components/component/transceiver/physical-channel/channel/state/input-power/max + * /components/component/transceiver/physical-channel/channel/state/input-power/avg + +## TRANSCEIVER-4.2 + +* When the modules or the devices are still in a boot stage, they must not + stream any invalid string values like "nil" or "-inf" until valid values + are available for streaming. + +* RX Input and TX output power values must always be of type decimal64. + When link interfaces are in down state RX Input power of -40 dbm must be + reported as a valid value. + +**Note:** For min, max, and avg values, 10 second sampling is preferred. If + 10 seconds is not supported, the sampling interval used must be + communicated. + +## TRANSCEIVER-4.3 + +* Verify that the optics RX input and TX output power is updated after the + interface flaps. + + * Enable a pair of ZR_PLUS interfaces on the DUT as explained above. + * Verify the ZR_PLUS optics RX input and TX output power telemetry values are + in the normal range. + * Verify that RX Signal Power is less than the RX Total Power. + * Disable or shut down the interface on the DUT. + * Verify with interfaces in down state both optics are streaming decimal64 0 + value for both RX input and TX output power. + * Re-enable the interfaces on the DUT. + * Verify the ZR_PLUS optics RX input and TX output power telemetry values are + updated to the value in the normal range again. + * Typical min/max value range for RX Signal Power -10 to -5 dbm. + * Typical min/max value range for TX Output Power -7 to 0 dbm. + +## TRANSCEIVER-4.4 + +* Verify that the optics RX input and TX output power is updated after a + fiber cut. + + * Enable a pair of ZR_PLUS interfaces on the DUT as explained above. + * Verify the ZR_PLUS optics RX input and TX output power telemetry values are + in the normal range. + * Verify that RX Signal Power is less than the RX Total Power. + * Simulate a fiber cut using the optical switch that sits in-between the + DUT ports. + * Verify with link in down state due to fiber cut both optics are streaming + decimal64 0 value for both RX input and TX output power. + * Re-enable the optical switch connection to clear the fiber cut fault. + * Verify the ZR_PLUS optics RX input and TX output power telemetry values are + updated to the value in the normal range again. + * Typical min/max value range for RX Signal Power -10 to -5 dbm. + * Typical min/max value range for TX Output Power -7 to 0 dbm. + +## OpenConfig Path and RPC Coverage + +```yaml +paths: + # Config Parameter coverage + /interfaces/interface/config/enabled: + # Telemetry Parameter coverage + /components/component/optical-channel/state/input-power/instant: + platform_type: ["OPTICAL_CHANNEL"] + /components/component/optical-channel/state/input-power/avg: + platform_type: ["OPTICAL_CHANNEL"] + /components/component/optical-channel/state/input-power/min: + platform_type: ["OPTICAL_CHANNEL"] + /components/component/optical-channel/state/input-power/max: + platform_type: ["OPTICAL_CHANNEL"] + /components/component/optical-channel/state/output-power/instant: + platform_type: ["OPTICAL_CHANNEL"] + /components/component/optical-channel/state/output-power/avg: + platform_type: ["OPTICAL_CHANNEL"] + /components/component/optical-channel/state/output-power/min: + platform_type: ["OPTICAL_CHANNEL"] + /components/component/optical-channel/state/output-power/max: + platform_type: ["OPTICAL_CHANNEL"] + /components/component/transceiver/physical-channels/channel/state/input-power/instant: + platform_type: [ "TRANSCEIVER" ] + /components/component/transceiver/physical-channels/channel/state/input-power/min: + platform_type: [ "TRANSCEIVER" ] + /components/component/transceiver/physical-channels/channel/state/input-power/max: + platform_type: [ "TRANSCEIVER" ] + /components/component/transceiver/physical-channels/channel/state/input-power/avg: + platform_type: [ "TRANSCEIVER" ] + +rpcs: + gnmi: + gNMI.Get: + gNMI.Set: + gNMI.Subscribe: +``` \ No newline at end of file diff --git a/feature/platform/transceiver/tests/zr_inventory_test/README.md b/feature/platform/transceiver/inventory/tests/zr_inventory_test/README.md similarity index 100% rename from feature/platform/transceiver/tests/zr_inventory_test/README.md rename to feature/platform/transceiver/inventory/tests/zr_inventory_test/README.md diff --git a/feature/platform/transceiver/tests/zr_inventory_test/metadata.textproto b/feature/platform/transceiver/inventory/tests/zr_inventory_test/metadata.textproto similarity index 100% rename from feature/platform/transceiver/tests/zr_inventory_test/metadata.textproto rename to feature/platform/transceiver/inventory/tests/zr_inventory_test/metadata.textproto diff --git a/feature/platform/transceiver/tests/zr_inventory_test/zr_inventory_test.go b/feature/platform/transceiver/inventory/tests/zr_inventory_test/zr_inventory_test.go similarity index 100% rename from feature/platform/transceiver/tests/zr_inventory_test/zr_inventory_test.go rename to feature/platform/transceiver/inventory/tests/zr_inventory_test/zr_inventory_test.go diff --git a/feature/platform/transceiver/inventory/tests/zrp_inventory_test/README.md b/feature/platform/transceiver/inventory/tests/zrp_inventory_test/README.md new file mode 100644 index 00000000000..d7b3ca287c7 --- /dev/null +++ b/feature/platform/transceiver/inventory/tests/zrp_inventory_test/README.md @@ -0,0 +1,95 @@ +# TRANSCEIVER-7: Telemetry: 400ZR_PLUS Optics inventory info streaming + +## Summary + +Validate 400ZR_PLUS modules report correct inventory information. + +## Procedure + +* Plug in the ZR_PLUS module in the host port and make sure the transceiver + state is enabled and host is able to detect the module. +* With the module recognized verify it reports correct inventory + information by subscribing ON_CHANGE to the following telemetry paths. + + * /platform/components/component/state/serial-no + * /platform/components/component/state/part-no + * /platform/components/component/state/type + * /platform/components/component/state/description + * /platform/components/component/state/mfg-name + * /platform/components/component/state/mfg-date + * /platform/components/component/state/hardware-version + * /platform/components/component/state/firmware-version + +* Validate the streamed inventory information data is of type String. + +* Verify that the modules inventory information is reported correctly after + an optic software reset. + + * With ZR_PLUS module plugged in the host and properly recognized + * Verify the ZR_PLUS optics inventory is correctly reported via the + streaming telemetry paths above. + * Reset the optic by enabling and disabling the transceiver state + through /components/component/transceiver/config/enabled. + * Wait at least 20 seconds in between toggling transceiver state. + * Verify the ZR_PLUS optics still reports correct inventory information. + * Telemetry subscription should be ON_CHANGE and streamed data should + be of type String. + +* Verify that the modules inventory information is reported correctly when + interface state is disabled. + + * With ZR_PLUS module plugged in the host and properly recognized + * Use /interfaces/interface/config/enabled to disable the module + interface state, wait 20 seconds. + * Verify the ZR_PLUS optics inventory information is correctly reported via + the streaming telemetry paths above in this state. + * Telemetry subscription should be ON_CHANGE and streamed data should + be of type String. + +* Verify the module behaviour and related inventory information when + transceiver state is set to disabled. + + * With ZR_PLUS module plugged in the host and properly recognized. + * Use /components/component/transceiver/config/enabled to disable the + module transceiver state, wait 20 seconds. + * Verify the ZR_PLUS module is powered off and no inventory information + reported via the streaming telemetry paths above in this state. + * When a component is powered off and is dropped from the inventory list + explicit deletes for the relevant entity leaves should be streamed + to clear any stale data. + * Telemetry subscription should be ON_CHANGE and there should be no + streamed inventory data in this state. + +* Verify the module inventory information updates when transceiver under test + is swapped with a different one. + * Make sure ZR_PLUS module plugged in the host and properly recognized. + * Verify module is reporting valid inventory information. + * Swap the module with a different one and validate that the new + inventory information is correctly streamed now. + * Telemetry subscription should be ON_CHANGE and streamed data should + be of type String. + +## Config Parameter coverage + +* /components/component/transceiver/config/enabled +* /interfaces/interface/config/enabled + +## Telemetry Parameter coverage + +* /platform/components/component/state/serial-no +* /platform/components/component/state/part-no +* /platform/components/component/state/type +* /platform/components/component/state/description +* /platform/components/component/state/mfg-name +* /platform/components/component/state/mfg-date +* /platform/components/component/state/hardware-version +* /platform/components/component/state/firmware-version + +## OpenConfig Path and RPC Coverage +```yaml +rpcs: + gnmi: + gNMI.Get: + gNMI.Set: + gNMI.Subscribe: +``` diff --git a/feature/platform/transceiver/tests/zr_laser_bias_current_test/README.md b/feature/platform/transceiver/laser_bias_current/tests/zr_laser_bias_current_test/README.md similarity index 100% rename from feature/platform/transceiver/tests/zr_laser_bias_current_test/README.md rename to feature/platform/transceiver/laser_bias_current/tests/zr_laser_bias_current_test/README.md diff --git a/feature/platform/transceiver/tests/zr_laser_bias_current_test/metadata.textproto b/feature/platform/transceiver/laser_bias_current/tests/zr_laser_bias_current_test/metadata.textproto similarity index 100% rename from feature/platform/transceiver/tests/zr_laser_bias_current_test/metadata.textproto rename to feature/platform/transceiver/laser_bias_current/tests/zr_laser_bias_current_test/metadata.textproto diff --git a/feature/platform/transceiver/tests/zr_laser_bias_current_test/zr_laser_bias_current_test.go b/feature/platform/transceiver/laser_bias_current/tests/zr_laser_bias_current_test/zr_laser_bias_current_test.go similarity index 100% rename from feature/platform/transceiver/tests/zr_laser_bias_current_test/zr_laser_bias_current_test.go rename to feature/platform/transceiver/laser_bias_current/tests/zr_laser_bias_current_test/zr_laser_bias_current_test.go diff --git a/feature/platform/transceiver/laser_bias_current/tests/zrp_laser_bias_current_test/README.md b/feature/platform/transceiver/laser_bias_current/tests/zrp_laser_bias_current_test/README.md new file mode 100644 index 00000000000..76d5c520f02 --- /dev/null +++ b/feature/platform/transceiver/laser_bias_current/tests/zrp_laser_bias_current_test/README.md @@ -0,0 +1,112 @@ +# TRANSCEIVER-9: Telemetry: 400ZR_PLUS TX laser bias current telemetry values streaming. + +## Summary + +Validate 400ZR_PLUS optics modules report accurate laser bias current telemetry +values. + +As per [CMIS](https://www.oiforum.com/wp-content/uploads/CMIS3p0_Third_Party_Spec.pdf): + +Measured Tx laser bias current is represented as a 16-bit unsigned integer with +the current defined as the 12 full 16-bit value (0 to 65535) with LSB equal to +2 uA times the multiplier from Byte 01h:160. For a multiplier of 13 1, +this yields a total measurement range of 0 to 131 mA. + +Accuracy must be better than +/-10% of the manufacturer's nominal value over +specified operating temperature and voltage. + + +## TRANSCEIVER-9.1 + +* Connect two ZR_PLUS interfaces using a duplex LC fiber jumper such that TX + output power of one is the RX input power of the other module. Connection + between the modules should pass through an optical switch that can be + controlled through automation to simulate a fiber cut as needed. +* To establish a point to point ZR_PLUS link ensure the following: + * Both transceivers states are enabled + * Both transceivers are set to a valid target TX output power + example -3 dBm + * Both transceivers are tuned to a valid centre frequency + example 193.1 THz +* With the ZR_PLUS link is established as explained above, verify that the + following ZR_PLUS transceiver telemetry paths exist and are streamed for both + the ZR_PLUS optics + + * /components/component/optical-channel/state/laser-bias-current/instant + * /components/component/optical-channel/state/laser-bias-current/avg + * /components/component/optical-channel/state/laser-bias-current/min + * /components/component/optical-channel/state/laser-bias-current/max + + +## TRANSCEIVER-9.2 + +* When the modules or the devices are still in a boot stage, they must not + stream any invalid string values like "nil" or "-inf". + +* Laser bias current values must always be of type decimal64. + When laser is in off state 0 must be reported as a valid value. + +**Note:** For min, max, and avg values, 10 second sampling is preferred. If the + min, max average values or the 10 seconds sampling is not supported, + the sampling interval used must be specified and this must be + captured by adding a deviation to the test. + +## TRANSCEIVER-9.3 + +* Verify that the TX laser bias current is updated after an interface + enable / disable state change. + + * Enable a pair of ZR_PLUS interfaces on the DUT as explained above. + * Verify the ZR_PLUS optics TX laser bias current telemetry values are + in the normal range. + * Use /interfaces/interface/config/enabled to disable the interfaces so + that the TX laser is squelched / turned off. + * Verify with interface state disabled and link down, decimal64 0 value + is streamed for both optics TX laser bias current. + * Re-enable the optics using /interfaces/interface/config/enabled. + * Verify the ZR_PLUS optics TX laser bias current telemetry values are + updated to the value in the normal range again. + * Typical measurement range 0 to 131 mA. + +## TRANSCEIVER-9.4 + +* Verify that the TX laser bias current is updated after transceiver power + ON / OFF state change. + + * Enable a pair of ZR_PLUS interfaces on the DUT as explained above. + * Verify the ZR_PLUS optics TX laser bias current telemetry values are + in the normal range. + * Use /components/component/transceiver/config/enabled to power off the + transceiver so that the TX laser is squelched / turned off. + * Verify with transceiver state disabled and link down, no value + is streamed for both optics TX laser bias current. + * Re-enable the optics using + /components/component/transceiver/config/enabled. + * Verify the ZR_PLUS optics TX laser bias current telemetry values are + updated to the value in the normal range again. + * Typical measurement range 0 to 131 mA. + +## OpenConfig Path and RPC Coverage + +The below yaml defines the OC paths intended to be covered by this test. OC paths used for test setup are not listed here. + +```yaml +paths: + ## Config Paths ## + /components/component/transceiver/config/enabled: + platform_type: [ "OPTICAL_CHANNEL" ] + /interfaces/interface/config/enabled: + ## State Paths ## + /components/component/optical-channel/state/laser-bias-current/instant: + platform_type: [ "OPTICAL_CHANNEL" ] + /components/component/optical-channel/state/laser-bias-current/avg: + platform_type: [ "OPTICAL_CHANNEL" ] + /components/component/optical-channel/state/laser-bias-current/min: + platform_type: [ "OPTICAL_CHANNEL" ] + /components/component/optical-channel/state/laser-bias-current/max: + platform_type: [ "OPTICAL_CHANNEL" ] + +rpcs: + gnmi: + gNMI.Subscribe: +``` diff --git a/feature/platform/transceiver/tests/zr_logical_channels_test/README.md b/feature/platform/transceiver/logical_channels/tests/zr_logical_channels_test/README.md similarity index 100% rename from feature/platform/transceiver/tests/zr_logical_channels_test/README.md rename to feature/platform/transceiver/logical_channels/tests/zr_logical_channels_test/README.md diff --git a/feature/platform/transceiver/tests/zr_logical_channels_test/metadata.textproto b/feature/platform/transceiver/logical_channels/tests/zr_logical_channels_test/metadata.textproto similarity index 100% rename from feature/platform/transceiver/tests/zr_logical_channels_test/metadata.textproto rename to feature/platform/transceiver/logical_channels/tests/zr_logical_channels_test/metadata.textproto diff --git a/feature/platform/transceiver/tests/zr_logical_channels_test/zr_logical_channels_test.go b/feature/platform/transceiver/logical_channels/tests/zr_logical_channels_test/zr_logical_channels_test.go similarity index 100% rename from feature/platform/transceiver/tests/zr_logical_channels_test/zr_logical_channels_test.go rename to feature/platform/transceiver/logical_channels/tests/zr_logical_channels_test/zr_logical_channels_test.go diff --git a/feature/platform/transceiver/logical_channels/tests/zrp_logical_channels_test/README.md b/feature/platform/transceiver/logical_channels/tests/zrp_logical_channels_test/README.md new file mode 100644 index 00000000000..d79558ddcb4 --- /dev/null +++ b/feature/platform/transceiver/logical_channels/tests/zrp_logical_channels_test/README.md @@ -0,0 +1,142 @@ +# TRANSCEIVER-11: Telemetry: 400ZR_PLUS Optics logical channels provisioning and related telemetry. + +## Summary + +Routing devices that support transceivers with built-in DSPs like 400ZR_PLUS consume +the [OC-terminal-device model](https://openconfig.net/projects/models/schemadocs/jstree/openconfig-terminal-device.html) +model. +The ZR_PLUS signal in these transceivers traverses through a series of +terminal-device/logical-channels. The series of logical-channel utilizes the +assignment/optical-channel leaf to create the relationship to +OPTICAL_CHANNEL. For 400ZR_PLUS 1x400GE mode this heirarchy looks like: +400GE Eth. Logical Channel => 400G Coherent Logical Channel => OPTICAL_CHANNEL +Purpose of this test is to verify the logical channel provisioning and related +telemetry. + +## Procedure + +* Connect two ZR_PLUS interfaces using a duplex LC fiber jumper such that TX + output power of one is the RX input power of the other module. Optics can be + connected through passive patch panels or an optical switch as needed, as + long as the overall link loss budget is kept under 2 - 3 dB. There is no + requirement to deploy a separate line system for the functional tests. + +## Testbed Type +* Typical test setup for this test is a DUT1 with 2 ports to 2 ATE ports or 2 + ports to a second DUT2. For most tests this setup should be sufficient. + Ref: [Typical ATE<>DUT Test bed](https://github.com/openconfig/featureprofiles/blob/main/topologies/atedut_2.testbed) +* A and Z ends of the link should have same 400ZR_PLUS PMD. For this test a + single DUT ZR_PLUS port connected to a single ZR_PLUS ATE port is also sufficient. + +Once the ZR_PLUS link is estabished proceed to configure the following entities: + +### TRANSCEIVER 11.1 - Test Optical Channel and Tunable Parameters +* Ensure optical channel related tunable parameters are set through the + following OC paths such that + * Both transceivers state is enabled + * Both transceivers related optical channel tunable parameters are set + to a valid target TX output power example -3 dBm + * Both transceivers are tuned to a valid centre frequency + example 193.1 THz + * /components/component/transceiver/config/enabled + * /components/component/optical-channel/config/frequency + * /components/component/optical-channel/config/target-output-power + * /components/component/optical-channel/config/operational-mode + +### TRANSCEIVER 11.2 - Test Ethernet Logical Channels +* Ensure terminal-device ethernet-logical-channels are set through the + following OC paths + * /terminal-device/logical-channels/channel/config/admin-state + * /terminal-device/logical-channels/channel/config/description + * /terminal-device/logical-channels/channel/config/index + * /terminal-device/logical-channels/channel/config/logical-channel-type + * /terminal-device/logical-channels/channel/config/rate-class + * /terminal-device/logical-channels/channel/config/trib-protocol + * /terminal-device/logical-channels/channel/logical-channel-assignments/assignment/config/allocation + * /terminal-device/logical-channels/channel/logical-channel-assignments/assignment/config/assignment-type + * /terminal-device/logical-channels/channel/logical-channel-assignments/assignment/config/description + * /terminal-device/logical-channels/channel/logical-channel-assignments/assignment/config/index + * /terminal-device/logical-channels/channel/logical-channel-assignments/assignment/config/logical-channel + * /terminal-device/logical-channels/channel/logical-channel-assignments/assignment/config/optical-channel +* Typical Settings for an Ethernet Logical Channel are shown below: + * logical-channel-type: PROT_ETHERNET + * trib-protocol: PROT_400GE + * rate-class: TRIB_RATE_400G + * admin-state: ENABLED + * description: ETH Logical Channel + * index: 40000 (unique integer value) +* Not that each logical-channel created above must be assigned an integer value that + is unique across the system. + +### TRANSCEIVER 11.3 - Test Coherent Logical Channels +* Ensure terminal-device coherent-logical-channels are set through the + following OC paths + * /terminal-device/logical-channels/channel/config/admin-state + * /terminal-device/logical-channels/channel/config/description + * /terminal-device/logical-channels/channel/config/index + * /terminal-device/logical-channels/channel/config/logical-channel-type + * /terminal-device/logical-channels/channel/config/rate-class + * /terminal-device/logical-channels/channel/config/trib-protocol + * /terminal-device/logical-channels/channel/logical-channel-assignments/assignment/config/allocation + * /terminal-device/logical-channels/channel/logical-channel-assignments/assignment/config/assignment-type + * /terminal-device/logical-channels/channel/logical-channel-assignments/assignment/config/description + * /terminal-device/logical-channels/channel/logical-channel-assignments/assignment/config/index + * /terminal-device/logical-channels/channel/logical-channel-assignments/assignment/config/logical-channel + * /terminal-device/logical-channels/channel/logical-channel-assignments/assignment/config/optical-channel +* Typical setting for a coherent logical channel are shown below: + * logical-channel-type: PROT_OTN + * admin-state: ENABLED + * description: Coherent Logical Channel + * index: 40004 (unique integer value) + +* With above optical and logical channels configured verify DUT is able to + stream corresponding telemetry leaves under these logical and optical + channels. List of such telemetry leaves covered under this test is documented + below under Telemetry Parameter coverage heading. + +**Note**: There are other telemetry and config leaves related to optical and + logical channels that are covered under separately published tests + under platforms/transceiver. + +## Config Parameter coverage + +* /components/component/transceiver/config/enabled +* /interfaces/interface/config/enabled +* /terminal-device/logical-channels/channel/config/admin-state +* /terminal-device/logical-channels/channel/config/description +* /terminal-device/logical-channels/channel/config/index +* /terminal-device/logical-channels/channel/config/logical-channel-type +* /terminal-device/logical-channels/channel/config/rate-class +* /terminal-device/logical-channels/channel/config/trib-protocol +* /terminal-device/logical-channels/channel/logical-channel-assignments/assignment/config/allocation +* /terminal-device/logical-channels/channel/logical-channel-assignments/assignment/config/assignment-type +* /terminal-device/logical-channels/channel/logical-channel-assignments/assignment/config/description +* /terminal-device/logical-channels/channel/logical-channel-assignments/assignment/config/index +* /terminal-device/logical-channels/channel/logical-channel-assignments/assignment/config/logical-channel +* /terminal-device/logical-channels/channel/logical-channel-assignments/assignment/config/optical-channel + +## Telemetry Parameter coverage + +* /components/component/transceiver/config/enabled +* /interfaces/interface/config/enabled +* /terminal-device/logical-channels/channel/state/admin-state +* /terminal-device/logical-channels/channel/state/description +* /terminal-device/logical-channels/channel/state/index +* /terminal-device/logical-channels/channel/state/logical-channel-type +* /terminal-device/logical-channels/channel/state/rate-class +* /terminal-device/logical-channels/channel/state/trib-protocol +* /terminal-device/logical-channels/channel/logical-channel-assignments/assignment/state/allocation +* /terminal-device/logical-channels/channel/logical-channel-assignments/assignment/state/assignment-type +* /terminal-device/logical-channels/channel/logical-channel-assignments/assignment/state/description +* /terminal-device/logical-channels/channel/logical-channel-assignments/assignment/state/index +* /terminal-device/logical-channels/channel/logical-channel-assignments/assignment/state/logical-channel +* /terminal-device/logical-channels/channel/logical-channel-assignments/assignment/state/optical-channel + +## OpenConfig Path and RPC Coverage +```yaml +rpcs: + gnmi: + gNMI.Get: + gNMI.Set: + gNMI.Subscribe: +``` diff --git a/feature/platform/transceiver/tests/zr_low_power_mode_test/README.md b/feature/platform/transceiver/low_power_mode/tests/zr_low_power_mode_test/README.md similarity index 100% rename from feature/platform/transceiver/tests/zr_low_power_mode_test/README.md rename to feature/platform/transceiver/low_power_mode/tests/zr_low_power_mode_test/README.md diff --git a/feature/platform/transceiver/tests/zr_low_power_mode_test/metadata.textproto b/feature/platform/transceiver/low_power_mode/tests/zr_low_power_mode_test/metadata.textproto similarity index 100% rename from feature/platform/transceiver/tests/zr_low_power_mode_test/metadata.textproto rename to feature/platform/transceiver/low_power_mode/tests/zr_low_power_mode_test/metadata.textproto diff --git a/feature/platform/transceiver/tests/zr_low_power_mode_test/zr_low_power_mode_test.go b/feature/platform/transceiver/low_power_mode/tests/zr_low_power_mode_test/zr_low_power_mode_test.go similarity index 100% rename from feature/platform/transceiver/tests/zr_low_power_mode_test/zr_low_power_mode_test.go rename to feature/platform/transceiver/low_power_mode/tests/zr_low_power_mode_test/zr_low_power_mode_test.go diff --git a/feature/platform/transceiver/low_power_mode/tests/zrp_low_power_mode_test/README.md b/feature/platform/transceiver/low_power_mode/tests/zrp_low_power_mode_test/README.md new file mode 100644 index 00000000000..012277f8223 --- /dev/null +++ b/feature/platform/transceiver/low_power_mode/tests/zrp_low_power_mode_test/README.md @@ -0,0 +1,134 @@ +# TRANSCEIVER-13: Configuration: 400ZR_PLUS Transceiver Low Power Mode Setting. + +## Summary + +Validate 400ZR_PLUS transceiver is able to move to low power consumption mode when +the interface/config/enabled state is set to "False" + +**NOTE:** The Module Power Mode dictates the maximum electrical power that the +module is permitted to consume while operating in that Module Power Mode. +The Module Power Mode is a function of the state of the Module State Machine. +Two Module Power Modes are defined: + * In Low Power Mode (characteristic of all MSM steady states except + ModuleReady) the maximum module power consumption is defined in the form + factor-specific hardware specification. + * In High Power Mode (characteristic of the MSM state ModuleReady) the + implementation dependent maximum module power consumption is advertised in + the MaxPower Byte 00h:201. More details in the CMIS link below. + +Link to CMIS: +https://www.oiforum.com/wp-content/uploads/CMIS5p0_Third_Party_Spec.pdf + +## Procedure + +* Connect two ZR_PLUS optics using a duplex LC fiber jumper such that TX + output power of one is the RX input power of the other module. +* To establish a point to point ZR_PLUS link ensure the following: + * Both transceivers state is enabled. + * Both transceivers are set to a valid target TX output power + example -3 dBm. + * Both transceivers are tuned to a valid centre frequency + example 193.1 THz. +## Testbed Type +* Typical test setup for this test is a DUT1 with 2 ports to 2 ATE ports or 2 + ports to a second DUT2. For most tests this setup should be sufficient. + Ref: [Typical ATE<>DUT Test bed](https://github.com/openconfig/featureprofiles/blob/main/topologies/atedut_2.testbed) +* A and Z ends of the link should have same 400ZR_PLUS PMD. For this test a + single DUT ZR_PLUS port connected to a single ZR_PLUS ATE port is also sufficient. + +Once the ZR_PLUS link is estabished proceed with the following: +* Verify that the following ZR_PLUS transceiver OC path when set to False is able + to move to the low power mode as defined in the CMIS. + + * /interfaces/interface/config/enabled + +* In low power mode the module's Management interface should be available, + entire paged management memory should be accessible. During this state, + the host may configure the module using the management interface to read + from and write to the management Memory Map. + +* The Data Path State of all lanes is still DPDeactivated in the ModuleLowPwr + state. + +* With module in low power mode verify that the module is still able to + report inventory information through the following OC paths. + + * /platform/components/component/state/serial-no + * /platform/components/component/state/part-no + * /platform/components/component/state/type + * /platform/components/component/state/description + * /platform/components/component/state/mfg-name + * /platform/components/component/state/mfg-date + * /platform/components/component/state/hardware-version + * /platform/components/component/state/firmware-version + +* With module in low power mode verify that the module laser is squelched + and it is no longer able to report output-power under the following OC + paths. + * /components/component/optical-channel/state/output-power/instant + * /components/component/optical-channel/state/output-power/avg + * /components/component/optical-channel/state/output-power/min + * /components/component/optical-channel/state/output-power/max + +* Set the interface/config/enabled state to True + + * Verify module is able to transition into High Power Mode. + * In this state module is still able to report all the inventory + information as verified above. + * In this state verify module is able to report a valid output power + through the following OC paths as provisioned earlier. + + * /components/component/optical-channel/state/output-power/instant + * /components/component/optical-channel/state/output-power/avg + * /components/component/optical-channel/state/output-power/min + * /components/component/optical-channel/state/output-power/max + + * Verify the ZR_PLUS optics TX output power telemetry values are updated to + the value in the normal range again. + * Typical min/max value range for TX Output Power -7 to 0 dbm. + * values must always be of type decimal64. + * When link interfaces are in down state 0 must be reported as a valid + value. + + * When the modules or the devices are still in a boot stage, they must not + stream any invalid string values like "nil" or "-inf" until valid values + are available for streaming. + +## OpenConfig Path and RPC Coverage + +```yaml +paths: + # Configure parameter + /interfaces/interface/config/enabled: + # Telemetry Parameter coverage + /components/component/state/serial-no: + platform_type: ["OPTICAL_CHANNEL"] + /components/component/state/part-no: + platform_type: ["OPTICAL_CHANNEL"] + /components/component/state/type: + platform_type: ["OPTICAL_CHANNEL"] + /components/component/state/description: + platform_type: ["OPTICAL_CHANNEL"] + /components/component/state/mfg-name: + platform_type: ["OPTICAL_CHANNEL"] + /components/component/state/mfg-date: + platform_type: ["OPTICAL_CHANNEL"] + /components/component/state/hardware-version: + platform_type: ["OPTICAL_CHANNEL"] + /components/component/state/firmware-version: + platform_type: ["OPTICAL_CHANNEL"] + /components/component/optical-channel/state/output-power/instant: + platform_type: ["OPTICAL_CHANNEL"] + /components/component/optical-channel/state/output-power/avg: + platform_type: ["OPTICAL_CHANNEL"] + /components/component/optical-channel/state/output-power/min: + platform_type: ["OPTICAL_CHANNEL"] + /components/component/optical-channel/state/output-power/max: + platform_type: ["OPTICAL_CHANNEL"] + +rpcs: + gnmi: + gNMI.Get: + gNMI.Set: + gNMI.Subscribe: +``` \ No newline at end of file diff --git a/feature/platform/transceiver/tests/zr_pm_test/README.md b/feature/platform/transceiver/performance_metrics/tests/zr_pm_test/README.md similarity index 100% rename from feature/platform/transceiver/tests/zr_pm_test/README.md rename to feature/platform/transceiver/performance_metrics/tests/zr_pm_test/README.md diff --git a/feature/platform/transceiver/tests/zr_pm_test/metadata.textproto b/feature/platform/transceiver/performance_metrics/tests/zr_pm_test/metadata.textproto similarity index 100% rename from feature/platform/transceiver/tests/zr_pm_test/metadata.textproto rename to feature/platform/transceiver/performance_metrics/tests/zr_pm_test/metadata.textproto diff --git a/feature/platform/transceiver/tests/zr_pm_test/zr_pm_test.go b/feature/platform/transceiver/performance_metrics/tests/zr_pm_test/zr_pm_test.go similarity index 100% rename from feature/platform/transceiver/tests/zr_pm_test/zr_pm_test.go rename to feature/platform/transceiver/performance_metrics/tests/zr_pm_test/zr_pm_test.go diff --git a/feature/platform/transceiver/performance_metrics/tests/zrp_pm_test/README.md b/feature/platform/transceiver/performance_metrics/tests/zrp_pm_test/README.md new file mode 100644 index 00000000000..51c9e59e4e5 --- /dev/null +++ b/feature/platform/transceiver/performance_metrics/tests/zrp_pm_test/README.md @@ -0,0 +1,100 @@ +# TRANSCEIVER-6: Telemetry: 400ZR_PLUS Optics performance metrics (pm) streaming. + +## Summary + +Validate 400ZR_PLUS optics module reports performance metric (PM) data as defined in +module CMIS VDM(Versatile Diagnostics Monitor): +* eSNR is defined as the electrical Signal to Noise ratio at the decision sampling point in dB +* Q-value is the decibel (dB) value representing signal BER. +* pre-FEC BER bit error rate. + +## Procedure + +* Connect two ZR_PLUS interfaces using a duplex LC fiber jumper such that TX + output power of one is the RX input power of the other module. + +* To establish a point to point ZR_PLUS link ensure the following: + * Both transceivers state is enabled + * Both transceivers are set to a valid target TX output power + example -7 and 0 dBm. + * Both transceivers are tuned to a valid centre frequency + example 191.4 and 196.1 THz. + +* With the link ZR_PLUS link established as explained above, verify that the + following ZR_PLUS transceiver telemetry paths exist and are streamed for both + the ZR_PLUS optics. + * /terminal-device/logical-channels/channel/otn/state/esnr/instant + * /terminal-device/logical-channels/channel/otn/state/esnr/avg + * /terminal-device/logical-channels/channel/otn/state/esnr/min + * /terminal-device/logical-channels/channel/otn/state/esnr/max + * /terminal-device/logical-channels/channel/otn/state/q-value/instant + * /terminal-device/logical-channels/channel/otn/state/q-value/avg + * /terminal-device/logical-channels/channel/otn/state/q-value/min + * /terminal-device/logical-channels/channel/otn/state/q-value/max + * /terminal-device/logical-channels/channel/otn/state/pre-fec-ber/instant + * /terminal-device/logical-channels/channel/otn/state/pre-fec-ber/avg + * /terminal-device/logical-channels/channel/otn/state/pre-fec-ber/min + * /terminal-device/logical-channels/channel/otn/state/pre-fec-ber/max + + +* For reported data check for validity min <= avg/instant <= max + +* When the modules or the devices are still in a boot stage, they must not + stream any invalid string values like "nil" or "-inf" until valid values + are available for streaming. + +* Q-value, eSNR and pre-Fec BER must always be of type decimal64. When link + interfaces are in down state 0.0 must be reported as a valid default value. + * Typical expected value range for eSNR is 13.5 to 18 dB +/-0.1 dB. + * Typical expected value for Pre-FEC BER should be less than 1.2E-2. + * Typical expected Q-value should be greater than 7 dB. + + +**Note:** For min, max, and avg values, 10 second sampling is preferred. If + 10 seconds is not supported, the sampling interval used must be + specified by adding a deviation to the test. + + +* Verify that the optics PM data is updated after the interface flaps. + + * Enable a pair of ZR_PLUS interfaces on the DUT as explained above. + * Subscribe SAMPLE to the above PM leafs with a sample rate of 10 + seconds. + * Verify the ZR_PLUS optics PMs are in the normal range. + * Use /interfaces/interface/config/enabled to disable the + interface, wait 10 seconds and then re-enable the interface. + * Verify that the PM leafs report '0' during the reboot and no value + of nil or -inf is reported. + * Re-enable the interfaces on the DUT. + * Verify the ZR_PLUS optics pre FEC PM is updated to the value in the normal + range again. + +## OpenConfig Path and RPC Coverage + +```yaml +paths: + # Config Parameter coverage + /interfaces/interface/config/enabled: + /components/component/transceiver/config/enabled: + platform_type: ["OPTICAL_CHANNEL"] + # Telemetry Parameter coverage + /terminal-device/logical-channels/channel/otn/state/fec-uncorrectable-blocks: + /terminal-device/logical-channels/channel/otn/state/esnr/instant: + /terminal-device/logical-channels/channel/otn/state/esnr/avg: + /terminal-device/logical-channels/channel/otn/state/esnr/min: + /terminal-device/logical-channels/channel/otn/state/esnr/max: + /terminal-device/logical-channels/channel/otn/state/q-value/instant: + /terminal-device/logical-channels/channel/otn/state/q-value/avg: + /terminal-device/logical-channels/channel/otn/state/q-value/min: + /terminal-device/logical-channels/channel/otn/state/q-value/max: + /terminal-device/logical-channels/channel/otn/state/pre-fec-ber/instant: + /terminal-device/logical-channels/channel/otn/state/pre-fec-ber/avg: + /terminal-device/logical-channels/channel/otn/state/pre-fec-ber/min: + /terminal-device/logical-channels/channel/otn/state/pre-fec-ber/max: + +rpcs: + gnmi: + gNMI.Get: + gNMI.Set: + gNMI.Subscribe: +``` \ No newline at end of file diff --git a/feature/platform/transceiver/tests/zr_supply_voltage_test/README.md b/feature/platform/transceiver/supply_voltage/tests/zr_supply_voltage_test/README.md similarity index 100% rename from feature/platform/transceiver/tests/zr_supply_voltage_test/README.md rename to feature/platform/transceiver/supply_voltage/tests/zr_supply_voltage_test/README.md diff --git a/feature/platform/transceiver/tests/zr_supply_voltage_test/metadata.textproto b/feature/platform/transceiver/supply_voltage/tests/zr_supply_voltage_test/metadata.textproto similarity index 100% rename from feature/platform/transceiver/tests/zr_supply_voltage_test/metadata.textproto rename to feature/platform/transceiver/supply_voltage/tests/zr_supply_voltage_test/metadata.textproto diff --git a/feature/platform/transceiver/tests/zr_supply_voltage_test/zr_supply_voltage_test.go b/feature/platform/transceiver/supply_voltage/tests/zr_supply_voltage_test/zr_supply_voltage_test.go similarity index 100% rename from feature/platform/transceiver/tests/zr_supply_voltage_test/zr_supply_voltage_test.go rename to feature/platform/transceiver/supply_voltage/tests/zr_supply_voltage_test/zr_supply_voltage_test.go diff --git a/feature/platform/transceiver/supply_voltage/tests/zrp_supply_voltage_test/README.md b/feature/platform/transceiver/supply_voltage/tests/zrp_supply_voltage_test/README.md new file mode 100644 index 00000000000..a2c9241920f --- /dev/null +++ b/feature/platform/transceiver/supply_voltage/tests/zrp_supply_voltage_test/README.md @@ -0,0 +1,64 @@ +# TRANSCEIVER-12: Telemetry: 400ZR_PLUS Transceiver Supply Voltage streaming. + +## Summary + +Validate 400ZR_PLUS transceivers report module level internally measured input supply +voltage in 100 µV increments as defined in the CMIS. + +Link to CMIS: +https://www.oiforum.com/wp-content/uploads/CMIS5p0_Third_Party_Spec.pdf + +## Procedure + +* Connect two ZR_PLUS optics using a duplex LC fiber jumper such that TX + output power of one is the RX input power of the other module. +* To establish a point to point ZR_PLUS link ensure the following: + * Both transceivers state is enabled. + * Both transceivers are set to a valid target TX output power + example -3 dBm. + * Both transceivers are tuned to a valid centre frequency + example 193.1 THz. + +## Testbed Type +* Typical test setup for this test is a DUT1 with 2 ports to 2 ATE ports or 2 + ports to a second DUT2. For most tests this setup should be sufficient. + Ref: [Typical ATE<>DUT Test bed](https://github.com/openconfig/featureprofiles/blob/main/topologies/atedut_2.testbed) +* A and Z ends of the link should have same 400ZR_PLUS PMD. For this test a + single DUT ZR_PLUS port connected to a single ZR_PLUS ATE port is also sufficient. + +Once the ZR_PLUS link is estabished proceed with the following: +* verify that the following ZR_PLUS transceiver telemetry paths exist and are + streamed for both the ZR_PLUS optics. + * /components/component/transceiver/state/supply-voltage/instant + +* If the modules or the devices are in a boot stage, they must not stream + any invalid string values like "nil" or "-inf". +* Reported supply voltage value must always be of type decimal64. +* Verify the module supply voltage is reported correctly with optics + interface in disabled state. + + * Use /interfaces/interface/config/enabled to disable the interfaces and + wait 120 seconds before taking the supply voltage reading again. + * Verify the module is able to stream the supply voltage data in this + state. + * For reported data check for validity min <= avg/instant <= max + * If the modules or the devices are in a boot stage, they must not stream + any invalid string values like "nil" or "-inf". + * Reported supply voltage value must always be of type decimal64. + +## OpenConfig Path and RPC Coverage + +```yaml +paths: + # Config Parameter coverage + /interfaces/interface/config/enabled: + # Telemetry Parameter coverage + /components/component/transceiver/state/supply-voltage/instant: + platform_type: ["OPTICAL_CHANNEL"] + +rpcs: + gnmi: + gNMI.Get: + gNMI.Set: + gNMI.Subscribe: +``` \ No newline at end of file diff --git a/feature/platform/transceiver/tests/zr_temperature_test/README.md b/feature/platform/transceiver/temperature/tests/zr_temperature_test/README.md similarity index 100% rename from feature/platform/transceiver/tests/zr_temperature_test/README.md rename to feature/platform/transceiver/temperature/tests/zr_temperature_test/README.md diff --git a/feature/platform/transceiver/tests/zr_temperature_test/metadata.textproto b/feature/platform/transceiver/temperature/tests/zr_temperature_test/metadata.textproto similarity index 100% rename from feature/platform/transceiver/tests/zr_temperature_test/metadata.textproto rename to feature/platform/transceiver/temperature/tests/zr_temperature_test/metadata.textproto diff --git a/feature/platform/transceiver/tests/zr_temperature_test/zr_temperature_test.go b/feature/platform/transceiver/temperature/tests/zr_temperature_test/zr_temperature_test.go similarity index 100% rename from feature/platform/transceiver/tests/zr_temperature_test/zr_temperature_test.go rename to feature/platform/transceiver/temperature/tests/zr_temperature_test/zr_temperature_test.go diff --git a/feature/platform/transceiver/temperature/tests/zrp_temperature_test/README.md b/feature/platform/transceiver/temperature/tests/zrp_temperature_test/README.md new file mode 100644 index 00000000000..fb3c44445cf --- /dev/null +++ b/feature/platform/transceiver/temperature/tests/zrp_temperature_test/README.md @@ -0,0 +1,79 @@ +# TRANSCEIVER-8: Telemetry: 400ZR_PLUS Optics module temperature streaming. + +## Summary + +Validate 400ZR_PLUS optics report module level internally measured temperature +in 1/256 degree Celsius increments as defined in the CMIS. + +Link to CMIS: +https://www.oiforum.com/wp-content/uploads/CMIS5p0_Third_Party_Spec.pdf + +## Procedure + +* Connect two ZR_PLUS optics using a duplex LC fiber jumper such that TX + output power of one is the RX input power of the other module. +* To establish a point to point ZR_PLUS link ensure the following: + * Both transceivers state is enabled. + * Both transceivers are set to a valid target TX output power + example -3 dBm. + * Both transceivers are tuned to a valid centre frequency + example 193.1 THz. +* With the ZR_PLUS link established as explained above, verify that the + following ZR_PLUS transceiver telemetry paths exist and are streamed for both + the ZR_PLUS optics. + * /platform/components/component/state/temperature/instant + * /platform/components/component/state/temperature/min + * /platform/components/component/state/temperature/max + * /platform/components/component/state/temperature/avg +* For reported data check for validity min <= avg/instant <= max + +* If the modules or the devices are in a boot stage, they must not stream + any invalid string values like "nil" or "-inf". +* Reported temperature value must always be of type decimal64. + + +**Note:** For min, max, and avg values, 10 second sampling is preferred. If the + min, max average values or the 10 seconds sampling is not supported, + the sampling interval used must be specified and this must be + captured by adding a deviation to the test. + + +* Verify the module temperature is reported correctly with optics interface + in disabled state. + + * Use /interfaces/interface/config/enabled to disable the interfaces and + wait 120 seconds(cooling off period) before taking the temperature + reading again. + * Verify the module is able to stream the temperature data in this state. + * Verify the module reported temperature in this state is always less + than the module temperature captured during steady state operation with + interface state enabled. + * For reported data check for validity min <= avg/instant <= max + + * If the modules or the devices are in a boot stage, they must not stream + any invalid string values like "nil" or "-inf". + * Reported temperature value must always be of type decimal64. + +## OpenConfig Path and RPC Coverage + +The below yaml defines the OC paths intended to be covered by this test. OC paths used for test setup are not listed here. + +```yaml +paths: + ## Config Paths ## + /interfaces/interface/config/enabled: + ## State Paths ## + /components/component/state/temperature/instant: + platform_type: [ "TRANSCEIVER" ] + /components/component/state/temperature/min: + platform_type: [ "TRANSCEIVER" ] + /components/component/state/temperature/max: + platform_type: [ "TRANSCEIVER" ] + /components/component/state/temperature/avg: + platform_type: [ "TRANSCEIVER" ] + +rpcs: + gnmi: + gNMI.Subscribe: +``` + diff --git a/feature/platform/transceiver/tests/zr_tunable_parameters_test/README.md b/feature/platform/transceiver/tunable_parameters/tests/zr_tunable_parameters_test/README.md similarity index 100% rename from feature/platform/transceiver/tests/zr_tunable_parameters_test/README.md rename to feature/platform/transceiver/tunable_parameters/tests/zr_tunable_parameters_test/README.md diff --git a/feature/platform/transceiver/tests/zr_tunable_parameters_test/metadata.textproto b/feature/platform/transceiver/tunable_parameters/tests/zr_tunable_parameters_test/metadata.textproto similarity index 100% rename from feature/platform/transceiver/tests/zr_tunable_parameters_test/metadata.textproto rename to feature/platform/transceiver/tunable_parameters/tests/zr_tunable_parameters_test/metadata.textproto diff --git a/feature/platform/transceiver/tests/zr_tunable_parameters_test/zr_tunable_parameters_test.go b/feature/platform/transceiver/tunable_parameters/tests/zr_tunable_parameters_test/zr_tunable_parameters_test.go similarity index 100% rename from feature/platform/transceiver/tests/zr_tunable_parameters_test/zr_tunable_parameters_test.go rename to feature/platform/transceiver/tunable_parameters/tests/zr_tunable_parameters_test/zr_tunable_parameters_test.go diff --git a/feature/platform/transceiver/tunable_parameters/tests/zrp_tunable_parameters_test/README.md b/feature/platform/transceiver/tunable_parameters/tests/zrp_tunable_parameters_test/README.md new file mode 100644 index 00000000000..567a834ff8d --- /dev/null +++ b/feature/platform/transceiver/tunable_parameters/tests/zrp_tunable_parameters_test/README.md @@ -0,0 +1,184 @@ +# TRANSCEIVER-5: Configuration: 400ZR_PLUS channel frequency, output TX launch power and operational mode setting. + +## Summary + +Validate setting 400ZR_PLUS tunable parameters channel frequency, output TX launch +power and operational mode and verify corresponding telemetry values. + +### Goals + +* Verify full C band frequency tunability for 100GHz line system grid. +* Verify full C band frequency tunability for 75GHz line system grid. +* Verify adjustable range of transmit output power across -7 to 0 dBm in + steps of 1 dB. +* Verify that the ZR_PLUS module Host Interface ID and Media Interface ID + combination to ZR_PLUS module AppSel mapping can be configured through the OC + `operational-mode`. `operational-mode` is a construct in OpenConfig that + masks features related to line port transmission. OC operational modes + provides a platform-defined summary of information such as symbol rate, + modulation, pulse shaping, etc. + +**Note** For standard ZR, OIF 400ZR with C-FEC is the default mode however as we +move to 400ZR_PLUS and 800ZR, optic AppSel code would need to be configured +explicitly through OC operational mode. + +## TRANSCEIVER-5.1 + +* Connect two ZR_PLUS interfaces using a duplex LC fiber jumper such that TX output + power of one is the RX input power of the other module. Connection between + the modules should pass through an optical switch that can be controlled + through automation to simulate a fiber cut. +* To establish a point to point ZR_PLUS link ensure the following: + + * Both transceivers states are enabled. + * Validate setting 400ZR_PLUS optics module tunable laser center frequency + across frequency range 196.100 - 191.400 THz for 100GHz grid. + * Validate setting 400ZR_PLUS optics module tunable laser center frequency + across frequency range 196.100 - 191.375 THz for 75GHz grid. + * Specific frequency details can be found in 400ZR_PLUS implementation + agreement under sections 15.1 and 15.2 Operating frequency channel + definitions. Link to IA below, + * https://www.oiforum.com/wp-content/uploads/OIF-400ZR-01.0_reduced2.pdf + * Validate adjustable range of transmit output power across -7 to 0 dBm + range in steps of 1dB. So the module’s output power will be set to -7, + -6, -5, -4, -3, -2, -1, 0 dBm in each step. As an example this can be validated + for the module's default frequency of 193.1 THz. + +* With the ZR_PLUS link established as explained above, for each configured + frequency and TX output power value verify that the following ZR_PLUS transceiver + telemetry paths exist and are streamed for both the ZR_PLUS optics. + + * Frequency + * /components/component/optical-channel/state/frequency + * /components/component/optical-channel/state/carrier-frequency-offset/instant + * /components/component/optical-channel/state/carrier-frequency-offset/avg + * /components/component/optical-channel/state/carrier-frequency-offset/min + * /components/component/optical-channel/state/carrier-frequency-offset/max + * TX Output Power + * /components/component/optical-channel/state/output-power/instant + * /components/component/optical-channel/state/output-power/avg + * /components/component/optical-channel/state/output-power/min + * /components/component/optical-channel/state/output-power/max + * Operational Mode + * /components/component/optical-channel/state/operational-mode + +* With above streamed data verify + + * For each center frequency, laser frequency offset should not be more + than +/- 1.8 GHz max. + * For each center frequency, streamed value should be in Mhz units. Test + should fail if the streamed value is in Hz or THz units. As an example + 193.1 THz would be 193100000 in MHz. + * When set to a specific target output power, transmit power control + absolute accuracy should be within +/- 1 dBm of the target value. + * For reported data check for validity: min <= avg/instant <= max + +## TRANSCEIVER-5.2 + +* When the modules or the devices are still in a boot stage, they must not + stream any invalid string values like "nil" or "-inf". + +* Frequency must be specified as uint64 in MHz. Streamed values for frequency + offset must be of type decimal64. + +* TX Output power must be of type decimal64. + +## TRANSCEIVER-5.3 + +* Verify that the optics Tunable Frequency and TX output power tunes back to + the correct value as per configuration after the interface flaps. + + * Enable a pair of ZR_PLUS interfaces on the DUT as explained above. + * Verify the ZR_PLUS optics frequency and TX output power telemetry values are + set in the normal range. + * Disable or shut down the interface on the DUT. + * Verify with interfaces in down state both optics are still streaming + configured value for frequency. + * Verify for the TX output power with interface in down state a decimal64 + value of -40 dB is streamed. + * Re-enable the interfaces on the DUT. + * Verify the ZR_PLUS optics tune back to the correct frequency and TX output + power as per the configuration and related telemetry values are updated + to the value in the normal range again. + +* With above test also verify + + * Laser frequency offset should not be more than +/- 1.8 GHz max from the + configured centre frequency. + * When set to a specific target output power, transmit power control + absolute accuracy should be within +/- 1 dBm of the target configured + output power. + * For reported data check for validity: min <= avg/instant <= max + +## TRANSCEIVER-5.4 + +* Verify that the optics Tunable Frequency and TX output power tunes back to + the correct value as per configuration after a fiber cut. + + * Enable a pair of ZR_PLUS interfaces on the DUT as explained above. + * Verify the ZR_PLUS optics Frequency and TX output power telemetry values are + in the normal range. + * Simulate a fiber cut using the optical switch that sits in-between the + DUT ports. + * Verify with link in down state due to fiber cut both optics are + streaming uint64 for frequency and decimal64 for TX output power. + * Re-enable the optical switch connection to clear the fiber cut fault. + * Verify the ZR_PLUS optics is able to stay tuned to the correct frequency and + TX output power as per the configuration. + +* With above test also verify + + * Laser frequency offset should not be more than +/- 1.8 GHz max from the + configured centre frequency. + * When set to a specific target output power, transmit power control + absolute accuracy should be within +/- 1 dBm of the target configured + output power. + * For reported data check for validity: min <= avg/instant <= max + +**Note:** For min, max, and avg values, 10 second sampling is preferred. If 10 +seconds is not supported, the sampling interval used must be communicated. + +## OpenConfig Path and RPC Coverage + +```yaml +paths: + /components/component/transceiver/config/enabled: + platform_type: ["TRANSCEIVER"] + /components/component/optical-channel/config/frequency: + platform_type: ["OPTICAL_CHANNEL"] + /components/component/optical-channel/config/target-output-power: + platform_type: ["OPTICAL_CHANNEL"] + /components/component/optical-channel/config/operational-mode: + platform_type: ["OPTICAL_CHANNEL"] + /components/component/optical-channel/state/frequency: + platform_type: ["OPTICAL_CHANNEL"] + /components/component/optical-channel/state/carrier-frequency-offset/instant: + platform_type: ["OPTICAL_CHANNEL"] + /components/component/optical-channel/state/carrier-frequency-offset/avg: + platform_type: ["OPTICAL_CHANNEL"] + /components/component/optical-channel/state/carrier-frequency-offset/min: + platform_type: ["OPTICAL_CHANNEL"] + /components/component/optical-channel/state/carrier-frequency-offset/max: + platform_type: ["OPTICAL_CHANNEL"] + /components/component/optical-channel/state/output-power/instant: + platform_type: ["OPTICAL_CHANNEL"] + /components/component/optical-channel/state/output-power/avg: + platform_type: ["OPTICAL_CHANNEL"] + /components/component/optical-channel/state/output-power/min: + platform_type: ["OPTICAL_CHANNEL"] + /components/component/optical-channel/state/output-power/max: + platform_type: ["OPTICAL_CHANNEL"] + /components/component/optical-channel/state/operational-mode: + platform_type: ["OPTICAL_CHANNEL"] + +rpcs: + gnmi: + gNMI.Set: + replace: true + gNMI.Subscribe: + on_change: true +``` + +## Required DUT platform + +FFF