Skip to content

Commit

Permalink
tedge using new config (#2077)
Browse files Browse the repository at this point in the history
Signed-off-by: Pradeep Kumar K J <[email protected]>
Co-authored-by: Pradeep Kumar K J <[email protected]>
  • Loading branch information
PradeepKiruvale and PradeepKiruvale authored Jul 25, 2023
1 parent 973821c commit 85d31d5
Show file tree
Hide file tree
Showing 10 changed files with 101 additions and 95 deletions.
32 changes: 32 additions & 0 deletions crates/common/tedge_config/src/tedge_config_cli/new.rs
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,25 @@ impl TEdgeConfig {

Ok(mqtt_config)
}

pub fn mqtt_client_auth_config(&self) -> MqttAuthConfig {
let mut client_auth = MqttAuthConfig {
ca_dir: self.mqtt.client.auth.ca_dir.or_none().cloned(),
ca_file: self.mqtt.client.auth.ca_file.or_none().cloned(),
client: None,
};
// Both these options have to either be set or not set
if let Ok(Some((client_cert, client_key))) = all_or_nothing((
self.mqtt.client.auth.cert_file.as_ref(),
self.mqtt.client.auth.key_file.as_ref(),
)) {
client_auth.client = Some(MqttAuthClientConfig {
cert_file: client_cert.clone(),
key_file: client_key.clone(),
})
}
client_auth
}
}

#[derive(serde::Deserialize, serde::Serialize, Clone, Copy, PartialEq, Eq, Debug)]
Expand Down Expand Up @@ -693,6 +712,19 @@ where
}
}

#[derive(Debug, Clone, Default)]
pub struct MqttAuthConfig {
pub ca_dir: Option<Utf8PathBuf>,
pub ca_file: Option<Utf8PathBuf>,
pub client: Option<MqttAuthClientConfig>,
}

#[derive(Debug, Clone, Default)]
pub struct MqttAuthClientConfig {
pub cert_file: Utf8PathBuf,
pub key_file: Utf8PathBuf,
}

#[cfg(test)]
mod tests {
use super::*;
Expand Down
10 changes: 6 additions & 4 deletions crates/core/tedge/src/cli/certificate/upload.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,9 @@ use reqwest::StatusCode;
use reqwest::Url;
use std::io::prelude::*;
use std::path::Path;
use tedge_config::*;
use tedge_config::get_new_tedge_config;
use tedge_config::HostPort;
use tedge_config::HTTPS_PORT;

#[derive(Debug, serde::Deserialize)]
struct CumulocityResponse {
Expand Down Expand Up @@ -48,10 +50,10 @@ impl UploadCertCmd {
Err(_) => rpassword::read_password_from_tty(Some("Enter password: "))?,
};

let config = get_tedge_config()?;
let root_cert = config.query(C8yRootCertPathSetting)?;
let config = get_new_tedge_config()?;
let root_cert = &config.c8y.root_cert_path;
let client_builder = reqwest::blocking::Client::builder();
let client = match std::fs::metadata(&root_cert)?.is_file() {
let client = match std::fs::metadata(root_cert)?.is_file() {
true => {
let cert = std::fs::read(root_cert)?;
let cert_pem = reqwest::Certificate::from_pem(&cert)?;
Expand Down
2 changes: 1 addition & 1 deletion crates/core/tedge/src/cli/config/commands/set.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use crate::command::Command;
use tedge_config::new::WritableKey;
use tedge_config::*;
use tedge_config::TEdgeConfigRepository;

pub struct SetConfigCommand {
pub key: WritableKey,
Expand Down
2 changes: 1 addition & 1 deletion crates/core/tedge/src/cli/config/commands/unset.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use crate::command::Command;
use tedge_config::new::WritableKey;
use tedge_config::*;
use tedge_config::TEdgeConfigRepository;

pub struct UnsetConfigCommand {
pub key: WritableKey,
Expand Down
71 changes: 41 additions & 30 deletions crates/core/tedge/src/cli/connect/command.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ use rumqttc::QoS::AtLeastOnce;
use std::path::Path;
use std::sync::Arc;
use std::time::Duration;
use tedge_config::new::TEdgeConfig;
use tedge_config::system_services::*;
use tedge_config::*;
use tedge_utils::paths::create_directories;
Expand Down Expand Up @@ -53,7 +54,7 @@ impl Command for ConnectCommand {
}

fn execute(&self) -> anyhow::Result<()> {
let config = self.config_repository.load()?;
let config = self.config_repository.load_new()?;
if self.is_test_connection {
let br_config = self.bridge_config(&config)?;
if self.check_if_bridge_exists(&br_config) {
Expand Down Expand Up @@ -84,29 +85,33 @@ impl Command for ConnectCommand {
.common_mosquitto_config
.clone()
.with_internal_opts(
config.query(MqttPortSetting)?.into(),
config.query(MqttBindAddressSetting)?.to_string(),
config.mqtt.bind.port.into(),
config.mqtt.bind.address.to_string(),
)
.with_external_opts(
config.query(MqttExternalPortSetting).ok().map(|x| x.into()),
config.mqtt.external.bind.port.or_none().cloned(),
config
.query(MqttExternalBindAddressSetting)
.ok()
.map(|x| x.to_string()),
config.query(MqttExternalBindInterfaceSetting).ok(),
config.query(MqttExternalCAPathSetting).ok(),
config.query(MqttExternalCertfileSetting).ok(),
config.query(MqttExternalKeyfileSetting).ok(),
.mqtt
.external
.bind
.address
.or_none()
.cloned()
.map(|a| a.to_string()),
config.mqtt.external.bind.interface.or_none().cloned(),
config.mqtt.external.ca_path.or_none().cloned(),
config.mqtt.external.cert_file.or_none().cloned(),
config.mqtt.external.key_file.or_none().cloned(),
);

let device_type = config.query(DeviceTypeSetting)?;
let device_type = &config.device.ty;

new_bridge(
&bridge_config,
&updated_mosquitto_config,
self.service_manager.as_ref(),
&self.config_location,
&device_type,
device_type,
)?;

match self.check_connection(&config) {
Expand Down Expand Up @@ -136,7 +141,13 @@ impl Command for ConnectCommand {
if let Cloud::C8y = self.cloud {
check_connected_c8y_tenant_as_configured(
&config,
&config.query_string(C8yMqttSetting)?,
&config
.c8y
.mqtt
.or_none()
.cloned()
.map(|u| u.to_string())
.unwrap_or_default(),
);
enable_software_management(&bridge_config, self.service_manager.as_ref());
}
Expand All @@ -150,39 +161,39 @@ impl ConnectCommand {
match self.cloud {
Cloud::Azure => {
let params = BridgeConfigAzureParams {
connect_url: config.query(AzureUrlSetting)?,
connect_url: config.az.url.or_config_not_set()?.clone(),
mqtt_tls_port: MQTT_TLS_PORT,
config_file: AZURE_CONFIG_FILENAME.into(),
bridge_root_cert_path: config.query(AzureRootCertPathSetting)?,
remote_clientid: config.query(DeviceIdSetting)?,
bridge_certfile: config.query(DeviceCertPathSetting)?,
bridge_keyfile: config.query(DeviceKeyPathSetting)?,
bridge_root_cert_path: config.az.root_cert_path.clone(),
remote_clientid: config.device.id.try_read(config)?.clone(),
bridge_certfile: config.device.cert_path.clone(),
bridge_keyfile: config.device.key_path.clone(),
};

Ok(BridgeConfig::from(params))
}
Cloud::Aws => {
let params = BridgeConfigAwsParams {
connect_url: config.query(AwsUrlSetting)?,
connect_url: config.aws.url.or_config_not_set()?.clone(),
mqtt_tls_port: MQTT_TLS_PORT,
config_file: AWS_CONFIG_FILENAME.into(),
bridge_root_cert_path: config.query(AwsRootCertPathSetting)?,
remote_clientid: config.query(DeviceIdSetting)?,
bridge_certfile: config.query(DeviceCertPathSetting)?,
bridge_keyfile: config.query(DeviceKeyPathSetting)?,
bridge_root_cert_path: config.aws.root_cert_path.clone(),
remote_clientid: config.device.id.try_read(config)?.clone(),
bridge_certfile: config.device.cert_path.clone(),
bridge_keyfile: config.device.key_path.clone(),
};

Ok(BridgeConfig::from(params))
}
Cloud::C8y => {
let params = BridgeConfigC8yParams {
mqtt_host: config.query(C8yMqttSetting)?,
mqtt_host: config.c8y.mqtt.or_config_not_set()?.clone(),
config_file: C8Y_CONFIG_FILENAME.into(),
bridge_root_cert_path: config.query(C8yRootCertPathSetting)?,
remote_clientid: config.query(DeviceIdSetting)?,
bridge_certfile: config.query(DeviceCertPathSetting)?,
bridge_keyfile: config.query(DeviceKeyPathSetting)?,
smartrest_templates: config.query(C8ySmartRestTemplates)?,
bridge_root_cert_path: config.c8y.root_cert_path.clone(),
remote_clientid: config.device.id.try_read(config)?.clone(),
bridge_certfile: config.device.cert_path.clone(),
bridge_keyfile: config.device.key_path.clone(),
smartrest_templates: config.c8y.smartrest.templates.clone(),
};

Ok(BridgeConfig::from(params))
Expand Down
2 changes: 1 addition & 1 deletion crates/core/tedge/src/cli/connect/jwt_token.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ use rumqttc::Incoming;
use rumqttc::Outgoing;
use rumqttc::Packet;
use rumqttc::QoS::AtLeastOnce;
use tedge_config::TEdgeConfig;
use tedge_config::new::TEdgeConfig;

pub(crate) fn get_connected_c8y_url(tedge_config: &TEdgeConfig) -> Result<String, ConnectError> {
const C8Y_TOPIC_BUILTIN_JWT_TOKEN_UPSTREAM: &str = "c8y/s/uat";
Expand Down
66 changes: 12 additions & 54 deletions crates/core/tedge/src/cli/mqtt/cli.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,8 @@ use crate::cli::mqtt::MqttError;
use crate::command::BuildCommand;
use crate::command::BuildContext;
use crate::command::Command;
use camino::Utf8PathBuf;
use rumqttc::QoS;
use std::time::Duration;
use tedge_config::*;

const PUB_CLIENT_PREFIX: &str = "tedge-pub";
const SUB_CLIENT_PREFIX: &str = "tedge-sub";
Expand Down Expand Up @@ -44,43 +42,8 @@ pub enum TEdgeMqttCli {

impl BuildCommand for TEdgeMqttCli {
fn build_command(self, context: BuildContext) -> Result<Box<dyn Command>, crate::ConfigError> {
let port = context
.config_repository
.load()?
.query(MqttClientPortSetting)?;
let host = context
.config_repository
.load()?
.query(MqttClientHostSetting)?;
let ca_file = context
.config_repository
.load()?
.query(MqttClientCafileSetting)
.ok();
let ca_path = context
.config_repository
.load()?
.query(MqttClientCapathSetting)
.ok();
let client_cert = context
.config_repository
.load()?
.query(MqttClientAuthCertSetting);
let client_private_key = context
.config_repository
.load()?
.query(MqttClientAuthKeySetting);

let client_auth_config = if client_cert.is_err() && client_private_key.is_err() {
None
} else {
let client_cert = client_cert?;
let client_private_key = client_private_key?;
Some(ClientAuthConfig {
cert_file: client_cert,
key_file: client_private_key,
})
};
let config = context.config_repository.load_new()?;
let auth_config = config.mqtt_client_auth_config();

let cmd = {
match self {
Expand All @@ -90,33 +53,33 @@ impl BuildCommand for TEdgeMqttCli {
qos,
retain,
} => MqttPublishCommand {
host,
port: port.into(),
host: config.mqtt.client.host.clone(),
port: config.mqtt.client.port.into(),
topic,
message,
qos,
client_id: format!("{}-{}", PUB_CLIENT_PREFIX, std::process::id()),
disconnect_timeout: DISCONNECT_TIMEOUT,
retain,
ca_file,
ca_dir: ca_path,
client_auth_config,
ca_file: auth_config.ca_file.clone(),
ca_dir: auth_config.ca_dir,
client_auth_config: auth_config.client,
}
.into_boxed(),
TEdgeMqttCli::Sub {
topic,
qos,
hide_topic,
} => MqttSubscribeCommand {
host,
port: port.into(),
host: config.mqtt.client.host.clone(),
port: config.mqtt.client.port.into(),
topic,
qos,
hide_topic,
client_id: format!("{}-{}", SUB_CLIENT_PREFIX, std::process::id()),
ca_file,
ca_dir: ca_path,
client_auth_config,
ca_file: auth_config.ca_file,
ca_dir: auth_config.ca_dir,
client_auth_config: auth_config.client,
}
.into_boxed(),
}
Expand All @@ -136,11 +99,6 @@ fn parse_qos(src: &str) -> Result<QoS, MqttError> {
}
}

pub struct ClientAuthConfig {
pub cert_file: Utf8PathBuf,
pub key_file: Utf8PathBuf,
}

#[cfg(test)]
mod tests {
use super::parse_qos;
Expand Down
4 changes: 2 additions & 2 deletions crates/core/tedge/src/cli/mqtt/publish.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
use super::cli::ClientAuthConfig;
use crate::cli::mqtt::MqttError;
use crate::command::Command;
use camino::Utf8PathBuf;
Expand All @@ -14,6 +13,7 @@ use rumqttc::QoS::AtLeastOnce;
use rumqttc::QoS::AtMostOnce;
use rumqttc::QoS::ExactlyOnce;
use std::time::Duration;
use tedge_config::new::MqttAuthClientConfig;

const DEFAULT_QUEUE_CAPACITY: usize = 10;

Expand All @@ -28,7 +28,7 @@ pub struct MqttPublishCommand {
pub retain: bool,
pub ca_file: Option<Utf8PathBuf>,
pub ca_dir: Option<Utf8PathBuf>,
pub client_auth_config: Option<ClientAuthConfig>,
pub client_auth_config: Option<MqttAuthClientConfig>,
}

impl Command for MqttPublishCommand {
Expand Down
4 changes: 2 additions & 2 deletions crates/core/tedge/src/cli/mqtt/subscribe.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
use super::cli::ClientAuthConfig;
use crate::cli::mqtt::MqttError;
use crate::command::Command;
use camino::Utf8PathBuf;
Expand All @@ -11,6 +10,7 @@ use rumqttc::Incoming;
use rumqttc::MqttOptions;
use rumqttc::Packet;
use rumqttc::QoS;
use tedge_config::new::MqttAuthClientConfig;

const DEFAULT_QUEUE_CAPACITY: usize = 10;
const MAX_PACKET_SIZE: usize = 1048575;
Expand All @@ -24,7 +24,7 @@ pub struct MqttSubscribeCommand {
pub client_id: String,
pub ca_file: Option<Utf8PathBuf>,
pub ca_dir: Option<Utf8PathBuf>,
pub client_auth_config: Option<ClientAuthConfig>,
pub client_auth_config: Option<MqttAuthClientConfig>,
}

impl Command for MqttSubscribeCommand {
Expand Down
3 changes: 3 additions & 0 deletions crates/core/tedge/src/error.rs
Original file line number Diff line number Diff line change
Expand Up @@ -27,4 +27,7 @@ pub enum TEdgeError {

#[error(transparent)]
FromTEdgeConfigRead(#[from] tedge_config::new::ReadError),

#[error(transparent)]
FromConfigNotSet(#[from] tedge_config::new::ConfigNotSet),
}

1 comment on commit 85d31d5

@github-actions
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Robot Results

✅ Passed ❌ Failed ⏭️ Skipped Total Pass %
239 0 5 239 100

Passed Tests

Name ⏱️ Duration Suite
Define Child device 1 ID 0.012 s C8Y Child Alarms Rpi
Normal case when the child device does not exist on c8y cloud 2.065 s C8Y Child Alarms Rpi
Normal case when the child device already exists 0.974 s C8Y Child Alarms Rpi
Reconciliation when the new alarm message arrives, restart the mapper 1.705 s C8Y Child Alarms Rpi
Reconciliation when the alarm that is cleared 5.93 s C8Y Child Alarms Rpi
Prerequisite Parent 17.111 s Child Conf Mgmt Plugin
Prerequisite Child 0.663 s Child Conf Mgmt Plugin
Child device bootstrapping 16.836 s Child Conf Mgmt Plugin
Snapshot from device 61.556 s Child Conf Mgmt Plugin
Child device config update 62.671 s Child Conf Mgmt Plugin
Configuration types should be detected on file change (without restarting service) 58.833 s Inotify Crate
Check lock file existence in default folder 1.996 s Lock File
Check PID number in lock file 2.356 s Lock File
Check PID number in lock file after restarting the services 63.228 s Lock File
Check starting same service twice 1.788 s Lock File
Switch off lock file creation 3.773 s Lock File
Set configuration when file exists 12.757 s Configuration Operation
Set configuration when file does not exist 6.879 s Configuration Operation
Set configuration with broken url 6.285 s Configuration Operation
Get configuration 5.37 s Configuration Operation
Get non existent configuration file 5.773 s Configuration Operation
Get non existent configuration type 5.081 s Configuration Operation
Update configuration plugin config via cloud 5.459 s Configuration Operation
Modify configuration plugin config via local filesystem modify inplace 3.071 s Configuration Operation
Modify configuration plugin config via local filesystem overwrite 5.29 s Configuration Operation
Update configuration plugin config via local filesystem copy 7.471 s Configuration Operation
Update configuration plugin config via local filesystem move (different directory) 5.255 s Configuration Operation
Update configuration plugin config via local filesystem move (same directory) 5.501 s Configuration Operation
Update the custom operation dynamically 61.819 s Dynamically Reload Operation
Custom operation successful 76.369 s Custom Operation
Custom operation fails 136.748 s Custom Operation
Successful firmware operation 70.519 s Firmware Operation
Install with empty firmware name 58.388 s Firmware Operation
Prerequisite Parent 19.764 s Firmware Operation Child Device
Prerequisite Child 8.113 s Firmware Operation Child Device
Child device firmware update 6.773 s Firmware Operation Child Device
Child device firmware update with cache 6.551 s Firmware Operation Child Device
Firmware plugin supports restart via service manager #1932 4.822 s Firmware Operation Child Device Retry
Update Inventory data via inventory.json 1.346 s Inventory Update
Inventory includes the agent fragment with version information 1.207 s Inventory Update
Retrieve a JWT tokens 45.964 s Jwt Request
Mapper recovers and processes output of ongoing software update request 17.545 s Recover And Publish Software Update Message
Check running collectd 1.408 s Monitor Device Collectd
Is collectd publishing MQTT messages? 3.121 s Monitor Device Collectd
Check thin-edge monitoring 4.71 s Monitor Device Collectd
Check grouping of measurements 8.946 s Monitor Device Collectd
Main device registration 1.716 s Device Registration
Child device registration 1.956 s Device Registration
Supports restarting the device 67.641 s Restart Device
Update tedge version from previous using Cumulocity 129.004 s Tedge Self Update
Test if all c8y services are up 56.69 s Service Monitoring
Test if all c8y services are down 59.155 s Service Monitoring
Test if all c8y services are using configured service type 125.574 s Service Monitoring
Test if all c8y services using default service type when service type configured as empty 247.744 s Service Monitoring
Check health status of tedge-mapper-c8y service on broker stop start 21.945 s Service Monitoring
Check health status of tedge-mapper-c8y service on broker restart 23.326 s Service Monitoring
Check health status of child device service 19.982 s Service Monitoring
Successful shell command with output 3.683 s Shell Operation
Check Successful shell command with literal double quotes output 3.253 s Shell Operation
Execute multiline shell command 3.403 s Shell Operation
Failed shell command 3.46 s Shell Operation
Software list should be populated during startup 49.73 s Software
Install software via Cumulocity 74.241 s Software
tedge-agent should terminate on SIGINT while downloading file 64.113 s Software
Software list should only show currently installed software and not candidates 47.538 s Software
Create and publish the tedge agent supported operations on mapper restart 42.596 s Mapper-Publishing-Agent-Supported-Ops
Agent gets the software list request once it comes up 50.084 s Mapper-Publishing-Agent-Supported-Ops
Child devices support sending simple measurements 1.638 s Child Device Telemetry
Child devices support sending custom measurements 1.445 s Child Device Telemetry
Child devices support sending custom events 1.486 s Child Device Telemetry
Child devices support sending custom events overriding the type 1.362 s Child Device Telemetry
Child devices support sending custom alarms #1699 1.3860000000000001 s Child Device Telemetry
Child devices support sending inventory data via c8y topic 1.642 s Child Device Telemetry
Child device supports sending custom child device measurements directly to c8y 1.764 s Child Device Telemetry
Check retained alarms 170.659 s Raise Alarms
Thin-edge devices support sending simple measurements 1.498 s Thin-Edge Device Telemetry
Thin-edge devices support sending simple measurements with custom type 1.336 s Thin-Edge Device Telemetry
Thin-edge devices support sending custom measurements 1.483 s Thin-Edge Device Telemetry
Thin-edge devices support sending custom events 1.642 s Thin-Edge Device Telemetry
Thin-edge devices support sending custom events overriding the type 1.6139999999999999 s Thin-Edge Device Telemetry
Thin-edge devices support sending custom alarms #1699 1.6059999999999999 s Thin-Edge Device Telemetry
Thin-edge device supports sending custom Thin-edge device measurements directly to c8y 1.483 s Thin-Edge Device Telemetry
Thin-edge device support sending inventory data via c8y topic 1.318 s Thin-Edge Device Telemetry
thin-edge components support a custom config-dir location via flags 28.279 s Config Dir
Validate updated data path used by tedge-agent 0.404 s Data Path Config
Validate updated data path used by c8y-firmware-plugin 11.243 s Data Path Config
Validate updated data path used by tedge-agent 0.583 s Log Path Config
Check existence of init directories 1.209 s Tedge Init
Tedge init and check creation of folders 1.292 s Tedge Init
Check ownership of the folders 1.37 s Tedge Init
Change user/group and check the change 1.7770000000000001 s Tedge Init
Tedge init and check if default values are restored 1.624 s Tedge Init
Install thin-edge via apt 74.773 s Install Apt
Install latest via script (from current branch) 38.939 s Install Tedge
Install specific version via script (from current branch) 28.495 s Install Tedge
Install latest tedge via script (from main branch) 31.21 s Install Tedge
Install then uninstall latest tedge via script (from main branch) 98.494 s Install Tedge
Support starting and stopping services 52.672 s Service-Control
Supports a reconnect 65.179 s Test-Commands
Supports disconnect then connect 57.106 s Test-Commands
Update unknown setting 51.89 s Test-Commands
Update known setting 44.23 s Test-Commands
It checks MQTT messages using a pattern 91.726 s Test-Mqtt
Stop c8y-configuration-plugin 0.204 s Health C8Y-Configuration-Plugin
Update the service file 0.144 s Health C8Y-Configuration-Plugin
Reload systemd files 1.202 s Health C8Y-Configuration-Plugin
Start c8y-configuration-plugin 0.34 s Health C8Y-Configuration-Plugin
Start watchdog service 10.322 s Health C8Y-Configuration-Plugin
Check PID of c8y-configuration-plugin 0.112 s Health C8Y-Configuration-Plugin
Kill the PID 0.422 s Health C8Y-Configuration-Plugin
Recheck PID of c8y-configuration-plugin 6.556 s Health C8Y-Configuration-Plugin
Compare PID change 0.005 s Health C8Y-Configuration-Plugin
Stop watchdog service 0.224 s Health C8Y-Configuration-Plugin
Remove entry from service file 0.162 s Health C8Y-Configuration-Plugin
Stop c8y-log-plugin 0.271 s Health C8Y-Log-Plugin
Update the service file 0.245 s Health C8Y-Log-Plugin
Reload systemd files 1.063 s Health C8Y-Log-Plugin
Start c8y-log-plugin 0.17 s Health C8Y-Log-Plugin
Start watchdog service 10.252 s Health C8Y-Log-Plugin
Check PID of c8y-log-plugin 0.198 s Health C8Y-Log-Plugin
Kill the PID 0.323 s Health C8Y-Log-Plugin
Recheck PID of c8y-log-plugin 6.638 s Health C8Y-Log-Plugin
Compare PID change 0.001 s Health C8Y-Log-Plugin
Stop watchdog service 0.267 s Health C8Y-Log-Plugin
Remove entry from service file 0.181 s Health C8Y-Log-Plugin
Stop tedge-mapper 0.23 s Health Tedge Mapper C8Y
Update the service file 0.218 s Health Tedge Mapper C8Y
Reload systemd files 0.837 s Health Tedge Mapper C8Y
Start tedge-mapper 0.369 s Health Tedge Mapper C8Y
Start watchdog service 10.572 s Health Tedge Mapper C8Y
Check PID of tedge-mapper 0.157 s Health Tedge Mapper C8Y
Kill the PID 0.228 s Health Tedge Mapper C8Y
Recheck PID of tedge-mapper 7.023 s Health Tedge Mapper C8Y
Compare PID change 0.001 s Health Tedge Mapper C8Y
Stop watchdog service 0.438 s Health Tedge Mapper C8Y
Remove entry from service file 0.395 s Health Tedge Mapper C8Y
Stop tedge-agent 0.335 s Health Tedge-Agent
Update the service file 0.218 s Health Tedge-Agent
Reload systemd files 0.604 s Health Tedge-Agent
Start tedge-agent 0.225 s Health Tedge-Agent
Start watchdog service 10.302 s Health Tedge-Agent
Check PID of tedge-mapper 0.263 s Health Tedge-Agent
Kill the PID 0.568 s Health Tedge-Agent
Recheck PID of tedge-agent 6.877 s Health Tedge-Agent
Compare PID change 0.005 s Health Tedge-Agent
Stop watchdog service 0.208 s Health Tedge-Agent
Remove entry from service file 0.18 s Health Tedge-Agent
Stop tedge-mapper-az 0.383 s Health Tedge-Mapper-Az
Update the service file 0.165 s Health Tedge-Mapper-Az
Reload systemd files 0.938 s Health Tedge-Mapper-Az
Start tedge-mapper-az 0.415 s Health Tedge-Mapper-Az
Start watchdog service 10.344 s Health Tedge-Mapper-Az
Check PID of tedge-mapper-az 0.098 s Health Tedge-Mapper-Az
Kill the PID 0.324 s Health Tedge-Mapper-Az
Recheck PID of tedge-agent 6.611 s Health Tedge-Mapper-Az
Compare PID change 0.005 s Health Tedge-Mapper-Az
Stop watchdog service 0.226 s Health Tedge-Mapper-Az
Remove entry from service file 0.167 s Health Tedge-Mapper-Az
Stop tedge-mapper-collectd 0.215 s Health Tedge-Mapper-Collectd
Update the service file 0.199 s Health Tedge-Mapper-Collectd
Reload systemd files 0.88 s Health Tedge-Mapper-Collectd
Start tedge-mapper-collectd 0.498 s Health Tedge-Mapper-Collectd
Start watchdog service 10.295 s Health Tedge-Mapper-Collectd
Check PID of tedge-mapper-collectd 0.141 s Health Tedge-Mapper-Collectd
Kill the PID 0.272 s Health Tedge-Mapper-Collectd
Recheck PID of tedge-mapper-collectd 6.874 s Health Tedge-Mapper-Collectd
Compare PID change 0.003 s Health Tedge-Mapper-Collectd
Stop watchdog service 0.44 s Health Tedge-Mapper-Collectd
Remove entry from service file 0.306 s Health Tedge-Mapper-Collectd
tedge-collectd-mapper health status 6.024 s Health Tedge-Mapper-Collectd
c8y-log-plugin health status 5.92 s MQTT health endpoints
c8y-configuration-plugin health status 5.715 s MQTT health endpoints
Publish on a local insecure broker 0.284 s Basic Pub Sub
Publish on a local secure broker 5.113 s Basic Pub Sub
Publish on a local secure broker with client authentication 5.079 s Basic Pub Sub
Publish events to subscribed topic 0.553 s Custom Sub Topics Tedge-Mapper-Aws
Publish measurements to unsubscribed topic 5.556 s Custom Sub Topics Tedge-Mapper-Aws
Publish measurements to subscribed topic 0.658 s Custom Sub Topics Tedge-Mapper-Az
Publish measurements to unsubscribed topic 5.3629999999999995 s Custom Sub Topics Tedge-Mapper-Az
Publish events to subscribed topic 0.385 s Custom Sub Topics Tedge-Mapper-C8Y
Publish measurements to unsubscribed topic 5.421 s Custom Sub Topics Tedge-Mapper-C8Y
Check remote mqtt broker #1773 3.12 s Remote Mqtt Broker
Apply name filter 0.178 s Filter Packages List Output
Apply maintainer filter 0.527 s Filter Packages List Output
Apply both filters 0.312 s Filter Packages List Output
No filters 0.235 s Filter Packages List Output
Both filters but name filter as empty string 0.24 s Filter Packages List Output
Both filters but maintainer filter as empty string 0.228 s Filter Packages List Output
Both filters as empty string 0.334 s Filter Packages List Output
Wrong package name 0.321 s Improve Tedge Apt Plugin Error Messages
Wrong version 0.205 s Improve Tedge Apt Plugin Error Messages
Wrong type 0.36 s Improve Tedge Apt Plugin Error Messages
tedge_connect_test_positive 0.223 s Tedge Connect Test
tedge_connect_test_negative 0.761 s Tedge Connect Test
tedge_connect_test_sm_services 7.828 s Tedge Connect Test
tedge_disconnect_test_sm_services 0.861 s Tedge Connect Test
Install thin-edge.io 24.222 s Call Tedge
call tedge -V 0.15 s Call Tedge
call tedge -h 0.123 s Call Tedge
call tedge -h -V 0.104 s Call Tedge
call tedge help 0.115 s Call Tedge
tedge config list 0.094 s Call Tedge Config List
tedge config list --all 0.157 s Call Tedge Config List
set/unset device.type 0.402 s Call Tedge Config List
set/unset device.key_path 0.423 s Call Tedge Config List
set/unset device.cert_path 0.831 s Call Tedge Config List
set/unset c8y.root_cert_path 0.942 s Call Tedge Config List
set/unset c8y.smartrest.templates 1.082 s Call Tedge Config List
set/unset c8y.topics 0.701 s Call Tedge Config List
set/unset az.root_cert_path 1.055 s Call Tedge Config List
set/unset az.topics 0.439 s Call Tedge Config List
set/unset aws.topics 0.325 s Call Tedge Config List
set/unset aws.url 0.592 s Call Tedge Config List
set/unset aws.root_cert_path 0.413 s Call Tedge Config List
set/unset aws.mapper.timestamp 0.329 s Call Tedge Config List
set/unset az.mapper.timestamp 0.393 s Call Tedge Config List
set/unset mqtt.bind.address 0.492 s Call Tedge Config List
set/unset mqtt.bind.port 0.335 s Call Tedge Config List
set/unset http.bind.port 0.255 s Call Tedge Config List
set/unset tmp.path 0.311 s Call Tedge Config List
set/unset logs.path 0.306 s Call Tedge Config List
set/unset run.path 0.315 s Call Tedge Config List
set/unset firmware.child.update.timeout 0.272 s Call Tedge Config List
set/unset c8y.url 0.288 s Call Tedge Config List
set/unset az.url 0.288 s Call Tedge Config List
set/unset mqtt.external.bind.port 0.284 s Call Tedge Config List
mqtt.external.bind.address 0.3 s Call Tedge Config List
mqtt.external.bind.interface 0.28 s Call Tedge Config List
set/unset mqtt.external.ca_path 0.278 s Call Tedge Config List
set/unset mqtt.external.cert_file 0.292 s Call Tedge Config List
set/unset mqtt.external.key_file 0.267 s Call Tedge Config List
set/unset software.plugin.default 0.285 s Call Tedge Config List
Get Put Delete 2.868 s Http File Transfer Api
Set keys should return value on stdout 0.244 s Tedge Config Get
Unset keys should not return anything on stdout and warnings on stderr 0.466 s Tedge Config Get
Invalid keys should not return anything on stdout and warnings on stderr 0.417 s Tedge Config Get
Set configuration via environment variables 1.354 s Tedge Config Get
Set configuration via environment variables for topics 0.41 s Tedge Config Get
Set unknown configuration via environment variables 0.104 s Tedge Config Get

Please sign in to comment.