Skip to content

Instantly share code, notes, and snippets.

@tekjar
Last active May 8, 2023 09:51
Show Gist options
  • Save tekjar/6da031ed060e8f8ae528c35cb571d499 to your computer and use it in GitHub Desktop.
Save tekjar/6da031ed060e8f8ae528c35cb571d499 to your computer and use it in GitHub Desktop.

Init

Does uplink connect to broker

On connection, does uplink subscribe actions → /tenants/<project_id>/devices/<device_id>/actions

Sends ping requests and receive ping responses according to the keep_alive configuration

Does uplink allow for it's tracing_subscriber minimum log level to be configured with a curl command when running as a daemon

Data collection

Stream is flushed after the buffer is full

Stream is flushed after configured timeout

Logs

Does uplink write log lines from the configured services with configured log level to the logs stream

System stats

When configured, does uplink write system stats to the appropriate streams, i.e. processor, disk, memory, etc

Data robustness

Writes to disk on bad network when disk persistence is configured

Is any file larger than the configured file size.

Applies memory and disk retention policies correctly

On slow networks, uplink reads and writes from/to disk simultaneously

Slow mode, uplink writes to in-memory and network recovers before reaching max-file-size. lost = 0, disk_files = 0 in uplink_serializer_metrics.

Slow mode, uplink can't write to disk but max-file-size is breached. lost > 0, disk_files = 0 in uplink_serializer_metrics.

Slow mode, uplink writes to disk and network recovers before reaching max-file-count. lost = 0, disk_files > 0 < max_file_count in uplink_serializer_metrics.

Slow mode, uplink writes to disk and network recovers after reaching max-file-count. lost > 0 in uplink_serializer_metrics

When there are files in persistence directory at startup, does uplink read and forward them appropriately, while writing incoming data onto disk and waiting for the reading to be completed before writing the incoming data directly to network

Data Recovery

Tunshell

Does uplink allow tunshell access for remote device control

Tunshell works when an action is already being processed by uplink

Actions

Can an application connect to uplink over TCP, receive the actions specified for it in the config and send responses that is then batched(size 1) and forwarded to platform

When a download action is received as configured, does uplink forward it to the download handler, does the download handler write it to the appropriate location in disk.

Does uplink ignore and log a response for an action where action_id is not the same as current_action.

On an action configured to be completed in 100s, with the action route timeout, does the bridge send a failure action response

Does uplink allow configured processes to be executed through an action remotely

New action gets rejected while current action is in progress and current action continues to send progress

Actions robustness

Does uplink store current action onto disk when shutting down and reload it when back up.

Does uplink allow responses to an action that was in execution before uplink stopped prematurely.

Does uplink send timedout failure response after restart in the following case:

Action starts with timeout set for 300 secs from recv, uplink is stopped 100s from recv, uplink restarts, timeout should now happen 200s from uplink restart

Misc

Does uplink allow running configured process

CPU & memory usage

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment