コード例 #1
0
        public void TestDates()
        {
            var d = new Dictionary <string, DateTime>
            {
                // 7 and 8 lens
                { "10272017", new DateTime(2017, 10, 27) },
                { "8012035", new DateTime(2035, 8, 1) },
                { "6302045", new DateTime(2045, 6, 30) },
                { "8022022", new DateTime(2022, 8, 02) },
                { "12012038", new DateTime(2038, 12, 01) },
                { "11302046", new DateTime(2046, 11, 30) },
                { "11012029", new DateTime(2029, 11, 01) },
                { "2102019", new DateTime(2019, 2, 10) },
                { "4272023", new DateTime(2023, 4, 27) },
                { "8222022", new DateTime(2022, 8, 22) },
                // 8 lens
                { "08012035", new DateTime(2035, 8, 1) },
                { "06302045", new DateTime(2045, 6, 30) },
                { "08022022", new DateTime(2022, 8, 02) },
                { "02102019", new DateTime(2019, 2, 10) },
                { "04272023", new DateTime(2023, 4, 27) },
                { "08222022", new DateTime(2022, 8, 22) }
            };

            foreach (var s in d)
            {
                var date = (DateTime)DataTransforms.MMDDYYYY_Date(s.Key);

                Assert.AreEqual(date, s.Value);
            }
        }
コード例 #2
0
        protected override void OnStart(string[] args)
        {
            _logger.LogInfo("Service starting... ");

            if (_webHost != null)
            {
                _webHost.Close( );
            }

            _batchSenderThread.Start( );

            _webHost = new WebServiceHost(typeof(Microsoft.ConnectTheDots.Gateway.GatewayService));
            Gateway.GatewayService service = new Microsoft.ConnectTheDots.Gateway.GatewayService(
                _gatewayQueue,
                _batchSenderThread,
                m => DataTransforms.QueuedItemFromSensorDataContract(
                    DataTransforms.AddTimeCreated(DataTransforms.SensorDataContractFromString(m, _logger)), _logger)
                );
            _webHost.Description.Behaviors.Add(new ServiceBehavior(() => service));

            service.Logger         = _logger;
            service.OnDataInQueue += OnData;

            _webHost.Open( );

            _dataIntakeLoader.StartAll(service.Enqueue);

            _logger.LogInfo("...started");
        }
コード例 #3
0
        public static DateTime GetLastDayOfMonth(string input)
        {
            if (DateTime.TryParseExact(input, "MM/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out DateTime rtn))
            {
                return(GetLastDayOfMonth(rtn));
            }

            return(GetLastDayOfMonth(DataTransforms.TransformExcelDate(input).ToString()));
        }
コード例 #4
0
        //--//

        public CoreTest(ILogger logger)
        {
            if (logger == null)
            {
                throw new ArgumentException("Cannot run tests without logging");
            }

            _completed = new AutoResetEvent(false);

            _logger = logger;

            _rand = new Random( );
            _totalMessagesSent   = 0;
            _totalMessagesToSend = 0;
            _gatewayQueue        = new GatewayQueue <QueuedItem>( );

#if MOCK_SENDER
            _sender = new MockSender <SensorDataContract>(this);
#else
            IotHubConfig iotHubConfig = Loader.GetIotHubConfig( );

            _sender = new MessageSender <SensorDataContract>(iotHubConfig.IotHubConnectionString, _logger);
#endif

            _batchSenderThread = new BatchSenderThread <QueuedItem, SensorDataContract>(
                _gatewayQueue,
                _sender,
                dataTransform: null,
                serializedData: m => (m == null) ? null : m.JsonData,
                logger: _logger
                );

            string gatewayIPAddressString = string.Empty;
            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)));
            }
        }
コード例 #5
0
        private GatewayService PrepareGatewayService( )
        {
            _batchSenderThread.Start( );

            GatewayService service = new GatewayService(_gatewayQueue, _batchSenderThread,
                                                        m => DataTransforms.QueuedItemFromSensorDataContract(
                                                            DataTransforms.AddTimeCreated(DataTransforms.SensorDataContractFromString(m, _logger)), _logger));

            service.Logger         = _logger;
            service.OnDataInQueue += DataInQueue;

            return(service);
        }
コード例 #6
0
        //--//

        public CoreTest(ILogger logger)
        {
            if (logger == null)
            {
                throw new ArgumentException("Cannot run tests without logging");
            }

            _completed = new AutoResetEvent(false);

            _logger = logger;

            _rand = new Random();
            _totalMessagesSent   = 0;
            _totalMessagesToSend = 0;
            _gatewayQueue        = new GatewayQueue <QueuedItem>();

#if MOCK_SENDER
            _sender = new IotHubSender <SensorDataContract>("HostName=technobee-infrastructure-testbed-01-iot-hub.azure-devices.net;SharedAccessKeyName=iothubowner;SharedAccessKey=0JgLhqkHopPQVQhvm07R20T/6JZ9JTzt5T8rSRkLvBg=", _logger); // new RabbitMQSender<SensorDataContract>(_logger/*, "address"*/); // MockSender

            //"HostName=technobee-infrastructure-testbed-01-iot-hub.azure-devices.net;SharedAccessKeyName=iothubowner;SharedAccessKey=0JgLhqkHopPQVQhvm07R20T/6JZ9JTzt5T8rSRkLvBg="
#else
            string IotHubConnectionString = "";

            _sender = new MessageSender <SensorDataContract>(IotHubConnectionString, _logger);
#endif

            _batchSenderThread = new BatchSenderThread <QueuedItem, SensorDataContract>(
                _gatewayQueue,
                _sender,
                dataTransform: null,
                serializedData: m => (m == null) ? null : m.JsonData,
                logger: _logger
                );

            string gatewayIPAddressString = string.Empty;

            Func <string, SensorDataContract> transform = (m => DataTransforms.SensorDataContractFromString(m, _logger));


            _gatewayTransform = (m => DataTransforms.QueuedItemFromSensorDataContract(transform(m)));
        }
コード例 #7
0
        //--//

        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);

                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 WindowsService: " + ex.Message);
            }
        }
コード例 #8
0
ファイル: Program.cs プロジェクト: yym2020-zz/connectthedots
        //--//

        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);
            }
        }
コード例 #9
0
 public void TestScientificDoubleToDecimal()
 {
     Assert.AreEqual(0.00123545m, DataTransforms.TransformDecimal("12.3545E-4"));
     Assert.AreEqual(123545m, DataTransforms.TransformDecimal("12.3545E4"));
     Assert.AreEqual(0m, DataTransforms.TransformDecimal("12.3545E-40"));
 }
コード例 #10
0
        public void TestDecimalTransform()
        {
            var d = DataTransforms.TransformInt("(89)");

            Assert.AreEqual(-89, d);
        }