Пример #1
0
        public void MakeConnection()
        {
            String uri = "tcp://localhost:4010";

            MainPerfClient client = new MainPerfClient();

            server = PerfHelper.NewServer(uri, null, client);

            server._StartAndWaitUp(4000);
        }
Пример #2
0
        ///<summary>Main for PerfListener.</summary>
        ///<param name="args">Command Line Arguments</param>
        public static void Main(String[] args)
        {
            const string uri = "tcp://localhost:4004";

            ServerFactory listener = PerfHelper.NewListener(uri, null,
                                                            new MainPerfListener());

            // Start the Listener
            listener.TransportControl(TransportConsts.START_AND_WAIT_UP, 4000);

            Console.WriteLine("ready");
        }
Пример #3
0
        public void StartListener()
        {
            String uri = "tcp://localhost:4010";

            MainPerfListener implFactory = new MainPerfListener();

            listener = PerfHelper.NewListener(uri, null, implFactory);

            listener.TransportControl(TransportConsts.START_AND_WAIT_UP, 4000);

            Console.WriteLine("Listener Started");
        }
Пример #4
0
        ///<summary>Main for PerfClient</summary>
        ///<param name="args">Command Line Arguments</param>
        public static void Main(String[] args)
        {
            const string uri           = "tcp://localhost:4004";
            bool         startListener = false;
            const int    maxWaitTime   = 4000;

            ServerFactory listener;

            if (startListener)
            {
                listener = PerfHelper.NewListener(uri, null, new MainPerfClient());
                listener.TransportControl(TransportConsts.START_AND_WAIT_UP, maxWaitTime);
            }
            else
            {
                listener = null;
            }

            MainPerfClient implFactory = new MainPerfClient();

            // run a preliminary test

            {
                RemotePerfServer server = PerfHelper.NewServer(uri, null, implFactory);

                // Connect to the service
                server._StartAndWaitUp(maxWaitTime);

                Assertion.Check(server.add(2, 3) == 5, "server.add(2, 3) == 5");

                Assertion.Check(server.add(3, 4) == 7, "server.add( 3, 4 ) == 7");

                Assertion.Check(server.sum(new int[] { 1, 2, 3 }) == 6,
                                "server.sum( new int[] { 1, 2, 3 } ) == 6");

                Assertion.Check(server.sum(new int[] { 2, 3, 4 }) == 9,
                                "server.sum( new int[] { 2, 3, 4 } ) == 9");

                server.report(18, "starting");

                server.report(19, "stopping");

                Point r = server.dist(new Point(1, 2), new Point(3, 5));
                Assertion.Check(r.x == 2, "r.x == 2");
                Assertion.Check(r.y == 3, "r.y == 3");

                r = server.dist(new Point(10, 9), new Point(4, 5));
                Assertion.Check(r.x == -6, "r.x == -6");
                Assertion.Check(r.y == -4, "r.y == -4");

                DateTime t0  = DateTime.Now;
                long     adj = 3600000L;

                DateTime?t1 = server.add2(t0, adj);
                TimeSpan ts = t1.Value - t0;
                //Console.WriteLine("ts = {0}", ts.Ticks);
                Assertion.Check(IsNearly(ts.Ticks / 10000, adj, 1),
                                String.Format("server.add2( {0}, {1} ) => {2} [bogus!]", t0, adj, t1));

                t1 = server.add2(t0, -adj);
                ts = t1.Value - t0;
                //Console.WriteLine("ts = {0}", ts.Ticks);
                Assertion.Check(IsNearly(ts.Ticks / 10000, -adj, 1),
                                String.Format("server.add2( {0}, {1} ) => {2} [bogus!]", t0, -adj, t1));

                server.report2(DateTime.Now, 20, "begin");

                server.report2(DateTime.Now, 21, "end");

                // Disconnect from the service
                server._StopAndWaitDown(maxWaitTime);
            }

            const int runtime = 60;
            const int trials  = 3;

            //const bool full = false;

            new PerfTest("add", runtime, trials,
                         delegate(long n)
            {
                RemotePerfServer server = PerfHelper.NewServer(uri, null, implFactory);
                server._StartAndWaitUp(maxWaitTime);

                while (n-- > 0)
                {
                    server.add(1000000000, 2000000000);
                }

                server._StopAndWaitDown(maxWaitTime);
            }).Run();

            if (listener != null)
            {
                listener.TransportControl(TransportConsts.STOP_AND_WAIT_DOWN, maxWaitTime);
            }

            Console.WriteLine("done");
        }
Пример #5
0
        public void StartEventListener(IContainer container)
        {
            //var busconnectionEvents = container.ResolveNamed<IBusControl>("Events");
            var eventProcessor = container.Resolve <SensorEventProcessor>();

            var busconnectionCommands = container.ResolveNamed <IBusControl>("Commands");

            ManualResetEvent manualResetEvent = new ManualResetEvent(true);

            //busconnectionEvents.Start();

            using (var consumer = new Consumer <Null, string>(_config, null, new StringDeserializer(Encoding.UTF8)))
            {
                bool cancelled   = false;
                int  eventsCount = 0;
                var  starting    = false;

                var topicStates = new HashSet <string>();

                KafkaTopics.ForEach(a => topicStates.Add(a.ToString()));

                var watch = new Stopwatch();

                var perf = new PerfHelper(_logger);
                perf.Startup();



                consumer.OnMessage += (_, msg) =>
                {
                    //if (!starting)
                    //    _logger.LogInformation($" processing on message during restoring events took : {watchmessageGap.Elapsed}");
                    perf.StartProcessingCounters(msg.Key);
                    watch.Restart();
                    manualResetEvent.Reset();

                    if (!starting)
                    {
                        eventsCount++;
                    }
                    var topicType = KafkaTopics.FirstOrDefault(a => a.ToString() == msg.Topic);
                    if (topicType == default(Type))
                    {
                        throw new Exception("Something went wrong here");
                    }

                    var ev = JsonConvert.DeserializeObject(msg.Value, topicType);

                    //prevent poisonous events Id cannot be default guid!
                    var @event = ev as Event;
                    if (@event != null && @event.Id != Guid.Empty)
                    {
                        eventProcessor.Process((dynamic)@event);
                    }

                    perf.EndProcessingCounters(msg.Key);
                    manualResetEvent.Set();

                    //_logger.LogInformation($" processing {@event.Id} event took : {watch.Elapsed}");
                    //watchmessageGap.Restart();
                };


                consumer.OnPartitionEOF += async(sender, offset) =>
                {
                    if (starting)
                    {
                        return;
                    }

                    topicStates.Remove(offset.Topic);

                    if (topicStates.Count > 0)
                    {
                        return;
                    }

                    _logger.LogInformation($"Finished Restoring state  from topics : {string.Join(",", KafkaTopics)} , {eventsCount} events");
                    perf.Startup();
                    starting = true;

                    var handle = await busconnectionCommands.StartAsync();

                    await handle.Ready;
                    //ITS NOT READY DAMN IT
                    IsReady = true;
                };

                consumer.OnError += (_, error) =>
                {
                    Console.WriteLine($"Error: {error}");
                    cancelled = true;
                };

                consumer.OnPartitionsAssigned += (obj, partitions) =>
                {
                    var fromBeginning =
                        partitions.Select(p => new TopicPartitionOffset(p.Topic, p.Partition, Offset.Beginning))
                        .ToList();
                    consumer.Assign(fromBeginning);
                    _logger.LogInformation($"Begin Restoring state from topics : {string.Join(",", KafkaTopics)} ");
                };


                consumer.Subscribe(KafkaTopics.Select(a => a.ToString()));

                while (!cancelled)
                {
                    manualResetEvent.WaitOne();
                    consumer.Poll(TimeSpan.FromSeconds(1));
                }
            }
        }