public async Task DeviceServiceTest() { var serverBuilder = new RpcServiceDefinitionsBuilder(); serverBuilder.RegisterService <IThermostatService>(); var host = new GrpcServer(serverBuilder, null, this.options); host.AddEndPoint(CreateEndPoint()); host.Start(); try { var serviceImpl = new ThermostatServiceImpl(); using (var publishScope = host.PublishInstance(serviceImpl)) { var objectId = publishScope.Value.ObjectId; GrpcConnection connection = this.CreateGrpcConnection(); var clientService = connection.GetServiceInstance <IThermostatServiceClient>(objectId); var acoId = clientService.DeviceAcoId; var baseClientService = (IDeviceServiceClient)clientService; var acoId2 = baseClientService.DeviceAcoId; Assert.AreEqual(acoId, acoId2); } } finally { await host.ShutdownAsync(); } }
public async Task DeviceServiceTest() { var serviceImpl = new ThermostatServiceImpl(); var implProviderMock = new Mock <IRpcServiceActivator>(); implProviderMock.Setup(p => p.GetActivatedService <IDeviceService>(It.IsAny <IServiceProvider>(), It.IsAny <RpcObjectId>())).Returns(new ActivatedService <IDeviceService>(serviceImpl, null)); var callContext = CreateServerCallContext(CancellationToken.None); var binder = new TestMethodBinder(); CreateSimpleServiceStub <IDeviceService>(serviceImpl, binder); var objectId = RpcObjectId.NewId(); var getMethod = binder.methods.FirstOrDefault(p => p.Item1.Name == "GetDeviceAcoId"); Assert.NotNull(getMethod); var getValueHandler = (UnaryServerMethod <RpcObjectRequest, RpcResponse <Guid> >)getMethod.Item2; var getResponse = await getValueHandler(new RpcObjectRequest(objectId), callContext); Assert.AreEqual(serviceImpl.DeviceAcoId, getResponse.Result); }