# Sparkplug 3.0.0 TCK Coverage

## 3.0.0

### Contents

Chapter Summary
Section Summary
Coverage Detail
Unmatched Tests
Unversioned Tests
Test Group Summary

### Coverage Distribution

### Chapter Summary

Chapter | Assertions | Testable | Total Tested | Total Tests | Tested (problematic) | Tested (working) | Coverage %
--- | --- | --- | --- | --- | --- | --- | ---
1 Introduction | 8 | 8 | 8 | 8 | 0 | 8 | 100.00%
2 Principles | 4 | 4 | 4 | 6 | 0 | 4 | 100.00%
3 Sparkplug Architecture and Infrastructure Components | 1 | 1 | 1 | 1 | 0 | 1 | 100.00%
4 Topics and Messages | 67 | 67 | 67 | 70 | 0 | 67 | 100.00%
5 Operational Behavior | 100 | 99 | 99 | 118 | 0 | 99 | 100.00%
6 Payloads | 108 | 108 | 108 | 124 | 0 | 108 | 100.00%
7 Security | 0 | 0 | 0 | 0 | 0 | 0 |
8 High Availability | 0 | 0 | 0 | 0 | 0 | 0 |
9 Acknowledgements | 0 | 0 | 0 | 0 | 0 | 0 |
10 Conformance | 12 | 12 | 12 | 13 | 0 | 12 | 100.00%
11 Appendix A: Open Source Software (non-normative) | 0 | 0 | 0 | 0 | 0 | 0 |
12 Appendix B: List of Normative Statements (non-normative) | 0 | 0 | 0 | 0 | 0 | 0 |
Total | 300 | 299 | 299 | 340 | 0 | 299 | 100.00%

### Section Summary

Section | Assertions | Testable | Total Tested | Tested (problematic) | Tested (working) | Coverage %
--- | --- | --- | --- | --- | --- | ---
1 Introduction [introduction] | 0 | 0 | 0 | 0 | 0 |
1.1 Rationale and Use Case [introduction_rationale_and_use_case] | 0 | 0 | 0 | 0 | 0 |
1.1.1 Define an MQTT Topic Namespace [introduction_define_an_mqtt_topic_namespace] | 0 | 0 | 0 | 0 | 0 |
1.1.2 Define MQTT State Management [introduction_define_mqtt_state_management] | 0 | 0 | 0 | 0 | 0 |
1.1.3 Define the MQTT Payload [introduction_define_the_mqtt_payload] | 0 | 0 | 0 | 0 | 0 |
1.1.4 Background [introduction_background] | 0 | 0 | 0 | 0 | 0 |
1.2 Intellectual Property Rights [introduction_intellectual_property_rights] | 0 | 0 | 0 | 0 | 0 |
1.2.1 Eclipse Foundation Specification License [introduction_eclipse_foundation_specification_license] | 0 | 0 | 0 | 0 | 0 |
1.2.2 Disclaimers [introduction_disclaimers] | 0 | 0 | 0 | 0 | 0 |
1.3 Organization of the Sparkplug Specification [introduction_organization_of_the_sparkplug_specification] | 0 | 0 | 0 | 0 | 0 |
1.4 Terminology [introduction_terminology] | 0 | 0 | 0 | 0 | 0 |
1.4.1 Infrastructure Components [introduction_infrastructure_components] | 0 | 0 | 0 | 0 | 0 |
1.4.1.1 MQTT Server(s) [introduction_mqtt_servers] | 0 | 0 | 0 | 0 | 0 |
1.4.1.2 Sparkplug Group [introduction_sparkplug_group] | 0 | 0 | 0 | 0 | 0 |
1.4.1.3 Sparkplug Edge Node [introduction_sparkplug_edge_node] | 0 | 0 | 0 | 0 | 0 |
1.4.1.4 Sparkplug Device [introduction_sparkplug_device] | 0 | 0 | 0 | 0 | 0 |
1.4.1.5 MQTT/Sparkplug Enabled Device [introduction_mqtt_sparkplug_enabled_device] | 0 | 0 | 0 | 0 | 0 |
1.4.1.6 Host Applications [introduction_host_applications] | 1 | 1 | 1 | 0 | 1 | 100.00%
1.4.1.7 Primary Host Application [introduction_primary_host_application] | 0 | 0 | 0 | 0 | 0 |
1.4.1.8 Sparkplug Identifiers [introduction_sparkplug_ids] | 7 | 7 | 7 | 0 | 7 | 100.00%
1.4.1.9 Sparkplug Metric [introduction_sparkplug_metrics] | 0 | 0 | 0 | 0 | 0 |
1.4.1.10 Data Types [introduction_datatypes] | 0 | 0 | 0 | 0 | 0 |
1.5 Normative References [introduction_normative_references] | 0 | 0 | 0 | 0 | 0 |
1.6 Consolidated List of Normative Statements [introduction_list_normative_statements] | 0 | 0 | 0 | 0 | 0 |
1.7 Security [introduction_security] | 0 | 0 | 0 | 0 | 0 |
1.7.1 Authentication [introduction_authentication] | 0 | 0 | 0 | 0 | 0 |
1.7.2 Authorization [introduction_autorization] | 0 | 0 | 0 | 0 | 0 |
1.7.3 Encryption [introduction_encryption] | 0 | 0 | 0 | 0 | 0 |
1.8 Normative Keywords [introduction_editing_convention] | 0 | 0 | 0 | 0 | 0 |
1.9 Leveraging Standards and Open Source [introduction_leveragint_standards_and_open_source] | 0 | 0 | 0 | 0 | 0 |
2 Principles [principles] | 0 | 0 | 0 | 0 | 0 |
2.1 Pub/Sub [principles_pub_sub] | 0 | 0 | 0 | 0 | 0 |
2.2 Report by Exception [principles_report_by_exception] | 1 | 1 | 1 | 0 | 1 | 100.00%
2.3 Continuous Session Awareness [principles_continuous_session_awareness] | 0 | 0 | 0 | 0 | 0 |
2.4 Birth and Death Certificates [principles_birth_and_death_certificates] | 1 | 1 | 1 | 0 | 1 | 100.00%
2.5 Persistent vs Non-Persistent Connections for Edge Nodes [principles_persistent_vs_non_persistent_connections] | 2 | 2 | 2 | 0 | 2 | 100.00%
3 Sparkplug Architecture and Infrastructure Components [components] | 0 | 0 | 0 | 0 | 0 |
3.1 MQTT Server(s) [components_mqtt_servers] | 0 | 0 | 0 | 0 | 0 |
3.2 MQTT Edge Node [components_mqtt_edge_node] | 0 | 0 | 0 | 0 | 0 |
3.3 Device/Sensor [components_device_sensor] | 0 | 0 | 0 | 0 | 0 |
3.4 MQTT Enabled Device (Sparkplug) [components_mqtt_enabled_device] | 0 | 0 | 0 | 0 | 0 |
3.5 Primary Host Application [components_primary_host_application] | 0 | 0 | 0 | 0 | 0 |
3.6 Sparkplug Host Application [components_sparkplug_host_application] | 1 | 1 | 1 | 0 | 1 | 100.00%
4 Topics and Messages [topics] | 0 | 0 | 0 | 0 | 0 |
4.1 Topic Namespace Elements [topics_sparkplug_topic_namespace_elements] | 1 | 1 | 1 | 0 | 1 | 100.00%
4.1.1 namespace Element [topics_namespace_element] | 1 | 1 | 1 | 0 | 1 | 100.00%
4.1.2 group_id Element [topics_group_id_element] | 1 | 1 | 1 | 0 | 1 | 100.00%
4.1.3 message_type Element [topics_message_type_element] | 0 | 0 | 0 | 0 | 0 |
4.1.4 edge_node_id Element [topics_edge_node_id_element] | 2 | 2 | 2 | 0 | 2 | 100.00%
4.1.5 device_id Element [topics_device_id_element] | 5 | 5 | 5 | 0 | 5 | 100.00%
4.2 Message Types and Contents [topics_message_type_overview] | 0 | 0 | 0 | 0 | 0 |
4.2.1 Edge Node [topics_edge_node] | 0 | 0 | 0 | 0 | 0 |
4.2.1.1 Birth Message (NBIRTH) [birth_message_nbirth] | 0 | 0 | 0 | 0 | 0 |
4.2.1.1.1 Topic (NBIRTH) [topics_birth_message_nbirth] | 1 | 1 | 1 | 0 | 1 | 100.00%
4.2.1.1.2 Payload (NBIRTH) [payloads_desc_nbirth] | 10 | 10 | 10 | 0 | 10 | 100.00%
4.2.1.2 Data Message (NDATA) [data_message_ndata] | 0 | 0 | 0 | 0 | 0 |
4.2.1.2.1 Topic (NDATA) [topics_data_message_ndata] | 1 | 1 | 1 | 0 | 1 | 100.00%
4.2.1.2.2 Payload (NDATA) [payloads_desc_ndata] | 4 | 4 | 4 | 0 | 4 | 100.00%
4.2.1.3 Death Message (NDEATH) [death_message_ndeath] | 0 | 0 | 0 | 0 | 0 |
4.2.1.3.1 Topic (NDEATH) [topics_death_message_ndeath] | 1 | 1 | 1 | 0 | 1 | 100.00%
4.2.1.3.2 Payload (NDEATH) [payloads_desc_ndeath] | 2 | 2 | 2 | 0 | 2 | 100.00%
4.2.1.4 Command (NCMD) [command_ncmd] | 0 | 0 | 0 | 0 | 0 |
4.2.1.4.1 Topic (NCMD) [topics_command_ncmd] | 1 | 1 | 1 | 0 | 1 | 100.00%
4.2.1.4.2 Payload (NCMD) [payloads_desc_ncmd] | 3 | 3 | 3 | 0 | 3 | 100.00%
4.2.2 Device/Sensor [topics_device_sensor] | 0 | 0 | 0 | 0 | 0 |
4.2.2.1 Birth Message (DBIRTH) [birth_message_dbirth] | 0 | 0 | 0 | 0 | 0 |
4.2.2.1.1 Topic (DBIRTH) [topics_birth_message_dbirth] | 1 | 1 | 1 | 0 | 1 | 100.00%
4.2.2.1.2 Payload (DBIRTH) [payloads_desc_dbirth] | 5 | 5 | 5 | 0 | 5 | 100.00%
4.2.2.2 Data Message (DDATA) [data_message_ddata] | 0 | 0 | 0 | 0 | 0 |
4.2.2.2.1 Topic (DDATA) [topics_data_message_ddata] | 1 | 1 | 1 | 0 | 1 | 100.00%
4.2.2.2.2 Payload (DDATA) [payloads_desc_ddata] | 4 | 4 | 4 | 0 | 4 | 100.00%
4.2.2.3 Death Message (DDEATH) [death_message_ddeath] | 0 | 0 | 0 | 0 | 0 |
4.2.2.3.1 Topic (DDEATH) [topics_death_message_ddeath] | 1 | 1 | 1 | 0 | 1 | 100.00%
4.2.2.3.2 Payload (DDEATH) [payloads_desc_ddeath] | 2 | 2 | 2 | 0 | 2 | 100.00%
4.2.2.4 Command (DCMD) [command_dcmd] | 0 | 0 | 0 | 0 | 0 |
4.2.2.4.1 Topic DCMD) [topics_command_dcmd] | 1 | 1 | 1 | 0 | 1 | 100.00%
4.2.2.4.2 Payload (DCMD) [payloads_desc_dcmd] | 3 | 3 | 3 | 0 | 3 | 100.00%
4.2.3 Sparkplug Host Application [topics_sparkplug_host_application] | 0 | 0 | 0 | 0 | 0 |
4.2.3.1 Birth Certificate Message (STATE) [birth_message_state] | 3 | 3 | 3 | 0 | 3 | 100.00%
4.2.3.1.1 Birth Certificate Topic (STATE) [topics_birth_message_state] | 3 | 3 | 3 | 0 | 3 | 100.00%
4.2.3.1.2 Birth Certificate Payload (STATE) [payloads_desc_state_birth] | 2 | 2 | 2 | 0 | 2 | 100.00%
4.2.3.2 Death Certificate Message (STATE) [death_message_state] | 2 | 2 | 2 | 0 | 2 | 100.00%
4.2.3.2.1 Death Certificate Topic (STATE) [topics_death_message_state] | 2 | 2 | 2 | 0 | 2 | 100.00%
4.2.3.2.2 Death Certificate Payload (STATE) [payloads_desc_state_death] | 4 | 4 | 4 | 0 | 4 | 100.00%
5 Operational Behavior [operational_behavior] | 0 | 0 | 0 | 0 | 0 |
5.1 Timestamps in Sparkplug [operational_behavior_timestamps] | 0 | 0 | 0 | 0 | 0 |
5.2 Case Sensitivity in Sparkplug [operational_behavior_case_sensitivity] | 2 | 2 | 2 | 0 | 2 | 100.00%
5.3 Host Application Session Establishment [operational_behavior_primary_host_application_session_establishment] | 8 | 7 | 7 | 0 | 7 | 100.00%
5.4 Edge Node Session Establishment [operational_behavior_edge_node_session_establishment] | 19 | 19 | 19 | 0 | 19 | 100.00%
5.5 Edge Node Session Termination [operational_behavior_edge_node_session_termination] | 9 | 9 | 9 | 0 | 9 | 100.00%
5.6 Device Session Establishment [operational_behavior_device_session_establishment] | 8 | 8 | 8 | 0 | 8 | 100.00%
5.7 Device Session Termination [operational_behavior_device_session_termination] | 3 | 3 | 3 | 0 | 3 | 100.00%
5.8 Sparkplug Host Applications [operational_behavior_sparkplug_host_applications] | 0 | 0 | 0 | 0 | 0 |
5.9 Sparkplug Host Application Message Ordering [operational_behavior_host_application_message_ordering] | 4 | 4 | 4 | 0 | 4 | 100.00%
5.10 Primary Host Application STATE in Multiple MQTT Server Topologies [operational_behavior_primary_application_state_in_multiple_mqtt_server_topologies] | 5 | 5 | 5 | 0 | 5 | 100.00%
5.11 Edge Node NDATA and NCMD Messages [operational_behavior_edge_node_ndata_and_ncmd_messages] | 0 | 0 | 0 | 0 | 0 |
5.12 MQTT Enabled Device Session Establishment [operational_behavior_mqtt_enabled_device_session_establishment] | 0 | 0 | 0 | 0 | 0 |
5.13 Sparkplug Host Application Session Establishment [operational_behavior_sparkplug_host_application_session_establishment] | 12 | 12 | 12 | 0 | 12 | 100.00%
5.14 Sparkplug Host Application Session Termination [operational_behavior_sparkplug_host_application_session_termination] | 6 | 6 | 6 | 0 | 6 | 100.00%
5.15 Sparkplug Host Application Receive Data [operational_behavior_sparkplug_host_application_receive_data] | 0 | 0 | 0 | 0 | 0 |
5.16 Data Publish [operational_behavior_data_publish] | 8 | 8 | 8 | 0 | 8 | 100.00%
5.17 Commands [operational_behavior_commands] | 16 | 16 | 16 | 0 | 16 | 100.00%
6 Payloads [payloads] | 0 | 0 | 0 | 0 | 0 |
6.1 Overview [payloads_overview] | 0 | 0 | 0 | 0 | 0 |
6.2 Google Protocol Buffers [payloads_google_protocol_buffers] | 0 | 0 | 0 | 0 | 0 |
6.3 Sparkplug A MQTT Payload Definition [payloads_sparkplug_a_mqtt_payload_definition] | 0 | 0 | 0 | 0 | 0 |
6.4 Sparkplug B MQTT Payload Definition [payloads_sparkplug_b_mqtt_payload_definition] | 0 | 0 | 0 | 0 | 0 |
6.4.1 Google Protocol Buffer Schema [payloads_b_google_protocol_buffer_schema] | 0 | 0 | 0 | 0 | 0 |
6.4.2 Payload Metric Naming Convention [payloads_b_payload_metric_naming_convention] | 0 | 0 | 0 | 0 | 0 |
6.4.3 Sparkplug B v1.0 Payload Components [payloads_b_sparkplug_bv1_0_payload_components] | 0 | 0 | 0 | 0 | 0 |
6.4.4 Payload Component Definitions [payloads_b_payload_component_definitions] | 0 | 0 | 0 | 0 | 0 |
6.4.5 Payload [payloads_b_payload] | 4 | 4 | 4 | 0 | 4 | 100.00%
6.4.6 Metric [payloads_b_metric] | 11 | 11 | 11 | 0 | 11 | 100.00%
6.4.7 MetaData [payloads_b_metadata] | 0 | 0 | 0 | 0 | 0 |
6.4.8 PropertySet [payloads_b_propertyset] | 2 | 2 | 2 | 0 | 2 | 100.00%
6.4.9 PropertyValue [payloads_b_propertyvalue] | 3 | 3 | 3 | 0 | 3 | 100.00%
6.4.9.1 Quality Codes [payloads_b_quality_codes] | 2 | 2 | 2 | 0 | 2 | 100.00%
6.4.10 PropertySetList [payloads_b_propertysetlist] | 0 | 0 | 0 | 0 | 0 |
6.4.11 DataSet [payloads_b_dataset] | 7 | 7 | 7 | 0 | 7 | 100.00%
6.4.12 DataSet.Row [payloads_b_dataset_row] | 0 | 0 | 0 | 0 | 0 |
6.4.13 DataSet.DataSetValue [payloads_b_dataset_datasetvalue] | 1 | 1 | 1 | 0 | 1 | 100.00%
6.4.14 Template [payloads_b_template] | 19 | 19 | 19 | 0 | 19 | 100.00%
6.4.15 Template.Parameter [payloads_b_template_parameter] | 6 | 6 | 6 | 0 | 6 | 100.00%
6.4.16 Data Types [payloads_b_datatypes] | 0 | 0 | 0 | 0 | 0 |
6.4.17 Datatype Details [payloads_b_datatype_details] | 0 | 0 | 0 | 0 | 0 |
6.4.18 Payload Representation on Host Applications [payloads_payload_representation_on_host_applications] | 0 | 0 | 0 | 0 | 0 |
6.4.19 NBIRTH [payloads_b_nbirth] | 8 | 8 | 8 | 0 | 8 | 100.00%
6.4.20 DBIRTH [payloads_b_dbirth] | 6 | 6 | 6 | 0 | 6 | 100.00%
6.4.21 NDATA [payloads_b_ndata] | 6 | 6 | 6 | 0 | 6 | 100.00%
6.4.22 DDATA [payloads_b_ddata] | 6 | 6 | 6 | 0 | 6 | 100.00%
6.4.23 NCMD [payloads_b_ncmd] | 4 | 4 | 4 | 0 | 4 | 100.00%
6.4.24 DCMD [payloads_b_dcmd] | 4 | 4 | 4 | 0 | 4 | 100.00%
6.4.25 NDEATH [payloads_b_ndeath] | 8 | 8 | 8 | 0 | 8 | 100.00%
6.4.26 DDEATH [payloads_b_ddeath] | 4 | 4 | 4 | 0 | 4 | 100.00%
6.4.27 STATE [payloads_b_state] | 7 | 7 | 7 | 0 | 7 | 100.00%
7 Security [security] | 0 | 0 | 0 | 0 | 0 |
7.1 TLS [security_tls] | 0 | 0 | 0 | 0 | 0 |
7.2 Authentication [security_authentication] | 0 | 0 | 0 | 0 | 0 |
7.3 Authorization [security_authorization] | 0 | 0 | 0 | 0 | 0 |
7.4 Implementation Notes [security_implementation_notes] | 0 | 0 | 0 | 0 | 0 |
7.4.1 Underlying MQTT Security [security_implementation_notes_mqtt] | 0 | 0 | 0 | 0 | 0 |
7.4.2 Encrypted Sockets [security_implementation_notes_encryption] | 0 | 0 | 0 | 0 | 0 |
7.4.3 Access Control Lists [security_implementation_notes_acls] | 0 | 0 | 0 | 0 | 0 |
8 High Availability [high_availability] | 0 | 0 | 0 | 0 | 0 |
8.1 High Availability for MQTT Servers [high_availability_for_mqtt_servers] | 0 | 0 | 0 | 0 | 0 |
8.1.1 MQTT Server HA Clustering (non-normative) [high_availability_ha_clusters] | 0 | 0 | 0 | 0 | 0 |
8.1.2 High Availability Cluster [high_availability_cluster] | 0 | 0 | 0 | 0 | 0 |
8.1.3 High Availability Cluster with Load Balancer [high_availability_cluster_with_load_balancer] | 0 | 0 | 0 | 0 | 0 |
8.2 Multiple Isolated MQTT Servers (non-normative) [high_availability_multiple_mqtt_server_topology] | 0 | 0 | 0 | 0 | 0 |
9 Acknowledgements [acknowledgements] | 0 | 0 | 0 | 0 | 0 |
10 Conformance [conformance] | 0 | 0 | 0 | 0 | 0 |
10.1 Conformance Profiles [conformance_profiles] | 0 | 0 | 0 | 0 | 0 |
10.1.1 Sparkplug Edge Node [conformance_sparkplug_edge_node] | 0 | 0 | 0 | 0 | 0 |
10.1.2 Sparkplug Host Application [conformance_sparkplug_host_application] | 1 | 1 | 1 | 0 | 1 | 100.00%
10.1.3 Sparkplug Compliant MQTT Server [conformance_mqtt_server] | 4 | 4 | 4 | 0 | 4 | 100.00%
10.1.4 Sparkplug Aware MQTT Server [conformance_sparkplug_aware_mqtt_server] | 7 | 7 | 7 | 0 | 7 | 100.00%
11 Appendix A: Open Source Software (non-normative) [appendix_a] | 0 | 0 | 0 | 0 | 0 |
11.1 OASIS MQTT Specifications [introduction_oasis_mqtt_specification] | 0 | 0 | 0 | 0 | 0 |
11.2 Eclipse Foundation IoT Resources [introduction_eclipse_foundation_iot_resources] | 0 | 0 | 0 | 0 | 0 |
11.3 Eclipse Paho [introduction_eclipse_paho] | 0 | 0 | 0 | 0 | 0 |
11.4 Google Protocol Buffers [introduction_google_protocol_buffers] | 0 | 0 | 0 | 0 | 0 |
11.5 Eclipse Kura Google Protocol Buffer Schema [introduction_eclipse_kura_schema] | 0 | 0 | 0 | 0 | 0 |
11.6 Raspberry Pi Hardware [introduction_raspberry_pi] | 0 | 0 | 0 | 0 | 0 |
12 Appendix B: List of Normative Statements (non-normative) [appendix_b] | 0 | 0 | 0 | 0 | 0 |

### Coverage Detail

Colour Key
Assertion is covered
Assertion is not covered
Assertion test is unimplemented
Assertion is untestable

#### Section 1.4.1.6 - Host Applications [introduction_host_applications]

intro-sparkplug-host-state)

[tck-id-intro-sparkplug-host-state] Sparkplug Host Applications MUST publish STATE messages denoting their online and offline status.

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: f4e9982610d0fdf09b74441ab336ac3e49494fa
SessionEstablishmentTest.publish()

#### Section 1.4.1.8 - Sparkplug Identifiers [introduction_sparkplug_ids]

intro-group-id-string)

[tck-id-intro-group-id-string] The Group ID MUST be a UTF-8 string and used as part of the Sparkplug topics as defined in the Topics Section.

Coverage

org.eclipse.sparkplug.tck.test
Test archive name: f46a84d3d1f0f1b17d7611ace660a988fb0a64e
Monitor.checkTopic()
intro-group-id-chars)

[tck-id-intro-group-id-chars] Because the Group ID is used in MQTT topic strings the Group ID MUST only contain characters allowed for MQTT topics per the MQTT Specification.

Coverage

org.eclipse.sparkplug.tck.test
Test archive name: f46a84d3d1f0f1b17d7611ace660a988fb0a64e
Monitor.checkTopic()
intro-edge-node-id-string)

[tck-id-intro-edge-node-id-string] The Edge Node ID MUST be a UTF-8 string and used as part of the Sparkplug topics as defined in the Topics Section.

Coverage

org.eclipse.sparkplug.tck.test
Test archive name: f46a84d3d1f0f1b17d7611ace660a988fb0a64e
Monitor.checkTopic()
intro-edge-node-id-chars)

[tck-id-intro-edge-node-id-chars] Because the Edge Node ID is used in MQTT topic strings the Edge Node ID MUST only contain characters allowed for MQTT topics per the MQTT Specification.

Coverage

org.eclipse.sparkplug.tck.test
Test archive name: f46a84d3d1f0f1b17d7611ace660a988fb0a64e
Monitor.checkTopic()
intro-device-id-string)

[tck-id-intro-device-id-string] The Device ID MUST be a UTF-8 string and used as part of the Sparkplug topics as defined in the Topics Section.

Coverage

org.eclipse.sparkplug.tck.test
Test archive name: f46a84d3d1f0f1b17d7611ace660a988fb0a64e
Monitor.checkTopic()
intro-device-id-chars)

[tck-id-intro-device-id-chars] Because the Device ID is used in MQTT topic strings the Device ID MUST only contain characters allowed for MQTT topics per the MQTT Specification.

Coverage

org.eclipse.sparkplug.tck.test
Test archive name: f46a84d3d1f0f1b17d7611ace660a988fb0a64e
Monitor.checkTopic()
intro-edge-node-id-uniqueness)

[tck-id-intro-edge-node-id-uniqueness] The Edge Node Descriptor MUST be unique within the context of all of other Edge Nodes within the Sparkplug infrastructure.

Coverage

org.eclipse.sparkplug.tck.test
Test archive name: f46a84d3d1f0f1b17d7611ace660a988fb0a64e
Monitor.handleDBIRTH()

#### Section 2.2 - Report by Exception [principles_report_by_exception]

principles-rbe-recommended)

[tck-id-principles-rbe-recommended] Because of the stateful nature of Sparkplug sessions, data SHOULD NOT be published from Edge Nodes on a periodic basis and instead SHOULD be published using a RBE based approach.

Coverage

org.eclipse.sparkplug.tck.test
Test archive name: f46a84d3d1f0f1b17d7611ace660a988fb0a64e
Monitor.handleNDATA()
Test archive name: f46a84d3d1f0f1b17d7611ace660a988fb0a64e
Monitor.handleDDATA()

#### Section 2.4 - Birth and Death Certificates [principles_birth_and_death_certificates]

principles-birth-certificates-order)

[tck-id-principles-birth-certificates-order] Birth Certificates MUST be the first MQTT messages published by any Edge Node or any Host Application.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 1bb42a31c6f5c669f2c1b61f7dfd57f772f71a
SessionEstablishmentTest.publish()
org.eclipse.sparkplug.tck.test.host
Test archive name: f4e9982610d0fdf09b74441ab336ac3e49494fa
SessionEstablishmentTest.publish()

#### Section 2.5 - Persistent vs Non-Persistent Connections for Edge Nodes [principles_persistent_vs_non_persistent_connections]

principles-persistence-clean-session-311)

[tck-id-principles-persistence-clean-session-311] If the MQTT client is using MQTT v3.1.1, the Edge Node's MQTT CONNECT packet MUST set the 'Clean Session' flag to true.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 1bb42a31c6f5c669f2c1b61f7dfd57f772f71a
SessionEstablishmentTest.connect()
principles-persistence-clean-session-50)

[tck-id-principles-persistence-clean-session-50] If the MQTT client is using MQTT v5.0, the Edge Node's MQTT CONNECT packet MUST set the 'Clean Start' flag to true and the 'Session Expiry Interval' to 0.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 1bb42a31c6f5c669f2c1b61f7dfd57f772f71a
SessionEstablishmentTest.connect()

#### Section 3.6 - Sparkplug Host Application [components_sparkplug_host_application]

components-ph-state)

[tck-id-components-ph-state] A Sparkplug Host Application MUST utilize the STATE messages to denote whether it is online or offline at any given point in time.

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: f4e9982610d0fdf09b74441ab336ac3e49494fa
SessionEstablishmentTest.publish()

#### Section 4.1 - Topic Namespace Elements [topics_sparkplug_topic_namespace_elements]

topic-structure)

[tck-id-topic-structure] All MQTT clients using the Sparkplug specification MUST use the following topic namespace structure

Coverage

org.eclipse.sparkplug.tck.test
Test archive name: f46a84d3d1f0f1b17d7611ace660a988fb0a64e
Monitor.checkTopic()

#### Section 4.1.1 - namespace Element [topics_namespace_element]

topic-structure-namespace-a)

[tck-id-topic-structure-namespace-a] For the Sparkplug B version of the payload definition, the UTF-8 string constant for the namespace element MUST be

Coverage

org.eclipse.sparkplug.tck.test
Test archive name: f46a84d3d1f0f1b17d7611ace660a988fb0a64e
Monitor.publish()

#### Section 4.1.2 - group_id Element [topics_group_id_element]

topic-structure-namespace-valid-group-id)

[tck-id-topic-structure-namespace-valid-group-id] The format of the Group ID MUST be a valid UTF-8 string with the exception of the reserved characters of + (plus), / (forward slash), and # (number sign).

Coverage

org.eclipse.sparkplug.tck.test
Test archive name: f46a84d3d1f0f1b17d7611ace660a988fb0a64e
Monitor.checkTopic()

#### Section 4.1.4 - edge_node_id Element [topics_edge_node_id_element]

topic-structure-namespace-unique-edge-node-descriptor)

[tck-id-topic-structure-namespace-unique-edge-node-descriptor] The groupid combined with the edgenodeid element MUST be unique from any other groupid/edgenodeid assigned in the MQTT infrastructure.

Coverage

org.eclipse.sparkplug.tck.test
Test archive name: f46a84d3d1f0f1b17d7611ace660a988fb0a64e
Monitor.handleNBIRTH()
Test archive name: f46a84d3d1f0f1b17d7611ace660a988fb0a64e
Monitor.handleNDEATH()
topic-structure-namespace-valid-edge-node-id)

[tck-id-topic-structure-namespace-valid-edge-node-id] The format of the edgenodeid MUST be a valid UTF-8 string with the exception of the reserved characters of + (plus), / (forward slash), and # (number sign).

Coverage

org.eclipse.sparkplug.tck.test
Test archive name: f46a84d3d1f0f1b17d7611ace660a988fb0a64e
Monitor.checkTopic()

#### Section 4.1.5 - device_id Element [topics_device_id_element]

topic-structure-namespace-valid-device-id)

[tck-id-topic-structure-namespace-valid-device-id] The format of the device_id MUST be a valid UTF-8 string except for the reserved characters of + (plus), / (forward slash), and # (number sign).

Coverage

org.eclipse.sparkplug.tck.test
Test archive name: f46a84d3d1f0f1b17d7611ace660a988fb0a64e
Monitor.checkTopic()
topic-structure-namespace-unique-device-id)

[tck-id-topic-structure-namespace-unique-device-id] The device_id MUST be unique from other devices being reported on by the same Edge Node.

Coverage

org.eclipse.sparkplug.tck.test
Test archive name: f46a84d3d1f0f1b17d7611ace660a988fb0a64e
Monitor.handleDBIRTH()
topic-structure-namespace-duplicate-device-id-across-edge-node)

[tck-id-topic-structure-namespace-duplicate-device-id-across-edge-node] The device_id MAY be duplicated from Edge Node to other Edge Nodes.

Coverage

org.eclipse.sparkplug.tck.test
Test archive name: f46a84d3d1f0f1b17d7611ace660a988fb0a64e
Monitor.handleDBIRTH()
topic-structure-namespace-device-id-associated-message-types)

[tck-id-topic-structure-namespace-device-id-associated-message-types] The deviceid MUST be included with messagetype elements DBIRTH, DDEATH, DDATA, and DCMD based topics.

Coverage

org.eclipse.sparkplug.tck.test
Test archive name: f46a84d3d1f0f1b17d7611ace660a988fb0a64e
Monitor.checkTopic()
topic-structure-namespace-device-id-non-associated-message-types)

[tck-id-topic-structure-namespace-device-id-non-associated-message-types] The deviceid MUST NOT be included with messagetype elements NBIRTH, NDEATH, NDATA, NCMD, and STATE based topics

Coverage

org.eclipse.sparkplug.tck.test
Test archive name: f46a84d3d1f0f1b17d7611ace660a988fb0a64e
Monitor.checkTopic()

#### Section 4.2.1.1.1 - Topic (NBIRTH) [topics_birth_message_nbirth]

topics-nbirth-topic)

[tck-id-topics-nbirth-topic] The Birth Certificate topic for a Sparkplug Edge Node MUST be of the form 'namespace/groupid/NBIRTH/edgenodeid' where the namespace is replaced with the specific namespace for this version of Sparkplug and the groupid and edgenodeid are replaced with the Group and Edge Node ID for this specific Edge Node.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 1bb42a31c6f5c669f2c1b61f7dfd57f772f71a
SessionEstablishmentTest.checkNBirth()

#### Section 4.2.1.1.2 - Payload (NBIRTH) [payloads_desc_nbirth]

topics-nbirth-mqtt)

[tck-id-topics-nbirth-mqtt] NBIRTH messages MUST be published with MQTT QoS equal to 0 and retain equal to false.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 1bb42a31c6f5c669f2c1b61f7dfd57f772f71a
SessionEstablishmentTest.checkNBirth()
topics-nbirth-seq-num)

[tck-id-topics-nbirth-seq-num] The NBIRTH MUST include a sequence number in the payload and it MUST have a value of 0.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 1bb42a31c6f5c669f2c1b61f7dfd57f772f71a
SessionEstablishmentTest.checkNBirth()
topics-nbirth-timestamp)

[tck-id-topics-nbirth-timestamp] The NBIRTH MUST include a timestamp denoting the date and time the message was sent from the Edge Node.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 1bb42a31c6f5c669f2c1b61f7dfd57f772f71a
SessionEstablishmentTest.checkNBirth()
topics-nbirth-metric-reqs)

[tck-id-topics-nbirth-metric-reqs] The NBIRTH MUST include every metric the Edge Node will ever report on.

Coverage

org.eclipse.sparkplug.tck.test
Test archive name: f46a84d3d1f0f1b17d7611ace660a988fb0a64e
Monitor.handleNDATA()
topics-nbirth-metrics)

[tck-id-topics-nbirth-metrics] At a minimum each metric MUST include the metric name, datatype, and current value.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 1bb42a31c6f5c669f2c1b61f7dfd57f772f71a
SessionEstablishmentTest.checkNBirth()
topics-nbirth-templates)

[tck-id-topics-nbirth-templates] If Template instances will be published by this Edge Node or any devices, all Template definitions MUST be published in the NBIRTH.

Coverage

org.eclipse.sparkplug.tck.test
Test archive name: f46a84d3d1f0f1b17d7611ace660a988fb0a64e
Monitor.handleNDATA()
Test archive name: f46a84d3d1f0f1b17d7611ace660a988fb0a64e
Monitor.handleDDATA()
topics-nbirth-bdseq-included)

[tck-id-topics-nbirth-bdseq-included] A bdSeq number as a metric MUST be included in the payload.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 1bb42a31c6f5c669f2c1b61f7dfd57f772f71a
SessionEstablishmentTest.checkNBirth()
topics-nbirth-bdseq-matching)

[tck-id-topics-nbirth-bdseq-matching] This MUST match the bdSeq number provided in the MQTT CONNECT packet's Will Message payload.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 1bb42a31c6f5c669f2c1b61f7dfd57f772f71a
SessionEstablishmentTest.checkNBirth()
topics-nbirth-bdseq-increment)

[tck-id-topics-nbirth-bdseq-increment] The bdSeq number MUST start at zero and increment by one on every new MQTT CONNECT packet.

Coverage

org.eclipse.sparkplug.tck.test
Test archive name: f46a84d3d1f0f1b17d7611ace660a988fb0a64e
Monitor.connect()
topics-nbirth-rebirth-metric)

[tck-id-topics-nbirth-rebirth-metric] The NBIRTH message MUST include a metric with the name 'Node Control/Rebirth'. It MUST be of datatype boolean and have a value of false.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 1bb42a31c6f5c669f2c1b61f7dfd57f772f71a
SessionEstablishmentTest.checkNBirth()

#### Section 4.2.1.2.1 - Topic (NDATA) [topics_data_message_ndata]

topics-ndata-topic)

[tck-id-topics-ndata-topic] The Edge Node data topic for a Sparkplug Edge Node MUST be of the form 'namespace/groupid/NDATA/edgenodeid' where the namespace is replaced with the specific namespace for this version of Sparkplug and the groupid and edgenodeid are replaced with the Group and Edge Node ID for this specific Edge Node.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 337198b62c59ac18865c788777af9da5ff9fba7
SendDataTest.checkNDATA()

#### Section 4.2.1.2.2 - Payload (NDATA) [payloads_desc_ndata]

topics-ndata-mqtt)

[tck-id-topics-ndata-mqtt] NDATA messages MUST be published with MQTT QoS equal to 0 and retain equal to false.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 337198b62c59ac18865c788777af9da5ff9fba7
SendDataTest.checkNDATA()
topics-ndata-seq-num)

[tck-id-topics-ndata-seq-num] The NDATA MUST include a sequence number in the payload and it MUST have a value of one greater than the previous MQTT message from the Edge Node contained unless the previous MQTT message contained a value of 255. In this case the sequence number MUST be 0.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 337198b62c59ac18865c788777af9da5ff9fba7
SendDataTest.checkNDATA()
topics-ndata-timestamp)

[tck-id-topics-ndata-timestamp] The NDATA MUST include a timestamp denoting the date and time the message was sent from the Edge Node.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 337198b62c59ac18865c788777af9da5ff9fba7
SendDataTest.checkNDATA()
topics-ndata-payload)

[tck-id-topics-ndata-payload] The NDATA MUST include the Edge Node's metrics that have changed since the last NBIRTH or NDATA message.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 337198b62c59ac18865c788777af9da5ff9fba7
SendDataTest.checkNDATA()

#### Section 4.2.1.3.1 - Topic (NDEATH) [topics_death_message_ndeath]

topics-ndeath-topic)

[tck-id-topics-ndeath-topic] The Edge Node Death Certificate topic for a Sparkplug Edge Node MUST be of the form 'namespace/groupid/NDEATH/edgenodeid' where the namespace is replaced with the specific namespace for this version of Sparkplug and the groupid and edgenodeid are replaced with the Group and Edge Node ID for this specific Edge Node.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: a976357daba8d1225f973d151d3115e922245a
SessionTerminationTest.publish()

#### Section 4.2.1.3.2 - Payload (NDEATH) [payloads_desc_ndeath]

topics-ndeath-payload)

[tck-id-topics-ndeath-payload] The NDEATH message contains a very simple payload that MUST only include a single metric, the bdSeq number, so that the NDEATH event can be associated with the NBIRTH.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 1bb42a31c6f5c669f2c1b61f7dfd57f772f71a
SessionEstablishmentTest.checkWillMessage()
topics-ndeath-seq)

[tck-id-topics-ndeath-seq] The NDEATH message MUST NOT include a sequence number.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 1bb42a31c6f5c669f2c1b61f7dfd57f772f71a
SessionEstablishmentTest.checkWillMessage()

#### Section 4.2.1.4.1 - Topic (NCMD) [topics_command_ncmd]

topics-ncmd-topic)

[tck-id-topics-ncmd-topic] The Edge Node command topic for a Sparkplug Edge Node MUST be of the form 'namespace/groupid/NCMD/edgenodeid' where the namespace is replaced with the specific namespace for this version of Sparkplug and the groupid and edgenodeid are replaced with the Group and Edge Node ID for this specific Edge Node.

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: 77e79d3c25de46af746745494cc6fce7decacc0
SendCommandTest.checkNodeCommand()

#### Section 4.2.1.4.2 - Payload (NCMD) [payloads_desc_ncmd]

topics-ncmd-mqtt)

[tck-id-topics-ncmd-mqtt] NCMD messages MUST be published with MQTT QoS equal to 0 and retain equal to false.

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: 77e79d3c25de46af746745494cc6fce7decacc0
SendCommandTest.checkNodeCommand()
topics-ncmd-timestamp)

[tck-id-topics-ncmd-timestamp] The NCMD MUST include a timestamp denoting the date and time the message was sent from the Host Application's MQTT client.

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: 77e79d3c25de46af746745494cc6fce7decacc0
SendCommandTest.checkNodeCommand()
topics-ncmd-payload)

[tck-id-topics-ncmd-payload] The NCMD MUST include the metrics that need to be written to on the Edge Node.

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: 77e79d3c25de46af746745494cc6fce7decacc0
SendCommandTest.checkNodeCommand()

#### Section 4.2.2.1.1 - Topic (DBIRTH) [topics_birth_message_dbirth]

topics-dbirth-topic)

[tck-id-topics-dbirth-topic] The Device Birth topic for a Sparkplug Device MUST be of the form 'namespace/groupid/DBIRTH/edgenodeid/deviceid' where the namespace is replaced with the specific namespace for this version of Sparkplug and the groupid, edgenodeid, and deviceid are replaced with the Group, Edge Node, and Device ID for this specific Device.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 1bb42a31c6f5c669f2c1b61f7dfd57f772f71a
SessionEstablishmentTest.checkDBirth()

#### Section 4.2.2.1.2 - Payload (DBIRTH) [payloads_desc_dbirth]

topics-dbirth-mqtt)

[tck-id-topics-dbirth-mqtt] DBIRTH messages MUST be published with MQTT QoS equal to 0 and retain equal to false.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 1bb42a31c6f5c669f2c1b61f7dfd57f772f71a
SessionEstablishmentTest.checkDBirth()
topics-dbirth-seq)

[tck-id-topics-dbirth-seq] The DBIRTH MUST include a sequence number in the payload and it MUST have a value of one greater than the previous MQTT message from the Edge Node contained unless the previous MQTT message contained a value of 255. In this case the sequence number MUST be 0.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 1bb42a31c6f5c669f2c1b61f7dfd57f772f71a
SessionEstablishmentTest.checkDBirth()
topics-dbirth-timestamp)

[tck-id-topics-dbirth-timestamp] The DBIRTH MUST include a timestamp denoting the date and time the message was sent from the Edge Node.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 1bb42a31c6f5c669f2c1b61f7dfd57f772f71a
SessionEstablishmentTest.checkDBirth()
topics-dbirth-metric-reqs)

[tck-id-topics-dbirth-metric-reqs] The DBIRTH MUST include every metric the Edge Node will ever report on.

Coverage

org.eclipse.sparkplug.tck.test
Test archive name: f46a84d3d1f0f1b17d7611ace660a988fb0a64e
Monitor.handleDDATA()
topics-dbirth-metrics)

[tck-id-topics-dbirth-metrics] At a minimum each metric MUST include the metric name, metric datatype, and current value.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 1bb42a31c6f5c669f2c1b61f7dfd57f772f71a
SessionEstablishmentTest.checkDBirth()

#### Section 4.2.2.2.1 - Topic (DDATA) [topics_data_message_ddata]

topics-ddata-topic)

[tck-id-topics-ddata-topic] The Device command topic for a Sparkplug Device MUST be of the form 'namespace/groupid/DDATA/edgenodeid/deviceid' where the namespace is replaced with the specific namespace for this version of Sparkplug and the groupid, edgenodeid, and deviceid are replaced with the Group, Edge Node, and Device ID for this specific Device.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 337198b62c59ac18865c788777af9da5ff9fba7
SendDataTest.checkDDATA()

#### Section 4.2.2.2.2 - Payload (DDATA) [payloads_desc_ddata]

topics-ddata-mqtt)

[tck-id-topics-ddata-mqtt] DDATA messages MUST be published with MQTT QoS equal to 0 and retain equal to false.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 337198b62c59ac18865c788777af9da5ff9fba7
SendDataTest.checkDDATA()
topics-ddata-seq-num)

[tck-id-topics-ddata-seq-num] The DDATA MUST include a sequence number in the payload and it MUST have a value of one greater than the previous MQTT message from the Edge Node contained unless the previous MQTT message contained a value of 255. In this case the sequence number MUST be 0.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 337198b62c59ac18865c788777af9da5ff9fba7
SendDataTest.checkDDATA()
topics-ddata-timestamp)

[tck-id-topics-ddata-timestamp] The DDATA MUST include a timestamp denoting the date and time the message was sent from the Edge Node.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 337198b62c59ac18865c788777af9da5ff9fba7
SendDataTest.checkDDATA()
topics-ddata-payload)

[tck-id-topics-ddata-payload] The DDATA MUST include the Device's metrics that have changed since the last DBIRTH or DDATA message.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 337198b62c59ac18865c788777af9da5ff9fba7
SendDataTest.checkDDATA()

#### Section 4.2.2.3.1 - Topic (DDEATH) [topics_death_message_ddeath]

topics-ddeath-topic)

[tck-id-topics-ddeath-topic] The Device Death Certificate topic for a Sparkplug Device MUST be of the form 'namespace/groupid/DDEATH/edgenodeid/deviceid' where the namespace is replaced with the specific namespace for this version of Sparkplug and the groupid, edgenodeid, and deviceid are replaced with the Group, Edge Node, and Device ID for this specific Device.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: a976357daba8d1225f973d151d3115e922245a
SessionTerminationTest.publish()

#### Section 4.2.2.3.2 - Payload (DDEATH) [payloads_desc_ddeath]

topics-ddeath-mqtt)

[tck-id-topics-ddeath-mqtt] DDEATH messages MUST be published with MQTT QoS equal to 0 and retain equal to false.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: a976357daba8d1225f973d151d3115e922245a
SessionTerminationTest.publish()
topics-ddeath-seq-num)

[tck-id-topics-ddeath-seq-num] The DDEATH MUST include a sequence number in the payload and it MUST have a value of one greater than the previous MQTT message from the Edge Node contained unless the previous MQTT message contained a value of 255. In this case the sequence number MUST be 0.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: a976357daba8d1225f973d151d3115e922245a
SessionTerminationTest.publish()

#### Section 4.2.2.4.1 - Topic DCMD) [topics_command_dcmd]

topics-dcmd-topic)

[tck-id-topics-dcmd-topic] The Device command topic for a Sparkplug Device MUST be of the form 'namespace/groupid/DCMD/edgenodeid/deviceid' where the namespace is replaced with the specific namespace for this version of Sparkplug and the groupid, edgenodeid, and deviceid are replaced with the Group, Edge Node, and Device ID for this specific Device.

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: 77e79d3c25de46af746745494cc6fce7decacc0
SendCommandTest.checkDeviceCommand()

#### Section 4.2.2.4.2 - Payload (DCMD) [payloads_desc_dcmd]

topics-dcmd-mqtt)

[tck-id-topics-dcmd-mqtt] DCMD messages MUST be published with MQTT QoS equal to 0 and retain equal to false.

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: 77e79d3c25de46af746745494cc6fce7decacc0
SendCommandTest.checkDeviceCommand()
topics-dcmd-timestamp)

[tck-id-topics-dcmd-timestamp] The DCMD MUST include a timestamp denoting the date and time the message was sent from the Host Application's MQTT client.

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: 77e79d3c25de46af746745494cc6fce7decacc0
SendCommandTest.checkDeviceCommand()
topics-dcmd-payload)

[tck-id-topics-dcmd-payload] The DCMD MUST include the metrics that need to be written to on the Device.

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: 77e79d3c25de46af746745494cc6fce7decacc0
SendCommandTest.checkDeviceCommand()

#### Section 4.2.3.1 - Birth Certificate Message (STATE) [birth_message_state]

host-topic-phid-birth-message)

[tck-id-host-topic-phid-birth-message] The first MQTT message a Host Application MUST publish is a Birth Certificate.

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: f4e9982610d0fdf09b74441ab336ac3e49494fa
SessionEstablishmentTest.checkBirthMessage()
host-topic-phid-birth-qos)

[tck-id-host-topic-phid-birth-qos] The MQTT Quality of Service (QoS) MUST be set to 1

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: f4e9982610d0fdf09b74441ab336ac3e49494fa
SessionEstablishmentTest.checkBirthMessage()
host-topic-phid-birth-retain)

[tck-id-host-topic-phid-birth-retain] The MQTT retain flag for the Birth Certificate MUST be set to TRUE

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: f4e9982610d0fdf09b74441ab336ac3e49494fa
SessionEstablishmentTest.checkBirthMessage()

#### Section 4.2.3.1.1 - Birth Certificate Topic (STATE) [topics_birth_message_state]

host-topic-phid-birth-topic)

[tck-id-host-topic-phid-birth-topic] The Sparkplug Host Application Birth topic MUST be of the form spBv1.0/STATE/sparkplughostid where the sparkplughostid must be replaced with the specific Spakrplug Host ID of this Sparkplug Host Application.

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: f4e9982610d0fdf09b74441ab336ac3e49494fa
SessionEstablishmentTest.checkBirthMessage()
host-topic-phid-birth-sub-required)

[tck-id-host-topic-phid-birth-sub-required] The Sparkplug Host Application MUST subscribe to its own spBv1.0/STATE/sparkplughostid and the appropriate spBv1.0 topic(s) immediately after successfully connecting to the MQTT Server.

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: f4e9982610d0fdf09b74441ab336ac3e49494fa
SessionEstablishmentTest.checkSubscribes()
host-topic-phid-birth-required)

[tck-id-host-topic-phid-birth-required] The Sparkplug Host Application MUST publish a Sparkplug Host Application BIRTH message to the MQTT Server immediately after successfully subscribing its own spBv1.0/STATE/sparkplughostid topic.

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: f4e9982610d0fdf09b74441ab336ac3e49494fa
SessionEstablishmentTest.publish()

#### Section 4.2.3.1.2 - Birth Certificate Payload (STATE) [payloads_desc_state_birth]

host-topic-phid-birth-payload)

[tck-id-host-topic-phid-birth-payload] The Birth Certificate Payload MUST be JSON UTF-8 data. It MUST include two key/value pairs where the one key MUST be 'online' and it's value is a boolean 'true'. The other key MUST be 'timestamp' and the value MUST be a numeric value representing the current UTC time in milliseconds since Epoch.

Coverage

org.eclipse.sparkplug.tck.test
Test archive name: f46a84d3d1f0f1b17d7611ace660a988fb0a64e
Monitor.connect()
org.eclipse.sparkplug.tck.test.host
Test archive name: f4e9982610d0fdf09b74441ab336ac3e49494fa
SessionEstablishmentTest.checkBirthMessage()
host-topic-phid-birth-payload-timestamp)

[tck-id-host-topic-phid-birth-payload-timestamp] The timestamp metric value MUST be the same timestamp value set in the immediately prior MQTT CONNECT packet's Will Message payload.

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: f4e9982610d0fdf09b74441ab336ac3e49494fa
SessionEstablishmentTest.checkBirthMessage()

#### Section 4.2.3.2 - Death Certificate Message (STATE) [death_message_state]

host-topic-phid-death-qos)

[tck-id-host-topic-phid-death-qos] The MQTT Quality of Service (QoS) MUST be set to 1

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: f4e9982610d0fdf09b74441ab336ac3e49494fa
SessionEstablishmentTest.checkDeathMessage()
host-topic-phid-death-retain)

[tck-id-host-topic-phid-death-retain] The MQTT retain flag for the Birth Certificate MUST be set to TRUE

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: f4e9982610d0fdf09b74441ab336ac3e49494fa
SessionEstablishmentTest.checkDeathMessage()

#### Section 4.2.3.2.1 - Death Certificate Topic (STATE) [topics_death_message_state]

host-topic-phid-death-topic)

[tck-id-host-topic-phid-death-topic] The Sparkplug Host Application Death topic MUST be of the form spBv1.0/STATE/sparkplughostid where the sparkplughostid must be replaced with the specific Sparkplug Host ID of this Sparkplug Host Application.

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: f4e9982610d0fdf09b74441ab336ac3e49494fa
SessionEstablishmentTest.checkDeathMessage()
host-topic-phid-death-required)

[tck-id-host-topic-phid-death-required] The Sparkplug Host Application MUST provide a Will message in the MQTT CONNECT packet

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: f4e9982610d0fdf09b74441ab336ac3e49494fa
SessionEstablishmentTest.checkConnectMessage()

#### Section 4.2.3.2.2 - Death Certificate Payload (STATE) [payloads_desc_state_death]

host-topic-phid-death-payload)

[tck-id-host-topic-phid-death-payload] The STATE Death Certificate Payload MUST be JSON UTF-8 data. It MUST include two key/value pairs where one key MUST be 'online' and it's value is a boolean 'false'. The other key MUST be 'timestamp' and the value MUST be a numeric value representing the current UTC time in milliseconds since Epoch.

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: f4e9982610d0fdf09b74441ab336ac3e49494fa
SessionEstablishmentTest.checkDeathMessage()
host-topic-phid-death-payload-timestamp-connect)

[tck-id-host-topic-phid-death-payload-connect] The Death Certificate's used in the MQTT CONNECT packet Will message MUST use a timestamp value that represents the current UTC time at the time of the CONNECT packet is sent to the MQTT Server.

Coverage

org.eclipse.sparkplug.tck.test
Test archive name: f46a84d3d1f0f1b17d7611ace660a988fb0a64e
Monitor.connect()
host-topic-phid-death-payload-timestamp-disconnect-clean)

[tck-id-host-topic-phid-death-payload-disconnect-clean] If a Host Application is disconnecting cleanly using MQTT DISCONNECT packet, the Host Application MUST publish a Death Certificate payload before sending the MQTT DISCONNECT packet with the timestamp set to the current UTC time the disconnect is occurring.

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: fe7ceff33ecfe4dc5fa675e59f8d98dfc66c8
SessionTerminationTest.disconnect()
host-topic-phid-death-payload-timestamp-disconnect-with-no-disconnect-packet)

[tck-id-host-topic-phid-death-payload-disconnect-with-no-disconnect-packet] If a Host Application is disconnecting and not using an MQTT DISCONNECT packet, the Host Application MUST publish a Death Certificate payload before terminating the MQTT connection with the timestamp set to the current UTC time the disconnect is occurring.

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: fe7ceff33ecfe4dc5fa675e59f8d98dfc66c8
SessionTerminationTest.onDisconnect()

#### Section 5.2 - Case Sensitivity in Sparkplug [operational_behavior_case_sensitivity]

case-sensitivity-sparkplug-ids)

[tck-id-case-sensitivity-sparkplug-ids] Edge Nodes in a Sparkplug environment SHOULD NOT have Sparkplug IDs (Group, Edge Node, or Device IDs) that when converted to lower case match

Coverage

org.eclipse.sparkplug.tck.test
Test archive name: f46a84d3d1f0f1b17d7611ace660a988fb0a64e
Monitor.handleNBIRTH()
Test archive name: f46a84d3d1f0f1b17d7611ace660a988fb0a64e
Monitor.handleDBIRTH()
case-sensitivity-metric-names)

[tck-id-case-sensitivity-metric-names] An Edge Node SHOULD NOT publish metric names that when converted to all lower case match.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 1bb42a31c6f5c669f2c1b61f7dfd57f772f71a
SessionEstablishmentTest.checkNBirth()
Test archive name: 1bb42a31c6f5c669f2c1b61f7dfd57f772f71a
SessionEstablishmentTest.checkDBirth()

#### Section 5.3 - Host Application Session Establishment [operational_behavior_primary_host_application_session_establishment]

message-flow-phid-sparkplug-clean-session-311)

[tck-id-message-flow-phid-sparkplug-clean-session-311] The CONNECT Control Packet for all Sparkplug Host Applications when using MQTT 3.1.1 MUST set the MQTT 'Clean Session' flag to true.

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: f4e9982610d0fdf09b74441ab336ac3e49494fa
SessionEstablishmentTest.checkConnectMessage()
message-flow-phid-sparkplug-clean-session-50)

[tck-id-message-flow-phid-sparkplug-clean-session-50] The CONNECT Control Packet for all Sparkplug Host Applications when using MQTT 5.0 MUST set the the MQTT 'Clean Start' flag to true and the 'Session Expiry Interval' to 0.

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: f4e9982610d0fdf09b74441ab336ac3e49494fa
SessionEstablishmentTest.checkConnectMessage()
message-flow-phid-sparkplug-subscription)

[tck-id-message-flow-phid-sparkplug-subscription] The subscription on the Sparkplug Topic Namespace and the STATE topic MUST be done immediately after successfully establishing the MQTT session and before publishing its own STATE message.

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: f4e9982610d0fdf09b74441ab336ac3e49494fa
SessionEstablishmentTest.subscribe()
message-flow-phid-sparkplug-state-publish)

[tck-id-message-flow-phid-sparkplug-state-publish] Once an MQTT Session has been established, the Sparkplug Host Application subscriptions on the Sparkplug Topic Namespace have been established and the STATE topic subscription has been established, the Sparkplug Host Application MUST publish a new STATE message.

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: f4e9982610d0fdf09b74441ab336ac3e49494fa
SessionEstablishmentTest.publish()
message-flow-phid-sparkplug-state-publish-payload)

[tck-id-message-flow-phid-sparkplug-state-publish-payload] The Host Application Birth Certificate Payload MUST be JSON UTF-8 data. It MUST include two key/value pairs where one key MUST be 'online' and its value is a boolean 'true'. The other key MUST be 'timestamp' and the value MUST be the same value set in the immediately prior MQTT CONNECT packet's Will Message payload.

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: f4e9982610d0fdf09b74441ab336ac3e49494fa
SessionEstablishmentTest.checkBirthMessage()
message-flow-phid-sparkplug-state-publish-payload-timestamp)

[tck-id-message-flow-phid-sparkplug-state-publish-payload-timestamp] The timestamp value in the Host Application Birth Certificate payload MUST be the same value set in the immediately prior MQTT CONNECT packet's Will Message payload.

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: f4e9982610d0fdf09b74441ab336ac3e49494fa
SessionEstablishmentTest.checkBirthMessage()
g)

All metric data associated with any Sparkplug Edge Node that was connected to that MQTT Server and known by the Host Application MUST be updated to a STALE data quality if the Host Application loses connection to the MQTT Server.

message-flow-hid-sparkplug-state-message-delivered)

[tck-id-message-flow-hid-sparkplug-state-message-delivered] After publishing its own Host Application STATE message, if at any point the Host Application is delivered a STATE message on its own Host Application ID with a 'online' value of false, it MUST immediately republish its STATE message to the same MQTT Server with a 'online' value of true and the 'timestamp' set to the same value that was used for the timestamp in its own prior MQTT CONNECT packet Will Message payload.

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: f4e9982610d0fdf09b74441ab336ac3e49494fa
SessionEstablishmentTest.publish()

#### Section 5.4 - Edge Node Session Establishment [operational_behavior_edge_node_session_establishment]

message-flow-edge-node-ncmd-subscribe)

[tck-id-message-flow-edge-node-ncmd-subscribe] The MQTT client associated with the Edge Node MUST subscribe to a topic of the form 'spBv1.0/groupid/NCMD/edgenodeid' where groupid is the Sparkplug Group ID and the edgenodeid is the Sparkplug Edge Node ID for this Edge Node. It MUST subscribe on this topic with a QoS of 1.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 1bb42a31c6f5c669f2c1b61f7dfd57f772f71a
SessionEstablishmentTest.checkSubscribeTopics()
message-flow-edge-node-birth-publish-connect)

[tck-id-message-flow-edge-node-birth-publish-connect] Any Edge Node in the MQTT infrastructure MUST establish an MQTT Session prior to publishing NBIRTH and DBIRTH messages.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 1bb42a31c6f5c669f2c1b61f7dfd57f772f71a
SessionEstablishmentTest.connect()
message-flow-edge-node-birth-publish-will-message)

[tck-id-message-flow-edge-node-birth-publish-will-message] When a Sparkplug Edge Node sends its MQTT CONNECT packet, it MUST include a Will Message.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 1bb42a31c6f5c669f2c1b61f7dfd57f772f71a
SessionEstablishmentTest.connect()
message-flow-edge-node-birth-publish-will-message-topic)

[tck-id-message-flow-edge-node-birth-publish-will-message-topic] The Edge Node's MQTT Will Message's topic MUST be of the form 'spBv1.0/groupid/NDEATH/edgenodeid' where groupid is the Sparkplug Group ID and the edgenodeid is the Sparkplug Edge Node ID for this Edge Node

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 1bb42a31c6f5c669f2c1b61f7dfd57f772f71a
SessionEstablishmentTest.connect()
Test archive name: a976357daba8d1225f973d151d3115e922245a
SessionTerminationTest.connect()
org.eclipse.sparkplug.tck.test.host
Test archive name: 77e79d3c25de46af746745494cc6fce7decacc0
SendCommandTest.connect()
message-flow-edge-node-birth-publish-will-message-payload)

[tck-id-message-flow-edge-node-birth-publish-will-message-payload] The Edge Node's MQTT Will Message's payload MUST be a Sparkplug Google Protobuf encoded payload.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 1bb42a31c6f5c669f2c1b61f7dfd57f772f71a
SessionEstablishmentTest.checkWillMessage()
message-flow-edge-node-birth-publish-will-message-payload-bdSeq)

[tck-id-message-flow-edge-node-birth-publish-will-message-payload-bdSeq] The Edge Node's MQTT Will Message's payload MUST include a metric with the name of 'bdSeq', the datatype of INT64, and the value MUST be incremented by one from the value in the previous MQTT CONNECT packet unless the value would be greater than 255. If in the previous NBIRTH a value of 255 was sent, the next MQTT Connect packet Will Message payload bdSeq number value MUST have a value of 0.

Coverage

org.eclipse.sparkplug.tck.test
Test archive name: f46a84d3d1f0f1b17d7611ace660a988fb0a64e
Monitor.connect()
message-flow-edge-node-birth-publish-will-message-qos)

[tck-id-message-flow-edge-node-birth-publish-will-message-qos] The Edge Node's MQTT Will Message's MQTT QoS MUST be 1.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 1bb42a31c6f5c669f2c1b61f7dfd57f772f71a
SessionEstablishmentTest.checkWillMessage()
message-flow-edge-node-birth-publish-will-message-will-retained)

[tck-id-message-flow-edge-node-birth-publish-will-message-will-retained] The Edge Node's MQTT Will Message's retained flag MUST be set to false.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 1bb42a31c6f5c669f2c1b61f7dfd57f772f71a
SessionEstablishmentTest.checkWillMessage()
message-flow-edge-node-birth-publish-phid-wait)

[tck-id-message-flow-edge-node-birth-publish-phid-wait] If the Edge Node is configured to wait for a Primary Host Application it MUST verify the Primary Host Application is online via the STATE topic before publishing NBIRTH and DBIRTH messages.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 5b7973a77772b65fb2128a5351749e954d33045
PrimaryHostTest.publish()
Test archive name: 1bb42a31c6f5c669f2c1b61f7dfd57f772f71a
SessionEstablishmentTest.checkNBirth()
message-flow-edge-node-birth-publish-phid-wait-id)

[tck-id-message-flow-edge-node-birth-publish-phid-wait-id] If the Edge Node is configured to wait for a Primary Host Application it MUST validate the Host Application ID as the last token in the STATE message topic string matches the configured Primary Host Application ID for this Edge Node.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 5b7973a77772b65fb2128a5351749e954d33045
PrimaryHostTest.publish()
message-flow-edge-node-birth-publish-phid-wait-online)

[tck-id-message-flow-edge-node-birth-publish-phid-wait-online] If the Edge Node is configured to wait for a Primary Host Application it MUST validate the 'online' boolean flag is true in the STATE message payload before considering the Primary Host Application to be online and active.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 5b7973a77772b65fb2128a5351749e954d33045
PrimaryHostTest.publish()
message-flow-edge-node-birth-publish-phid-wait-timestamp)

[tck-id-message-flow-edge-node-birth-publish-phid-wait-timestamp] If the Edge Node is configured to wait for a Primary Host Application it MUST validate the timestamp value is greater than or equal to the previous STATE message timestamp value in the STATE message payload before considering the Primary Host Application to be online and active. If no previous STATE message timestamp value has been received by this Edge Node it MUST consider the incoming STATE message to be the latest/valid.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 5b7973a77772b65fb2128a5351749e954d33045
PrimaryHostTest.publish()
message-flow-edge-node-birth-publish-nbirth-topic)

[tck-id-message-flow-edge-node-birth-publish-nbirth-topic] The Edge Node's NBIRTH MQTT topic MUST be of the form 'spBv1.0/groupid/NBIRTH/edgenodeid' where groupid is the Sparkplug Group ID and the edgenodeid is the Sparkplug Edge Node ID for this Edge Node

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 1bb42a31c6f5c669f2c1b61f7dfd57f772f71a
SessionEstablishmentTest.checkNBirth()
message-flow-edge-node-birth-publish-nbirth-payload)

[tck-id-message-flow-edge-node-birth-publish-nbirth-payload] The Edge Node's NBIRTH payload MUST be a Sparkplug Google Protobuf encoded payload.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 1bb42a31c6f5c669f2c1b61f7dfd57f772f71a
SessionEstablishmentTest.checkNBirth()
message-flow-edge-node-birth-publish-nbirth-payload-bdSeq)

[tck-id-message-flow-edge-node-birth-publish-nbirth-payload-bdSeq] The Edge Node's NBIRTH payload MUST include a metric with the name of 'bdSeq' the datatype of INT64 and the value MUST be the same as the previous MQTT CONNECT packet.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 1bb42a31c6f5c669f2c1b61f7dfd57f772f71a
SessionEstablishmentTest.checkNBirth()
message-flow-edge-node-birth-publish-nbirth-qos)

[tck-id-message-flow-edge-node-birth-publish-nbirth-qos] The Edge Node's NBIRTH MQTT QoS MUST be 0.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 1bb42a31c6f5c669f2c1b61f7dfd57f772f71a
SessionEstablishmentTest.checkNBirth()
message-flow-edge-node-birth-publish-nbirth-retained)

[tck-id-message-flow-edge-node-birth-publish-nbirth-retained] The Edge Node's NBIRTH retained flag MUST be set to false.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 1bb42a31c6f5c669f2c1b61f7dfd57f772f71a
SessionEstablishmentTest.checkNBirth()
message-flow-edge-node-birth-publish-nbirth-payload-seq)

[tck-id-message-flow-edge-node-birth-publish-nbirth-payload-seq] The Edge Node's NBIRTH payload MUST include a 'seq' number that is between 0 and 255 (inclusive).

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 1bb42a31c6f5c669f2c1b61f7dfd57f772f71a
SessionEstablishmentTest.checkNBirth()
message-flow-edge-node-birth-publish-phid-offline)

[tck-id-message-flow-edge-node-birth-publish-phid-offline] If the Edge Node is configured to wait for a Primary Host Application, it is connected to the MQTT Server, and receives a STATE message on its configured Primary Host, the timestamp value in the payload is greater than or equal to the timestamp value included in the prior 'online' STATE message, and the 'online' value is false, it MUST immediately publish an NDEATH message and disconnect from the MQTT Server and start the connection establishment process over.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 5b7973a77772b65fb2128a5351749e954d33045
PrimaryHostTest.publish()

#### Section 5.5 - Edge Node Session Termination [operational_behavior_edge_node_session_termination]

operational-behavior-edge-node-intentional-disconnect-ndeath)

[tck-id-operational-behavior-edge-node-intentional-disconnect-ndeath] When an Edge Node disconnects intentionally, it MUST publish an NDEATH before terminating the connection.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: a976357daba8d1225f973d151d3115e922245a
SessionTerminationTest.publish()
operational-behavior-edge-node-intentional-disconnect-packet)

[tck-id-operational-behavior-edge-node-intentional-disconnect-packet] Immediately following the NDEATH publish, a DISCONNECT packet MAY be sent to the MQTT Server.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: a976357daba8d1225f973d151d3115e922245a
SessionTerminationTest.disconnect()
Test archive name: a976357daba8d1225f973d151d3115e922245a
SessionTerminationTest.onDisconnect()
operational-behavior-edge-node-termination-host-action-ndeath-node-offline)

[tck-id-operational-behavior-edge-node-termination-host-action-ndeath-node-offline] Immediately after receiving an NDEATH from an Edge Node, Host Applications MUST mark the Edge Node as offline using the current Host Application's system UTC time

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: 34403a95f99a4f505368868cdfa5543a364be
EdgeSessionTerminationTest.publish()
operational-behavior-edge-node-termination-host-action-ndeath-node-tags-stale)

[tck-id-operational-behavior-edge-node-termination-host-action-ndeath-node-tags-stale] Immediately after receiving an NDEATH from an Edge Node, Host Applications MUST mark all metrics that were included in the previous NBIRTH as STALE using the current Host Application's system UTC time

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: 34403a95f99a4f505368868cdfa5543a364be
EdgeSessionTerminationTest.publish()
operational-behavior-edge-node-termination-host-action-ndeath-devices-offline)

[tck-id-operational-behavior-edge-node-termination-host-action-ndeath-devices-offline] Immediately after receiving an NDEATH from an Edge Node, Host Applications MUST mark all Sparkplug Devices associated with the Edge Node as offline using the current Host Application's system UTC time

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: 34403a95f99a4f505368868cdfa5543a364be
EdgeSessionTerminationTest.publish()
operational-behavior-edge-node-termination-host-action-ndeath-devices-tags-stale)

[tck-id-operational-behavior-edge-node-termination-host-action-ndeath-devices-tags-stale] Immediately after receiving an NDEATH from an Edge Node, Host Applications MUST mark all of the metrics that were included with associated Sparkplug Device DBIRTH messages as STALEusing the current Host Application's system UTC time

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: 34403a95f99a4f505368868cdfa5543a364be
EdgeSessionTerminationTest.publish()
operational-behavior-edge-node-termination-host-offline)

[tck-id-operational-behavior-edge-node-termination-host-offline] If the Edge Node is configured to use a Primary Host Application, it MUST disconnect from the current MQTT Server if the online JSON value is false and the timestamp value is greater than or equal to the previous online STATE message timestamp value.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 5b7973a77772b65fb2128a5351749e954d33045
PrimaryHostTest.publish()
operational-behavior-edge-node-termination-host-offline-reconnect)

[tck-id-operational-behavior-edge-node-termination-host-offline-reconnect] If the Edge Node disconnects after being in a Sparkplug session due to a valid 'offline STATE message', it MUST attempt to connect to the next MQTT Server in its connection list to start the session establishment procedure over again.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 5b7973a77772b65fb2128a5351749e954d33045
PrimaryHostTest.publish()
operational-behavior-edge-node-termination-host-offline-timestamp)

[tck-id-operational-behavior-edge-node-termination-host-offline-timestamp] Consider an Edge Node that is configured to use a Primary Host Application and the Edge Node is connected and publishing. Then it receives an offline STATE message. It MUST NOT disconnect if the timestamp value is less than the value from the previous online STATE message.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 5b7973a77772b65fb2128a5351749e954d33045
PrimaryHostTest.publish()

#### Section 5.6 - Device Session Establishment [operational_behavior_device_session_establishment]

message-flow-device-dcmd-subscribe)

[tck-id-message-flow-device-dcmd-subscribe] If the Device supports writing to outputs, the MQTT client associated with the Device MUST subscribe to a topic of the form 'spBv1.0/groupid/DCMD/edgenodeid/deviceid' where groupid is the Sparkplug Group ID the edgenodeid is the Sparkplug Edge Node ID and the deviceid is the Sparkplug Device ID for this Device. It MUST subscribe on this topic with a QoS of 1.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 1bb42a31c6f5c669f2c1b61f7dfd57f772f71a
SessionEstablishmentTest.checkSubscribeTopics()
message-flow-device-birth-publish-nbirth-wait)

[tck-id-message-flow-device-birth-publish-nbirth-wait] The NBIRTH message MUST have been sent within the current MQTT session prior to a DBIRTH being published.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 1bb42a31c6f5c669f2c1b61f7dfd57f772f71a
SessionEstablishmentTest.checkDBirth()
message-flow-device-birth-publish-dbirth-topic)

[tck-id-message-flow-device-birth-publish-dbirth-topic] The Device's DBIRTH MQTT topic MUST be of the form 'spBv1.0/groupid/DBIRTH/edgenodeid/deviceid' where groupid is the Sparkplug Group ID the edgenodeid is the Sparkplug Edge Node ID and the deviceid is the Sparkplug Device ID for this Device.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 1bb42a31c6f5c669f2c1b61f7dfd57f772f71a
SessionEstablishmentTest.checkDBirth()
message-flow-device-birth-publish-dbirth-match-edge-node-topic)

[tck-id-message-flow-device-birth-publish-dbirth-match-edge-node-topic] The Device's DBIRTH MQTT topic groupid and edgenodeid MUST match the groupid and edgenodeid that were sent in the prior NBIRTH message for the Edge Node this Device is associated with.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 1bb42a31c6f5c669f2c1b61f7dfd57f772f71a
SessionEstablishmentTest.checkDBirth()
message-flow-device-birth-publish-dbirth-payload)

[tck-id-message-flow-device-birth-publish-dbirth-payload] The Device's DBIRTH payload MUST be a Sparkplug Google Protobuf encoded payload.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 1bb42a31c6f5c669f2c1b61f7dfd57f772f71a
SessionEstablishmentTest.checkDBirth()
Test archive name: 1bb42a31c6f5c669f2c1b61f7dfd57f772f71a
SessionEstablishmentTest.checkDBirth()
message-flow-device-birth-publish-dbirth-qos)

[tck-id-message-flow-device-birth-publish-dbirth-qos] The Device's DBIRTH MQTT QoS MUST be 0.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 1bb42a31c6f5c669f2c1b61f7dfd57f772f71a
SessionEstablishmentTest.checkDBirth()
message-flow-device-birth-publish-dbirth-retained)

[tck-id-message-flow-device-birth-publish-dbirth-retained] The Device's DBIRTH retained flag MUST be set to false.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 1bb42a31c6f5c669f2c1b61f7dfd57f772f71a
SessionEstablishmentTest.checkDBirth()
message-flow-device-birth-publish-dbirth-payload-seq)

[tck-id-message-flow-device-birth-publish-dbirth-payload-seq] The Device's DBIRTH payload MUST include a 'seq' number that is between 0 and 255 (inclusive) and be one more than was included in the prior Sparkplug message sent from the Edge Node associated with this Device.

Coverage

org.eclipse.sparkplug.tck.test
Test archive name: f46a84d3d1f0f1b17d7611ace660a988fb0a64e
Monitor.handleDBIRTH()

#### Section 5.7 - Device Session Termination [operational_behavior_device_session_termination]

operational-behavior-device-ddeath)

[tck-id-operational-behavior-device-ddeath] If a Sparkplug Edge Node loses connection with an attached Sparkplug Device, it MUST publish a DDEATH message on behalf of the device.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: a976357daba8d1225f973d151d3115e922245a
SessionTerminationTest.publish()
operational-behavior-edge-node-termination-host-action-ddeath-devices-offline)

[tck-id-operational-behavior-edge-node-termination-host-action-ddeath-devices-offline] Immediately after receiving an DDEATH from an Edge Node, Host Applications MUST mark the Sparkplug Device associated with the Edge Node as offline using the timestamp in the DDEATH payload

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: 34403a95f99a4f505368868cdfa5543a364be
EdgeSessionTerminationTest.publish()
operational-behavior-edge-node-termination-host-action-ddeath-devices-tags-stale)

[tck-id-operational-behavior-edge-node-termination-host-action-ddeath-devices-tags-stale] Immediately after receiving an DDEATH from an Edge Node, Host Applications MUST mark all of the metrics that were included with the associated Sparkplug Device DBIRTH messages as STALE using the timestamp in the DDEATH payload

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: 34403a95f99a4f505368868cdfa5543a364be
EdgeSessionTerminationTest.publish()

#### Section 5.9 - Sparkplug Host Application Message Ordering [operational_behavior_host_application_message_ordering]

operational-behavior-host-reordering-param)

[tck-id-operational-behavior-host-reordering-param] Sparkplug Host Applications SHOULD provide a configurable 'Reorder Timeout' parameter

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: f867a1df261518efdfc837e2f527beeeff5823
MessageOrderingTest.publish()
Test archive name: f867a1df261518efdfc837e2f527beeeff5823
MessageOrderingTest.sendMissingDeviceData()
operational-behavior-host-reordering-start)

[tck-id-operational-behavior-host-reordering-start] If a Sparkplug Host Application is configured with a 'reordering timeout' parameter and a message arrives with an out of order sequence number, the Host Application MUST start a timer denoting the start of the Reorder Timeout window

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: f867a1df261518efdfc837e2f527beeeff5823
MessageOrderingTest.publish()
Test archive name: f867a1df261518efdfc837e2f527beeeff5823
MessageOrderingTest.sendMissingDeviceData()
operational-behavior-host-reordering-rebirth)

[tck-id-operational-behavior-host-reordering-rebirth] If a Sparkplug Host Application is configured with a 'reordering timeout' parameter and the Reorder Timeout elapses and the missing message(s) have not been received, the Sparkplug Host Application MUST send an NCMD to the Edge Node with a 'Node Control/Rebirth' request

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: f867a1df261518efdfc837e2f527beeeff5823
MessageOrderingTest.publish()
Test archive name: f867a1df261518efdfc837e2f527beeeff5823
MessageOrderingTest.sendMissingDeviceData()
operational-behavior-host-reordering-success)

[tck-id-operational-behavior-host-reordering-success] If the missing message(s) that triggered the start of the Reorder Timeout timer arrive before the reordering timer elapses, the timer MUST be terminated and normal operation in the Host Application MUST continue until another out of order message arrives.

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: f867a1df261518efdfc837e2f527beeeff5823
MessageOrderingTest.publish()
Test archive name: f867a1df261518efdfc837e2f527beeeff5823
MessageOrderingTest.sendMissingDeviceData()

#### Section 5.10 - Primary Host Application STATE in Multiple MQTT Server Topologies [operational_behavior_primary_application_state_in_multiple_mqtt_server_topologies]

operational-behavior-primary-application-state-with-multiple-servers-state-subs)

[tck-id-operational-behavior-primary-application-state-with-multiple-servers-state-subs] When using multiple MQTT Servers and Edge Nodes are configured with a Primary Host Application, the Primary Host Application instance MUST be configured to publish a STATE Birth Certificate and all Edge Nodes configured with a Primary Host Application MUST subscribe to this STATE message.

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: 18ab72c651f1d5ea33504bc9cb49372fd93b24b2
MultipleBrokerTest.checkHost2Online()
Test archive name: 18ab72c651f1d5ea33504bc9cb49372fd93b24b2
MultipleBrokerTest.publish()
org.eclipse.sparkplug.tck.test.edge
Test archive name: c8f754ae9132c99986eba3ddcd8d3deb391a935
MultipleBrokerTest.subscribe()
operational-behavior-primary-application-state-with-multiple-servers-state)

[tck-id-operational-behavior-primary-application-state-with-multiple-servers-state] Regardless of the number of MQTT Servers in a Sparkplug Infrastructure, every time a Primary Host Application establishes a new MQTT Session with an MQTT Server, the STATE Birth Certificate defined in the STATE description section MUST be the first message that is published after a successful MQTT Session is established with each MQTT Server.

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: 18ab72c651f1d5ea33504bc9cb49372fd93b24b2
MultipleBrokerTest.publish()
operational-behavior-primary-application-state-with-multiple-servers-single-server)

[tck-id-operational-behavior-primary-application-state-with-multiple-servers-single-server] The Edge Nodes MUST not connected to more than one server at any point in time.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: c8f754ae9132c99986eba3ddcd8d3deb391a935
MultipleBrokerTest.publish()
operational-behavior-primary-application-state-with-multiple-servers-walk)

[tck-id-operational-behavior-primary-application-state-with-multiple-servers-walk] If the Primary Host Application is offline as denoted via the STATE MQTT Message, the Edge Node MUST terminate its session with this MQTT Server and move to the next available MQTT Server that is available.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: c8f754ae9132c99986eba3ddcd8d3deb391a935
MultipleBrokerTest.checkBirths()
operational-behavior-edge-node-birth-sequence-wait)

[tck-id-operational-behavior-edge-node-birth-sequence-wait] The Edge Node MUST also wait to publish its BIRTH sequence until an online=true STATE message is received by the Edge Node.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: c8f754ae9132c99986eba3ddcd8d3deb391a935
MultipleBrokerTest.publish()

#### Section 5.13 - Sparkplug Host Application Session Establishment [operational_behavior_sparkplug_host_application_session_establishment]

operational-behavior-host-application-host-id)

[tck-id-operational-behavior-host-application-host-id] The sparkplughostid MUST be unique to all other Sparkplug Host IDs in the infrastructure.

Coverage

org.eclipse.sparkplug.tck.test
Test archive name: f46a84d3d1f0f1b17d7611ace660a988fb0a64e
Monitor.handleSTATE()
operational-behavior-host-application-connect-will)

[tck-id-operational-behavior-host-application-connect-will] When a Sparkplug Host Application sends its MQTT CONNECT packet, it MUST include a Will Message.

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: f4e9982610d0fdf09b74441ab336ac3e49494fa
SessionEstablishmentTest.checkConnectMessage()
operational-behavior-host-application-connect-will-topic)

[tck-id-operational-behavior-host-application-connect-will-topic] The MQTT Will Message's topic MUST be of the form 'spBv1.0/STATE/sparkplughostid' where host_id is the unique identifier of the Sparkplug Host Application

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: f4e9982610d0fdf09b74441ab336ac3e49494fa
SessionEstablishmentTest.checkDeathMessage()
operational-behavior-host-application-connect-will-payload)

[tck-id-operational-behavior-host-application-connect-will-payload] The Death Certificate Payload MUST be JSON UTF-8 data. It MUST include two key/value pairs where one key MUST be 'online' and it's value is a boolean 'false'. The other key MUST be 'timestamp' and the value MUST be the same value that was used for the timestamp in its own prior MQTT CONNECT packet Will Message payload.

Coverage

org.eclipse.sparkplug.tck.test
Test archive name: f46a84d3d1f0f1b17d7611ace660a988fb0a64e
Monitor.connect()
org.eclipse.sparkplug.tck.test.host
Test archive name: f4e9982610d0fdf09b74441ab336ac3e49494fa
SessionEstablishmentTest.checkDeathMessage()
operational-behavior-host-application-connect-will-qos)

[tck-id-operational-behavior-host-application-connect-will-qos] The MQTT Will Message's MQTT QoS MUST be 1 (at least once).

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: f4e9982610d0fdf09b74441ab336ac3e49494fa
SessionEstablishmentTest.checkDeathMessage()
operational-behavior-host-application-connect-will-retained)

[tck-id-operational-behavior-host-application-connect-will-retained] The MQTT Will Message's retained flag MUST be set to true.

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: f4e9982610d0fdf09b74441ab336ac3e49494fa
SessionEstablishmentTest.checkDeathMessage()
operational-behavior-host-application-connect-birth)

[tck-id-operational-behavior-host-application-connect-birth] The MQTT Client associated with the Sparkplug Host Application MUST send a birth message immediately after successfully connecting to the MQTT Server.

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: f4e9982610d0fdf09b74441ab336ac3e49494fa
SessionEstablishmentTest.publish()
Test archive name: fe7ceff33ecfe4dc5fa675e59f8d98dfc66c8
SessionTerminationTest.publish()
operational-behavior-host-application-connect-birth-topic)

[tck-id-operational-behavior-host-application-connect-birth-topic] The Host Application's Birth topic MUST be of the form 'spBv1.0/STATE/sparkplughostid' where host_id is the unique identifier of the Sparkplug Host Application

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: f4e9982610d0fdf09b74441ab336ac3e49494fa
SessionEstablishmentTest.checkBirthMessage()
operational-behavior-host-application-connect-birth-payload)

[tck-id-operational-behavior-host-application-connect-birth-payload] The Birth Certificate Payload MUST be JSON UTF-8 data. It MUST include two key/value pairs where one key MUST be 'online' and it's value is a boolean 'true'. The other key MUST be 'timestamp' and the value MUST match the timestamp value that was used in the immediately prior MQTT CONNECT packet Will Message payload.

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: f4e9982610d0fdf09b74441ab336ac3e49494fa
SessionEstablishmentTest.checkBirthMessage()
operational-behavior-host-application-connect-birth-qos)

[tck-id-operational-behavior-host-application-connect-birth-qos] The Host Application's Birth MQTT QoS MUST be 1 (at least once).

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: f4e9982610d0fdf09b74441ab336ac3e49494fa
SessionEstablishmentTest.checkBirthMessage()
operational-behavior-host-application-connect-birth-retained)

[tck-id-operational-behavior-host-application-connect-birth-retained] The Host Application's Birth retained flag MUST be set to true.

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: f4e9982610d0fdf09b74441ab336ac3e49494fa
SessionEstablishmentTest.checkBirthMessage()
operational-behavior-host-application-multi-server-timestamp)

[tck-id-operational-behavior-host-application-multi-server-timestamp] The Host Application MUST maintain a STATE Message timestamp value on a per MQTT Server basis.

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: 18ab72c651f1d5ea33504bc9cb49372fd93b24b2
MultipleBrokerTest.checkHost2Online()

#### Section 5.14 - Sparkplug Host Application Session Termination [operational_behavior_sparkplug_host_application_session_termination]

operational-behavior-host-application-termination)

[tck-id-operational-behavior-host-application-termination] If the Sparkplug Host Application ever disconnects intentionally, it MUST publish a Death message with the following characteristics.

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: fe7ceff33ecfe4dc5fa675e59f8d98dfc66c8
SessionTerminationTest.disconnect()
Test archive name: fe7ceff33ecfe4dc5fa675e59f8d98dfc66c8
SessionTerminationTest.onDisconnect()
operational-behavior-host-application-death-topic)

[tck-id-operational-behavior-host-application-death-topic] The Sparkplug Host Application's Death topic MUST be of the form 'spBv1.0/STATE/sparkplughostid' where host_id is the unique identifier of the Sparkplug Host Application.

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: fe7ceff33ecfe4dc5fa675e59f8d98dfc66c8
SessionTerminationTest.checkDeathMessage()
operational-behavior-host-application-death-payload)

[tck-id-operational-behavior-host-application-death-payload] The Death Certificate Payload registered as the MQTT Will Message in the MQTT CONNECT packet MUST be JSON UTF-8 data. It MUST include two key/value pairs where one key MUST be 'online' and it's value is a boolean 'false'. The other key MUST be 'timestamp' and the value MUST be a numeric value representing the current UTC time in milliseconds since Epoch.

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: fe7ceff33ecfe4dc5fa675e59f8d98dfc66c8
SessionTerminationTest.checkDeathMessage()
operational-behavior-host-application-death-qos)

[tck-id-operational-behavior-host-application-death-qos] The Sparkplug Host Application's Death MQTT QoS MUST be 1 (at least once).

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: fe7ceff33ecfe4dc5fa675e59f8d98dfc66c8
SessionTerminationTest.checkDeathMessage()
operational-behavior-host-application-death-retained)

[tck-id-operational-behavior-host-application-death-retained] The Sparkplug Host Application's Death retained flag MUST be set to true.

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: fe7ceff33ecfe4dc5fa675e59f8d98dfc66c8
SessionTerminationTest.checkDeathMessage()
operational-behavior-host-application-disconnect-intentional)

[tck-id-operational-behavior-host-application-disconnect-intentional] In the case of intentionally disconnecting, an MQTT DISCONNECT packet MAY be sent immediately after the Death message is published.

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: fe7ceff33ecfe4dc5fa675e59f8d98dfc66c8
SessionTerminationTest.disconnect()
Test archive name: fe7ceff33ecfe4dc5fa675e59f8d98dfc66c8
SessionTerminationTest.onDisconnect()

#### Section 5.16 - Data Publish [operational_behavior_data_publish]

operational-behavior-data-publish-nbirth)

[tck-id-operational-behavior-data-publish-nbirth] NBIRTH messages MUST include all metrics for the specified Edge Node that will ever be published for that Edge Node within the established Sparkplug session.

Coverage

org.eclipse.sparkplug.tck.test
Test archive name: f46a84d3d1f0f1b17d7611ace660a988fb0a64e
Monitor.handleNDATA()
operational-behavior-data-publish-nbirth-values)

[tck-id-operational-behavior-data-publish-nbirth-values] For each metric in the NBIRTH, the value MUST be set to the current value or if the current value is null, the is_null flag MUST be set to true and MUST NOT have a value specified.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 1bb42a31c6f5c669f2c1b61f7dfd57f772f71a
SessionEstablishmentTest.checkNBirth()
operational-behavior-data-publish-nbirth-change)

[tck-id-operational-behavior-data-publish-nbirth-change] NDATA messages SHOULD only be published when Edge Node level metrics change.

Coverage

org.eclipse.sparkplug.tck.test
Test archive name: f46a84d3d1f0f1b17d7611ace660a988fb0a64e
Monitor.handleNDATA()
operational-behavior-data-publish-nbirth-order)

[tck-id-operational-behavior-data-publish-nbirth-order] For all metrics where is_historical=false, NBIRTH and NDATA messages MUST keep metric values in chronological order in the list of metrics in the payload.

Coverage

org.eclipse.sparkplug.tck.test
Test archive name: f46a84d3d1f0f1b17d7611ace660a988fb0a64e
Monitor.handleNBIRTH()
Test archive name: f46a84d3d1f0f1b17d7611ace660a988fb0a64e
Monitor.handleNDATA()
operational-behavior-data-publish-dbirth)

[tck-id-operational-behavior-data-publish-dbirth] DBIRTH messages MUST include all metrics for the specified Device that will ever be published for that Device within the established Sparkplug session.

Coverage

org.eclipse.sparkplug.tck.test
Test archive name: f46a84d3d1f0f1b17d7611ace660a988fb0a64e
Monitor.handleDDATA()
operational-behavior-data-publish-dbirth-values)

[tck-id-operational-behavior-data-publish-dbirth-values] For each metric in the DBIRTH, the value MUST be set to the current value or if the current value is null, the is_null flag MUST be set to true and MUST NOT have a value specified.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 1bb42a31c6f5c669f2c1b61f7dfd57f772f71a
SessionEstablishmentTest.checkDBirth()
operational-behavior-data-publish-dbirth-change)

[tck-id-operational-behavior-data-publish-dbirth-change] DDATA messages SHOULD only be published when Device level metrics change.

Coverage

org.eclipse.sparkplug.tck.test
Test archive name: f46a84d3d1f0f1b17d7611ace660a988fb0a64e
Monitor.handleDDATA()
operational-behavior-data-publish-dbirth-order)

[tck-id-operational-behavior-data-publish-dbirth-order] For all metrics where is_historical=false, DBIRTH and DDATA messages MUST keep metric values in chronological order in the list of metrics in the payload.

Coverage

org.eclipse.sparkplug.tck.test
Test archive name: f46a84d3d1f0f1b17d7611ace660a988fb0a64e
Monitor.handleDBIRTH()
Test archive name: f46a84d3d1f0f1b17d7611ace660a988fb0a64e
Monitor.handleDDATA()

#### Section 5.17 - Commands [operational_behavior_commands]

operational-behavior-data-commands-rebirth-name)

[tck-id-operational-behavior-data-commands-rebirth-name] An NBIRTH message MUST include a metric with a name of 'Node Control/Rebirth'.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 1bb42a31c6f5c669f2c1b61f7dfd57f772f71a
SessionEstablishmentTest.checkNBirth()
operational-behavior-data-commands-rebirth-name-aliases)

[tck-id-operational-behavior-data-commands-rebirth-name-aliases] When aliases are being used by an Edge Node an NBIRTH message MUST NOT include an alias for the 'Node Control/Rebirth' metric.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 1bb42a31c6f5c669f2c1b61f7dfd57f772f71a
SessionEstablishmentTest.checkNBirth()
operational-behavior-data-commands-rebirth-datatype)

[tck-id-operational-behavior-data-commands-rebirth-datatype] The 'Node Control/Rebirth' metric in the NBIRTH message MUST have a datatype of 'Boolean'.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 1bb42a31c6f5c669f2c1b61f7dfd57f772f71a
SessionEstablishmentTest.checkNBirth()
operational-behavior-data-commands-rebirth-value)

[tck-id-operational-behavior-data-commands-rebirth-value] The 'Node Control/Rebirth' metric value in the NBIRTH message MUST have a value of false.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 1bb42a31c6f5c669f2c1b61f7dfd57f772f71a
SessionEstablishmentTest.checkNBirth()
operational-behavior-data-commands-ncmd-rebirth-verb)

[tck-id-operational-behavior-data-commands-ncmd-rebirth-verb] A Rebirth Request MUST use the NCMD Sparkplug verb.

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: 77e79d3c25de46af746745494cc6fce7decacc0
SendCommandTest.checkValidCommandPayload()
operational-behavior-data-commands-ncmd-rebirth-name)

[tck-id-operational-behavior-data-commands-ncmd-rebirth-name] A Rebirth Request MUST include a metric with a name of 'Node Control/Rebirth'.

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: 77e79d3c25de46af746745494cc6fce7decacc0
SendCommandTest.checkValidCommandPayload()
operational-behavior-data-commands-ncmd-rebirth-value)

[tck-id-operational-behavior-data-commands-ncmd-rebirth-value] A Rebirth Request MUST include a metric value of true.

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: 77e79d3c25de46af746745494cc6fce7decacc0
SendCommandTest.checkValidCommandPayload()
operational-behavior-data-commands-rebirth-action-1)

[tck-id-operational-behavior-data-commands-rebirth-action-1] When an Edge Node receives a Rebirth Request, it MUST immediately stop sending DATA messages.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 4e75d18e8e964c2e079e3e6f624b3d156f9fe63
ReceiveCommandTest.publish()
operational-behavior-data-commands-rebirth-action-2)

[tck-id-operational-behavior-data-commands-rebirth-action-2] After an Edge Node stops sending DATA messages, it MUST send a complete BIRTH sequence including the NBIRTH and DBIRTH(s) if applicable.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 4e75d18e8e964c2e079e3e6f624b3d156f9fe63
ReceiveCommandTest.publish()
operational-behavior-data-commands-rebirth-action-3)

[tck-id-operational-behavior-data-commands-rebirth-action-3] The NBIRTH MUST include the same bdSeq metric with the same value it had included in the Will Message of the previous MQTT CONNECT packet.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 4e75d18e8e964c2e079e3e6f624b3d156f9fe63
ReceiveCommandTest.publish()
operational-behavior-data-commands-ncmd-verb)

[tck-id-operational-behavior-data-commands-ncmd-verb] An Edge Node level command MUST use the NCMD Sparkplug verb.

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: 77e79d3c25de46af746745494cc6fce7decacc0
SendCommandTest.checkNodeCommand()
operational-behavior-data-commands-ncmd-metric-name)

[tck-id-operational-behavior-data-commands-ncmd-metric-name] An NCMD message SHOULD include a metric name that was included in the associated NBIRTH message for the Edge Node.

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: 77e79d3c25de46af746745494cc6fce7decacc0
SendCommandTest.checkValidCommandPayload()
operational-behavior-data-commands-ncmd-metric-value)

[tck-id-operational-behavior-data-commands-ncmd-metric-value] An NCMD message MUST include a compatible metric value for the metric name that it is writing to.

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: 77e79d3c25de46af746745494cc6fce7decacc0
SendCommandTest.checkValidCommandPayload()
operational-behavior-data-commands-dcmd-verb)

[tck-id-operational-behavior-data-commands-dcmd-verb] A Device level command MUST use the DCMD Sparkplug verb.

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: 77e79d3c25de46af746745494cc6fce7decacc0
SendCommandTest.checkDeviceCommand()
operational-behavior-data-commands-dcmd-metric-name)

[tck-id-operational-behavior-data-commands-dcmd-metric-name] A DCMD message SHOULD include a metric name that was included in the associated DBIRTH message for the Device.

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: 77e79d3c25de46af746745494cc6fce7decacc0
SendCommandTest.checkValidDeviceCommandPayload()
operational-behavior-data-commands-dcmd-metric-value)

[tck-id-operational-behavior-data-commands-dcmd-metric-value] A DCMD message MUST include a compatible metric value for the metric name that it is writing to.

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: 77e79d3c25de46af746745494cc6fce7decacc0
SendCommandTest.checkValidDeviceCommandPayload()

#### Section 6.4.5 - Payload [payloads_b_payload]

payloads-timestamp-in-UTC)

[tck-id-payloads-timestamp-in-UTC] This timestamp MUST be in UTC.

Coverage

org.eclipse.sparkplug.tck.test
Test archive name: f46a84d3d1f0f1b17d7611ace660a988fb0a64e
Monitor.publish()
payloads-sequence-num-always-included)

[tck-id-payloads-sequence-num-always-included] A sequence number MUST be included in the payload of every Sparkplug MQTT message from an Edge Node except NDEATH messages.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: bd2dae9fc0cff2bfb6b904b79ca19f8657a598e
SendComplexDataTest.checkSequenceNumberIncluded()
payloads-sequence-num-req-nbirth)

[tck-id-payloads-sequence-num-zero-nbirth] A NBIRTH message from an Edge Node MUST always contain a sequence number between 0 and 255 (inclusive).

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 1bb42a31c6f5c669f2c1b61f7dfd57f772f71a
SessionEstablishmentTest.checkNBirth()
payloads-sequence-num-incrementing)

[tck-id-payloads-sequence-num-incrementing] All subsequent messages after an NBIRTH from an Edge Node MUST contain a sequence number that is continually increasing by one in each message from that Edge Node until a value of 255 is reached. At that point, the sequence number of the following message MUST be zero.

Coverage

org.eclipse.sparkplug.tck.test
Test archive name: f46a84d3d1f0f1b17d7611ace660a988fb0a64e
Monitor.handleNDATA()
Test archive name: f46a84d3d1f0f1b17d7611ace660a988fb0a64e
Monitor.handleDDATA()

#### Section 6.4.6 - Metric [payloads_b_metric]

payloads-name-requirement)

[tck-id-payloads-name-requirement] The name MUST be included with every metric unless aliases are being used.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: bd2dae9fc0cff2bfb6b904b79ca19f8657a598e
SendComplexDataTest.checkPayloadsNameRequirement()
payloads-alias-uniqueness)

[tck-id-payloads-alias-uniqueness] If supplied in an NBIRTH or DBIRTH it MUST be a unique number across this Edge Node's entire set of metrics.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 1bb42a31c6f5c669f2c1b61f7dfd57f772f71a
SessionEstablishmentTest.checkPayloadsAliasAndNameRequirement()
payloads-alias-birth-requirement)

[tck-id-payloads-alias-birth-requirement] NBIRTH and DBIRTH messages MUST include both a metric name and alias.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 1bb42a31c6f5c669f2c1b61f7dfd57f772f71a
SessionEstablishmentTest.checkPayloadsAliasAndNameRequirement()
payloads-alias-data-cmd-requirement)

[tck-id-payloads-alias-data-cmd-requirement] NDATA, DDATA, NCMD, and DCMD messages MUST only include an alias and the metric name MUST be excluded.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: bd2dae9fc0cff2bfb6b904b79ca19f8657a598e
SendComplexDataTest.checkAliasInData()
payloads-name-birth-data-requirement)

[tck-id-payloads-name-birth-data-requirement] The timestamp MUST be included with every metric in all NBIRTH, DBIRTH, NDATA, and DDATA messages.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: bd2dae9fc0cff2bfb6b904b79ca19f8657a598e
SendComplexDataTest.checkPayloadsNameInDataRequirement()
Test archive name: 1bb42a31c6f5c669f2c1b61f7dfd57f772f71a
SessionEstablishmentTest.checkPayloadsNameInDataRequirement()
payloads-name-cmd-requirement)

[tck-id-payloads-name-cmd-requirement] The timestamp MAY be included with metrics in NCMD and DCMD messages.

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: 77e79d3c25de46af746745494cc6fce7decacc0
SendCommandTest.checkPayloadsTimestampCommand()
payloads-metric-timestamp-in-UTC)

[tck-id-payloads-metric-timestamp-in-UTC] The timestamp MUST be in UTC.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 337198b62c59ac18865c788777af9da5ff9fba7
SendDataTest.checkNDATA()
Test archive name: 337198b62c59ac18865c788777af9da5ff9fba7
SendDataTest.checkDDATA()
payloads-metric-datatype-value-type)

[tck-id-payloads-metric-datatype-value-type] The datatype MUST be an unsigned 32-bit integer representing the datatype.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: bd2dae9fc0cff2bfb6b904b79ca19f8657a598e
SendComplexDataTest.checkDatatypeValidType()
payloads-metric-datatype-value)

[tck-id-payloads-metric-datatype-value] The datatype MUST be one of the enumerated values as shown in the valid Sparkplug Data Types.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: bd2dae9fc0cff2bfb6b904b79ca19f8657a598e
SendComplexDataTest.checkDatatypeValidType()
payloads-metric-datatype-req)

[tck-id-payloads-metric-datatype-req] The datatype MUST be included with each metric definition in NBIRTH and DBIRTH messages.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 1bb42a31c6f5c669f2c1b61f7dfd57f772f71a
SessionEstablishmentTest.checkNBirth()
payloads-metric-datatype-not-req)

[tck-id-payloads-metric-datatype-not-req] The datatype SHOULD NOT be included with metric definitions in NDATA, NCMD, DDATA, and DCMD messages.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: bd2dae9fc0cff2bfb6b904b79ca19f8657a598e
SendComplexDataTest.checkMetricsDataTypeNotRec()

#### Section 6.4.8 - PropertySet [payloads_b_propertyset]

payloads-propertyset-keys-array-size)

[tck-id-payloads-propertyset-keys-array-size] The array of keys in a PropertySet MUST contain the same number of values included in the array of PropertyValue objects.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: bd2dae9fc0cff2bfb6b904b79ca19f8657a598e
SendComplexDataTest.checkPropertiesValidType()
payloads-propertyset-values-array-size)

[tck-id-payloads-propertyset-values-array-size] The array of values in a PropertySet MUST contain the same number of items that are in the keys array.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: bd2dae9fc0cff2bfb6b904b79ca19f8657a598e
SendComplexDataTest.checkPropertiesValidType()

#### Section 6.4.9 - PropertyValue [payloads_b_propertyvalue]

payloads-metric-propertyvalue-type-type)

[tck-id-payloads-metric-propertyvalue-type-type] This MUST be an unsigned 32-bit integer representing the datatype.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: bd2dae9fc0cff2bfb6b904b79ca19f8657a598e
SendComplexDataTest.checkPropertiesValidType()
payloads-metric-propertyvalue-type-value)

[tck-id-payloads-metric-propertyvalue-type-value] This value MUST be one of the enumerated values as shown in the Sparkplug Basic Data Types or the Sparkplug Property Value Data Types.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: bd2dae9fc0cff2bfb6b904b79ca19f8657a598e
SendComplexDataTest.checkPropertiesValidType()
payloads-metric-propertyvalue-type-req)

[tck-id-payloads-metric-propertyvalue-type-req] This MUST be included in Property Value Definitions in NBIRTH and DBIRTH messages.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: bd2dae9fc0cff2bfb6b904b79ca19f8657a598e
SendComplexDataTest.checkPropertiesValidType()

#### Section 6.4.9.1 - Quality Codes [payloads_b_quality_codes]

payloads-propertyset-quality-value-type)

[tck-id-payloads-propertyset-quality-value-type] The 'type' of the Property Value MUST be a value of 3 which represents a Signed 32-bit Integer.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: bd2dae9fc0cff2bfb6b904b79ca19f8657a598e
SendComplexDataTest.checkPropertiesValidType()
payloads-propertyset-quality-value-value)

[tck-id-payloads-propertyset-quality-value-value] The 'value' of the Property Value MUST be an int_value and be one of the valid quality codes of 0, 192, or 500.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: bd2dae9fc0cff2bfb6b904b79ca19f8657a598e
SendComplexDataTest.checkPropertiesValidType()

#### Section 6.4.11 - DataSet [payloads_b_dataset]

payloads-dataset-column-size)

[tck-id-payloads-dataset-column-size] This MUST be an unsigned 64-bit integer representing the number of columns in this DataSet.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: bd2dae9fc0cff2bfb6b904b79ca19f8657a598e
SendComplexDataTest.checkDataSet()
payloads-dataset-column-num-headers)

[tck-id-payloads-dataset-column-num-headers] The size of the array MUST have the same number of elements that the types array contains.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: bd2dae9fc0cff2bfb6b904b79ca19f8657a598e
SendComplexDataTest.checkDataSet()
payloads-dataset-types-def)

[tck-id-payloads-dataset-types-def] This MUST be an array of unsigned 32 bit integers representing the datatypes of the columns.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: bd2dae9fc0cff2bfb6b904b79ca19f8657a598e
SendComplexDataTest.checkDataSet()
payloads-dataset-types-num)

[tck-id-payloads-dataset-types-num] The array of types MUST have the same number of elements that the columns array contains.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: bd2dae9fc0cff2bfb6b904b79ca19f8657a598e
SendComplexDataTest.checkDataSet()
payloads-dataset-types-type)

[tck-id-payloads-dataset-types-type] The values in the types array MUST be a unsigned 32-bit integer representing the datatype.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: bd2dae9fc0cff2bfb6b904b79ca19f8657a598e
SendComplexDataTest.checkDataSet()
payloads-dataset-types-value)

[tck-id-payloads-dataset-types-value] This values in the types array MUST be one of the enumerated values as shown in the Sparkplug Basic Data Types.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: bd2dae9fc0cff2bfb6b904b79ca19f8657a598e
SendComplexDataTest.checkDataSet()
payloads-dataset-parameter-type-req)

[tck-id-payloads-dataset-parameter-type-req] The types array MUST be included in all DataSets.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: bd2dae9fc0cff2bfb6b904b79ca19f8657a598e
SendComplexDataTest.checkDataSet()

#### Section 6.4.13 - DataSet.DataSetValue [payloads_b_dataset_datasetvalue]

payloads-template-dataset-value)

[tck-id-payloads-template-dataset-value] The value supplied MUST be one of the following Google Protobuf types: uint32, uint64, float, double, bool, or string.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: bd2dae9fc0cff2bfb6b904b79ca19f8657a598e
SendComplexDataTest.checkDataSet()

#### Section 6.4.14 - Template [payloads_b_template]

payloads-template-definition-nbirth-only)

[tck-id-payloads-template-definition-nbirth-only] Template Definitions MUST only be included in NBIRTH messages.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 337198b62c59ac18865c788777af9da5ff9fba7
SendDataTest.checkInstance()
Test archive name: 337198b62c59ac18865c788777af9da5ff9fba7
SendDataTest.checkNBIRTH()
payloads-template-definition-is-definition)

[tck-id-payloads-template-definition-is-definition] A Template Definition MUST have is_definition set to true.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: bd2dae9fc0cff2bfb6b904b79ca19f8657a598e
SendComplexDataTest.checkTemplate()
payloads-template-definition-ref)

[tck-id-payloads-template-definition-ref] A Template Definition MUST omit the template_ref field.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: bd2dae9fc0cff2bfb6b904b79ca19f8657a598e
SendComplexDataTest.checkTemplate()
Test archive name: 337198b62c59ac18865c788777af9da5ff9fba7
SendDataTest.checkNBIRTH()
payloads-template-definition-members)

[tck-id-payloads-template-definition-members] A Template Definition MUST include all member metrics that will ever be included in corresponding template instances.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 337198b62c59ac18865c788777af9da5ff9fba7
SendDataTest.checkInstance()
Test archive name: 337198b62c59ac18865c788777af9da5ff9fba7
SendDataTest.checkInstance()
payloads-template-definition-nbirth)

[tck-id-payloads-template-definition-nbirth] A Template Definition MUST be included in the NBIRTH for all Template Instances that are included in the NBIRTH and DBIRTH messages.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 337198b62c59ac18865c788777af9da5ff9fba7
SendDataTest.checkInstance()
payloads-template-definition-parameters)

[tck-id-payloads-template-definition-parameters] A Template Definition MUST include all parameters that will be included in the corresponding Template Instances.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 337198b62c59ac18865c788777af9da5ff9fba7
SendDataTest.checkInstance()
payloads-template-definition-parameters-default)

[tck-id-payloads-template-definition-parameters-default] A Template Definition MAY include values for parameters in the Template Definition parameters.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 337198b62c59ac18865c788777af9da5ff9fba7
SendDataTest.checkNBIRTH()
payloads-template-instance-is-definition)

[tck-id-payloads-template-instance-is-definition] A Template Instance MUST have is_definition set to false.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: bd2dae9fc0cff2bfb6b904b79ca19f8657a598e
SendComplexDataTest.checkTemplate()
payloads-template-instance-ref)

[tck-id-payloads-template-instance-ref] A Template Instance MUST have template_ref set to the type of template definition it is.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: bd2dae9fc0cff2bfb6b904b79ca19f8657a598e
SendComplexDataTest.checkTemplate()
Test archive name: 337198b62c59ac18865c788777af9da5ff9fba7
SendDataTest.checkInstance()
payloads-template-instance-members)

[tck-id-payloads-template-instance-members] A Template Instance MUST include only members that were included in the corresponding template definition.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 337198b62c59ac18865c788777af9da5ff9fba7
SendDataTest.checkInstance()
payloads-template-instance-members-birth)

[tck-id-payloads-template-instance-members-birth] A Template Instance in a NBIRTH or DBIRTH message MUST include all members that were included in the corresponding Template Definition.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 337198b62c59ac18865c788777af9da5ff9fba7
SendDataTest.checkInstance()
payloads-template-instance-members-data)

[tck-id-payloads-template-instance-members-data] A Template Instance in a NDATA or DDATA message MAY include only a subset of the members that were included in the corresponding template definition.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 337198b62c59ac18865c788777af9da5ff9fba7
SendDataTest.checkInstance()
payloads-template-instance-parameters)

[tck-id-payloads-template-instance-parameters] A Template Instance MAY include parameter values for any parameters that were included in the corresponding Template Definition.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 337198b62c59ac18865c788777af9da5ff9fba7
SendDataTest.checkInstance()
payloads-template-version)

[tck-id-payloads-template-version] If included, the version MUST be a UTF-8 string representing the version of the Template.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: bd2dae9fc0cff2bfb6b904b79ca19f8657a598e
SendComplexDataTest.checkTemplate()
payloads-template-ref-definition)

[tck-id-payloads-template-ref-definition] This MUST be omitted if this is a Template Definition.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: bd2dae9fc0cff2bfb6b904b79ca19f8657a598e
SendComplexDataTest.checkTemplate()
payloads-template-ref-instance)

[tck-id-payloads-template-ref-instance] This MUST be a UTF-8 string representing a reference to a Template Definition name if this is a Template Instance.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: bd2dae9fc0cff2bfb6b904b79ca19f8657a598e
SendComplexDataTest.checkTemplate()
payloads-template-is-definition)

[tck-id-payloads-template-is-definition] This MUST be included in every Template Definition and Template Instance.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: bd2dae9fc0cff2bfb6b904b79ca19f8657a598e
SendComplexDataTest.checkTemplate()
payloads-template-is-definition-definition)

[tck-id-payloads-template-is-definition-definition] This MUST be set to true if this is a Template Definition.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: bd2dae9fc0cff2bfb6b904b79ca19f8657a598e
SendComplexDataTest.checkTemplate()
payloads-template-is-definition-instance)

[tck-id-payloads-template-is-definition-instance] This MUST be set to false if this is a Template Instance.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: bd2dae9fc0cff2bfb6b904b79ca19f8657a598e
SendComplexDataTest.checkTemplate()

#### Section 6.4.15 - Template.Parameter [payloads_b_template_parameter]

payloads-template-parameter-name-required)

[tck-id-payloads-template-parameter-name-required] This MUST be included in every Template Parameter definition.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: bd2dae9fc0cff2bfb6b904b79ca19f8657a598e
SendComplexDataTest.checkTemplate()
payloads-template-parameter-name-type)

[tck-id-payloads-template-parameter-name-type] This MUST be a UTF-8 string representing the name of the Template parameter.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: bd2dae9fc0cff2bfb6b904b79ca19f8657a598e
SendComplexDataTest.checkTemplate()
payloads-template-parameter-value-type)

[tck-id-payloads-template-parameter-value-type] This MUST be an unsigned 32-bit integer representing the datatype.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: bd2dae9fc0cff2bfb6b904b79ca19f8657a598e
SendComplexDataTest.checkTemplate()
payloads-template-parameter-type-value)

[tck-id-payloads-template-parameter-type-value] This value MUST be one of the enumerated values as shown in the Sparkplug Basic Data Types.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: bd2dae9fc0cff2bfb6b904b79ca19f8657a598e
SendComplexDataTest.checkTemplate()
payloads-template-parameter-type-req)

[tck-id-payloads-template-parameter-type-req] This MUST be included in Template Parameter Definitions in NBIRTH and DBIRTH messages.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: bd2dae9fc0cff2bfb6b904b79ca19f8657a598e
SendComplexDataTest.checkTemplate()
payloads-template-parameter-value)

[tck-id-payloads-template-parameter-value] The value supplied MUST be one of the following Google Protocol Buffer types: uint32, uint64, float, double, bool, or string.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: bd2dae9fc0cff2bfb6b904b79ca19f8657a598e
SendComplexDataTest.checkTemplate()

#### Section 6.4.19 - NBIRTH [payloads_b_nbirth]

payloads-nbirth-timestamp)

[tck-id-payloads-nbirth-timestamp] NBIRTH messages MUST include a payload timestamp that denotes the time at which the message was published.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 1bb42a31c6f5c669f2c1b61f7dfd57f772f71a
SessionEstablishmentTest.checkNBirth()
payloads-nbirth-edge-node-descriptor)

[tck-id-payloads-nbirth-edge-node-descriptor] Every Edge Node Descriptor in any Sparkplug infrastructure MUST be unique in the system.

Coverage

org.eclipse.sparkplug.tck.test
Test archive name: f46a84d3d1f0f1b17d7611ace660a988fb0a64e
Monitor.handleNBIRTH()
Test archive name: f46a84d3d1f0f1b17d7611ace660a988fb0a64e
Monitor.handleNDEATH()
payloads-nbirth-seq)

[tck-id-payloads-nbirth-seq] Every NBIRTH message MUST include a sequence number and it MUST have a value between 0 and 255 (inclusive).

Coverage

org.eclipse.sparkplug.tck.test
Test archive name: f46a84d3d1f0f1b17d7611ace660a988fb0a64e
Monitor.handleNBIRTH()
org.eclipse.sparkplug.tck.test.edge
Test archive name: 1bb42a31c6f5c669f2c1b61f7dfd57f772f71a
SessionEstablishmentTest.checkNBirth()
payloads-nbirth-bdseq)

[tck-id-payloads-nbirth-bdseq] Every NBIRTH message MUST include a bdSeq number metric.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 1bb42a31c6f5c669f2c1b61f7dfd57f772f71a
SessionEstablishmentTest.checkNBirth()
payloads-nbirth-bdseq-repeat)

[tck-id-payloads-nbirth-bdseq-repeat] The bdSeq number value MUST match the bdSeq number value that was sent in the prior MQTT CONNECT packet WILL Message.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 1bb42a31c6f5c669f2c1b61f7dfd57f772f71a
SessionEstablishmentTest.checkNBirth()
payloads-nbirth-rebirth-req)

[tck-id-payloads-nbirth-rebirth-req] Every NBIRTH MUST include a metric with the name 'Node Control/Rebirth' and have a boolean value of false.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 1bb42a31c6f5c669f2c1b61f7dfd57f772f71a
SessionEstablishmentTest.checkNBirth()
payloads-nbirth-qos)

[tck-id-payloads-nbirth-qos] NBIRTH messages MUST be published with the MQTT QoS set to 0.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 1bb42a31c6f5c669f2c1b61f7dfd57f772f71a
SessionEstablishmentTest.checkNBirth()
payloads-nbirth-retain)

[tck-id-payloads-nbirth-retain] NBIRTH messages MUST be published with the MQTT retain flag set to false.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 1bb42a31c6f5c669f2c1b61f7dfd57f772f71a
SessionEstablishmentTest.checkNBirth()

#### Section 6.4.20 - DBIRTH [payloads_b_dbirth]

payloads-dbirth-timestamp)

[tck-id-payloads-dbirth-timestamp] DBIRTH messages MUST include a payload timestamp that denotes the time at which the message was published.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 1bb42a31c6f5c669f2c1b61f7dfd57f772f71a
SessionEstablishmentTest.checkDBirth()
payloads-dbirth-seq)

[tck-id-payloads-dbirth-seq] Every DBIRTH message MUST include a sequence number.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 1bb42a31c6f5c669f2c1b61f7dfd57f772f71a
SessionEstablishmentTest.checkDBirth()
payloads-dbirth-seq-inc)

[tck-id-payloads-dbirth-seq-inc] Every DBIRTH message MUST include a sequence number value that is one greater than the previous sequence number sent by the Edge Node. This value MUST never exceed 255. If in the previous sequence number sent by the Edge Node was 255, the next sequence number sent MUST have a value of 0.

Coverage

org.eclipse.sparkplug.tck.test
Test archive name: f46a84d3d1f0f1b17d7611ace660a988fb0a64e
Monitor.handleDBIRTH()
org.eclipse.sparkplug.tck.test.edge
Test archive name: 1bb42a31c6f5c669f2c1b61f7dfd57f772f71a
SessionEstablishmentTest.checkDBirth()
payloads-dbirth-order)

[tck-id-payloads-dbirth-order] All DBIRTH messages sent by an Edge Node MUST be sent immediately after the NBIRTH and before any NDATA or DDATA messages are published by the Edge Node.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 1bb42a31c6f5c669f2c1b61f7dfd57f772f71a
SessionEstablishmentTest.checkDBirth()
payloads-dbirth-qos)

[tck-id-payloads-dbirth-qos] DBIRTH messages MUST be published with the MQTT QoS set to 0.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 1bb42a31c6f5c669f2c1b61f7dfd57f772f71a
SessionEstablishmentTest.checkDBirth()
payloads-dbirth-retain)

[tck-id-payloads-dbirth-retain] DBIRTH messages MUST be published with the MQTT retain flag set to false.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 1bb42a31c6f5c669f2c1b61f7dfd57f772f71a
SessionEstablishmentTest.checkDBirth()

#### Section 6.4.21 - NDATA [payloads_b_ndata]

payloads-ndata-timestamp)

[tck-id-payloads-ndata-timestamp] NDATA messages MUST include a payload timestamp that denotes the time at which the message was published.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 337198b62c59ac18865c788777af9da5ff9fba7
SendDataTest.checkNDATA()
payloads-ndata-seq)

[tck-id-payloads-ndata-seq] Every NDATA message MUST include a sequence number.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 337198b62c59ac18865c788777af9da5ff9fba7
SendDataTest.checkNDATA()
payloads-ndata-seq-inc)

[tck-id-payloads-ndata-seq-inc] Every NDATA message MUST include a sequence number value that is one greater than the previous sequence number sent by the Edge Node. This value MUST never exceed 255. If in the previous sequence number sent by the Edge Node was 255, the next sequence number sent MUST have a value of 0.

Coverage

org.eclipse.sparkplug.tck.test
Test archive name: f46a84d3d1f0f1b17d7611ace660a988fb0a64e
Monitor.handleNDATA()
payloads-ndata-order)

[tck-id-payloads-ndata-order] All NDATA messages sent by an Edge Node MUST NOT be sent until all the NBIRTH and all DBIRTH messages have been published by the Edge Node.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 1bb42a31c6f5c669f2c1b61f7dfd57f772f71a
SessionEstablishmentTest.publish()
Test archive name: 1bb42a31c6f5c669f2c1b61f7dfd57f772f71a
SessionEstablishmentTest.checkDBirth()
payloads-ndata-qos)

[tck-id-payloads-ndata-qos] NDATA messages MUST be published with the MQTT QoS set to 0.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 337198b62c59ac18865c788777af9da5ff9fba7
SendDataTest.checkNDATA()
payloads-ndata-retain)

[tck-id-payloads-ndata-retain] NDATA messages MUST be published with the MQTT retain flag set to false.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 337198b62c59ac18865c788777af9da5ff9fba7
SendDataTest.checkNDATA()

#### Section 6.4.22 - DDATA [payloads_b_ddata]

payloads-ddata-timestamp)

[tck-id-payloads-ddata-timestamp] DDATA messages MUST include a payload timestamp that denotes the time at which the message was published.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 337198b62c59ac18865c788777af9da5ff9fba7
SendDataTest.checkDDATA()
payloads-ddata-seq)

[tck-id-payloads-ddata-seq] Every DDATA message MUST include a sequence number.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 337198b62c59ac18865c788777af9da5ff9fba7
SendDataTest.checkDDATA()
payloads-ddata-seq-inc)

[tck-id-payloads-ddata-seq-inc] Every DDATA message MUST include a sequence number value that is one greater than the previous sequence number sent by the Edge Node. This value MUST never exceed 255. If in the previous sequence number sent by the Edge Node was 255, the next sequence number sent MUST have a value of 0.

Coverage

org.eclipse.sparkplug.tck.test
Test archive name: f46a84d3d1f0f1b17d7611ace660a988fb0a64e
Monitor.handleDDATA()
payloads-ddata-order)

[tck-id-payloads-ddata-order] All DDATA messages sent by an Edge Node MUST NOT be sent until all the NBIRTH and all DBIRTH messages have been published by the Edge Node.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 1bb42a31c6f5c669f2c1b61f7dfd57f772f71a
SessionEstablishmentTest.publish()
Test archive name: 1bb42a31c6f5c669f2c1b61f7dfd57f772f71a
SessionEstablishmentTest.checkDBirth()
payloads-ddata-qos)

[tck-id-payloads-ddata-qos] DDATA messages MUST be published with the MQTT QoS set to 0.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 337198b62c59ac18865c788777af9da5ff9fba7
SendDataTest.checkDDATA()
payloads-ddata-retain)

[tck-id-payloads-ddata-retain] DDATA messages MUST be published with the MQTT retain flag set to false.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 337198b62c59ac18865c788777af9da5ff9fba7
SendDataTest.checkDDATA()

#### Section 6.4.23 - NCMD [payloads_b_ncmd]

payloads-ncmd-timestamp)

[tck-id-payloads-ncmd-timestamp] NCMD messages MUST include a payload timestamp that denotes the time at which the message was published.

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: 77e79d3c25de46af746745494cc6fce7decacc0
SendCommandTest.checkNodeCommand()
payloads-ncmd-seq)

[tck-id-payloads-ncmd-seq] Every NCMD message MUST NOT include a sequence number.

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: 77e79d3c25de46af746745494cc6fce7decacc0
SendCommandTest.checkNodeCommand()
payloads-ncmd-qos)

[tck-id-payloads-ncmd-qos] NCMD messages MUST be published with the MQTT QoS set to 0.

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: 77e79d3c25de46af746745494cc6fce7decacc0
SendCommandTest.checkNodeCommand()
payloads-ncmd-retain)

[tck-id-payloads-ncmd-retain] NCMD messages MUST be published with the MQTT retain flag set to false.

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: 77e79d3c25de46af746745494cc6fce7decacc0
SendCommandTest.checkNodeCommand()

#### Section 6.4.24 - DCMD [payloads_b_dcmd]

payloads-dcmd-timestamp)

[tck-id-payloads-dcmd-timestamp] DCMD messages MUST include a payload timestamp that denotes the time at which the message was published.

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: 77e79d3c25de46af746745494cc6fce7decacc0
SendCommandTest.checkDeviceCommand()
payloads-dcmd-seq)

[tck-id-payloads-dcmd-seq] Every DCMD message MUST NOT include a sequence number.

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: 77e79d3c25de46af746745494cc6fce7decacc0
SendCommandTest.checkDeviceCommand()
payloads-dcmd-qos)

[tck-id-payloads-dcmd-qos] DCMD messages MUST be published with the MQTT QoS set to 0.

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: 77e79d3c25de46af746745494cc6fce7decacc0
SendCommandTest.checkDeviceCommand()
payloads-dcmd-retain)

[tck-id-payloads-dcmd-retain] DCMD messages MUST be published with the MQTT retain flag set to false.

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: 77e79d3c25de46af746745494cc6fce7decacc0
SendCommandTest.checkDeviceCommand()

#### Section 6.4.25 - NDEATH [payloads_b_ndeath]

payloads-ndeath-seq)

[tck-id-payloads-ndeath-seq] Every NDEATH message MUST NOT include a sequence number.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 1bb42a31c6f5c669f2c1b61f7dfd57f772f71a
SessionEstablishmentTest.checkWillMessage()
payloads-ndeath-will-message)

[tck-id-payloads-ndeath-will-message] An NDEATH message MUST be registered as a Will Message in the MQTT CONNECT packet.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 1bb42a31c6f5c669f2c1b61f7dfd57f772f71a
SessionEstablishmentTest.connect()
Test archive name: 4e75d18e8e964c2e079e3e6f624b3d156f9fe63
ReceiveCommandTest.connect()
payloads-ndeath-will-message-qos)

[tck-id-payloads-ndeath-will-message-qos] The NDEATH message MUST set the MQTT Will QoS to 1 in the MQTT CONNECT packet.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 1bb42a31c6f5c669f2c1b61f7dfd57f772f71a
SessionEstablishmentTest.checkWillMessage()
payloads-ndeath-will-message-retain)

[tck-id-payloads-ndeath-will-message-retain] The NDEATH message MUST set the MQTT Will Retained flag to false in the MQTT CONNECT packet.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 1bb42a31c6f5c669f2c1b61f7dfd57f772f71a
SessionEstablishmentTest.checkWillMessage()
payloads-ndeath-bdseq)

[tck-id-payloads-ndeath-bdseq] The NDEATH message MUST include the same bdSeq number value that will be used in the associated NBIRTH message.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: 1bb42a31c6f5c669f2c1b61f7dfd57f772f71a
SessionEstablishmentTest.checkNBirth()
payloads-ndeath-will-message-publisher)

[tck-id-payloads-ndeath-will-message-publisher] An NDEATH message SHOULD be published by the Edge Node before it intentionally disconnects from the MQTT Server.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: a976357daba8d1225f973d151d3115e922245a
SessionTerminationTest.publish()
payloads-ndeath-will-message-publisher-disconnect-mqtt311)

[tck-id-payloads-ndeath-will-message-publisher-disconnect-mqtt311] If the Edge Node is using MQTT 3.1.1 and it sends an MQTT DISCONNECT packet, the Edge Node MUST publish an NDEATH message to the MQTT Server before it sends the MQTT DISCONNECT packet.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: a976357daba8d1225f973d151d3115e922245a
SessionTerminationTest.disconnect()
payloads-ndeath-will-message-publisher-disconnect-mqtt50)

[tck-id-payloads-ndeath-will-message-publisher-disconnect-mqtt50] If the Edge Node is using MQTT 5.0 and it sends an MQTT DISCONNECT packet, the MQTT v5.0 'Disconnect with Will Message' reason code MUST be set in the DISCONNECT packet.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: a976357daba8d1225f973d151d3115e922245a
SessionTerminationTest.disconnect()

#### Section 6.4.26 - DDEATH [payloads_b_ddeath]

payloads-ddeath-timestamp)

[tck-id-payloads-ddeath-timestamp] DDEATH messages MUST include a payload timestamp that denotes the time at which the message was published.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: a976357daba8d1225f973d151d3115e922245a
SessionTerminationTest.publish()
payloads-ddeath-seq)

[tck-id-payloads-ddeath-seq] Every DDEATH message MUST include a sequence number.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: a976357daba8d1225f973d151d3115e922245a
SessionTerminationTest.publish()
payloads-ddeath-seq-inc)

[tck-id-payloads-ddeath-seq-inc] Every DDEATH message MUST include a sequence number value that is one greater than the previous sequence number sent by the Edge Node. This value MUST never exceed 255. If in the previous sequence number sent by the Edge Node was 255, the next sequence number sent MUST have a value of 0.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: a976357daba8d1225f973d151d3115e922245a
SessionTerminationTest.publish()
org.eclipse.sparkplug.tck.test
Test archive name: f46a84d3d1f0f1b17d7611ace660a988fb0a64e
Monitor.handleDDEATH()
payloads-ddeath-seq-number)

[tck-id-payloads-ddeath-seq-number] A sequence number MUST be included with the DDEATH messages so the Host Application can ensure order of messages and maintain the state of the data.

Coverage

org.eclipse.sparkplug.tck.test.edge
Test archive name: a976357daba8d1225f973d151d3115e922245a
SessionTerminationTest.publish()

#### Section 6.4.27 - STATE [payloads_b_state]

payloads-state-will-message)

[tck-id-payloads-state-will-message] Sparkplug Host Applications MUST register a Will Message in the MQTT CONNECT packet on the topic 'spBv1.0/STATE/[sparkplughostid]'.

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: f4e9982610d0fdf09b74441ab336ac3e49494fa
SessionEstablishmentTest.checkConnectMessage()
payloads-state-will-message-qos)

[tck-id-payloads-state-will-message-qos] The Sparkplug Host Application MUST set the the MQTT Will QoS to 1 in the MQTT CONNECT packet.

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: f4e9982610d0fdf09b74441ab336ac3e49494fa
SessionEstablishmentTest.checkDeathMessage()
payloads-state-will-message-retain)

[tck-id-payloads-state-will-message-retain] The Sparkplug Host Application MUST set the Will Retained flag to true in the MQTT CONNECT packet.

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: f4e9982610d0fdf09b74441ab336ac3e49494fa
SessionEstablishmentTest.checkDeathMessage()
payloads-state-will-message-payload)

[tck-id-payloads-state-will-message-payload] The Death Certificate Payload MUST be JSON UTF-8 data. It MUST include two key/value pairs where one key MUST be 'online' and it's value is a boolean 'false'. The other key MUST be 'timestamp' and the value MUST be a numeric value representing the current UTC time in milliseconds since Epoch.

Coverage

org.eclipse.sparkplug.tck.test
Test archive name: f46a84d3d1f0f1b17d7611ace660a988fb0a64e
Monitor.connect()
org.eclipse.sparkplug.tck.test.host
Test archive name: f4e9982610d0fdf09b74441ab336ac3e49494fa
SessionEstablishmentTest.checkDeathMessage()
payloads-state-subscribe)

[tck-id-payloads-state-subscribe] After establishing an MQTT connection, the Sparkplug Host Application MUST subscribe on it's own 'spBv1.0/STATE/[sparkplughostid]' topic.

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: f4e9982610d0fdf09b74441ab336ac3e49494fa
SessionEstablishmentTest.checkSubscribes()
payloads-state-birth)

[tck-id-payloads-state-birth] After subscribing on it's own spBv1.0/STATE/[sparkplughostid] topic, the Sparkplug Host Application MUST publish an MQTT message on the topic 'spBv1.0/STATE/[sparkplughostid]' with a QoS of 1, and the retain flag set to true.

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: f4e9982610d0fdf09b74441ab336ac3e49494fa
SessionEstablishmentTest.checkBirthMessage()
payloads-state-birth-payload)

[tck-id-payloads-state-birth-payload] The Birth Certificate Payload MUST be JSON UTF-8 data. It MUST include two key/value pairs where one key MUST be 'online' and it's value is a boolean 'true'. The other key MUST be 'timestamp' and the value MUST match the timestamp value that was used in the immediately prior MQTT CONNECT packet Will Message payload.

Coverage

org.eclipse.sparkplug.tck.test
Test archive name: f46a84d3d1f0f1b17d7611ace660a988fb0a64e
Monitor.connect()
org.eclipse.sparkplug.tck.test.host
Test archive name: f4e9982610d0fdf09b74441ab336ac3e49494fa
SessionEstablishmentTest.checkBirthMessage()

#### Section 10.1.2 - Sparkplug Host Application [conformance_sparkplug_host_application]

conformance-primary-host)

[tck-id-conformance-primary-host] Sparkplug Host Applications MUST publish 'STATE' messages that represent its Birth and Death Certificates.

Coverage

org.eclipse.sparkplug.tck.test.host
Test archive name: f4e9982610d0fdf09b74441ab336ac3e49494fa
SessionEstablishmentTest.publish()

#### Section 10.1.3 - Sparkplug Compliant MQTT Server [conformance_mqtt_server]

conformance-mqtt-qos0)

[tck-id-conformance-mqtt-qos0] A Sparkplug conformant MQTT Server MUST support publish and subscribe on QoS 0

Coverage

org.eclipse.sparkplug.tck.test.broker
Test archive name: 6c2a2ff7928dd88a56a98e5d213cb4a407f3
CompliantBrokerTest.checkCompliance()
conformance-mqtt-qos1)

[tck-id-conformance-mqtt-qos1] A Sparkplug conformant MQTT Server MUST support publish and subscribe on QoS 1

Coverage

org.eclipse.sparkplug.tck.test.broker
Test archive name: 6c2a2ff7928dd88a56a98e5d213cb4a407f3
CompliantBrokerTest.checkCompliance()
conformance-mqtt-will-messages)

[tck-id-conformance-mqtt-will-messages] A Sparkplug conformant MQTT Server MUST support all aspects of Will Messages including use of the 'retain flag' and QoS 1

Coverage

org.eclipse.sparkplug.tck.test.broker
Test archive name: 6c2a2ff7928dd88a56a98e5d213cb4a407f3
CompliantBrokerTest.checkCompliance()
conformance-mqtt-retained)

[tck-id-conformance-mqtt-retained] A Sparkplug conformant MQTT Server MUST support all aspects of the 'retain flag'

Coverage

org.eclipse.sparkplug.tck.test.broker
Test archive name: 6c2a2ff7928dd88a56a98e5d213cb4a407f3
CompliantBrokerTest.checkCompliance()

#### Section 10.1.4 - Sparkplug Aware MQTT Server [conformance_sparkplug_aware_mqtt_server]

conformance-mqtt-aware-basic)

[tck-id-conformance-mqtt-aware-basic] A Sparkplug Aware MQTT Server MUST support all aspects of a Sparkplug Compliant MQTT Server

Coverage

org.eclipse.sparkplug.tck.test.broker
Test archive name: 5cdc650f4d285247502714db13f894beebb2e0
AwareBrokerTest.checkConformanceAware()
conformance-mqtt-aware-store)

[tck-id-conformance-mqtt-aware-store] A Sparkplug Aware MQTT Server MUST store NBIRTH and DBIRTH messages as they pass through the MQTT Server

Coverage

org.eclipse.sparkplug.tck.test.broker
Test archive name: 5cdc650f4d285247502714db13f894beebb2e0
AwareBrokerTest.checkStoreAware()
conformance-mqtt-aware-nbirth-mqtt-topic)

[tck-id-conformance-mqtt-aware-nbirth-mqtt-topic] A Sparkplug Aware MQTT Server MUST make NBIRTH messages available on a topic of the form: $sparkplug/certificates/namespace/groupid/NBIRTH/edgenode_id

Coverage

org.eclipse.sparkplug.tck.test.broker
Test archive name: 5cdc650f4d285247502714db13f894beebb2e0
AwareBrokerTest.checkNBIRTHAware()
conformance-mqtt-aware-nbirth-mqtt-retain)

[tck-id-conformance-mqtt-aware-nbirth-mqtt-retain] A Sparkplug Aware MQTT Server MUST make NBIRTH messages available on the topic: $sparkplug/certificates/namespace/groupid/NBIRTH/edgenode_id with the MQTT retain flag set to true

Coverage

org.eclipse.sparkplug.tck.test.broker
Test archive name: 5cdc650f4d285247502714db13f894beebb2e0
AwareBrokerTest.checkNBIRTHAware()
conformance-mqtt-aware-dbirth-mqtt-topic)

[tck-id-conformance-mqtt-aware-dbirth-mqtt-topic] A Sparkplug Aware MQTT Server MUST make DBIRTH messages available on a topic of the form: $sparkplug/certificates/namespace/groupid/DBIRTH/edgenodeid/deviceid

Coverage

org.eclipse.sparkplug.tck.test.broker
Test archive name: 5cdc650f4d285247502714db13f894beebb2e0
AwareBrokerTest.checkDBIRTHAware()
conformance-mqtt-aware-dbirth-mqtt-retain)

[tck-id-conformance-mqtt-aware-dbirth-mqtt-retain] A Sparkplug Aware MQTT Server MUST make DBIRTH messages available on the topic: $sparkplug/certificates/namespace/groupid/DBIRTH/edgenodeid/deviceid with the MQTT retain flag set to true

Coverage

org.eclipse.sparkplug.tck.test.broker
Test archive name: 5cdc650f4d285247502714db13f894beebb2e0
AwareBrokerTest.checkDBIRTHAware()
conformance-mqtt-aware-ndeath-timestamp)

[tck-id-conformance-mqtt-aware-ndeath-timestamp] A Sparkplug Aware MQTT Server MAY replace the timestmap of NDEATH messages. If it does, it MUST set the timestamp to the UTC time at which it attempts to deliver the NDEATH to subscribed clients

Coverage

org.eclipse.sparkplug.tck.test.broker
Test archive name: 5cdc650f4d285247502714db13f894beebb2e0
AwareBrokerTest.checkDBIRTHAware()
Test archive name: 5cdc650f4d285247502714db13f894beebb2e0
AwareBrokerTest.checkNDEATHAware()