コード例 #1
0
            public void sends_multiple_metrics_at_once()
            {
                var metric1 = new Counting()
                {
                    Name = "testMetric", ValueAsInt = 5
                };
                var metric2 = new Timing()
                {
                    Name = "testtimer", ValueAsInt = 10
                };

                var sender = new BatchSender();

                sender.StatsdUDP = _udp;
                sender.Send(metric1);
                sender.Send(metric2);
                sender.Flush();

                IList <object[]> argsPerCall = _udp.GetArgumentsForCallsMadeOn(x => x.Send(Arg <string> .Is.Anything));

                Assert.That(argsPerCall.Count, Is.EqualTo(1));
                var packet = (string)argsPerCall[0][0];
                var lines  = packet.Split('\n');

                Assert.That(lines.Length, Is.EqualTo(2));
                Assert.That(lines[0], Is.EqualTo(metric1.Command));
                Assert.That(lines[1], Is.EqualTo(metric2.Command));
            }
コード例 #2
0
            public void does_not_send_metric_immediately()
            {
                var metric = new Counting()
                {
                    Name = "testMetric", ValueAsInt = 5
                };
                var sender = new BatchSender();

                sender.StatsdUDP = _udp;
                sender.Send(metric);

                _udp.AssertWasNotCalled(x => x.Send(Arg <string> .Is.Anything));
            }
コード例 #3
0
            public void does_not_blow_up_if_metric_command_throws()
            {
                var metric = MockRepository.GenerateStub <Counting>();

                metric.Stub(x => x.Command).Throw(new Exception());

                var sender = new BatchSender();

                sender.StatsdUDP = _udp;
                sender.Send(metric);
                sender.Flush();
                Assert.Pass();
            }
コード例 #4
0
            protected internal override void Process(object batch, BatchSender sender)
            {
                try
                {
                    Thread.Sleep(ProcessingTime);
                }
                catch (InterruptedException e)
                {
                    throw new Exception(e);
                }

                if (!EndOfLine)
                {
                    sender.Send(batch);
                }
            }
コード例 #5
0
            public void does_not_blow_up_if_udp_send_throws()
            {
                var udpStub = MockRepository.GenerateStub <IStatsdUDP>();

                udpStub.Stub(x => x.Send(Arg <string> .Is.Anything)).Throw(new Exception());
                var metric = new Counting()
                {
                    Name = "testMetric", ValueAsInt = 1
                };
                var sender = new BatchSender();

                sender.StatsdUDP = udpStub;
                sender.Send(metric);
                sender.Flush();
                Assert.Pass();
            }
コード例 #6
0
            public void sends_metric_on_flush()
            {
                var metric = new Counting()
                {
                    Name = "testMetric", ValueAsInt = 5
                };
                var sender = new BatchSender();

                sender.StatsdUDP = _udp;
                sender.Send(metric);
                sender.Flush();

                IList <object[]> argsPerCall = _udp.GetArgumentsForCallsMadeOn(x => x.Send(Arg <string> .Is.Anything));

                Assert.That(argsPerCall.Count, Is.EqualTo(1));
                Assert.That(((string)argsPerCall[0][0]), Is.EqualTo(metric.Command));
            }
コード例 #7
0
ファイル: EncodeGroupsStep.cs プロジェクト: Neo4Net/Neo4Net
        protected internal override void Process(RelationshipGroupRecord[] batch, BatchSender sender)
        {
            int groupStartIndex = 0;

            for (int i = 0; i < batch.Length; i++)
            {
                RelationshipGroupRecord group = batch[i];

                // The iterator over the groups will not produce real next pointers, they are instead
                // a count meaning how many groups come after it. This encoder will set the real group ids.
                long count       = group.Next;
                bool lastInChain = count == 0;

                group.Id = _nextId == -1 ? _nextId = _store.nextId() : _nextId;
                if (!lastInChain)
                {
                    group.Next = _nextId = _store.nextId();
                }
                else
                {
                    group.Next = _nextId = -1;

                    // OK so this group is the last in this chain, which means all the groups in this chain
                    // are now fully populated. We can now prepare these groups so that their potential
                    // secondary units ends up very close by.
                    for (int j = groupStartIndex; j <= i; j++)
                    {
                        _store.prepareForCommit(batch[j]);
                    }

                    groupStartIndex = i + 1;
                }
            }
            Debug.Assert(groupStartIndex == batch.Length);

            sender.Send(batch);
        }
コード例 #8
0
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#:
//ORIGINAL LINE: protected void process(System.Nullable<long> batch, BatchSender sender) throws Throwable
                protected internal override void process(long?batch, BatchSender sender)
                {
                    Thread.Sleep(0, ThreadLocalRandom.current().Next(100_000));
                    sender.Send(batch);
                }