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.
broken_config (BETA)
Check that the device correctly handles a broken (non-json) config message.
- Update config starting broken_config:
- Set
system.min_loglevel
= 100
- Wait for initial state synchronized
- Check that initial stable_config matches last_config
- Wait for log category
system.config.apply
level NOTICE
to be logged
- Wait for has applicable system status
- Check that applicable system status
- Wait for log category
system.config.receive
level DEBUG
to be logged
- Wait for log category
system.config.parse
level ERROR
to be logged
- Check that log category
system.config.apply
level NOTICE
not logged
- Force reset config
- Wait for state last_config sync
- Wait for log category
system.config.apply
level NOTICE
to be logged
- Wait for restored state synchronized
- Update config before last_config updated:
- Set
system.min_loglevel
= 100
- Wait for last_config updated
- Wait for log category
system.config.apply
level NOTICE
to be logged
- Check that log category
system.config.receive
level DEBUG
not logged
- Check that log category
system.config.parse
level DEBUG
not logged
config_logging (BETA)
Check that the device publishes minimum required log entries when receiving config
- Update config set min_loglevel to debug:
- Set
system.min_loglevel
= 100
- Force config update to resend config to device
- Wait for log category
system.config.receive
level DEBUG
to be logged
- Wait for log category
system.config.parse
level DEBUG
to be logged
- Wait for log category
system.config.apply
level NOTICE
to be logged
device_config_acked (BETA)
Check that the device MQTT-acknowledges a sent config.
- Wait for config acked
empty_enumeration (PREVIEW)
Check enumeration of nothing at all
- Update config before enumeration not active:
- Add
discovery
= { “enumerate”: { } }
- 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
- Check that no feature enumeration
- Check that no point enumeration
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
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
endpoint_connection_success_alternate (PREVIEW)
Check connection to an alternate project.
- Wait for 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 for 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 for 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
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
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
endpoint_redirect_and_restart (PREVIEW)
- Wait for 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 for 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 for 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
Check that the device correctly handles an extra out-of-schema field
- Update config before last_config not null:
- Set
system.min_loglevel
= 100
- Wait for last_config not null
- Wait for system operational
- Check that no applicable system status
- Wait for log category
system.config.receive
level DEBUG
to be logged
- Wait for last_config updated
- Wait for system operational
- Check that no applicable system status
- Wait for log category
system.config.parse
level DEBUG
to be logged
- Wait for log category
system.config.apply
level NOTICE
to be logged
- Wait for log category
system.config.receive
level DEBUG
to be logged
- Wait for last_config updated again
- Wait for system operational
- Wait for log category
system.config.parse
level DEBUG
to be logged
- Wait for log category
system.config.apply
level NOTICE
to be logged
family_ether_addr (PREVIEW)
- Wait for localnet families available
- Check that device family ether address matches
family_ipv4_addr (PREVIEW)
- Wait for localnet families available
- Check that device family ipv4 address matches
family_ipv6_addr (PREVIEW)
- Wait for localnet families available
- Check that device family ipv6 address matches
feature_enumeration (PREVIEW)
Check enumeration of device features
- Update config before enumeration not active:
- Add
discovery
= { “enumerate”: { “features”: true
} }
- 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
- Check that feature enumeration matches metadata
- Check that all enumerated features are official buckets
- Check that no point enumeration
gateway_proxy_events (BETA)
Check that a gateway proxies pointset events for indicated devices
- Test skipped: Not a gateway
pointset_publish (BETA)
Check that a device publishes pointset events
- Wait for receive a pointset event
pointset_publish_interval (BETA)
Check handling of sample rate 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
pointset_remove_point (BETA)
Check that pointset state does not report an unconfigured point
- Wait for pointset state reports same points as defined in config
- Wait for pointset event contains correct points with present_value
- Update config before pointset status does not contain removed point:
- Remove
pointset.points[random_point]
- Wait for pointset status does not contain removed point
- Wait for pointset state reports same points as defined in config
- Wait for pointset event contains correct points with present_value
- Update config before pointset status contains removed point:
- Add
pointset.points[random_point]
= point configuration
- Wait for pointset status contains removed point
- Wait for pointset state reports same points as defined in config
- Wait for pointset event contains correct points with present_value
Check error when pointset configuration contains extraneous point
- Wait for pointset state reports same points as defined in config
- Wait for pointset event contains correct points with present_value
- Update config before pointset status contains extraneous point error:
- Add
pointset.points[extraneous_point]
= point configuration
- Wait for pointset status contains extraneous point error
- Wait for pointset state reports same points as defined in config
- Wait for pointset event contains correct points with present_value
- Update config before pointset status removes extraneous point error:
- Remove
pointset.points[extraneous_point]
- Wait for pointset status removes extraneous point error
- Wait for pointset state reports same points as defined in config
- Wait for pointset event contains correct points with present_value
pointset_sample_rate (BETA)
Check that a device publishes pointset events not faster than config sample_rate_sec
- Wait for measure initial sample rate
- Update config before receive at least 5 pointset events:
- Add
pointset.sample_rate_sec
= 5
- Add
pointset.sample_limit_sec
= 1
- Wait for receive at least 5 pointset events
- Check that time period between successive pointset events is between 1 and 5 seconds
state_make_model (BETA)
Check that a device publishes correct make and model information in state messages
- Check that make and model in state matches make in metadata
state_software (BETA)
Check that a device publishes correct software information in state messages
- Check that software in metadata matches state
system_last_update (STABLE)
Check that last_update state is correctly set in response to a config update.
- Wait for state last_config matches first config timestamp
- Wait for state update complete
- Force config update to trigger another config update
- Wait for state last_config matches new config timestamp
- Wait for state update complete
- Force config update to trigger another config update
- Wait for state last_config matches last config timestamp
- Wait for state update complete
valid_serial_no (BETA)
- Wait for received serial number matches