From 33c5e689caa9842aa29dac915b4f8d83564cee0c Mon Sep 17 00:00:00 2001 From: Roy Ben Shabat Date: Thu, 21 Aug 2025 14:36:42 +0300 Subject: Telemetry JobStatus --- .../Tango.Telemetry.Tester.IOT.CLI/Program.cs | 105 +++++++++++++++++++-- 1 file changed, 98 insertions(+), 7 deletions(-) (limited to 'Software/Visual_Studio/Utilities') diff --git a/Software/Visual_Studio/Utilities/Tango.Telemetry.Tester.IOT.CLI/Program.cs b/Software/Visual_Studio/Utilities/Tango.Telemetry.Tester.IOT.CLI/Program.cs index 1b02b9066..945fe5f1f 100644 --- a/Software/Visual_Studio/Utilities/Tango.Telemetry.Tester.IOT.CLI/Program.cs +++ b/Software/Visual_Studio/Utilities/Tango.Telemetry.Tester.IOT.CLI/Program.cs @@ -14,6 +14,7 @@ using System.Data.Entity; using Tango.BL.Entities; using Tango.Insights; using System.Threading; +using Tango.PMR.MachineStatus; namespace Tango.Telemetry.Tester.IOT.CLI { @@ -29,7 +30,7 @@ namespace Tango.Telemetry.Tester.IOT.CLI TelemetryPublisher publisher = new TelemetryPublisher(new TelemetryPublisherConfiguration() { Environment = "PROD", - SerialNumber = "dev-machine", + SerialNumber = "ROY_X1", Organization = "Twine", MachineType = MachineTypes.TS1800, HistorySourcesRequestInterval = TimeSpan.FromSeconds(1), @@ -42,8 +43,16 @@ namespace Tango.Telemetry.Tester.IOT.CLI //publisher.RegisterSource(new JobRunsTestSource()); //publisher.RegisterSource(new DiagnosticsTestSource()); publisher.RegisterSource(new EventsTestSource()); - //publisher.RegisterDestination(new TelemetryAzureHubDestination("HostName=iot-twine-dev-weu.azure-devices.net;DeviceId=telemetry-dev-01;SharedAccessKey=cZhCMhiVL+TF7p13fpX+lFmyxoy8ZqCkbxUwumWw18Q=")); - publisher.RegisterDestination(new TelemetryMqttDestination("Telemetry MQTT")); + publisher.RegisterSource(new MachineStatusTestSource()); + + var logsSource = new TelemetryLogsStreamingSource(); + logsSource.Config.Categories.Add(LogCategory.Info); + + publisher.RegisterSource(logsSource); + publisher.RegisterSource(new TelemetryLogsStreamingSource()); + publisher.RegisterSource(new JobStatusTestSource()); + publisher.RegisterDestination(new TelemetryAzureHubDestination("HostName=iot-twine-dev-weu.azure-devices.net;DeviceId=telemetry-dev-01;SharedAccessKey=cZhCMhiVL+TF7p13fpX+lFmyxoy8ZqCkbxUwumWw18Q=")); + //publisher.RegisterDestination(new TelemetryMqttDestination("Telemetry MQTT")); publisher.PublishResultAvailable += Publisher_PublishResultAvailable; publisher.PublishingPackage += Publisher_PublishingPackage; @@ -250,11 +259,9 @@ namespace Tango.Telemetry.Tester.IOT.CLI { Task.Factory.StartNew(() => { - Thread.Sleep(2000); - using (ObservablesContext db = ObservablesContext.CreateDefault()) { - foreach (var evType in db.EventTypes.Take(20).ToList()) + foreach (var evType in db.EventTypes.Take(10).ToList()) { TelemetryEvent ev = new TelemetryEvent(); ev.Description = $"Description of {evType.Description}"; @@ -263,7 +270,7 @@ namespace Tango.Telemetry.Tester.IOT.CLI ev.Time = DateTime.UtcNow; ev.Time = DateTime.SpecifyKind(ev.Time, DateTimeKind.Unspecified); TelemetryAvailable?.Invoke(this, new TelemetryAvailableEventArgs() { TelemetryObject = ev }); - Thread.Sleep(5000); + Thread.Sleep(2000); } } }); @@ -274,4 +281,88 @@ namespace Tango.Telemetry.Tester.IOT.CLI } } + + public class MachineStatusTestSource : ITelemetryStreamingSource + { + public bool IsStarted { get; } + public string Name { get; } = "Machine Status Streaming"; + public bool RequiresTelemetryDuplicationTracking { get; } + + public event EventHandler TelemetryAvailable; + + public void Dispose() + { + + } + + public void Start() + { + Task.Factory.StartNew(() => + { + for (int i = 10; i < 20; i++) + { + TelemetryAvailable?.Invoke(this, new TelemetryAvailableEventArgs() + { + TelemetryObject = new TelemetryMachineStatus() { Status = new MachineStatus() { OverallTemperature = i } }, + }); + + Thread.Sleep(1000); + } + }); + } + + public void Stop() + { + + } + } + + public class JobStatusTestSource : ITelemetryStreamingSource + { + public bool IsStarted { get; } + public string Name { get; } = "Machine Status Streaming"; + public bool RequiresTelemetryDuplicationTracking { get; } + + public event EventHandler TelemetryAvailable; + + public void Dispose() + { + + } + + public void Start() + { + String groupID = Guid.NewGuid().ToString(); + + Task.Factory.StartNew(() => + { + for (int i = 0; i < 22; i++) + { + TelemetryAvailable?.Invoke(this, new TelemetryAvailableEventArgs() + { + DisableDeliveryRetries = true, + TelemetryObject = new TelemetryJobStatus() + { + JobName = "Test Job", + ID = groupID, + Status = i == 0 ? TelemetryJobStatus.JobStatus.InProgress : TelemetryJobStatus.JobStatus.Completed, + TotalProgress = 21, + Progress = i, + RemainingTime = TimeSpan.FromSeconds(22 - i), + Message = $"Job status message {i}..." + }, + }); + + LogManager.Default.Log($"Job Progress Updated {i}/22..."); + + Thread.Sleep(1000); + } + }); + } + + public void Stop() + { + + } + } } -- cgit v1.3.1