示例#1
0
        public JsonRpcIntegrationServerTestBase(JsonRpcTestOptions testOptions)
        {
            TestOptions = testOptions;
            Disposable  = new CompositeDisposable {
                testOptions.ClientLoggerFactory, testOptions.ServerLoggerFactory
            };

            _cancellationTokenSource = new CancellationTokenSource();
            if (!Debugger.IsAttached)
            {
                _cancellationTokenSource.CancelAfter(testOptions.CancellationTimeout);
            }

            Events = ClientEvents = new Settler(TestOptions, CancellationToken);
        }
示例#2
0
        public Settler(JsonRpcTestOptions options, CancellationToken cancellationToken, IScheduler?scheduler = null)
        {
            _options           = options;
            _cancellationToken = cancellationToken;
            scheduler ??= Scheduler.Immediate;
            _scheduler    = scheduler;
            _timeoutValue = Return(Unit.Default, _scheduler);
            var subject = new Subject <int>();
            var data    = subject;

            var connectable = data
                              .StartWith(0)
                              .Scan(
                0, (acc, next) => {
                acc += next;
                return(acc);
            }
                )
                              .DistinctUntilChanged()
                              .Select(
                z => {
                if (z > 0)
                {
                    return(Never <Unit>());
//                                          return Timer(_options.Timeout, _scheduler)
//                                             .Select(z => Unit.Default);
                }

                return(Timer(_options.WaitTime, _scheduler)
                       .Select(_ => Unit.Default));
            }
                )
                              .Replay(1, _scheduler);

            _connectable = connectable.Connect();
            _settle      = connectable
                           .Select(o => o.Timeout(_options.Timeout, _scheduler))
                           .Switch();
            _requester = subject.AsObserver();
        }
示例#3
0
 public JsonRpcServerTestBase(JsonRpcTestOptions testOptions) : base(testOptions)
 {
 }
 public static JsonRpcTestOptions WithAssemblies(this JsonRpcTestOptions options, IEnumerable <Assembly> assemblies)
 {
     options.Assemblies = options.Assemblies.Concat(assemblies).ToArray();
     return(options);
 }
 public static JsonRpcTestOptions WithAssemblies(this JsonRpcTestOptions options, params Assembly[] assemblies)
 {
     options.Assemblies = options.Assemblies.Concat(assemblies).ToArray();
     return(options);
 }
 public static JsonRpcTestOptions WithCancellationTimeout(this JsonRpcTestOptions options, TimeSpan cancellationTimeout)
 {
     options.CancellationTimeout = cancellationTimeout;
     return(options);
 }
 public static JsonRpcTestOptions WithDefaultPipeOptions(this JsonRpcTestOptions options, PipeOptions pipeOptions)
 {
     options.DefaultPipeOptions = pipeOptions;
     return(options);
 }
 public static JsonRpcTestOptions WithWaitTime(this JsonRpcTestOptions options, TimeSpan waitTime)
 {
     options.WaitTime = waitTime;
     return(options);
 }
 public static JsonRpcTestOptions WithTimeout(this JsonRpcTestOptions options, TimeSpan timeout)
 {
     options.Timeout = timeout;
     return(options);
 }
 public static JsonRpcTestOptions WithClientLoggerFactory(this JsonRpcTestOptions options, ILoggerFactory clientLoggerFactory)
 {
     options.ClientLoggerFactory = clientLoggerFactory;
     return(options);
 }
 public static JsonRpcTestOptions WithServerLoggerFactory(this JsonRpcTestOptions options, ILoggerFactory serverLoggerFactory)
 {
     options.ServerLoggerFactory = serverLoggerFactory;
     return(options);
 }
示例#12
0
 public static JsonRpcTestOptions WithSettleTimeSpan(this JsonRpcTestOptions options, TimeSpan settleTimeSpan)
 {
     options.SettleTimeSpan = settleTimeSpan;
     return(options);
 }
示例#13
0
 public static JsonRpcTestOptions WithScheduler(this JsonRpcTestOptions options, IScheduler scheduler)
 {
     options.ClientScheduler = options.ServerScheduler = scheduler;
     return(options);
 }
示例#14
0
 public static JsonRpcTestOptions WithLoggerFactory(this JsonRpcTestOptions options, ILoggerFactory loggerFactory)
 {
     options.ClientLoggerFactory = options.ServerLoggerFactory = loggerFactory;
     return(options);
 }