| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- using System.Diagnostics;
- using Quadarax.Foundation.Core.Logging;
- using Quadarax.Foundation.Core.QMonitor;
- using Quadarax.Foundation.Core.QMonitor.Emit.TestStructures;
- namespace Quadarax.Foundation.Core.QMonitor.Emit // Note: actual namespace depends on the project name.
- {
- internal class Program
- {
- private static Random _rnd = new Random();
- static void Main(string[] args)
- {
- Console.WriteLine("qmonlib.emit * qmon random activity generator");
- Console.WriteLine("usage: qmonlib.emit <instance_name>");
- var instanceIdentifier = args.Length > 0 ? args[0] : "test";
- using (var qmonClient = new QMonClient(instanceIdentifier, QMonClientConfiuration.CreateDefault(), new ConsoleLogger()))
- {
- var ctx = new Context
- {
- Client = qmonClient,
- Status = new ServiceStatus(ServiceStatus.StatusEnum.Online, DateTime.Now),
- AvailableUsers = CreateAvailableUsers()
- };
- var tmStatus = new Timer(OnServiceStatusTimer, ctx, TimeSpan.Zero, TimeSpan.FromSeconds(5));
- var tmProcesses = new Timer(OnProcessesTimer, ctx, TimeSpan.Zero, TimeSpan.FromSeconds(2));
- var tmUsers = new Timer(OnUsersTimer, ctx, TimeSpan.Zero, TimeSpan.FromSeconds(2));
- Console.WriteLine("Press any key to stop...");
- Console.ReadKey();
- tmStatus.Dispose();
- tmProcesses.Dispose();
- tmUsers.Dispose();
- Console.WriteLine("Stopped.");
- }
- }
- private static void OnUsersTimer(object? state)
- {
- Console.WriteLine("* OnUsersTimer");
- if (state == null) return;
- var ctx = (Context)state;
- foreach (var user in ctx.AvailableUsers)
- {
- var randomBool = _rnd.Next(2) == 1;
- if (randomBool)
- ctx.Client.Notify(user);
- }
- }
- private static void OnProcessesTimer(object? state)
- {
- Console.WriteLine("* OnProcessesTimer");
- if (state == null) return;
- var ctx = (Context)state;
- var processes = Process.GetProcesses();
- foreach (var process in processes)
- {
- if (process.Id == 0 || process.Id == 4) continue; // skip system idle process (it's not real process
- var ntfProcess = new ProcessItem()
- {
- Id = process.Id,
- Name = process.ProcessName,
- Status = process.Responding ? "Running" : "Not Responding",
- Path = process.ProcessName + ".exe"
- };
- ctx.Client.Notify(ntfProcess);
- }
- }
- private static void OnServiceStatusTimer(object? state)
- {
- Console.WriteLine("* OnServiceStatusTimer");
- if (state == null) return;
- var ctx = (Context)state;
- var randomBool = _rnd.Next(2) == 1;
- if (randomBool)
- {
- if (ctx.Status.Status == ServiceStatus.StatusEnum.Offline)
- {
- ctx.Status.Status = ServiceStatus.StatusEnum.Online;
- ctx.Status.Started = DateTime.Now;
- }
- }
- else
- {
- ctx.Status.Status = ServiceStatus.StatusEnum.Offline;
- }
- ctx.Client.Notify(ctx.Status);
- }
- public static LoggedUser[] CreateAvailableUsers()
- {
- return new[]
- {
- new LoggedUser() { Id = 1, FirstName = "Karel", LastName = "Gott", Login = "karel.gott" },
- new LoggedUser() { Id = 2, FirstName = "Vasil", LastName = "Bilak", Login = "vasko32" },
- new LoggedUser() { Id = 3, FirstName = "Alois", LastName = "Šoule", Login = "alois.soule" },
- new LoggedUser() { Id = 4, FirstName = "Květoslav", LastName = "Pytlík", Login = "kvetak55" },
- new LoggedUser() { Id = 5, FirstName = "Jindra", LastName = "Kedlub", Login = "kedlubna" },
- new LoggedUser() { Id = 6, FirstName = "Vlasta", LastName = "Henych", Login = "retard" },
- new LoggedUser() { Id = 7, FirstName = "Petr", LastName = "Volavka", Login = "petro.vol" },
- new LoggedUser() { Id = 8, FirstName = "Jan", LastName = "Prášil", Login = "jenda45" },
- new LoggedUser() { Id = 9, FirstName = "Donald", LastName = "Paprika", Login = "spicy.leco" },
- new LoggedUser() { Id = 10, FirstName = "Mustafa", LastName = "Novák", Login = "vlastenec48" },
- };
- }
- public class Context
- {
- public QMonClient Client { get; set; }
- public ServiceStatus Status { get; set; }
- public LoggedUser[] AvailableUsers { get; set; }
- }
- }
- }
|