Exemplo n.º 1
0
        public void TimeSeriesMultiTest()
        {
            var ocassionalConnectionClient = new OccasionallyConnectionClient(PlatformApi, _deviceId1, _networkKey);

            ocassionalConnectionClient.RecordTelemetryData("{\"Fld\": 123}");
            Thread.Sleep(100);
            ocassionalConnectionClient.RecordTelemetryData("{\"Fld\": 124}");

            var reportingClient = new ReportingClient(ReportingApi);

            reportingClient.Network.SetNetwork(_networkId, _networkKey);

            var sinks = reportingClient.Network.GetSinks();

            var onerecord = reportingClient.Network.GetTimeSeriesReport(sinks.First(s => s.SinkType == SinkType.TimeSeries).SinkName, DateTime.UtcNow);

            Assert.AreEqual(2, onerecord.Devices.Count);
            var device = onerecord.Devices.Single(d => d.DeviceId == _deviceId1);

            Assert.AreEqual(_deviceId1, device.DeviceId);
            Assert.AreEqual("d1", device.Name);
            Assert.AreEqual(2, device.Data.Count);
            var data = device.Data[0];

            Assert.AreEqual("{\"Fld\":123}", data.Payload);
            Assert.IsTrue(data.Timestamp > 1000000);
            data = device.Data[1];
            Assert.AreEqual("{\"Fld\":124}", data.Payload);
            Assert.IsTrue(data.Timestamp > 1000000);

            device = onerecord.Devices.Single(d => d.DeviceId == _deviceId2);
            Assert.AreEqual(0, device.Data.Count);
        }
Exemplo n.º 2
0
        private static void OcassionalRecvForget(string[] lines, int deviceOrder, int sleep)
        {
            var line = lines[deviceOrder];

            var parts = line.Split(' ');

            var deviceId = parts[0];
            var apiKey   = parts[1];

            Log(deviceId);

            var ocassionalConnectionClient = new OccasionallyConnectionClient(Config.PlatformApi, deviceId, apiKey);
            int cnt = 0;

            while (true)
            {
                PushedMessage pushedMsg = null;
                try
                {
                    pushedMsg = ocassionalConnectionClient.ReceiveAndForgetMessage();
                    cnt++;
                }
                catch (WebException)
                {
                    Log("throttled");
                }
                Thread.Sleep(sleep);
                Log(cnt.ToString() + ((pushedMsg != null) ? "PM" : ""));
            }
        }
Exemplo n.º 3
0
        private static void OcassionalRecord(string[] lines, int deviceOrder, int sleep)
        {
            var line = lines[deviceOrder];

            var parts = line.Split(' ');

            var deviceId = parts[0];
            var apiKey   = parts[1];

            Log(deviceId);

            var ocassionalConnectionClient = new OccasionallyConnectionClient(Config.PlatformApi, deviceId, apiKey);
            var rnd = new Random();
            int cnt = 0;

            while (true)
            {
                try
                {
                    var doit = rnd.Next(100);
                    var a    = doit % 10 == 0 ? string.Format(", \"A\": {0}", rnd.Next(10)) : "";
                    var b    = doit % 15 == 0 ? string.Format(", \"B\": {0}", rnd.Next(20)) : "";

                    ocassionalConnectionClient.RecordTelemetryData(
                        string.Format("{{\"Temperature\": {0}, \"Humidity\": {1}, \"Time\": {2}{3}}}", rnd.Next(10) + 18, rnd.Next(40) + 40, DateTime.UtcNow.Second, a + b));
                    cnt++;
                }
                catch (Exception ex)
                {
                    Log(ex);
                }
                Thread.Sleep(sleep);
                Log(cnt.ToString());
            }
        }
Exemplo n.º 4
0
        public void CurrentDataSingleTest()
        {
            var ocassionalConnectionClient = new OccasionallyConnectionClient(PlatformApi, _deviceId1, _networkKey);

            ocassionalConnectionClient.RecordTelemetryData("{\"Fld\": 123}");
            ocassionalConnectionClient = new OccasionallyConnectionClient(PlatformApi, _deviceId2, _networkKey);
            ocassionalConnectionClient.RecordTelemetryData("{\"Fld\": 124}");

            var reportingClient = new ReportingClient(ReportingApi);

            reportingClient.Network.SetNetwork(_networkId, _networkKey);

            var sinks = reportingClient.Network.GetSinks();

            var onerecord = reportingClient.Network.GetCurrentData(sinks.First(s => s.SinkType == SinkType.CurrentData).SinkName);

            Assert.AreEqual(2, onerecord.Devices.Count);
            var device = onerecord.Devices.Single(d => d.DeviceId == _deviceId1);

            Assert.AreEqual(_deviceId1, device.DeviceId);
            Assert.AreEqual("d1", device.Name);
            Assert.AreEqual("{\"Fld\":123}", device.Payload);
            Assert.IsTrue(device.Timestamp > 1000000);

            device = onerecord.Devices.Single(d => d.DeviceId == _deviceId2);
            Assert.AreEqual(_deviceId2, device.DeviceId);
            Assert.AreEqual("d2", device.Name);
            Assert.AreEqual("{\"Fld\":124}", device.Payload);
            Assert.IsTrue(device.Timestamp > 1000000);
        }
Exemplo n.º 5
0
        public void TimeSeriesSingleTest()
        {
            var ocassionalConnectionClient = new OccasionallyConnectionClient(PlatformApi, _deviceId, _deviceKey);

            ocassionalConnectionClient.RecordTelemetryData("{\"Fld\": 123}");

            var reportingClient = new ReportingClient(ReportingApi);

            reportingClient.Device.SetDevice(_deviceId, _deviceKey);

            var sinks = reportingClient.Device.GetSinks();

            var onerecord = reportingClient.Device.GetTimeSeriesReport(sinks.First(s => s.SinkType == SinkType.TimeSeries).SinkName, DateTime.UtcNow);

            Assert.AreEqual(1, onerecord.Devices.Count);
            var device = onerecord.Devices[0];

            Assert.AreEqual(_deviceId, device.DeviceId);
            Assert.AreEqual("árvíztűrő tükörfúrógép", device.Name);
            Assert.AreEqual(1, device.Data.Count);
            var data = device.Data[0];

            Assert.AreEqual("{\"Fld\":123}", data.Payload);
            Assert.IsTrue(data.Timestamp > 1000000);
        }
Exemplo n.º 6
0
        public void TimeSeriesMultiMultiCsvTest()
        {
            var ocassionalConnectionClient = new OccasionallyConnectionClient(PlatformApi, _deviceId1, _networkKey);

            ocassionalConnectionClient.RecordTelemetryData("{\"Fld\": 123, \"A\": 234}");
            Thread.Sleep(100);
            ocassionalConnectionClient.RecordTelemetryData("{\"Fld\": 124, \"A\": 345}");
            ocassionalConnectionClient = new OccasionallyConnectionClient(PlatformApi, _deviceId2, _networkKey);
            ocassionalConnectionClient.RecordTelemetryData("{\"Fld\": 125, \"B\": 567}");
            Thread.Sleep(100);
            ocassionalConnectionClient.RecordTelemetryData("{\"Fld\": 126, \"B\": 678}");

            var reportingClient = new ReportingClient(ReportingApi);

            reportingClient.Network.SetNetwork(_networkId, _networkKey);

            var sinks = reportingClient.Network.GetSinks();

            var record = reportingClient.Network.GetTimeSeriesReportCsv(sinks.First(s => s.SinkType == SinkType.TimeSeries).SinkName, DateTime.UtcNow);

            Assert.IsTrue(record.StartsWith("DeviceId,Name,Time,Fld,A,B\r\n") || record.StartsWith("DeviceId,Name,Time,Fld,B,A\r\n"));
            Assert.IsTrue(record.Contains("d1"));
            Assert.IsTrue(record.Contains("d2"));
            Assert.IsTrue(record.Contains(_deviceId1));
            Assert.IsTrue(record.Contains(_deviceId2));
            Assert.IsTrue(record.Contains("123,234,\r\n") || record.Contains("123,,234\r\n"));
            Assert.IsTrue(record.Contains("124,345,\r\n") || record.Contains("124,,345\r\n"));
            Assert.IsTrue(record.Contains("125,,567\r\n") || record.Contains("125,567,\r\n"));
            Assert.IsTrue(record.Contains("126,,678\r\n") || record.Contains("126,678,\r\n"));
        }
Exemplo n.º 7
0
        public void SingleDeviceSendToAndPeekAndCommitTest()
        {
            var ocassionalConnectionClient = new OccasionallyConnectionClient(PlatformApi, _deviceId, _apiKey);

            ocassionalConnectionClient.SendMessageTo(_deviceId, "msg1");
            ocassionalConnectionClient.SendMessageTo(_deviceId, "msg2");

            var result1 = ocassionalConnectionClient.PeekMessage();

            Assert.IsTrue(result1.MessageId >= 0);
            Assert.IsTrue(result1.Payload == "msg1");
            Assert.IsTrue(result1.Timestamp > new DateTime(2014, 1, 1));
            Assert.AreEqual(_deviceId, result1.SenderDeviceId);

            var result2 = ocassionalConnectionClient.PeekMessage();

            Assert.AreEqual(result1.MessageId, result2.MessageId);
            Assert.IsTrue(result2.Payload == "msg1");
            Assert.IsTrue(result2.Timestamp > new DateTime(2014, 1, 1));
            Assert.AreEqual(_deviceId, result2.SenderDeviceId);

            ocassionalConnectionClient.CommitMessage();

            var result3 = ocassionalConnectionClient.PeekMessage();

            Assert.AreEqual(result2.MessageId + 1, result3.MessageId);
            Assert.IsTrue(result3.Payload == "msg2");
            Assert.IsTrue(result3.Timestamp > new DateTime(2014, 1, 1));
        }
Exemplo n.º 8
0
        private static void OcassionalSend(string[] lines, int deviceOrder, int sleep, int maxSend)
        {
            var line = lines[deviceOrder];

            var parts = line.Split(' ');

            var deviceId = parts[0];
            var apiKey   = parts[1];

            Log(deviceId);

            var ocassionalConnectionClient = new OccasionallyConnectionClient(Config.PlatformApi, deviceId, apiKey);
            var rnd = new Random();

            int cnt = 0;

            while (true)
            {
                var target         = lines[rnd.Next(maxSend)];
                var targetDeviceId = target.Split(' ')[0];

                try
                {
                    ocassionalConnectionClient.SendMessageTo(targetDeviceId, "{\"Temperature:\": 24, \"Humidity\": 60, \"Time\":" + DateTime.UtcNow.Ticks + "}");
                    cnt++;
                }
                catch (WebException)
                {
                    Log("sendthrottled");
                }

                Thread.Sleep(sleep);
                Log(cnt.ToString());
            }
        }
Exemplo n.º 9
0
        public void SingleDeviceReceiveAndForgetNothingTest()
        {
            var ocassionalConnectionClient = new OccasionallyConnectionClient(PlatformApi, _deviceId, _apiKey);

            var result = ocassionalConnectionClient.ReceiveAndForgetMessage();

            Assert.IsNull(result);
        }
Exemplo n.º 10
0
        public void CurrentDataAuthErrorTest()
        {
            var ocassionalConnectionClient = new OccasionallyConnectionClient(PlatformApi, _deviceId1, _networkKey);

            ocassionalConnectionClient.RecordTelemetryData("{\"Fld\": 123}");

            var reportingClient = new ReportingClient(ReportingApi);

            reportingClient.Network.SetNetwork(_networkId, "1234");

            reportingClient.Network.GetCurrentData("nomatter");
        }
Exemplo n.º 11
0
        public void TimeSeriesAuthErrorTest()
        {
            var ocassionalConnectionClient = new OccasionallyConnectionClient(PlatformApi, _deviceId, _deviceKey);

            ocassionalConnectionClient.RecordTelemetryData("{\"Fld\": 123}");

            var reportingClient = new ReportingClient(ReportingApi);

            reportingClient.Device.SetDevice(_deviceId, "1234");

            reportingClient.Device.GetTimeSeriesReport("nomatter", DateTime.UtcNow);
        }
Exemplo n.º 12
0
        public void SingleDeviceSendToAndReceiveAndForgetTest()
        {
            var ocassionalConnectionClient = new OccasionallyConnectionClient(PlatformApi, _deviceId, _apiKey);

            ocassionalConnectionClient.SendMessageTo(_deviceId, "test");

            var result = ocassionalConnectionClient.ReceiveAndForgetMessage();

            Assert.IsTrue(result.MessageId >= 0);
            Assert.IsTrue(result.Payload == "test");
            Assert.IsTrue(result.Timestamp > new DateTime(2014, 1, 1));
            Assert.AreEqual(_deviceId, result.SenderDeviceId);
        }
Exemplo n.º 13
0
        public void CurrentDataSingleCsvDataWithCommaTest()
        {
            var ocassionalConnectionClient = new OccasionallyConnectionClient(PlatformApi, _deviceId, _deviceKey);

            ocassionalConnectionClient.RecordTelemetryData("{\"F,ld\": \"12,3\"}");

            var reportingClient = new ReportingClient(ReportingApi);

            reportingClient.Device.SetDevice(_deviceId, _deviceKey);

            var sinks = reportingClient.Device.GetSinks();

            var record = reportingClient.Device.GetCurrentDataCsv(sinks.First(s => s.SinkType == SinkType.CurrentData).SinkName);

            Assert.IsTrue(record.StartsWith("DeviceId,Name,Time,\"F,ld\"\r\n"));
            Assert.IsTrue(record.Contains("árvíztűrő"));
            Assert.IsTrue(record.Contains(_deviceId));
            Assert.IsTrue(record.Contains("\"12,3\"\r\n"));
        }
Exemplo n.º 14
0
        public void TimeSeriesMultiCsvTest()
        {
            var ocassionalConnectionClient = new OccasionallyConnectionClient(PlatformApi, _deviceId, _deviceKey);

            ocassionalConnectionClient.RecordTelemetryData("{\"Fld\": 123, \"A\": 234}");
            Thread.Sleep(100);
            ocassionalConnectionClient.RecordTelemetryData("{\"Fld\": 124, \"B\": 456}");

            var reportingClient = new ReportingClient(ReportingApi);

            reportingClient.Device.SetDevice(_deviceId, _deviceKey);

            var sinks = reportingClient.Device.GetSinks();

            var record = reportingClient.Device.GetTimeSeriesReportCsv(sinks.First(s => s.SinkType == SinkType.TimeSeries).SinkName, DateTime.UtcNow);

            Assert.IsTrue(record.StartsWith("DeviceId,Name,Time,Fld,A,B\r\n") || record.StartsWith("DeviceId,Name,Time,Fld,B,A\r\n"));
            Assert.IsTrue(record.Contains("árvíztűrő"));
            Assert.IsTrue(record.Contains(_deviceId));
            Assert.IsTrue(record.Contains("123,234,\r\n"));
            Assert.IsTrue(record.Contains("124,,456\r\n"));
        }
Exemplo n.º 15
0
        public void CurrentDataSingleCsvTest()
        {
            var ocassionalConnectionClient = new OccasionallyConnectionClient(PlatformApi, _deviceId1, _networkKey);

            ocassionalConnectionClient.RecordTelemetryData("{\"Fld\": 123, \"A\": 234}");
            ocassionalConnectionClient = new OccasionallyConnectionClient(PlatformApi, _deviceId2, _networkKey);
            ocassionalConnectionClient.RecordTelemetryData("{\"Fld\": 124, \"B\": 456}");

            var reportingClient = new ReportingClient(ReportingApi);

            reportingClient.Network.SetNetwork(_networkId, _networkKey);

            var sinks = reportingClient.Network.GetSinks();

            var record = reportingClient.Network.GetCurrentDataCsv(sinks.First(s => s.SinkType == SinkType.CurrentData).SinkName);

            Assert.IsTrue(record.StartsWith("DeviceId,Name,Time,Fld,A,B\r\n") || record.StartsWith("DeviceId,Name,Time,Fld,B,A\r\n"));
            Assert.IsTrue(record.Contains("d1"));
            Assert.IsTrue(record.Contains("d2"));
            Assert.IsTrue(record.Contains(_deviceId1));
            Assert.IsTrue(record.Contains(_deviceId2));
            Assert.IsTrue(record.Contains("123,234,\r\n") || record.Contains("123,,234\r\n"));
            Assert.IsTrue(record.Contains("124,,456\r\n") || record.Contains("124,456,\r\n"));
        }
Exemplo n.º 16
0
        public void MultiDeviceSendAndReceiveOutgoingTest()
        {
            var managementClient = new ManagementClient(ManagementApi);

            managementClient.User.Register(new Register
            {
                Email    = Guid.NewGuid() + "@test.hu",
                Name     = "test user",
                Password = "******"
            });

            var companyId = managementClient.Company.Create(new Company {
                Name = "company"
            });
            var serviceId = managementClient.Service.Create(new Service {
                CompanyId = companyId, Name = "service"
            });
            var networkId = managementClient.Network.Create(new Network {
                CompanyId = companyId, ServiceId = serviceId, Name = "árvíztűrő tükörfúrógép"
            });

            var apiKey = managementClient.Service.Get(serviceId).ApiKey;

            const int deviceCount  = 10;
            const int messageCount = 2;

            var list = new List <string>();

            Parallel.For(0, deviceCount, new ParallelOptions()
            {
                MaxDegreeOfParallelism = 2
            }, (i) =>
            {
                var deviceId = managementClient.Device.Create(new Device {
                    CompanyId = companyId, ServiceId = serviceId, NetworkId = networkId, Name = "name" + i
                });
                lock (list)
                {
                    list.Add(deviceId);
                }
            });

            var tasks = new List <Task>();

            for (int i = 0; i < deviceCount; i++)
            {
                var deviceId = list[i];
                var task     = Task.Factory.StartNew(() =>
                {
                    var ocassionalConnectionClient = new OccasionallyConnectionClient(PlatformApi, deviceId, apiKey);
                    for (var j = 0; j < messageCount; j++)
                    {
                        ocassionalConnectionClient.SendMessageTo(deviceId, "msg" + j);
                        Thread.Sleep(100);
                    }
                });
                tasks.Add(task);
            }
            Task.WaitAll(tasks.ToArray());

            tasks.Clear();
            for (int i = 0; i < deviceCount; i++)
            {
                var deviceId = list[i];
                var task     = Task.Factory.StartNew(() =>
                {
                    var ocassionalConnectionClient = new OccasionallyConnectionClient(PlatformApi, deviceId, apiKey);
                    for (var j = 0; j < messageCount; j++)
                    {
                        var message = ocassionalConnectionClient.ReceiveAndForgetMessage();
                        Assert.IsTrue(message.Payload.Contains("msg"));
                        Assert.AreEqual(deviceId, message.SenderDeviceId);
                    }
                });
                tasks.Add(task);
            }
            Task.WaitAll(tasks.ToArray());
        }
Exemplo n.º 17
0
        public void MultiDeviceManyRecordTelemetryTest()
        {
            var managementClient = new ManagementClient(ManagementApi);

            managementClient.User.Register(new Register
            {
                Email    = Guid.NewGuid() + "@test.hu",
                Name     = "test user",
                Password = "******"
            });

            var companyId = managementClient.Company.Create(new Company {
                Name = "company"
            });
            var serviceId = managementClient.Service.Create(new Service {
                CompanyId = companyId, Name = "service"
            });
            var networkId = managementClient.Network.Create(new Network {
                CompanyId = companyId, ServiceId = serviceId, Name = "árvíztűrő tükörfúrógép"
            });

            var apiKey = managementClient.Service.Get(serviceId).ApiKey;

            var telemetryDataSinkParameters = new List <TelemetryDataSinkParameters>
            {
                new TelemetryDataSinkParameters
                {
                    SinkName   = SinkData,
                    Parameters = new Dictionary <string, string>()
                },
                new TelemetryDataSinkParameters
                {
                    SinkName   = SinkTimeSeries,
                    Parameters = new Dictionary <string, string>()
                }
            };

            managementClient.Service.UpdateIncomingTelemetryDataSinks(serviceId, telemetryDataSinkParameters);

            const int deviceCount  = 25;
            const int messageCount = 2;

            var list = new List <string>();

            Parallel.For(0, deviceCount, new ParallelOptions()
            {
                MaxDegreeOfParallelism = 2
            }, (i) =>
            {
                var deviceId = managementClient.Device.Create(new Device {
                    CompanyId = companyId, ServiceId = serviceId, NetworkId = networkId, Name = "name" + i
                });
                lock (list)
                {
                    list.Add(deviceId);
                }
            });

            var tasks = new List <Task>();

            for (int i = 0; i < deviceCount; i++)
            {
                var deviceId = list[i];
                var task     = Task.Factory.StartNew(() =>
                {
                    var ocassionalConnectionClient = new OccasionallyConnectionClient(PlatformApi, deviceId, apiKey);
                    for (var j = 0; j < messageCount; j++)
                    {
                        ocassionalConnectionClient.RecordTelemetryData("{\"Temperature\": 24, \"Time\":" + DateTime.UtcNow.Ticks + "}");
                        Thread.Sleep(10);
                    }
                });
                tasks.Add(task);
            }
            Task.WaitAll(tasks.ToArray());
        }
Exemplo n.º 18
0
        public void SingleDeviceRecordTelemetryDataAuthErrorTest()
        {
            var ocassionalConnectionClient = new OccasionallyConnectionClient(PlatformApi, _deviceId, _apiKey + "aaa");

            ocassionalConnectionClient.RecordTelemetryData("{\"Temperature\": 24, \"Time\":" + DateTime.UtcNow.Ticks + "}");
        }
Exemplo n.º 19
0
        public void SingleDeviceCommitNothingTest()
        {
            var ocassionalConnectionClient = new OccasionallyConnectionClient(PlatformApi, _deviceId, _apiKey);

            ocassionalConnectionClient.CommitMessage();
        }
Exemplo n.º 20
0
        public void SingleDeviceSendToTest()
        {
            var ocassionalConnectionClient = new OccasionallyConnectionClient(PlatformApi, _deviceId, _apiKey);

            ocassionalConnectionClient.SendMessageTo(_deviceId, "test");
        }