Thanks to visit codestin.com
Credit goes to github.com

Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
Use the `telemetry-enable` feature flag on `veecle-os` to control telemetry behavior.
* **breaking** Removed `Span::root` method and `root_span!` macro; root spans should use `Span::new` and `span!` instead.
* **breaking** Replaced `SpanContext::from_span` with `Span::context` method.
* **breaking** Telemetry execution id is replaced by separate thread and process ids to uniquely identify thread/task combinations.
* Added custom serialization for telemetry ids with hex-encoded string format.
* Added `ThreadAbstraction` trait to OSAL for querying current thread id.
* Updated MSRV to 1.90.
* Fixed `veecle_os::telemetry::instrument` macro to automatically resolve correct crate paths for the facade.
Expand Down
2 changes: 1 addition & 1 deletion veecle-ipc/src/connector.rs
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ impl Connector {
/// let connector = veecle_ipc::Connector::connect().await;
///
/// veecle_os::telemetry::collector::set_exporter(
/// veecle_os::telemetry::protocol::ExecutionId::random(&mut rand::rng()),
/// veecle_os::telemetry::collector::ProcessId::random(&mut rand::rng()),
/// Box::leak(Box::new(connector.exporter())),
/// )?;
/// # Ok::<(), Box<dyn std::error::Error>>(())
Expand Down
17 changes: 6 additions & 11 deletions veecle-ipc/src/telemetry.rs
Original file line number Diff line number Diff line change
Expand Up @@ -34,26 +34,25 @@ mod tests {
use tokio::sync::mpsc;
use veecle_telemetry::collector::Export;
use veecle_telemetry::protocol::{
ExecutionId, InstanceMessage, LogMessage, Severity, TelemetryMessage,
InstanceMessage, LogMessage, ProcessId, Severity, TelemetryMessage, ThreadId,
};
use veecle_telemetry::{SpanId, TraceId};

use super::Exporter;

const THREAD_ID: ThreadId = ThreadId::from_raw(ProcessId::from_raw(123), 456);

#[tokio::test]
async fn test_export_telemetry_message() {
let (sender, mut receiver) = mpsc::channel(1);
let exporter = Exporter::new(sender);

let test_message = InstanceMessage {
execution: ExecutionId::from_raw(123),
thread: THREAD_ID,
message: TelemetryMessage::Log(LogMessage {
time_unix_nano: 1000000000,
severity: Severity::Info,
body: "test log message".into(),
attributes: Default::default(),
trace_id: Some(TraceId(0x1234)),
span_id: Some(SpanId(0x5678)),
}),
};

Expand All @@ -62,14 +61,12 @@ mod tests {
let received = receiver.recv().await.expect("should receive message");
match received {
veecle_ipc_protocol::Message::Telemetry(message) => {
assert_eq!(*message.execution, 123);
assert_eq!(message.thread, THREAD_ID);
match message.message {
TelemetryMessage::Log(message) => {
assert_eq!(message.time_unix_nano, 1000000000);
assert_eq!(message.severity, Severity::Info);
assert_eq!(message.body.as_ref(), "test log message");
assert_eq!(message.trace_id, Some(TraceId(0x1234)));
assert_eq!(message.span_id, Some(SpanId(0x5678)));
}
_ => panic!("Expected Log message"),
}
Expand All @@ -86,14 +83,12 @@ mod tests {
drop(receiver);

let test_message = InstanceMessage {
execution: ExecutionId::from_raw(456),
thread: THREAD_ID,
message: TelemetryMessage::Log(LogMessage {
time_unix_nano: 2000000000,
severity: Severity::Error,
body: "error log message".into(),
attributes: Default::default(),
trace_id: Some(TraceId(0xabcd)),
span_id: Some(SpanId(0xef01)),
}),
};

Expand Down
2 changes: 1 addition & 1 deletion veecle-os-examples/embassy-std/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ async fn run() {
#[embassy_executor::main]
async fn main(spawner: Spawner) {
veecle_os::telemetry::collector::set_exporter(
veecle_os::telemetry::protocol::ExecutionId::random(&mut rand::rng()),
veecle_os::telemetry::collector::ProcessId::random(&mut rand::rng()),
&veecle_os::telemetry::collector::ConsoleJsonExporter,
)
.unwrap();
Expand Down
2 changes: 1 addition & 1 deletion veecle-os-examples/freertos-linux/src/bin/alloc.rs
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ async fn alloc_stat_actor() -> Infallible {

pub fn main() -> ! {
veecle_os::telemetry::collector::set_exporter(
veecle_os::telemetry::protocol::ExecutionId::random(&mut rand::rng()),
veecle_os::telemetry::collector::ProcessId::random(&mut rand::rng()),
&veecle_os::telemetry::collector::ConsoleJsonExporter,
)
.unwrap();
Expand Down
2 changes: 1 addition & 1 deletion veecle-os-examples/freertos-linux/src/bin/queues.rs
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ async fn queue_actor(

fn main() {
veecle_os::telemetry::collector::set_exporter(
veecle_os::telemetry::protocol::ExecutionId::random(&mut rand::rng()),
veecle_os::telemetry::collector::ProcessId::random(&mut rand::rng()),
&veecle_os::telemetry::collector::ConsoleJsonExporter,
)
.unwrap();
Expand Down
2 changes: 1 addition & 1 deletion veecle-os-examples/freertos-linux/src/bin/time.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ static GLOBAL: FreeRtosAllocator = unsafe { FreeRtosAllocator::new() };
/// An example of using the time abstraction within a FreeRTOS task.
pub fn main() -> ! {
veecle_os::telemetry::collector::set_exporter(
veecle_os::telemetry::protocol::ExecutionId::random(&mut rand::rng()),
veecle_os::telemetry::collector::ProcessId::random(&mut rand::rng()),
&veecle_os::telemetry::collector::ConsoleJsonExporter,
)
.unwrap();
Expand Down
2 changes: 1 addition & 1 deletion veecle-os-examples/orchestrator-ipc/src/bin/ping.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ async fn main() {
let connector = veecle_ipc::Connector::connect().await;

veecle_os::telemetry::collector::set_exporter(
veecle_os::telemetry::protocol::ExecutionId::random(&mut rand::rng()),
veecle_os::telemetry::collector::ProcessId::random(&mut rand::rng()),
Box::leak(Box::new(connector.exporter())),
)
.unwrap();
Expand Down
2 changes: 1 addition & 1 deletion veecle-os-examples/orchestrator-ipc/src/bin/pong.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ async fn main() {
let connector = veecle_ipc::Connector::connect().await;

veecle_os::telemetry::collector::set_exporter(
veecle_os::telemetry::protocol::ExecutionId::random(&mut rand::rng()),
veecle_os::telemetry::collector::ProcessId::random(&mut rand::rng()),
Box::leak(Box::new(connector.exporter())),
)
.unwrap();
Expand Down
2 changes: 1 addition & 1 deletion veecle-os-examples/orchestrator-ipc/src/bin/trace.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ async fn main() {
let connector = veecle_ipc::Connector::connect().await;

veecle_os::telemetry::collector::set_exporter(
veecle_os::telemetry::protocol::ExecutionId::random(&mut rand::rng()),
veecle_os::telemetry::collector::ProcessId::random(&mut rand::rng()),
Box::leak(Box::new(connector.exporter())),
)
.unwrap();
Expand Down
2 changes: 1 addition & 1 deletion veecle-osal-std-macros/src/main_impl.rs
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ fn impl_main(
quote!(
// Initialize `veecle-telemetry` with a random execution ID and console JSON exporter.
#veecle_telemetry_path::collector::set_exporter(
#veecle_telemetry_path::protocol::ExecutionId::random(
#veecle_telemetry_path::collector::ProcessId::random(
&mut #veecle_osal_std_path::reexports::rand::rng(),
),
&#veecle_telemetry_path::collector::ConsoleJsonExporter
Expand Down
7 changes: 3 additions & 4 deletions veecle-telemetry-ui/examples/continuous.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,7 @@ use std::convert::Infallible;

use veecle_os_runtime::{Reader, Writer};
use veecle_osal_std::time::{Duration, Time, TimeAbstraction};
use veecle_telemetry::collector::ConsoleJsonExporter;
use veecle_telemetry::protocol::ExecutionId;
use veecle_telemetry::collector::{ConsoleJsonExporter, ProcessId};

use crate::common::{ConcreteTraceActor, Ping, Pong, PongActor, ping_loop};

Expand All @@ -34,8 +33,8 @@ async fn ping_actor(

#[veecle_osal_std::main]
async fn main() {
let execution_id = ExecutionId::random(&mut rand::rng());
veecle_telemetry::collector::set_exporter(execution_id, &ConsoleJsonExporter)
let process_id = ProcessId::random(&mut rand::rng());
veecle_telemetry::collector::set_exporter(process_id, &ConsoleJsonExporter)
.expect("exporter was not set yet");

veecle_os_runtime::execute! {
Expand Down
7 changes: 3 additions & 4 deletions veecle-telemetry-ui/examples/remote.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,7 @@
use std::convert::Infallible;

use veecle_os_runtime::{Reader, Writer};
use veecle_telemetry::collector::ConsoleJsonExporter;
use veecle_telemetry::protocol::ExecutionId;
use veecle_telemetry::collector::{ConsoleJsonExporter, ProcessId};

use crate::common::{ConcreteTraceActor, Ping, Pong, PongActor, ping_loop};

Expand All @@ -34,8 +33,8 @@ pub async fn ping_actor(mut ping: Writer<'_, Ping>, mut pong: Reader<'_, Pong>)

#[veecle_osal_std::main]
async fn main() {
let execution_id = ExecutionId::random(&mut rand::rng());
veecle_telemetry::collector::set_exporter(execution_id, &ConsoleJsonExporter)
let process_id = ProcessId::random(&mut rand::rng());
veecle_telemetry::collector::set_exporter(process_id, &ConsoleJsonExporter)
.expect("exporter was not set yet");

veecle_os_runtime::execute! {
Expand Down
Loading
Loading