Ejemplo n.º 1
0
        public void DistrictServerBindTest()
        {
            // Arrange
            var district = new DistrictServer("DS1", "", "", TimeSpan.Zero, null);
            var mockRepo = new Mock <IRepository <Record> >();
            var list     = new List <Record>();

            district.Repo = mockRepo.Object;
            var records = new List <Record> {
                new Record {
                    Id = 1, Disease = 0,
                }
            };

            mockRepo.Setup(r => r.Create(It.IsAny <IEnumerable <Record> >()))
            .Returns((IEnumerable <Record> values) =>
            {
                list.AddRange(values);
                return(values);
            });
            var endpoint = "tcp://127.0.0.1:5553";
            var task     = Task.Run(() => district.Start(endpoint));

            Thread.Sleep(300);

            var context = new ZContext();
            var socket  = new ZSocket(ZSocketType.REQ);

            socket.Connect(endpoint);

            var packet = new Packet <List <Record> >
            {
                Payload         = records,
                VectorTimeStamp = new VectorTimeStamp(),
                Sent            = new DateTime(2018, 1, 1)
            };

            packet.VectorTimeStamp.Update(district.SystemRegistration.Id, packet.Sent);
            var json = JsonConvert.SerializeObject(packet);

            // Act
            socket.Send(new ZFrame(json));
            bool receivedResponse = false;

            while (!receivedResponse)
            {
                using (var frame = socket.ReceiveFrame())
                {
                    receivedResponse = true;
                }
            }

            // Assert
            mockRepo.Verify(x => x.Create(It.IsAny <IEnumerable <Record> >()), Times.Once());
            Assert.AreEqual(1, list.Count);
            Assert.IsTrue(new CompareLogic().Compare(records[0], list[0]).AreEqual);
        }
Ejemplo n.º 2
0
        public void ReceiveActionCallsRepoCreate()
        {
            // Arrange
            var district = new DistrictServer("DS1", "", "", TimeSpan.Zero, null);
            var records  = new List <Record> {
                new Record {
                    Id = 1, Disease = 0
                }
            };

            var mockRepo = new Mock <IRepository <Record> >();

            district.Repo = mockRepo.Object;
            mockRepo.Setup(r => r.Create(It.IsAny <IEnumerable <Record> >()))
            .Returns((IEnumerable <Record> values) => { return(values); });

            var mockSocket = new Mock <IReplySocket>();

            district.Socket = mockSocket.Object;
            Packet <List <Record> > responsePacket = null;

            mockSocket.Setup(s => s.SendAsync(It.IsAny <string>())).Callback((string sentJson) => { responsePacket = JsonConvert.DeserializeObject <Packet <List <Record> > >(sentJson); });

            var packet = new Packet <List <Record> >
            {
                Payload         = records,
                VectorTimeStamp = new VectorTimeStamp()
            };

            packet.VectorTimeStamp.Update(district.SystemRegistration.Id, new DateTime(2018, 1, 1));
            var json = JsonConvert.SerializeObject(packet);

            var frame = new ZFrame(json)
            {
                Position = 0
            };

            // Act
            district.ReceiveAction(frame);

            // Assert
            mockRepo.Verify(x => x.Create(It.IsAny <IEnumerable <Record> >()), Times.Once());
            mockSocket.Verify(x => x.SendAsync(It.IsAny <string>()), Times.Once());
        }
Ejemplo n.º 3
0
        public void DistrictServerStart()
        {
            // Arrange
            var district   = new DistrictServer("DS1", "", "", TimeSpan.Zero, null);
            var mockSocket = new Mock <IReplySocket>();

            mockSocket.Setup(s => s.Bind(It.IsAny <string>()));
            district.Socket = mockSocket.Object;

            // Act
            var task = district.StartAsync("", ZSocketType.REP, null);

            Thread.Sleep(200);
            district.Stop();

            // Assert
            mockSocket.Verify(s => s.Bind(It.IsAny <string>()), Times.Once());
            mockSocket.Verify(s => s.Dispose(), Times.Once());
        }