UDMI / Docs / Specs / Sequences / Generated
Generated sequences
These are the exact sequences being checked by the sequence tool. They are programmatically generated
so maybe a bit cryptic, but they accurately represent the specific steps required for each test.
bad_point_ref (PREVIEW)
Error handling for badly formed gateway point ref
Test skipped: Not a proxied device
bad_target_address (PREVIEW)
Error handling for badly formed gateway target address
Test skipped: Not a proxied device
bad_target_family (PREVIEW)
Error handling for badly formed gateway target family
Test skipped: Not a proxied device
broken_config (STABLE)
Check that the device correctly handles a broken (non-json) config message.
- Update config to enable debug logging
- Set
system.min_loglevel
= 100
- logging Wait until system logs level
NOTICE
category system.config.apply
- Update config to force broken (invalid JSON) configuration
- status Wait until system status level is >=
WARNING
(400)
- status Check that status level is exactly
ERROR
(500)
- status Check that category matches
system.config.parse
- Check that device state
last_config
has not been updated
- logging Wait until system logs level
DEBUG
category system.config.receive
- logging Wait until system logs level
ERROR
category system.config.parse
- logging Check that log level
NOTICE
(or greater) category system.config.apply
was not logged
- Reset config to clean version
- (Log level is implicitly set to
INFO
through config reset)
- status Wait until system status level is not >=
WARNING
(400)
- logging Wait until system logs level
NOTICE
category system.config.apply
- logging Check that log level
DEBUG
(or greater) category system.config.receive
was not logged
- logging Check that log level
DEBUG
(or greater) category system.config.parse
was not logged
- Check that device state
last_config
has been updated
Test passed.
config_logging (STABLE)
Check that the device publishes minimum required log entries when receiving config
- Force config update to resend config to device
- Wait until system logs level
DEBUG
category system.config.receive
- Wait until system logs level
DEBUG
category system.config.parse
- Wait until system logs level
NOTICE
category system.config.apply
Test passed.
device_config_acked (STABLE)
Check that the device MQTT-acknowledges a sent config.
- Wait for config acked
Test passed.
endpoint_connection_error (PREVIEW)
Push endpoint config message to device that results in a connection error.
- Update config before blobset entry config status is error
- Add
blobset
= { “blobs”: { “_iot_endpoint_config”: { “phase”: final
, “generation”: blob generation
, “sha256”: blob data hash
, “url”: endpoint data
} } }
- Wait for blobset entry config status is error
- Update config before endpoint config blobset state not defined
- Remove
blobset.blobs._iot_endpoint_config
- Wait for endpoint config blobset state not defined
Test passed.
endpoint_connection_retry (PREVIEW)
Check repeated endpoint with same information gets retried.
- Update config before blobset entry config status is error
- Add
blobset
= { “blobs”: { “_iot_endpoint_config”: { “phase”: final
, “generation”: blob generation
, “sha256”: blob data hash
, “url”: endpoint data
} } }
- Wait for blobset entry config status is error
- Update config before blobset entry config status is error
- Set
blobset.blobs._iot_endpoint_config.generation
= new generation
- Wait for blobset entry config status is error
- Update config before endpoint config blobset state not defined
- Remove
blobset.blobs._iot_endpoint_config
- Wait for endpoint config blobset state not defined
Test passed.
endpoint_connection_success_alternate (PREVIEW)
Check connection to an alternate project.
- Wait until initial last_config matches config timestamp
- Update config mirroring config false
- Add
blobset
= { “blobs”: { “_iot_endpoint_config”: { “phase”: final
, “generation”: blob generation
, “sha256”: blob data hash
, “url”: endpoint data
} } }
- Wait for blobset phase is apply and stateStatus is null
- Wait for blobset phase is final and stateStatus is null
- Wait until alternate last_config matches config timestamp
- Update config before endpoint config blobset state not defined
- Remove
blobset.blobs._iot_endpoint_config
- Wait for endpoint config blobset state not defined
- Update config mirroring config true
- Add
blobset.blobs._iot_endpoint_config
= { “phase”: final
, “generation”: blob generation
, “sha256”: blob data hash
, “url”: endpoint data
}
- Wait for blobset phase is apply and stateStatus is null
- Wait for blobset phase is final and stateStatus is null
- Wait until restored last_config matches config timestamp
- Update config before endpoint config blobset state not defined
- Remove
blobset.blobs._iot_endpoint_config
- Wait for endpoint config blobset state not defined
Test passed.
endpoint_connection_success_reconnect (PREVIEW)
Check a successful reconnect to the same endpoint.
- Update config before blobset phase is final and stateStatus is null
- Add
blobset
= { “blobs”: { “_iot_endpoint_config”: { “phase”: final
, “generation”: blob generation
, “sha256”: blob data hash
, “url”: endpoint data
} } }
- Wait for blobset phase is final and stateStatus is null
- Update config before endpoint config blobset state not defined
- Remove
blobset.blobs._iot_endpoint_config
- Wait for endpoint config blobset state not defined
Test passed.
endpoint_failure_and_restart (PREVIEW)
- Update config before blobset entry config status is error
- Add
blobset
= { “blobs”: { “_iot_endpoint_config”: { “phase”: final
, “generation”: blob generation
, “sha256”: blob data hash
, “url”: endpoint data
} } }
- Wait for blobset entry config status is error
- Wait for last_start is not zero
- Check that initial count is greater than 0
- Update config before system mode is ACTIVE
- Add
system.operation.mode
= active
- Wait for system mode is ACTIVE
- Update config before system mode is INITIAL
- Set
system.operation.mode
= restart
- Wait for system mode is INITIAL
- Check that restart count increased by one
- Update config before system mode is ACTIVE
- Set
system.operation.mode
= active
- Wait for system mode is ACTIVE
- Wait for last_config is newer than previous last_config before abort
- Wait for last_config is newer than previous last_config after abort
- Wait for last_start is newer than previous last_start
- Update config before endpoint config blobset state not defined
- Remove
blobset.blobs._iot_endpoint_config
- Wait for endpoint config blobset state not defined
Test passed.
endpoint_redirect_and_restart (PREVIEW)
- Wait until initial last_config matches config timestamp
- Update config mirroring config false
- Add
blobset
= { “blobs”: { “_iot_endpoint_config”: { “phase”: final
, “generation”: blob generation
, “sha256”: blob data hash
, “url”: endpoint data
} } }
- Wait for blobset phase is apply and stateStatus is null
- Wait for blobset phase is final and stateStatus is null
- Wait until alternate last_config matches config timestamp
- Update config before endpoint config blobset state not defined
- Remove
blobset.blobs._iot_endpoint_config
- Wait for endpoint config blobset state not defined
- Wait for last_start is not zero
- Check that initial count is greater than 0
- Update config before system mode is ACTIVE
- Add
system.operation.mode
= active
- Wait for system mode is ACTIVE
- Update config before system mode is INITIAL
- Set
system.operation.mode
= restart
- Wait for system mode is INITIAL
- Check that restart count increased by one
- Update config before system mode is ACTIVE
- Set
system.operation.mode
= active
- Wait for system mode is ACTIVE
- Wait for last_config is newer than previous last_config before abort
- Wait for last_config is newer than previous last_config after abort
- Wait for last_start is newer than previous last_start
- Update config mirroring config true
- Add
blobset.blobs._iot_endpoint_config
= { “phase”: final
, “generation”: blob generation
, “sha256”: blob data hash
, “url”: endpoint data
}
- Wait for blobset phase is apply and stateStatus is null
- Wait for blobset phase is final and stateStatus is null
- Wait until restored last_config matches config timestamp
- Update config before endpoint config blobset state not defined
- Remove
blobset.blobs._iot_endpoint_config
- Wait for endpoint config blobset state not defined
Test passed.
enumerate_families (PREVIEW)
Check enumeration of network families
- Update config before enumeration not active
- Add
discovery.enumerations
= { “families”: entries
}
- Wait for enumeration not active
- Update config before matching enumeration generation
- Add
discovery.generation
= generation start time
- Wait for matching enumeration generation
- Update config before cleared enumeration generation
- Remove
discovery.generation
- Wait for cleared enumeration generation
- Check that family enumeration size matches
- Check that no feature enumeration exists
- Check that no point enumeration exists
Test passed.
enumerate_features (PREVIEW)
Check enumeration of device features
- Update config before enumeration not active
- Add
discovery.enumerations
= { “features”: entries
}
- Wait for enumeration not active
- Update config before matching enumeration generation
- Add
discovery.generation
= generation start time
- Wait for matching enumeration generation
- Update config before cleared enumeration generation
- Remove
discovery.generation
- Wait for cleared enumeration generation
- Check that no family enumeration exists
- Check that feature enumeration matches metadata
- Check that all enumerated features are official buckets
- Check that no point enumeration exists
Test passed.
enumerate_multi (PREVIEW)
Check enumeration of multiple categories
- Update config before enumeration not active
- Add
discovery.enumerations
= { “features”: entries
, “families”: entries
, “points”: entries
}
- Wait for enumeration not active
- Update config before matching enumeration generation
- Add
discovery.generation
= generation start time
- Wait for matching enumeration generation
- Update config before cleared enumeration generation
- Remove
discovery.generation
- Wait for cleared enumeration generation
- Check that family enumeration size matches
- Check that feature enumeration matches metadata
- Check that all enumerated features are official buckets
- Check that enumerated point count matches
Test passed.
enumerate_nothing (PREVIEW)
Check enumeration of nothing at all
- Update config before enumeration not active
- Add
discovery.enumerations
= { }
- Wait for enumeration not active
- Update config before matching enumeration generation
- Add
discovery.generation
= generation start time
- Wait for matching enumeration generation
- Update config before cleared enumeration generation
- Remove
discovery.generation
- Wait for cleared enumeration generation
- Check that no family enumeration exists
- Check that no feature enumeration exists
- Check that no point enumeration exists
Test passed.
enumerate_pointset (PREVIEW)
Check enumeration of device points
- Update config before enumeration not active
- Add
discovery.enumerations
= { “points”: entries
}
- Wait for enumeration not active
- Update config before matching enumeration generation
- Add
discovery.generation
= generation start time
- Wait for matching enumeration generation
- Update config before cleared enumeration generation
- Remove
discovery.generation
- Wait for cleared enumeration generation
- Check that no family enumeration exists
- Check that no feature enumeration exists
- Check that enumerated point count matches
Test passed.
Check that the device correctly handles an extra out-of-schema field
- Wait for last_config not null
- Wait for system operational
- Check that system status level is not >=
WARNING
(400)
- Update config before system logs level
DEBUG
category system.config.receive
- Wait until system logs level
DEBUG
category system.config.receive
- Wait until last_config updated
- Wait for system operational
- Check that system status level is not >=
WARNING
(400)
- Wait until system logs level
DEBUG
category system.config.parse
- Wait until system logs level
NOTICE
category system.config.apply
- Update config before system logs level
DEBUG
category system.config.receive
- Wait until system logs level
DEBUG
category system.config.receive
- Wait for last_config updated again
- Wait for system operational
- Wait until system logs level
DEBUG
category system.config.parse
- Wait until system logs level
NOTICE
category system.config.apply
Test passed.
family_ether_addr (PREVIEW)
- Wait until localnet family state ether available
- Check that family ether address matches
Test passed.
family_ipv4_addr (PREVIEW)
- Wait until localnet family state ipv4 available
- Check that family ipv4 address matches
Test passed.
family_ipv6_addr (PREVIEW)
Test skipped: No ipv6 address defined in metadata
gateway_proxy_events (BETA)
Check that a gateway proxies pointset events for indicated devices
Test skipped: Not a gateway
gateway_proxy_state (PREVIEW)
Check that a gateway proxies state updates for indicated devices
Test skipped: Not a gateway
pointset_publish (STABLE)
Check that a device publishes pointset events
- Wait for receive a pointset event
Test passed.
pointset_publish_interval (STABLE)
Check handling of sample_rate_sec and sample_limit_sec
- Update config before receive at least 4 pointset events
- Add
pointset.sample_rate_sec
= 8
- Add
pointset.sample_limit_sec
= 5
- Wait for receive at least 4 pointset events
- Check that time period between successive pointset events is between 5 and 8 seconds
- Update config before receive at least 4 pointset events
- Set
pointset.sample_rate_sec
= 18
- Set
pointset.sample_limit_sec
= 15
- Wait for receive at least 4 pointset events
- Check that time period between successive pointset events is between 15 and 18 seconds
Test passed.
pointset_remove_point (STABLE)
Check that pointset state does not report an unconfigured point
- Wait until pointset state matches config
- Wait until pointset event contains correct points
- Update config before pointset state does not contain removed point
- Remove
pointset.points[random_point]
- Wait for pointset state does not contain removed point
- Wait until pointset state matches config
- Wait until pointset event contains correct points
- Update config before pointset state contains restored point
- Add
pointset.points[random_point]
= point configuration
- Wait for pointset state contains restored point
- Wait until pointset state matches config
- Wait until pointset event contains correct points
Test passed.
Check error when pointset configuration contains extraneous point
- Update config before pointset state matches config
- Add
pointset.sample_rate_sec
= 10
- Wait until pointset state matches config
- Wait until pointset event contains correct points
- Update config before pointset state contains extraneous point error
- Add
pointset.points[extraneous_point]
= point configuration
- Wait for pointset state contains extraneous point error
- Wait until pointset state matches config
- Wait until pointset event contains correct points
- Update config before pointset state removes extraneous point error
- Remove
pointset.points[extraneous_point]
- Wait for pointset state removes extraneous point error
- Wait until pointset state matches config
- Wait until pointset event contains correct points
Test passed.
scan_periodic_now_enumerate (PREVIEW)
Check periodic scan on a fixed schedule and enumeration
- Update config before discovery families defined
- Remove
discovery.families.vendor
- Wait for discovery families defined
- Wait until discovery family keys match
- Wait for no scans active
- Update config before scan iterations
- Add
discovery.families.vendor
= { “generation”: family generation
, “scan_interval_sec”: 20
, “depth”: entries
, “scan_duration_sec”: 20
}
- Wait for scan iterations
- Check that scan did not terminate prematurely
- Check that all events have matching refs
Test passed.
scan_single_future (PREVIEW)
Check results of a single scan scheduled soon
- Update config before discovery families defined
- Remove
discovery.families.vendor
- Wait for discovery families defined
- Wait until discovery family keys match
- Wait for no scans active
- Update config before scheduled scan pending
- Add
discovery.families.vendor
= { “generation”: family generation
, “scan_duration_sec”: 10
}
- Wait until scheduled scan pending
- Wait until scheduled scan active
- Check that scan started at time
- Wait until scheduled scan complete
- Check that scan completed at time
- Check that discovery events were received
- Check that no events have discovered refs
- Check that discovery events were valid
- Check that all scan addresses are unique
- Check that all expected addresses were found
Test passed.
scan_single_now (PREVIEW)
Check results of a single scan scheduled in the recent past
- Update config before discovery families defined
- Remove
discovery.families.vendor
- Wait for discovery families defined
- Wait until discovery family keys match
- Wait for no scans active
- Update config before scheduled scan active
- Add
discovery.families.vendor
= { “generation”: family generation
, “scan_duration_sec”: 10
}
- Wait until scheduled scan active
- Check that scan started at time
- Wait until scheduled scan complete
- Check that scan completed at time
- Check that discovery events were received
- Check that no events have discovered refs
- Check that discovery events were valid
- Check that all scan addresses are unique
- Check that all expected addresses were found
Test passed.
scan_single_past (PREVIEW)
Check that a scan scheduled in the past never starts
- Update config before discovery families defined
- Remove
discovery.families.vendor
- Wait for discovery families defined
- Wait until discovery family keys match
- Wait for no scans active
- Update config before scan schedule initially not active
- Add
discovery.families.vendor
= { “generation”: family generation
, “scan_duration_sec”: 10
}
- Wait until scan schedule initially not active
- Wait until scan schedule still not active
- Check that there were no received discovery events
Test passed.
state_make_model (STABLE)
Check that a device publishes correct make and model information in state messages
- Check that make and model in state matches make in metadata
Test passed.
state_software (STABLE)
Check that a device publishes correct software information in state messages
- Check that software in metadata matches state
Test passed.
system_last_update (STABLE)
Check that last_update state is correctly set in response to a config update.
- Wait until state last_config matches config timestamp
- subblocks Wait until state update complete
- Force config update to trigger another config update
- Wait until state last_config matches config timestamp
- subblocks Wait until state update complete
- Force config update to trigger another config update
- Wait until state last_config matches config timestamp
- subblocks Wait until state update complete
Test passed.
valid_serial_no (STABLE)
- Wait for received serial number matches
Test passed.