public void TestDeviceAdapter( ) { try { GatewayService service = PrepareGatewayService( ); DeviceAdapterLoader dataIntakeLoader = new DeviceAdapterLoader(Loader.GetSources( ), Loader.GetEndpoints( ), _logger); _totalMessagesToSend += 5; dataIntakeLoader.StartAll(service.Enqueue, DataArrived); _completed.WaitOne( ); dataIntakeLoader.StopAll( ); _batchSenderThread.Stop(STOP_TIMEOUT_MS); } catch (Exception ex) { _logger.LogError("exception caught: " + ex.StackTrace); } finally { _batchSenderThread.Stop(STOP_TIMEOUT_MS); _sender.Close( ); } }
//--// public WindowsService(ILogger logger) { if (logger == null) { throw new ArgumentException("Cannot run service without logging"); } _logger = logger; if (logger is TunableLogger) { TunableLogger.LoggingLevel loggingLevel = TunableLogger.LevelFromString(ConfigurationManager.AppSettings.Get("LoggingLevel")); (( TunableLogger )logger).Level = (loggingLevel != TunableLogger.LoggingLevel.Undefined) ? loggingLevel : TunableLogger.LoggingLevel.Errors; } try { _THREADING.TaskScheduler.UnobservedTaskException += OnUnobservedTaskException; // Name the Windows Service ServiceName = Constants.WindowsServiceName; _gatewayQueue = new GatewayQueue <QueuedItem>( ); AMQPConfig amqpConfig = Loader.GetAMQPConfig( ); if (amqpConfig == null) { _logger.LogError("AMQP configuration is missing"); return; } _AMPQSender = new AMQPSender <SensorDataContract>( amqpConfig.AMQPSAddress, amqpConfig.EventHubName, amqpConfig.EventHubMessageSubject, amqpConfig.EventHubDeviceId, amqpConfig.EventHubDeviceDisplayName, _logger ); _batchSenderThread = new BatchSenderThread <QueuedItem, SensorDataContract>( _gatewayQueue, _AMPQSender, null, //m => DataTransforms.AddTimeCreated(DataTransforms.SensorDataContractFromQueuedItem(m, _Logger)), new Func <QueuedItem, string>(m => m.JsonData), _logger); _dataIntakeLoader = new DeviceAdapterLoader(Loader.GetSources( ), Loader.GetEndpoints( ), _logger); } catch (Exception ex) { _logger.LogError("Exception creating WindowsService: " + ex.Message); } }
public void TestRecieveMessagesFromSocketDevice( ) { const int MESSAGES_TO_SEND_BY_SOCKET = 5; try { IList <string> sources = Loader.GetSources( ) .Where(m => m.Contains("Socket")).ToList( ); IList <SensorEndpoint> endpoints = Loader.GetEndpoints( ) .Where(m => m.Name.Contains("Socket")).ToList( ); if (endpoints.Count == 0) { throw new Exception("Need to specify local ip host for Socket interations " + "and name of endpoint should contain \"Socket\""); } GatewayService service = PrepareGatewayService( ); SensorEndpoint endpoint = endpoints.First( ); SocketClientTestDevice device = new SocketClientTestDevice(_logger); device.Start(endpoint, MESSAGES_TO_SEND_BY_SOCKET); DeviceAdapterLoader dataIntakeLoader = new DeviceAdapterLoader( sources, endpoints, _logger); _totalMessagesToSend += MESSAGES_TO_SEND_BY_SOCKET; dataIntakeLoader.StartAll(service.Enqueue, DataArrived); _completed.WaitOne( ); dataIntakeLoader.StopAll( ); _batchSenderThread.Stop(STOP_TIMEOUT_MS); } catch (Exception ex) { _logger.LogError("exception caught: " + ex.StackTrace); } finally { _batchSenderThread.Stop(STOP_TIMEOUT_MS); _sender.Close( ); } }
public void TestRealTimeData( ) { const int INITIAL_MESSAGES_BOUND = 5; const int STOP_TIMEOUT_MS = 5000; // ms try { IList <string> sources = Loader.GetSources( ).Where( m => !m.Contains("Mock") && (m.Contains("Socket") || m.Contains("SerialPort")) ).ToList( ); IList <SensorEndpoint> endpoints = Loader.GetEndpoints( ); if (!endpoints.Any(m => m.Name.Contains("Socket"))) { Console.Out.WriteLine("Need to specify local ip host for Socket interations " + "and name of endpoint should contain \"Socket\""); } GatewayService service = PrepareGatewayService( ); DeviceAdapterLoader dataIntakeLoader = new DeviceAdapterLoader( sources, endpoints, _logger); _totalMessagesToSend += INITIAL_MESSAGES_BOUND; dataIntakeLoader.StartAll(service.Enqueue, DataArrived); _completed.WaitOne( ); dataIntakeLoader.StopAll( ); _batchSenderThread.Stop(STOP_TIMEOUT_MS); } catch (Exception ex) { _logger.LogError("exception caught: " + ex.StackTrace); } finally { _batchSenderThread.Stop(STOP_TIMEOUT_MS); _sender.Close( ); } }
//--// private static void InitGateway(ILogger logger) { if (logger == null) { throw new ArgumentException("Cannot run service without logging"); } _logger = logger; if (logger is TunableLogger) { TunableLogger.LoggingLevel loggingLevel = TunableLogger.LevelFromString(ConfigurationManager.AppSettings.Get("LoggingLevel")); (( TunableLogger )logger).Level = (loggingLevel != TunableLogger.LoggingLevel.Undefined) ? loggingLevel : TunableLogger.LoggingLevel.Errors; } try { System.Threading.Tasks.TaskScheduler.UnobservedTaskException += OnUnobservedTaskException; // Name the Windows Service _gatewayQueue = new GatewayQueue <QueuedItem>( ); IotHubConfig iotHubConfig = Loader.GetIotHubConfig(); if (iotHubConfig == null) { _logger.LogError("IoT Hub connection configuration is missing"); return; } _MessageSender = new MessageSender <SensorDataContract>(iotHubConfig.IotHubConnectionString, _logger); _batchSenderThread = new BatchSenderThread <QueuedItem, SensorDataContract>( _gatewayQueue, _MessageSender, null, //m => DataTransforms.AddTimeCreated(DataTransforms.SensorDataContractFromQueuedItem(m, _Logger)), new Func <QueuedItem, string>(m => m.JsonData), _logger); _dataIntakeLoader = new DeviceAdapterLoader(Loader.GetSources( ), Loader.GetEndpoints( ), _logger); TaskWrapper.Run(() => IPAddressHelper.GetIPAddressString(ref _gatewayIPAddressString)); DataTransformsConfig dataTransformsConfig = Loader.GetDataTransformsConfig( ); if (dataTransformsConfig.AttachIP || dataTransformsConfig.AttachTime) { Func <string, SensorDataContract> transform = (m => DataTransforms.SensorDataContractFromString(m, _logger)); if (dataTransformsConfig.AttachTime) { var transformPrev = transform; transform = (m => DataTransforms.AddTimeCreated(transformPrev(m))); } if (dataTransformsConfig.AttachTime) { var transformPrev = transform; transform = (m => DataTransforms.AddIPToLocation(transformPrev(m), _gatewayIPAddressString)); } _gatewayTransform = (m => DataTransforms.QueuedItemFromSensorDataContract(transform(m))); } } catch (Exception ex) { _logger.LogError("Exception creating Gateway: " + ex.Message); } }