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); }
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" : "")); } }
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()); } }
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); }
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); }
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")); }
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)); }
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()); } }
public void SingleDeviceReceiveAndForgetNothingTest() { var ocassionalConnectionClient = new OccasionallyConnectionClient(PlatformApi, _deviceId, _apiKey); var result = ocassionalConnectionClient.ReceiveAndForgetMessage(); Assert.IsNull(result); }
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"); }
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); }
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); }
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")); }
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")); }
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")); }
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()); }
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()); }
public void SingleDeviceRecordTelemetryDataAuthErrorTest() { var ocassionalConnectionClient = new OccasionallyConnectionClient(PlatformApi, _deviceId, _apiKey + "aaa"); ocassionalConnectionClient.RecordTelemetryData("{\"Temperature\": 24, \"Time\":" + DateTime.UtcNow.Ticks + "}"); }
public void SingleDeviceCommitNothingTest() { var ocassionalConnectionClient = new OccasionallyConnectionClient(PlatformApi, _deviceId, _apiKey); ocassionalConnectionClient.CommitMessage(); }
public void SingleDeviceSendToTest() { var ocassionalConnectionClient = new OccasionallyConnectionClient(PlatformApi, _deviceId, _apiKey); ocassionalConnectionClient.SendMessageTo(_deviceId, "test"); }