Example #1
0
        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();
        }
Example #2
0
        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]);
        }
Example #3
0
        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]);
        }
Example #4
0
        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();
            }
        }