static void Main(string[] args) { var canceller = new CancellationTokenSource(); Console.WriteLine("Janitor starting"); var worker = new JanitorCore(); Console.WriteLine("created instance"); Task.Factory.StartNew(worker.Worker.Work, canceller.Token, TaskCreationOptions.LongRunning, TaskScheduler.Default); Console.ReadKey(); Console.WriteLine("shutting down..."); canceller.Cancel(); }
public void TestReplay() { var janitor = new JanitorCore { DataProvider = new DummyJanitorDataProvider() }; var output = new List<byte[]>(); var receptionist = Task.Factory.StartNew(() => { using (var context = ZmqContext.Create()) using (var socket = context.CreateSocket(SocketType.ROUTER)) { socket.Linger = new TimeSpan(250 * TimeSpan.TicksPerMillisecond); socket.Bind(endpoint); socket.ReceiveReady += (sender, args) => { var stuff = args.Socket.ReceiveMessage(); if (!((byte[])stuff[3]).ToUnicodeString().Equals("config")) output.AddRange(stuff.Select(f=> (byte[])f)); }; var poller = new Poller(new[] {socket}); while (output.Count == 0) poller.Poll(); } }, Canceller.Token, TaskCreationOptions.LongRunning, TaskScheduler.Default); var message = janitor.DataProvider.GetOrphanedMessages()[0]; janitor.Replay(message); if (output.Count == 0) Thread.Sleep(50); var stripped = janitor.StripRaw(janitor.DataProvider.GetOrphanedBinaryRequest(message)); var wanted = new List<byte[]>() { message.Target.HexStrToByteArray(), MDP.M_EMPTY, MDP.C_CLIENT_B, message.Service.ToBytes(), }; wanted.AddRange(stripped); Assert.AreEqual(output.Count, wanted.Count); for(int i = 1; i < output.Count; i++) for(int j = 0; j < output[i].Length; j++) Assert.AreEqual(wanted[i][j], output[i][j]); }
public void TestStrip() { var janitor = new JanitorCore { DataProvider = new DummyJanitorDataProvider() }; var message = janitor.DataProvider.GetOrphanedMessages().First(); var raw = janitor.DataProvider.GetOrphanedBinaryRequest(message); var outp = janitor.StripRaw(raw); var desired = new List<byte[]>() { "0x123123".ToBytes(), "toservicea".ToBytes(), MDP.M_EMPTY, new byte[] {0x0, 0x1, 0x2} }; for(int i = 0; i < outp.Count; i++) for (int j = 0; j < outp[i].Length; j++) Assert.AreEqual(desired[i][j], outp[i][j]); }
public void TestCriticalErrorReport() { using (ShimsContext.Create()) { MailMessage mail = null; ShimSmtpClient.AllInstances.SendMailMessage = (client, message) => mail = message; var janitor = new JanitorCore { DataProvider = new DummyJanitorDataProvider() }; janitor.EmailCriticalErrorsPastWeek(); } }