public static void DivManyExample(MathGrpc.IMathServiceClient stub) { List <DivArgs> divArgsList = new List <DivArgs> { new DivArgs.Builder { Dividend = 10, Divisor = 3 }.Build(), new DivArgs.Builder { Dividend = 100, Divisor = 21 }.Build(), new DivArgs.Builder { Dividend = 7, Divisor = 2 }.Build() }; var recorder = new RecordingObserver <DivReply>(); var inputs = stub.DivMany(recorder); foreach (var input in divArgsList) { inputs.OnNext(input); } inputs.OnCompleted(); Console.WriteLine("DivMany Result: " + string.Join("|", recorder.ToList().Result)); }
public void DivMany() { List <DivArgs> divArgsList = new List <DivArgs> { new DivArgs.Builder { Dividend = 10, Divisor = 3 }.Build(), new DivArgs.Builder { Dividend = 100, Divisor = 21 }.Build(), new DivArgs.Builder { Dividend = 7, Divisor = 2 }.Build() }; var recorder = new RecordingObserver <DivReply>(); var requestObserver = client.DivMany(recorder); foreach (var arg in divArgsList) { requestObserver.OnNext(arg); } requestObserver.OnCompleted(); var result = recorder.ToList().Result; CollectionAssert.AreEqual(new long[] { 3, 4, 3 }, result.ConvertAll((divReply) => divReply.Quotient)); CollectionAssert.AreEqual(new long[] { 1, 16, 1 }, result.ConvertAll((divReply) => divReply.Remainder)); }
public static async Task FibExample(MathGrpc.IMathServiceClient stub) { var recorder = new RecordingObserver<Num>(); stub.Fib(new FibArgs.Builder { Limit = 5 }.Build(), recorder); List<Num> result = await recorder.ToList(); Console.WriteLine("Fib Result: " + string.Join("|", result)); }
public void InitiateWalk_GeneratesSubsequentTicks_AsExpected() { var randomWalkStrategy = new MarkovEquityStrategy(); var randomWalk = new EquitiesMarkovProcess( new NasdaqInitialiser(), randomWalkStrategy, this._heartbeat, this._logger); var stream = new ExchangeStream(new UnsubscriberFactory <EquityIntraDayTimeBarCollection>()); var observer = new RecordingObserver <EquityIntraDayTimeBarCollection>(this._logger, 5); stream.Subscribe(observer); randomWalk.InitiateWalk(stream); var timeOut = DateTime.UtcNow.AddSeconds(5); while (observer.Buffer.Count < 2 && DateTime.UtcNow < timeOut) { // don't sleep the thread } Assert.AreEqual(observer.Buffer.Count, 2); randomWalk.TerminateWalk(); }
public async Task QueryAsync(IQuery query, IObserver <BackendEvent> observer, CancellationToken ct) { if (_eventCache.TryGetValue(query.Argument, out var cachedStream)) { _logger.Debug("Found cached query {rawQuery} with {queryEventCount} events", query.Raw, cachedStream.Count); foreach (var cachedEvent in cachedStream) { observer.OnNext(cachedEvent); } } else { _logger.Debug("Cache missed for {rawQuery}. Executing query and saving it to cache", query.Raw); var recorder = new RecordingObserver(observer); await _actualProvider.QueryAsync(query, recorder, ct); ct.ThrowIfCancellationRequested(); _eventCache.TryAdd(query.Argument, recorder.Recorded); _logger.Verbose("Setting up cache expire handling in {expires}.", _expires); Timer timer = null; timer = new Timer(state => { _logger.Information("Cache for {rawQuery} has expired. Evicting from cache", query.Raw); _eventCache.TryRemove(query.Argument, out _); timer?.Dispose(); }, query.Raw, _expires, new TimeSpan(-1)); } }
public static void RunServerStreaming(TestServiceGrpc.ITestServiceClient client) { Console.WriteLine("running server_streaming"); var bodySizes = new List <int> { 31415, 9, 2653, 58979 }; var request = StreamingOutputCallRequest.CreateBuilder() .SetResponseType(PayloadType.COMPRESSABLE) .AddRangeResponseParameters(bodySizes.ConvertAll( (size) => ResponseParameters.CreateBuilder().SetSize(size).Build())) .Build(); var recorder = new RecordingObserver <StreamingOutputCallResponse>(); client.StreamingOutputCall(request, recorder); var responseList = recorder.ToList().Result; foreach (var res in responseList) { Assert.AreEqual(PayloadType.COMPRESSABLE, res.Payload.Type); } CollectionAssert.AreEqual(bodySizes, responseList.ConvertAll((item) => item.Payload.Body.Length)); Console.WriteLine("Passed!"); }
public static async Task FibExample(MathGrpc.IMathServiceClient stub) { var recorder = new RecordingObserver <Num>(); stub.Fib(new FibArgs.Builder { Limit = 5 }.Build(), recorder); List <Num> result = await recorder.ToList(); Console.WriteLine("Fib Result: " + string.Join("|", result)); }
public void Fib() { var recorder = new RecordingObserver <Num>(); client.Fib(new FibArgs.Builder { Limit = 6 }.Build(), recorder); CollectionAssert.AreEqual(new List <long> { 1, 1, 2, 3, 5, 8 }, recorder.ToList().Result.ConvertAll((n) => n.Num_)); }
public static void RunEmptyStream(TestServiceGrpc.ITestServiceClient client) { Console.WriteLine("running empty_stream"); var recorder = new RecordingObserver <StreamingOutputCallResponse>(); var inputs = client.FullDuplexCall(recorder); inputs.OnCompleted(); var responseList = recorder.ToList().Result; Assert.AreEqual(0, responseList.Count); Console.WriteLine("Passed!"); }
public IObserver <StreamingInputCallRequest> StreamingInputCall(IObserver <StreamingInputCallResponse> responseObserver) { var recorder = new RecordingObserver <StreamingInputCallRequest>(); Task.Run(() => { int sum = 0; foreach (var req in recorder.ToList().Result) { sum += req.Payload.Body.Length; } var response = StreamingInputCallResponse.CreateBuilder() .SetAggregatedPayloadSize(sum).Build(); responseObserver.OnNext(response); responseObserver.OnCompleted(); }); return(recorder); }
public void StartCall(string methodName, CallSafeHandle call, CompletionQueueSafeHandle cq) { var asyncCall = new AsyncCallServer <TRequest, TResponse>( method.ResponseMarshaller.Serializer, method.RequestMarshaller.Deserializer); asyncCall.Initialize(call); var requestObserver = new RecordingObserver <TRequest>(); var finishedTask = asyncCall.ServerSideCallAsync(requestObserver); var request = requestObserver.ToList().Result.Single(); var responseObserver = new ServerStreamingOutputObserver <TRequest, TResponse>(asyncCall); handler(request, responseObserver); finishedTask.Wait(); }
public IObserver <Num> Sum(IObserver <Num> responseObserver) { var recorder = new RecordingObserver <Num>(); Task.Factory.StartNew(() => { List <Num> inputs = recorder.ToList().Result; long sum = 0; foreach (Num num in inputs) { sum += num.Num_; } responseObserver.OnNext(Num.CreateBuilder().SetNum_(sum).Build()); responseObserver.OnCompleted(); }); return(recorder); }
public void InitiateWalk_ReceivesTicks_AfterInitiationImmediately() { var randomWalkStrategy = new MarkovEquityStrategy(); var randomWalk = new EquitiesMarkovProcess( this._exchangeTickInitialiser, randomWalkStrategy, this._heartbeat, this._logger); var stream = new ExchangeStream(new UnsubscriberFactory <EquityIntraDayTimeBarCollection>()); var observer = new RecordingObserver <EquityIntraDayTimeBarCollection>(this._logger, 10); stream.Subscribe(observer); randomWalk.InitiateWalk(stream); Assert.AreEqual(observer.Buffer.Count, 1); randomWalk.TerminateWalk(); }
public static async Task DivManyExample(MathGrpc.IMathServiceClient stub) { var divArgsList = new List <DivArgs> { new DivArgs.Builder { Dividend = 10, Divisor = 3 }.Build(), new DivArgs.Builder { Dividend = 100, Divisor = 21 }.Build(), new DivArgs.Builder { Dividend = 7, Divisor = 2 }.Build() }; var recorder = new RecordingObserver <DivReply>(); var inputs = stub.DivMany(recorder); divArgsList.Subscribe(inputs); var result = await recorder.ToList(); Console.WriteLine("DivMany Result: " + string.Join("|", result)); }
public void InitiateWalk_WaitThenTerminateWalk_EnsuresNoMoreTicksTocked() { var randomWalk = new EquitiesMarkovProcess( new NasdaqInitialiser(), this._strategy, this._heartbeat, this._logger); var stream = new ExchangeStream(new UnsubscriberFactory <EquityIntraDayTimeBarCollection>()); var observer = new RecordingObserver <EquityIntraDayTimeBarCollection>(this._logger, 5); stream.Subscribe(observer); randomWalk.InitiateWalk(stream); var timeOut = DateTime.UtcNow.AddSeconds(5); while (observer.Buffer.Count < 2 && DateTime.UtcNow < timeOut) { // don't sleep the thread } randomWalk.TerminateWalk(); Assert.AreEqual(observer.Buffer.Count, 2); var timerForStragglers = DateTime.UtcNow.AddSeconds(2); while (DateTime.UtcNow < timerForStragglers) { // don't sleep the thread } Assert.AreEqual(observer.Buffer.Count, 2); A.CallTo(() => this._logger.LogInformation("Random walk generator terminating walk")) .MustHaveHappenedOnceExactly(); }
public static void DivManyExample(MathGrpc.IMathServiceClient stub) { List<DivArgs> divArgsList = new List<DivArgs> { new DivArgs.Builder { Dividend = 10, Divisor = 3 }.Build(), new DivArgs.Builder { Dividend = 100, Divisor = 21 }.Build(), new DivArgs.Builder { Dividend = 7, Divisor = 2 }.Build() }; var recorder = new RecordingObserver<DivReply>(); var inputs = stub.DivMany(recorder); foreach (var input in divArgsList) { inputs.OnNext(input); } inputs.OnCompleted(); Console.WriteLine("DivMany Result: " + string.Join("|", recorder.ToList().Result)); }
public static async Task DivManyExample(MathGrpc.IMathServiceClient stub) { var divArgsList = new List<DivArgs> { new DivArgs.Builder { Dividend = 10, Divisor = 3 }.Build(), new DivArgs.Builder { Dividend = 100, Divisor = 21 }.Build(), new DivArgs.Builder { Dividend = 7, Divisor = 2 }.Build() }; var recorder = new RecordingObserver<DivReply>(); var inputs = stub.DivMany(recorder); divArgsList.Subscribe(inputs); var result = await recorder.ToList(); Console.WriteLine("DivMany Result: " + string.Join("|", result)); }
public void Fib() { var recorder = new RecordingObserver<Num>(); client.Fib(new FibArgs.Builder { Limit = 6 }.Build(), recorder); CollectionAssert.AreEqual(new List<long>{1, 1, 2, 3, 5, 8}, recorder.ToList().Result.ConvertAll((n) => n.Num_)); }
public static void RunServerStreaming(TestServiceGrpc.ITestServiceClient client) { Console.WriteLine("running server_streaming"); var bodySizes = new List<int> { 31415, 9, 2653, 58979 }; var request = StreamingOutputCallRequest.CreateBuilder() .SetResponseType(PayloadType.COMPRESSABLE) .AddRangeResponseParameters(bodySizes.ConvertAll( (size) => ResponseParameters.CreateBuilder().SetSize(size).Build())) .Build(); var recorder = new RecordingObserver<StreamingOutputCallResponse>(); client.StreamingOutputCall(request, recorder); var responseList = recorder.ToList().Result; foreach (var res in responseList) { Assert.AreEqual(PayloadType.COMPRESSABLE, res.Payload.Type); } CollectionAssert.AreEqual(bodySizes, responseList.ConvertAll((item) => item.Payload.Body.Length)); Console.WriteLine("Passed!"); }
public void DivMany() { List<DivArgs> divArgsList = new List<DivArgs>{ new DivArgs.Builder { Dividend = 10, Divisor = 3 }.Build(), new DivArgs.Builder { Dividend = 100, Divisor = 21 }.Build(), new DivArgs.Builder { Dividend = 7, Divisor = 2 }.Build() }; var recorder = new RecordingObserver<DivReply>(); var requestObserver = client.DivMany(recorder); foreach (var arg in divArgsList) { requestObserver.OnNext(arg); } requestObserver.OnCompleted(); var result = recorder.ToList().Result; CollectionAssert.AreEqual(new long[] {3, 4, 3}, result.ConvertAll((divReply) => divReply.Quotient)); CollectionAssert.AreEqual(new long[] {1, 16, 1}, result.ConvertAll((divReply) => divReply.Remainder)); }
public static void RunEmptyStream(TestServiceGrpc.ITestServiceClient client) { Console.WriteLine("running empty_stream"); var recorder = new RecordingObserver<StreamingOutputCallResponse>(); var inputs = client.FullDuplexCall(recorder); inputs.OnCompleted(); var responseList = recorder.ToList().Result; Assert.AreEqual(0, responseList.Count); Console.WriteLine("Passed!"); }