Пример #1
0
        public void AddMultipleRecordInMultiplePartitionDifferentDateTest()
        {
            var      grouper = new PartitionGrouper(GetPartitions());
            DateTime dt      = DateTime.Now;

            grouper.AddRecord(topicPart1, MakeMessageWithKey("key", "1", dt.AddMilliseconds(1)));
            grouper.AddRecord(topicPart2, MakeMessageWithKey("key", "2", dt));
            grouper.AddRecord(topicPart1, MakeMessageWithKey("key", "3", dt.AddMilliseconds(-13)));
            Assert.IsTrue(grouper.AllPartitionsBuffered);
            Assert.AreEqual(3, grouper.NumBuffered());
            Assert.AreEqual(2, grouper.NumBuffered(topicPart1));
            Assert.AreEqual(1, grouper.NumBuffered(topicPart2));
            var record = grouper.NextRecord;

            Assert.IsNotNull(record);
            Assert.AreEqual("key", serdes.Deserialize(record.Record.Message.Key, new SerializationContext()));
            Assert.AreEqual("2", serdes.Deserialize(record.Record.Message.Value, new SerializationContext()));
            Assert.AreEqual("source2", record.Processor.Name);
            Assert.IsTrue(record.Queue.IsEmpty);
            record = grouper.NextRecord;
            Assert.IsNotNull(record);
            Assert.AreEqual("key", serdes.Deserialize(record.Record.Message.Key, new SerializationContext()));
            Assert.AreEqual("1", serdes.Deserialize(record.Record.Message.Value, new SerializationContext()));
            Assert.AreEqual("source1", record.Processor.Name);
            Assert.IsFalse(record.Queue.IsEmpty);
            record = grouper.NextRecord;
            Assert.IsNotNull(record);
            Assert.AreEqual("key", serdes.Deserialize(record.Record.Message.Key, new SerializationContext()));
            Assert.AreEqual("3", serdes.Deserialize(record.Record.Message.Value, new SerializationContext()));
            Assert.AreEqual("source1", record.Processor.Name);
            Assert.IsTrue(record.Queue.IsEmpty);
            Assert.IsNull(grouper.NextRecord);
        }
Пример #2
0
        public void AddMultipleRecordInMultiplePartitionTest()
        {
            var grouper = new PartitionGrouper(GetPartitions());

            grouper.AddRecord(topicPart1, MakeMessageWithKey("key", "test"));
            grouper.AddRecord(topicPart2, MakeMessageWithKey("key", "test2"));
            Assert.IsTrue(grouper.AllPartitionsBuffered);
            Assert.AreEqual(2, grouper.NumBuffered());
            Assert.AreEqual(1, grouper.NumBuffered(topicPart1));
            Assert.AreEqual(1, grouper.NumBuffered(topicPart2));
            var record = grouper.NextRecord;

            Assert.IsNotNull(record);
            Assert.AreEqual("key", serdes.Deserialize(record.Record.Message.Key, new SerializationContext()));
            Assert.AreEqual("test", serdes.Deserialize(record.Record.Message.Value, new SerializationContext()));
            Assert.AreEqual("source1", record.Processor.Name);
            Assert.IsTrue(record.Queue.IsEmpty);
            record = grouper.NextRecord;
            Assert.IsNotNull(record);
            Assert.AreEqual("key", serdes.Deserialize(record.Record.Message.Key, new SerializationContext()));
            Assert.AreEqual("test2", serdes.Deserialize(record.Record.Message.Value, new SerializationContext()));
            Assert.AreEqual("source2", record.Processor.Name);
            Assert.IsTrue(record.Queue.IsEmpty);
            Assert.IsNull(grouper.NextRecord);
        }
Пример #3
0
        public void AddOneRecordTest()
        {
            var grouper = new PartitionGrouper(GetPartitions());

            grouper.AddRecord(topicPart1, MakeMessageWithKey("key", "test"));
            Assert.IsFalse(grouper.AllPartitionsBuffered);
            Assert.AreEqual(1, grouper.NumBuffered());
            Assert.AreEqual(1, grouper.NumBuffered(topicPart1));
        }
Пример #4
0
        public override bool CanProcess(long now)
        {
            if (partitionGrouper.AllPartitionsBuffered)
            {
                idleStartTime = -1;
                return(true);
            }
            else if (partitionGrouper.NumBuffered() > 0)
            {
                if (idleStartTime == -1)
                {
                    idleStartTime = now;
                }

                if (now - idleStartTime >= maxTaskIdleMs)
                {
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
            else
            {
                idleStartTime = -1;
                return(false);
            }
        }
Пример #5
0
        public void AddOneRecordErrorTest()
        {
            var grouper = new PartitionGrouper(new Dictionary <TopicPartition, RecordQueue>());

            Assert.Throws <IllegalStateException>(() => grouper.AddRecord(topicPart1, MakeMessageWithKey("key", "test")));
            Assert.Throws <IllegalStateException>(() => grouper.NumBuffered(topicPart1));
        }
Пример #6
0
        public override bool CanProcess(long now)
        {
            if (state == TaskState.CLOSED || state == TaskState.RESTORING || state == TaskState.CREATED)
            {
                return(false);
            }

            if (partitionGrouper.AllPartitionsBuffered)
            {
                idleStartTime = -1;
                return(true);
            }
            else if (partitionGrouper.NumBuffered() > 0)
            {
                if (idleStartTime == -1)
                {
                    idleStartTime = now;
                }

                if (now - idleStartTime >= maxTaskIdleMs)
                {
                    enforcedProcessingSensor.Record();
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
            else
            {
                idleStartTime = -1;
                return(false);
            }
        }