コード例 #1
0
ファイル: TitanicMemoryIOTests.cs プロジェクト: hdxhan/netmq
        public void CloseRequest_NotExistingRequest_ShouldReturnWithOutChangingQueue()
        {
            var sut = new TitanicMemoryIO ();

            for (var i = 0; i < 10; i++)
                sut.SaveNewRequestEntry (Guid.NewGuid ());

            var id = Guid.NewGuid ();

            sut.CloseRequest (id);

            sut.NumberOfRequests.Should ().Be (10);
        }
コード例 #2
0
ファイル: TitanicBrokerTests.cs プロジェクト: sharpe5/netmq
        public void TitanicReply_RequestReplyPending_ShouldSentCorrectReply ()
        {
            var io = new TitanicMemoryIO ();

            using (var reqWorker = new FakeRequestMDPWorker ())
            using (var repWorker = new FakeReplyMDPWorker ())
            using (var closeWorker = new FakeCloseMDPWorker ())
            using (var dispatchClient = new FakeDispatchMDPClient ())
            using (var sut = new TitanicBroker (io))
            {
                // setup the queue with a request
                var guid = Guid.NewGuid ();
                var msg = new NetMQMessage ();
                msg.Push (guid.ToString ());
                // queue is setup with a request pending
                io.SaveNewRequestEntry (guid, msg);
                // setup the fake replyWorker's request
                repWorker.Request = new NetMQMessage ();
                repWorker.Request.Push (guid.ToString ());
                // start the process chain - worker & client should only run until they hit an AutoResetEvent
                Task.Factory.StartNew (() => sut.Run (reqWorker, repWorker, closeWorker, dispatchClient));
                // signal worker to go ahead
                repWorker.waitHandle.Set ();
                // give everything some time to process
                Thread.Sleep (_sleep_for);

                // TEST COMMUNICATION
                repWorker.Reply.FrameCount.Should ().Be (1, "because a 1 frame message is expected. ({0})", repWorker.Reply);
                repWorker.Reply.First.ConvertToString ().Should ().Be ("Pending");
                // TEST QUEUE
                io.GetRequestEntries (e => e.RequestId == guid).Count ().Should ().Be (1);
                var queueEntry = io.GetRequestEntry (guid);
                queueEntry.State.Should ().Be (RequestEntry.Is_Pending);
                io.ExistsMessage (TitanicOperation.Request, guid).Should ().BeTrue ();
                io.ExistsMessage (TitanicOperation.Reply, guid).Should ().BeFalse ();
                io.ExistsMessage (TitanicOperation.Close, guid).Should ().BeFalse ();
            }
        }
コード例 #3
0
ファイル: TitanicBrokerTests.cs プロジェクト: sharpe5/netmq
        public void TitanicClose_RequestToCloseRequest_ShouldDeleteRequestFromQueue ()
        {
            var io = new TitanicMemoryIO ();

            using (var reqWorker = new FakeRequestMDPWorker ())
            using (var repWorker = new FakeReplyMDPWorker ())
            using (var closeWorker = new FakeCloseMDPWorker ())
            using (var dispatchClient = new FakeDispatchMDPClient ())
            using (var sut = new TitanicBroker (io))
            {
                // setup the queue with a request
                var guid = Guid.NewGuid ();
                // message content is of no importance here
                io.SaveNewRequestEntry (guid, new NetMQMessage ());
                var entry = io.GetRequestEntry (guid);
                io.SaveProcessedRequestEntry (entry);
                // set up the fake client's request
                closeWorker.Request = new NetMQMessage ();
                closeWorker.Request.Push (guid.ToString ());
                // start the TitanicBroker (Close will automatically start and 
                // wait for a signal to proceed with sending the setup request message
                // start the process chain - worker & client should only run until they hit an AutoResetEvent
                Task.Factory.StartNew (() => sut.Run (reqWorker, repWorker, closeWorker, dispatchClient));
                // signal closeWorker to go ahead
                closeWorker.waitHandle.Set ();
                // give everything some time to process
                Thread.Sleep (_sleep_for);

                // TEST COMMUNICATION
                closeWorker.Reply.FrameCount.Should ().Be (1, "because only one frame should have been returned.");
                closeWorker.Reply.First.ConvertToString ().Should ().Be ("Ok", "because 'Ok' should have been send.");

                // TEST QUEUE
                io.ExistsMessage (TitanicOperation.Request, guid).Should ().BeFalse ();
                io.ExistsMessage (TitanicOperation.Reply, guid).Should ().BeFalse ();
                io.ExistsMessage (TitanicOperation.Close, guid).Should ().BeFalse ();
            }
        }
コード例 #4
0
ファイル: TitanicMemoryIOTests.cs プロジェクト: cjkao/netmq
        public void GetMessage_ExistingRequestWrongState_ShouldReturnCorrectMessage ()
        {
            var sut = new TitanicMemoryIO ();
            var ids = new Guid[10];
            var expected = new NetMQMessage ();

            for (var i = 0; i < 10; i++)
            {
                ids[i] = Guid.NewGuid ();
                var request = new NetMQMessage ();
                request.Push ($"Request #{i}");
                request.Push ("echo");
                sut.SaveNewRequestEntry (ids[i], request);
            }

            var result = sut.GetMessage (TitanicOperation.Reply, Guid.NewGuid ());

            result.Should ().BeEquivalentTo (expected);
        }
コード例 #5
0
ファイル: TitanicMemoryIOTests.cs プロジェクト: cjkao/netmq
        public void SaveNewRequest_MultipleRequestGuidOnly_ShouldUpdateQueue ()
        {
            var sut = new TitanicMemoryIO ();

            for (var i = 0; i < 10; i++)
                sut.SaveNewRequestEntry (Guid.NewGuid ());

            sut.NumberOfRequests.Should ().Be (10);
        }
コード例 #6
0
ファイル: TitanicMemoryIOTests.cs プロジェクト: sharpe5/netmq
        public void GetMessage_ExistingRequest_ShouldReturnCorrectMessage ()
        {
            var sut = new TitanicMemoryIO ();
            var ids = new Guid[10];
            var expected = new NetMQMessage ();
            expected.Push ("Request #3");
            expected.Push ("echo");

            for (var i = 0; i < 10; i++)
            {
                ids[i] = Guid.NewGuid ();
                var request = new NetMQMessage ();
                request.Push (string.Format ("Request #{0}", i));
                request.Push ("echo");
                sut.SaveNewRequestEntry (ids[i], request);
            }

            var result = sut.GetMessage (TitanicOperation.Request, ids[3]);

            result.Should ().BeEquivalentTo (expected);
        }