Example #1
0
        public void TestOffset()
        {
            var ev         = new ManualResetEvent(false);
            var connection = new Mock <IConnection>();

            connection.Setup(c => c.SendAsync(It.IsAny <int>(), It.IsAny <ReusableMemoryStream>(), It.IsAny <bool>()))
            .Returns(Success)
            .Callback(() => ev.Set());
            connection.Setup(c => c.ConnectAsync()).Returns(Success);
            var serializer = new Mock <Node.ISerialization>();
            var node       =
                new Node("Node", () => connection.Object, serializer.Object,
                         new Configuration {
                TaskScheduler = new CurrentThreadTaskScheduler(), ConsumeBatchSize = 1
            }, 1);
            var message = new OffsetMessage {
                Topic = "balbuzzard", Partition = 1, MaxNumberOfOffsets = 1, Time = 12341
            };

            node.Offset(message);
            ev.WaitOne();
            serializer.Verify(
                s => s.SerializeOffsetBatch(It.IsAny <int>(), It.IsAny <IEnumerable <IGrouping <string, OffsetMessage> > >()),
                Times.Once());
            serializer.Verify(
                s => s.SerializeOffsetBatch(It.IsAny <int>(), It.Is <IEnumerable <IGrouping <string, OffsetMessage> > >(
                                                msgs => msgs.Count() == 1 && msgs.First().Key == message.Topic && msgs.First().First().Equals(message))));
            connection.Verify(c => c.SendAsync(It.IsAny <int>(), It.IsAny <ReusableMemoryStream>(), It.IsAny <bool>()), Times.Once());
        }
Example #2
0
        private void bNudgeDown_Click(object sender, System.EventArgs e)
        {
            TheBox.BoxServer.OffsetMessage msg = new OffsetMessage();

            msg.ZOffset = -(int)numNudge.Value;

            Pandora.BoxConnection.SendToServer(msg);
        }
Example #3
0
        private void bNudgeUp_Click(object sender, EventArgs e)
        {
            var msg = new OffsetMessage();

            msg.ZOffset = (int)numNudge.Value;

            Pandora.BoxConnection.SendToServer(msg);
        }
Example #4
0
        private void dMover_OnDecoMove(int xOffset, int yOffset)
        {
            TheBox.BoxServer.OffsetMessage msg = new OffsetMessage();

            msg.XOffset = xOffset;
            msg.YOffset = yOffset;

            Pandora.BoxConnection.SendToServer(msg);
        }
Example #5
0
        public void TestOffsetTimeout()
        {
            // Prepare
            var serializer = new Mock <Node.ISerialization>();
            var connection = new Mock <IConnection>();
            var node       = new Node("Node", () => connection.Object, serializer.Object,
                                      new Configuration {
                TaskScheduler = new CurrentThreadTaskScheduler(), ConsumeBatchSize = 1, ClientRequestTimeoutMs = 2
            },
                                      new TimeoutScheduler(3), 1);
            var ev = new ManualResetEvent(false);

            connection.Setup(c => c.SendAsync(It.IsAny <int>(), It.IsAny <ReusableMemoryStream>(), It.IsAny <bool>()))
            .Returns(Success);
            connection.Setup(c => c.ConnectAsync()).Returns(Success);
            var message = new OffsetMessage {
                Topic = "balbuzzard", Partition = 1, MaxNumberOfOffsets = 1, Time = 12341
            };

            node.Offset(message);

            var acknowledgement = new CommonAcknowledgement <CommonResponse <OffsetPartitionResponse> >();

            node.OffsetAcknowledgement += (n, ack) =>
            {
                acknowledgement = ack;
                Assert.AreSame(node, n);
                ev.Set();
            };
            var exception = new Exception();

            node.ConnectionError += (n, e) =>
            {
                exception = e;
            };

            node.Offset(message);
            ev.WaitOne();

            // Checks
            Assert.IsInstanceOf <TimeoutException>(exception);
            Assert.AreNotEqual(default(DateTime), acknowledgement.ReceivedDate);
            Assert.AreEqual(1, acknowledgement.Response.TopicsResponse.Length);
            Assert.AreEqual("balbuzzard", acknowledgement.Response.TopicsResponse[0].TopicName);
            Assert.AreEqual(1, acknowledgement.Response.TopicsResponse[0].PartitionsData.Count());
            var fetch = acknowledgement.Response.TopicsResponse[0].PartitionsData.First();

            Assert.AreEqual(ErrorCode.LocalError, fetch.ErrorCode);
            Assert.AreEqual(1, fetch.Partition);
            Assert.AreEqual(0, fetch.Offsets.Length);
        }
Example #6
0
 public bool Offset(OffsetMessage message)
 {
     throw new NotImplementedException();
 }
Example #7
0
        public void TestOffsetWithDecodeError()
        {
            // Prepare
            var serializer = new Mock <Node.ISerialization>();
            var connection = new Mock <IConnection>();
            var node       = new Node("Node", () => connection.Object, serializer.Object,
                                      new Configuration {
                TaskScheduler = new CurrentThreadTaskScheduler(), ConsumeBatchSize = 1
            }, 1);
            var ev    = new ManualResetEvent(false);
            var corrs = new Queue <int>();

            connection.Setup(c => c.SendAsync(It.IsAny <int>(), It.IsAny <ReusableMemoryStream>(), It.IsAny <bool>()))
            .Returns((int c, ReusableMemoryStream d, bool a) =>
            {
                corrs.Enqueue(c);
                return(Success);
            })
            .Callback(() => ev.Set());
            connection.Setup(c => c.ConnectAsync()).Returns(Success);
            var message = new OffsetMessage {
                Topic = "balbuzzard", Partition = 1, MaxNumberOfOffsets = 1, Time = 12341
            };

            node.Offset(message);
            ev.WaitOne();
            Assert.AreEqual(1, corrs.Count);
            int corr = corrs.Dequeue();

            node.ResponseReceived += (n, l) =>
            {
                Assert.AreSame(node, n);
            };
            var acknowledgement = new CommonAcknowledgement <CommonResponse <OffsetPartitionResponse> >();

            node.OffsetAcknowledgement += (n, ack) =>
            {
                acknowledgement = ack;
                Assert.AreSame(node, n);
            };
            int decodeError = 0;

            node.DecodeError += (n, e) => ++ decodeError;

            serializer.Setup(s => s.DeserializeCommonResponse <OffsetPartitionResponse>(corr, It.IsAny <ReusableMemoryStream>(), It.IsAny <Basics.ApiVersion>()))
            .Throws(new Exception());

            // Now send a response
            connection.Raise(c => c.Response += null, connection.Object, corr, new ReusableMemoryStream(null));

            // Checks
            Assert.AreEqual(1, decodeError);
            Assert.AreNotEqual(default(DateTime), acknowledgement.ReceivedDate);
            Assert.AreEqual(1, acknowledgement.Response.TopicsResponse.Length);
            Assert.AreEqual("balbuzzard", acknowledgement.Response.TopicsResponse[0].TopicName);
            Assert.AreEqual(1, acknowledgement.Response.TopicsResponse[0].PartitionsData.Count());
            var fetch = acknowledgement.Response.TopicsResponse[0].PartitionsData.First();

            Assert.AreEqual(ErrorCode.LocalError, fetch.ErrorCode);
            Assert.AreEqual(1, fetch.Partition);
            Assert.AreEqual(0, fetch.Offsets.Length);
        }
Example #8
0
        // Stores a OffsetMessage in the fsuipc Offset List.
        public void AddOffset(OffsetMessage o)
        {
            string offsetvalue = "";

            try
            {
                if (o.offset > 0)
                {
                    offsetvalue = o.offset.ToString();
                }
                else
                {
                    // invalid offset
                }
            }
            catch (Exception ex)
            {
                // invalid offset
            }



            string offsetname = o.offsetname.IsNullOrEmpty() ? o.offset.ToString() : o.offsetname;
            string panelname  = o.panel.IsNullOrEmpty() ? "GLOBAL" : o.panel;
            string convert    = o.convert.IsNullOrEmpty() ? "" : o.convert;

            // creates the right Offset Object and stores it in fuipcoffsets with key offset

            Object ob = new Object();

            switch (o.type.ToLower())
            {
            case "int":
                fuipcoffsets.Add(offsetvalue, new OffsetItem("int", convert, new Offset <int>(o.offset)));
                break;

            case "byte":
                fuipcoffsets.Add(offsetvalue, new OffsetItem("byte", convert, new Offset <byte>(o.offset)));
                break;

            case "bitarray":
                fuipcoffsets.Add(offsetvalue, new OffsetItem("bitarray", convert, new Offset <System.Collections.BitArray>(o.offset, 2)));
                break;

            case "double":
                fuipcoffsets.Add(offsetvalue, new OffsetItem("double", convert, new Offset <double>(o.offset)));
                break;

            case "long":
                fuipcoffsets.Add(offsetvalue, new OffsetItem("long", convert, new Offset <long>(o.offset)));
                break;

            case "short":
                fuipcoffsets.Add(offsetvalue, new OffsetItem("short", convert, new Offset <short>(o.offset)));
                break;
            }

            // Stores name of the offset as key and panelname
            fuipcpanels.Add(offsetname, panelname);
            // stores offsetname as key and offsetvalue to lookup in fuipcoffsets
            fuipcoffsetnames.Add(offsetname, offsetvalue);
        }