public void Test_ReceiveUpsEvent_FromSubscription()
        {
            var pause = new ManualResetEvent(false);

            var testFilePath = "TestData/apcupsd.events.test";

            File.Copy("TestData/apcupsd.events", testFilePath, true);
            var listener = new ApcupsdEventListener();

            var messagesReceived = 0;

            listener.UpsEventReceived += (sender, args) =>
            {
                messagesReceived++;
                Assert.AreEqual(1, args.Events.Length);
                Assert.AreEqual(DateTime.Parse("2020-05-11 00:14:59 +0100"), args.Events[0].Timestamp);
                Assert.AreEqual("Power is back. UPS running on mains.", args.Events[0].Message);
                pause.Set();
            };
            listener.SubscribeToEventsFile(testFilePath);
            File.AppendAllLines(testFilePath, new List <string>()
            {
                "2020-05-11 00:14:59 +0100  Power is back. UPS running on mains."
            });

            Assert.True(pause.WaitOne(500));
            Assert.AreEqual(1, messagesReceived);

            listener.UnsubscribeFromEventsFile();
        }
Ejemplo n.º 2
0
        static async Task Main(string[] args)
        {
            var client = new ApcupsdClient("10.1.200.10");

            // Get status via NIS
            Console.WriteLine("UPS Status");
            Console.WriteLine("----------");
            var resp = client.GetStatus();

            Console.WriteLine(resp);

            // Get events via NIS
            Console.WriteLine("UPS Events");
            Console.WriteLine("----------");
            var events = client.GetEvents();

            foreach (var evt in events)
            {
                Console.WriteLine(evt);
            }

            // Get events from file
            events = client.GetEventsFromFile();
            foreach (var evt in events)
            {
                Console.WriteLine(evt);
            }

            // Subscribe to event file
            var listener = new ApcupsdEventListener();

            listener.UpsEventReceived += (sender, args) =>
            {
                // args contains an array of UpsEvent.
                foreach (var evt in args.Events)
                {
                    Console.WriteLine($"Received: {evt.Timestamp.ToString()} {evt.Message}");
                }
            };

            // This should match the EVENTSFILE key in the apcupsd.conf.
            listener.SubscribeToEventsFile();

            Thread.Sleep(10000);
            listener.UnsubscribeFromEventsFile();
        }