private void ConfigureCore(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) { var serviceProvider = app.ApplicationServices; var messagingServiceClient = serviceProvider.GetService <IMessagingServiceClient>(); var settingOperations = serviceProvider.GetService <ISettingOperations>(); messagingServiceClient.Setup(settingOperations.Get(Setting.MessagingServiceEndpoint).Value, settingOperations.Get(Setting.MessagingServiceApiKey).Value); var telemetryDataSinkMetadataRegistry = (TelemetryDataSinkMetadataRegistry)serviceProvider.GetService <ITelemetryDataSinkMetadataRegistry>(); var xmlSerializer = new XmlSerializer(typeof(TelemetryDataSection)); using (var streamReader = new StreamReader(Path.Combine(_appEnv.ApplicationBasePath, "config/telemetryDataSink.xml"))) { var telemetryDataSection = (TelemetryDataSection)xmlSerializer.Deserialize(streamReader); telemetryDataSinkMetadataRegistry.Build(telemetryDataSection); } var batchParameters = serviceProvider.GetService <IBatchParameters>(); MessagingWorkers.Start(batchParameters, messagingServiceClient); var applicationLifetime = serviceProvider.GetService <IApplicationLifetime>(); applicationLifetime.ApplicationStopping.Register(MessagingWorkers.Stop); app.UseIISPlatformHandler(); app.UseCors("AllowAll"); app.UseMvc(); }
public void CommitOutgoingMessageRealTest() { var environmentFactory = EnvironmentFactoryFactory.Create(); MessagingWorkers.Start(new TestBatchParameters(), environmentFactory.MessagingEnvironment.MessagingServiceClient); var pltDeviceOperations = environmentFactory.ManagementEnvironment.ObjDeviceOperations; var messagingService = new MessagingService(new MessagingOperations(), pltDeviceOperations); messagingService.RecordOutgoingMessage(_deviceId, _deviceId, "32412341243"); var msg = messagingService.Peek(_deviceId); Assert.AreEqual(OutgoingState.Ok, msg.State); Assert.AreEqual(_deviceId, msg.Message.DeviceId); Assert.AreEqual("32412341243", msg.Message.Payload); Assert.AreEqual(_deviceId, msg.Message.SenderDeviceId); var state = messagingService.Commit(_deviceId); Assert.AreEqual(OutgoingState.Ok, state); var state2 = messagingService.Commit(_deviceId); Assert.AreEqual(OutgoingState.Ok, state2); MessagingWorkers.Stop(); }
private void StopBackgroundProcesses() { MessagingWorkers.Stop(); _persistentConnectionReceiveAndForgetWorker.Stop(); _persistentConnectionPeekWorker.Stop(); _connectionRegistry.Stop(); }
public void RecordOutgoingMessageRealTest() { var environmentFactory = EnvironmentFactoryFactory.Create(); var pltDeviceOperations = environmentFactory.ManagementEnvironment.ObjDeviceOperations; MessagingWorkers.Start(new TestBatchParameters(), environmentFactory.MessagingEnvironment.MessagingServiceClient); var messagingService = new MessagingService(new MessagingOperations(), pltDeviceOperations); var success = messagingService.RecordOutgoingMessage(_deviceId, _deviceId, "32412341243"); Assert.AreEqual(OutgoingState.Ok, success); MessagingWorkers.Stop(); }
private void StartBackgrounProcesses() { var settingOperations = _serviceProvider.GetService <ISettingOperations>(); SetupTelemetryDataSinkMetadataRegistry(settingOperations); var messagingServiceClient = _serviceProvider.GetService <IMessagingServiceClient>(); messagingServiceClient.Setup(settingOperations.Get(Setting.MessagingServiceEndpoint).Value, settingOperations.Get(Setting.MessagingServiceApiKey).Value); var batchParameters = _serviceProvider.GetService <IBatchParameters>(); MessagingWorkers.Start(batchParameters, messagingServiceClient); _persistentConnectionReceiveAndForgetWorker = _serviceProvider.GetService <PersistentConnectionReceiveAndForgetWorker>(); _persistentConnectionReceiveAndForgetWorker.Start(); _persistentConnectionPeekWorker = _serviceProvider.GetService <PersistentConnectionPeekWorker>(); _persistentConnectionPeekWorker.Start(); _connectionRegistry = _serviceProvider.GetService <ConnectionRegistry>(); _connectionRegistry.Start(); }
public void RecordOutgoingAndPeekMessageRealTest() { var environmentFactory = EnvironmentFactoryFactory.Create(); MessagingWorkers.Start(new TestBatchParameters(), environmentFactory.MessagingEnvironment.MessagingServiceClient); var pltDeviceOperations = environmentFactory.ManagementEnvironment.ObjDeviceOperations; var messagingOperations = new MessagingOperations(); var dateTimeProvider = Substitute.For <IDateTimeProvider>(); dateTimeProvider.UtcNow.Returns(DateTime.UtcNow); var batchParameters = Substitute.For <IBatchParameters>(); batchParameters.PersistentConnectionMessagePeekCollectionTime.Returns( TimeSpan.FromMilliseconds(100)); batchParameters.PersistentConnectionMessagePeekCollectionBatch.Returns(100); var pusherRegistry = new PusherRegistry(dateTimeProvider); var persistentConnectionWorker = new PersistentConnectionPeekWorker(pusherRegistry, messagingOperations, batchParameters); persistentConnectionWorker.Start(); var messagingService = new MessagingService(messagingOperations, pltDeviceOperations); var success = messagingService.RecordOutgoingMessage(_deviceId, _deviceId, "32412341243"); Assert.AreEqual(OutgoingState.Ok, success); var connectionRegistry = new ConnectionRegistry(pusherRegistry, null); var connection = Substitute.For <IPersistentConnection>(); connectionRegistry.RegisterInitiatedConnection(connection); connection.LastHeartbeat.Returns(DateTime.UtcNow); var device = _deviceService.Get(_deviceId); connectionRegistry.PromoteToLoggedInConnection(connection, _deviceId, device.NumericId); connectionRegistry.PromoteToSubscribedConnection(_deviceId, SubscriptionType.PeekAndCommit); connection.NextPeekTime = DateTime.UtcNow.AddSeconds(-0.1); dateTimeProvider.UtcNow.Returns(DateTime.UtcNow); bool ok = false; for (int i = 0; i < 20; i++) { try { connection.ReceivedWithAnyArgs().SendMessage(null); ok = true; } catch (ReceivedCallsException) { Thread.Sleep(100); } } Assert.IsTrue(ok); persistentConnectionWorker.Stop(); MessagingWorkers.Stop(); }