コード例 #1
0
        static void Main(string[] args)
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            // Setup logger and MethodInvocationRemoting objects
            using (FileApplicationLogger remoteSenderLog = new FileApplicationLogger(LogLevel.Debug, '|', "  ", @"C:\Temp\C#Sender.log"))
                using (TcpRemoteSender tcpSender = new TcpRemoteSender(System.Net.IPAddress.Loopback, 55000, 10, 1000, 30000, 25, remoteSenderLog))
                    using (TcpRemoteReceiver tcpReceiver = new TcpRemoteReceiver(55001, 10, 1000, 25, remoteSenderLog))
                    {
                        RemoteReceiverDecompressor   decompressorReceiver         = new RemoteReceiverDecompressor(tcpReceiver, remoteSenderLog);
                        MethodInvocationSerializer   serializer                   = new MethodInvocationSerializer(new SerializerOperationMap(), remoteSenderLog);
                        MethodInvocationRemoteSender methodInvocationRemoteSender = new MethodInvocationRemoteSender(serializer, tcpSender, decompressorReceiver, remoteSenderLog);

                        // Connect to the MethodInvocationRemoteReceiver
                        tcpSender.Connect();
                        tcpReceiver.Connect();

                        // Setup the layers of the application MVP model
                        MainView  mainView  = new MainView();
                        Model     model     = new Model(methodInvocationRemoteSender);
                        Presenter presenter = new Presenter(mainView, model);
                        mainView.Presenter = presenter;

                        // Start the application
                        Application.Run(mainView);

                        // Disconnect from the MethodInvocationRemoteReceiver
                        tcpReceiver.Disconnect();
                        tcpSender.Disconnect();
                    }
        }
コード例 #2
0
 protected void SetUp()
 {
     mocks = new Mockery();
     mockUnderlyingRemoteReceiver   = mocks.NewMock <IRemoteReceiver>();
     mockApplicationLogger          = mocks.NewMock <IApplicationLogger>();
     testRemoteReceiverDecompressor = new RemoteReceiverDecompressor(mockUnderlyingRemoteReceiver, mockApplicationLogger);
 }
        protected void SetUp()
        {
            mocks = new Mockery();
            mockUnderlyingRemoteReceiver   = mocks.NewMock <IRemoteReceiver>();
            testRemoteReceiverDecompressor = new RemoteReceiverDecompressor(mockUnderlyingRemoteReceiver);

            compressedString           = "H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcplVmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/Ih7/Hu8WZXqZ101RLT/7aHe881GaL6fVrFhefPbRuj3fPvjo9zh6/EXezqvZ2fKymmYttTSfvMgW+ZH8+t2inR+X5dOszd5cr/Lj5mVW07ctgX5812v92H3u/X702Lx4VCzb/CKvH9+1n/B3R7t79+Szo8d3vfdiIGZZm78pFvlxXWfXPUCPT8t8kS/bXvPHd7vfmKYR2D2wOzs7u9v8vzc7O4/4f2P6zOJsQb0HzIf0bO/ubd/bfbN379H9h/S/MX3Uh3lLwjRtTRPb6+YXlu3hm7xpX/PXv/CC/poXTUr/y9KWPk/lvRTt8O3vcffRR4cff/y97//iX/LJZ7//9p2tb/3CbLE6/P1+99/tx3/P3/Vnfl80uxvCuy2Cs3xaLLLythMnrW83b6ZtB+j2g4d7ewe7n+7d393f+3T/3r0H9x/eu79/7+H9nXv37t9q9gYgvyfgW1KoKS6W+ezJddvnloPbwphU1W1JjKa3oq807IA7z8pG8dxMw+jbbb2OvHzLMTbzqm7PBnTJ9u6n9/ZvrU6m86y+JbnQ9FbkkoYdcF/chlTRNyFyX5tUZbW8GKLUg0/v355Qs2o9KW+tdbnxrYhlmvZmcfzpwwefPry3e2//4NO9e3u790637+04MdgktHGQEYhRgLckyHlZZW0f77PlebEsWiXSLcHckqza5S2oOoDcvfHu/u79h3uf7hIxb0XLOCAD58HeaQzMLYc+ME/vS0GPxW9Jx0AobkHNTUK0TZaA9P/ezr1PD+7vP3hw/+B2TLoJZh/kg69N5KhK+V1v+7avaW9J3FA534K6m7X5vb0Hn96KoBvBAMrXp+HNFuwmMlrDflsiep7AbUg47DiQi3k78g2D2N37+qQbcqD2dx7eP/h05+H+/U/H9x4ePDzYf0D/d67TTQRl7/O2xFTP+DaEjDvRz6s6X6TFqlkv0llVVnXaFG0KrEbptFo2+bTN23WdZrNiVTRT+NN5WbTj9OU8a/KyXJPDvUyX67LM0kV2scxG6bJaptN13dBX0vQni8tsQX9d4k/pZZRmZfGL1jl1Nb7VHMaxf3y6WLXXeFV/ft25HApl9nZ2723v3Ed4tLv3aJ+imU/H5FvcFq5GhbecTRtD3mI6h+LN7b3d/Qf7B/c+3b+VbAyBsVA+WD5uOfbhoOiW3f1/RW6+ai3r/6J1trCvkfQ0DQWuxXJazNZL+jDF5NQz6mC1rlnO5M9xelJnzYeIzddG/sV6OU0vizbLVZhbVgEi8xbddb3MxulPrIuGhkkN58V0TeohW1/Qn/maRrqui40DuC2z+R+73ylF8wr4L92QB6X8rt/y7hfdjNH/A4VP6g5qEgAA";
            expectedUncompressedString = "<?xml version=\"1.0\" encoding=\"utf-8\"?><MethodInvocation><MethodName>MethodWithAllDataTypeAsParameters</MethodName><Parameters><Parameter><DataType>integer</DataType><Data>123</Data></Parameter><Parameter><DataType>dateTimeArray</DataType><Data><ElementDataType>dateTime</ElementDataType><Element><DataType>dateTime</DataType><Data>0001-01-01T00:00:00.000</Data></Element><Element><DataType>dateTime</DataType><Data>9999-12-31T23:59:59.999</Data></Element></Data></Parameter><Parameter><DataType>string</DataType><Data>&lt;TestString&gt;This is a test string &lt;&gt;?/:\";''[]{}+=_-)(*&amp;^%$#@!|\\&lt;/TestString&gt;</Data></Parameter><Parameter><DataType>decimalArray</DataType><Data><ElementDataType>decimal</ElementDataType><Element><DataType>decimal</DataType><Data>-79228162514264337593543950335</Data></Element><Element><DataType>decimal</DataType><Data>79228162514264337593543950335</Data></Element></Data></Parameter><Parameter><DataType>signedByte</DataType><Data>8</Data></Parameter><Parameter><DataType>boolArray</DataType><Data><ElementDataType>bool</ElementDataType><Element><DataType>bool</DataType><Data>false</Data></Element><Element><DataType>bool</DataType><Data>true</Data></Element></Data></Parameter><Parameter><DataType>shortInteger</DataType><Data>-16343</Data></Parameter><Parameter><DataType>charArray</DataType><Data><ElementDataType>char</ElementDataType><Element><DataType>char</DataType><Data>M</Data></Element><Element><DataType>char</DataType><Data>&lt;</Data></Element></Data></Parameter><Parameter><DataType>longInteger</DataType><Data>76543</Data></Parameter><Parameter><DataType>doubleArray</DataType><Data><ElementDataType>double</ElementDataType><Element><DataType>double</DataType><Data>-1.6976931348623213E-308</Data></Element><Element><DataType>double</DataType><Data>1.6976931348623213E308</Data></Element></Data></Parameter><Parameter><DataType>float</DataType><Data>-Infinity</Data></Parameter><Parameter><DataType>floatArray</DataType><Data><ElementDataType>float</ElementDataType><Element><DataType>float</DataType><Data>-3.14159261E-38</Data></Element><Element><DataType>float</DataType><Data>3.14159272E38</Data></Element></Data></Parameter><Parameter><DataType>double</DataType><Data>Infinity</Data></Parameter><Parameter><DataType>longIntegerArray</DataType><Data><ElementDataType>longInteger</ElementDataType><Element><DataType>longInteger</DataType><Data>-9223372036854775808</Data></Element><Element><DataType>longInteger</DataType><Data>9223372036854775807</Data></Element></Data></Parameter><Parameter><DataType>char</DataType><Data>!</Data></Parameter><Parameter><DataType>shortIntegerArray</DataType><Data><ElementDataType>shortInteger</ElementDataType><Element><DataType>shortInteger</DataType><Data>-32768</Data></Element><Element><DataType>shortInteger</DataType><Data>32767</Data></Element></Data></Parameter><Parameter><DataType>bool</DataType><Data>true</Data></Parameter><Parameter><DataType>signedByteArray</DataType><Data><ElementDataType>signedByte</ElementDataType><Element><DataType>signedByte</DataType><Data>-128</Data></Element><Element><DataType>signedByte</DataType><Data>127</Data></Element></Data></Parameter><Parameter><DataType>decimal</DataType><Data>40958609456.39898479845</Data></Parameter><Parameter><DataType>stringArray</DataType><Data><ElementDataType>string</ElementDataType><Element><DataType>string</DataType><Data>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus in nulla magna, non cursus elit. Vivamus velit dolor, aliquet a.</Data></Element><Element><DataType>string</DataType><Data><Empty></Empty></Data></Element></Data></Parameter><Parameter><DataType>dateTime</DataType><Data>2013-05-01T12:43:56.654</Data></Parameter><Parameter><DataType>integerArray</DataType><Data><ElementDataType>integer</ElementDataType><Element><DataType>integer</DataType><Data>-2147483648</Data></Element><Element><DataType>integer</DataType><Data>2147483647</Data></Element></Data></Parameter><Parameter><DataType>decimalArray</DataType><Data><ElementDataType>decimal</ElementDataType></Data></Parameter><Parameter><DataType>stringArray</DataType><Data><ElementDataType>string</ElementDataType><Element><DataType>string</DataType><Data>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut aliquet quam sit amet massa tincidunt a interdum purus interdum. Cras.</Data></Element><Element><DataType>string</DataType><Data>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc vitae velit tellus, non interdum urna. Quisque vehicula augue eu mauris.</Data></Element><Element></Element></Data></Parameter><Parameter></Parameter></Parameters><ReturnType><DataType>dateTime</DataType></ReturnType></MethodInvocation>";
        }
        public void InvalidDecompressionBufferSizeArgument()
        {
            ArgumentOutOfRangeException e = Assert.Throws <ArgumentOutOfRangeException>(delegate
            {
                testRemoteReceiverDecompressor = new RemoteReceiverDecompressor(mockUnderlyingRemoteReceiver, 0);
            });

            Assert.That(e.Message, NUnit.Framework.Is.StringStarting("Argument 'decompressionBufferSize' must be greater than 0."));
            Assert.AreEqual("decompressionBufferSize", e.ParamName);
        }
        public void ReceiveOneByteBufferSuccessTests()
        {
            testRemoteReceiverDecompressor = new RemoteReceiverDecompressor(mockUnderlyingRemoteReceiver, 1);

            Expect.Once.On(mockUnderlyingRemoteReceiver).Method("Receive").WithNoArguments().Will(Return.Value(compressedString));

            string receivedMessage = testRemoteReceiverDecompressor.Receive();

            mocks.VerifyAllExpectationsHaveBeenMet();
            Assert.AreEqual(expectedUncompressedString, receivedMessage);
        }
コード例 #6
0
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            // Setup metric logger and MethodInvocationRemoting objects
            MetricLoggerDistributor distributor         = new MetricLoggerDistributor();
            ConsoleMetricLogger     consoleMetricLogger = new ConsoleMetricLogger(5000, true);

            using (FileApplicationLogger logger = new FileApplicationLogger(LogLevel.Information, '|', "  ", @"C:\Temp\C#Sender.log"))
                using (SizeLimitedBufferProcessor fileMetricLoggerBufferProcessor = new SizeLimitedBufferProcessor(50))
                    using (FileMetricLogger fileMetricLogger = new FileMetricLogger('|', @"C:\Temp\C#Metrics.log", fileMetricLoggerBufferProcessor, true))
                        using (SizeLimitedBufferProcessor accessMetricLoggerBufferProcessor = new SizeLimitedBufferProcessor(50))
                            using (MicrosoftAccessMetricLogger accessMetricLogger = new MicrosoftAccessMetricLogger(@"C:\Temp\MetricLogger.mdb", "SampleApplication5-C#", accessMetricLoggerBufferProcessor, true))
                                using (PerformanceCounterMetricLogger perfmonMetricLogger = new PerformanceCounterMetricLogger("SampleApplication5Metrics", "Metrics produced by MethodInvocationRemoting sample application 5", 1000, true))
                                    using (TcpRemoteSender tcpSender = new TcpRemoteSender(System.Net.IPAddress.Loopback, 55000, 10, 1000, 30000, 25, logger, distributor))
                                        using (TcpRemoteReceiver tcpReceiver = new TcpRemoteReceiver(55001, 10, 1000, 25, logger, distributor))
                                        {
                                            RemoteReceiverDecompressor   decompressorReceiver         = new RemoteReceiverDecompressor(tcpReceiver, logger, distributor);
                                            MethodInvocationSerializer   serializer                   = new MethodInvocationSerializer(new SerializerOperationMap(), logger, distributor);
                                            MethodInvocationRemoteSender methodInvocationRemoteSender = new MethodInvocationRemoteSender(serializer, tcpSender, decompressorReceiver, logger, distributor);

                                            // Define metric aggregates for the console logger
                                            DefineMetricAggregates(consoleMetricLogger);

                                            // Register base metrics and aggregates with the performance monitor logger
                                            perfmonMetricLogger.RegisterMetric(new RemoteMethodSendTime());
                                            perfmonMetricLogger.RegisterMetric(new RemoteMethodSent());
                                            perfmonMetricLogger.RegisterMetric(new MethodInvocationSerializeTime());
                                            perfmonMetricLogger.RegisterMetric(new MethodInvocationSerialized());
                                            perfmonMetricLogger.RegisterMetric(new SerializedMethodInvocationSize(0));
                                            perfmonMetricLogger.RegisterMetric(new ReturnValueDeserializeTime());
                                            perfmonMetricLogger.RegisterMetric(new ReturnValueDeserialized());
                                            perfmonMetricLogger.RegisterMetric(new StringDecompressTime());
                                            perfmonMetricLogger.RegisterMetric(new RemoteReceiverDecompressorReadBufferCreated());
                                            perfmonMetricLogger.RegisterMetric(new StringDecompressed());
                                            perfmonMetricLogger.RegisterMetric(new TcpRemoteReceiverReconnected());
                                            perfmonMetricLogger.RegisterMetric(new MessageReceiveTime());
                                            perfmonMetricLogger.RegisterMetric(new MessageReceived());
                                            perfmonMetricLogger.RegisterMetric(new ReceivedMessageSize(0));
                                            perfmonMetricLogger.RegisterMetric(new TcpRemoteReceiverDuplicateSequenceNumber());
                                            perfmonMetricLogger.RegisterMetric(new MessageSendTime());
                                            perfmonMetricLogger.RegisterMetric(new MessageSent());
                                            perfmonMetricLogger.RegisterMetric(new TcpRemoteSenderReconnected());
                                            DefineMetricAggregates(perfmonMetricLogger);

                                            // Create performance monitor counters in the operating system
                                            perfmonMetricLogger.CreatePerformanceCounters();

                                            distributor.AddLogger(consoleMetricLogger);
                                            distributor.AddLogger(fileMetricLogger);
                                            distributor.AddLogger(accessMetricLogger);
                                            distributor.AddLogger(perfmonMetricLogger);
                                            consoleMetricLogger.Start();
                                            fileMetricLoggerBufferProcessor.Start();
                                            accessMetricLoggerBufferProcessor.Start();
                                            accessMetricLogger.Connect();
                                            perfmonMetricLogger.Start();

                                            // Connect to the MethodInvocationRemoteReceiver
                                            tcpSender.Connect();
                                            tcpReceiver.Connect();

                                            // Setup the layers of the application MVP model
                                            MainView  mainView  = new MainView();
                                            Model     model     = new Model(methodInvocationRemoteSender);
                                            Presenter presenter = new Presenter(mainView, model);
                                            mainView.Presenter = presenter;

                                            // Start the application
                                            Application.Run(mainView);

                                            // Disconnect from the MethodInvocationRemoteReceiver
                                            tcpReceiver.Disconnect();
                                            tcpSender.Disconnect();

                                            // Stop the metric loggers
                                            consoleMetricLogger.Stop();
                                            fileMetricLoggerBufferProcessor.Stop();
                                            accessMetricLoggerBufferProcessor.Stop();
                                            accessMetricLogger.Disconnect();
                                            perfmonMetricLogger.Stop();
                                        }
        }