예제 #1
0
        internal static IApiOperator CreateLocalOperator(
            Func <AddressFamily, SocketType, ProtocolType, ISocket> socketFactory,
            ApplicationCacheRecorder recorder,
            IRemoteTraceMonitorСonsistent remoteTraceMonitor = default,
            string address = "127.0.0.0:11111")
        {
            if (remoteTraceMonitor == default)
            {
                remoteTraceMonitor = Mock.Create <IRemoteTraceMonitorСonsistent>();
            }

            // MonitoredRemoteOperator
            var instructionSenderFactory       = new TestInstructionSenderFactory(socketFactory, recorder);
            var monitoredRemoteOperatorFactory = new BaseMonitoredRemoteOperatorFactory(
                instructionSenderFactory,
                remoteTraceMonitor, recorder);

            // RemoteApiMap
            var instructionReceiverFactory   = new TestInstructionReceiverFactory(socketFactory, recorder);
            var traceableRemoteApiMapFactory = new BaseTraceableRemoteApiMapFactory(
                instructionReceiverFactory,
                recorder);

            var apiOperatorFactory = new ApiOperatorFactory(monitoredRemoteOperatorFactory, traceableRemoteApiMapFactory, recorder);

            return(apiOperatorFactory.Create(address));
        }
예제 #2
0
        internal static TraceableRemoteApiMapWrapperRealSockets ArrangeRemoteApiMapTestWrapperWithRealSockets(
            string address)
        {
            var recorder             = new ApplicationCacheRecorder();
            var sockets              = new List <SocketTesterWrapper>();
            var socketFactoryCounter = 0;
            var apiMapWrapper        = default(TraceableRemoteApiMapWrapperRealSockets);

            void OnAccepted(SocketTesterWrapper wrapper)
            {
                sockets.Add(wrapper);
                apiMapWrapper.SocketAcceptedHandler?.Invoke(wrapper);
            }

            Func <AddressFamily, SocketType, ProtocolType, ISocket> socketFactory = (family, type, arg3) =>
            {
                socketFactoryCounter++;
                var socket = new SocketTesterWrapper(family, type, arg3, $"{socketFactoryCounter}");
                socket.Accepted += OnAccepted;
                sockets.Add(socket);
                return(socket);
            };

            // RemoteApiMap
            var instructionReceiverFactory   = new TestInstructionReceiverFactory(socketFactory, recorder);
            var traceableRemoteApiMapFactory = new BaseTraceableRemoteApiMapFactory(
                instructionReceiverFactory,
                recorder);

            var apiMap = traceableRemoteApiMapFactory.Create(address);

            apiMapWrapper = new TraceableRemoteApiMapWrapperRealSockets(sockets, apiMap, recorder);

            return(apiMapWrapper);
        }
예제 #3
0
        internal static RemoteOperatorTestWrapperRealSockets ArrangeLocalOperatorTestWrapperRealSockets(
            string address = "127.0.0.1:22222")
        {
            var recorder = new ApplicationCacheRecorder();
            var sockets  = new List <SocketTesterWrapper>();
            var remoteTraceMonitorСonsistent = new RemoteTraceMonitorСonsistentTester(recorder);
            var socketFactoryCounter         = 0;

            Func <AddressFamily, SocketType, ProtocolType, ISocket> socketFactory = (family, type, arg3) =>
            {
                socketFactoryCounter++;
                var socket = new SocketTesterWrapper(family, type, arg3, $"{socketFactoryCounter}");
                socket.Accepted += OnAccepted;
                sockets.Add(socket);
                return(socket);
            };

            void OnAccepted(SocketTesterWrapper wrapper)
            {
                sockets.Add(wrapper);
            }

            var apiOperator = CreateLocalOperator(socketFactory, recorder, remoteTraceMonitorСonsistent, address);

            return(new RemoteOperatorTestWrapperRealSockets(sockets, apiOperator, recorder, remoteTraceMonitorСonsistent));
        }
예제 #4
0
 public RemoteOperatorTestWrapperRealSockets(IReadOnlyList <SocketTesterWrapper> sockets, IApiOperator @operator, ApplicationCacheRecorder recorder, RemoteTraceMonitorСonsistentTester remoteTraceMonitorСonsistentTester)
 {
     Sockets  = sockets;
     Operator = @operator;
     Recorder = recorder;
     _remoteTraceMonitorСonsistentTester = remoteTraceMonitorСonsistentTester;
 }
예제 #5
0
        public TraceableRemoteApiMapWrapperRealSockets(IReadOnlyList <SocketTesterWrapper> sockets, ITraceableRemoteApiMap apiMap, ApplicationCacheRecorder recorder)
        {
            Sockets        = sockets;
            ApiMap         = apiMap;
            Recorder       = recorder;
            _connectedTask = new TaskCompletionSource <bool>();

            SocketAcceptedHandler = SocketAccepted;
        }
예제 #6
0
 internal static void LogCacheRecorderTestInfo(ITestOutputHelper output, ApplicationCacheRecorder recorder)
 {
     output.WriteLine("Sysytem Errors:");
     output.WriteLine(recorder.SystemErrorCache);
     output.WriteLine("Sysytem Info:");
     output.WriteLine(recorder.SystemInfoCache);
     output.WriteLine("Application Error:");
     output.WriteLine(recorder.AppErrorCache);
     output.WriteLine("Application Info:");
     output.WriteLine(recorder.AppInfoCache);
     output.WriteLine("Messages on display:");
     output.WriteLine(recorder.DisplayMessagesCache);
 }
예제 #7
0
 public RemoteTraceMonitorСonsistentTester(ApplicationCacheRecorder applicationCacheRecorder)
 {
     _applicationCacheRecorder = applicationCacheRecorder;
     _initializationTask       = new TaskCompletionSource <bool>();
     _displayMessageTask       = new TaskCompletionSource <bool>();
 }