public static InvokeResult <IDataStreamConnector> GetConnector(DataStreamTypes type, IAdminLogger logger) { IDataStreamConnector _streamConnector = null; switch (type) { case DataStreamTypes.AWSElasticSearch: _streamConnector = new AWSElasticSearchConnector(logger); break; case DataStreamTypes.AWSS3: _streamConnector = new AWSS3Connector(logger); break; case DataStreamTypes.AzureBlob: _streamConnector = new AzureBlobConnector(logger); break; case DataStreamTypes.AzureEventHub: _streamConnector = new AzureEventHubConnector(logger); break; case DataStreamTypes.AzureTableStorage: case DataStreamTypes.AzureTableStorage_Managed: _streamConnector = new AzureTableStorageConnector(logger); break; case DataStreamTypes.SQLServer: _streamConnector = new SQLServerConnector(logger); break; case DataStreamTypes.Redis: _streamConnector = new RedisConnector(logger); break; case DataStreamTypes.Postgresql: _streamConnector = new PostgresqlConnector(logger); break; case DataStreamTypes.PointArrayStorage: _streamConnector = new PointArrayPostgresqlConnector(logger); break; } if (_streamConnector == null) { return(InvokeResult <IDataStreamConnector> .FromError("Unsupported Stream Type")); } return(InvokeResult <IDataStreamConnector> .Create(_streamConnector)); }
private async Task BulkInsert(IDataStreamConnector connector, DataStream stream, string deviceType, QueryRangeType rangeType) { var records = GetRecordsToInsert(stream, "dev123", rangeType); foreach (var record in records) { Assert.IsTrue((await connector.AddItemAsync(record)).Successful, "Did not insert bulk item"); } // Give it just a little time to insert the rest of the records await Task.Delay(1000); }
protected async Task <DataStreamRecord> AddObject(IDataStreamConnector connector, DataStream stream, string deviceId, string timeStamp, params KeyValuePair <string, object>[] items) { var record = GetRecord(stream, deviceId, timeStamp, items); var addResult = await connector.AddItemAsync(record); if (!addResult.Successful) { Console.WriteLine(addResult.Errors.First().Message); } Assert.IsTrue(addResult.Successful); return(record); }
protected async Task ValidatePaginatedRecordSet(string deviceId, IDataStreamConnector connector) { var getResult = await connector.GetItemsAsync(deviceId, new Core.Models.UIMetaData.ListRequest() { PageIndex = 0, PageSize = 15 }); Assert.IsTrue(getResult.Successful); Assert.AreEqual("99", getResult.Model.ToArray()[0].Where(fld => fld.Key == "pointIndex").First().Value.ToString()); Assert.IsTrue(getResult.HasMoreRecords, "Should Have Records"); WriteResult(getResult); getResult = await connector.GetItemsAsync(deviceId, new Core.Models.UIMetaData.ListRequest() { PageIndex = 2, PageSize = 15 }); Assert.AreEqual("84", getResult.Model.ToArray()[0].Where(fld => fld.Key == "pointIndex").First().Value.ToString()); Assert.IsTrue(getResult.Successful); Assert.IsTrue(getResult.HasMoreRecords); WriteResult(getResult); getResult = await connector.GetItemsAsync(deviceId, new Core.Models.UIMetaData.ListRequest() { PageIndex = 7, PageSize = 15 }); Assert.AreEqual("9", getResult.Model.ToArray()[0].Where(fld => fld.Key == "pointIndex").First().Value.ToString()); Assert.AreEqual(10, getResult.PageSize); Assert.IsTrue(getResult.Successful); Assert.IsFalse(getResult.HasMoreRecords); WriteResult(getResult); getResult = await connector.GetItemsAsync(deviceId, new Core.Models.UIMetaData.ListRequest() { PageIndex = 8, PageSize = 15 }); Assert.AreEqual(0, getResult.PageSize); Assert.IsTrue(getResult.Successful); Assert.IsFalse(getResult.HasMoreRecords); WriteResult(getResult); }
private async Task BulkInsert(IDataStreamConnector connector, DataStream stream, string deviceType, QueryRangeType rangeType) { var batchOper = new TableBatchOperation(); var cloudTable = GetCloudTable(stream); var records = GetRecordsToInsert(stream, "dev123", rangeType); foreach (var record in records) { var tsRecord = DataStreamTSEntity.FromDeviceStreamRecord(stream, record); batchOper.Add(TableOperation.Insert(tsRecord)); Console.WriteLine(tsRecord.RowKey); } var results = await cloudTable.ExecuteBatchAsync(batchOper); Assert.AreEqual(records.Count, results.Count, "Batch result size should match insert size"); foreach (var result in results) { Assert.AreEqual(204, result.HttpStatusCode); } // Give it just a little time to insert the rest of the records await Task.Delay(1000); }
protected async Task ValidateDataFilterAfter(string deviceId, DataStream stream, IDataStreamConnector connector) { var startDate = DateTime.UtcNow.AddDays(1).ToJSONString(); var getResult = await connector.GetItemsAsync(deviceId, new Core.Models.UIMetaData.ListRequest() { PageIndex = 0, PageSize = 30, StartDate = startDate }); Console.WriteLine($"All Date Values should be larger than {startDate}"); Assert.IsTrue(getResult.Successful, getResult.Successful ? "Success" : $"Could not get result {getResult.Errors.First().Message}"); Assert.AreEqual(getResult.PageSize, getResult.Model.Count(), "Page size should match model count"); Assert.AreEqual(10, getResult.PageSize); Assert.IsFalse(getResult.Model.Where(rec => String.Compare(rec.Timestamp, startDate) < 0).Any()); Assert.IsTrue(getResult.Successful); Assert.IsFalse(getResult.HasMoreRecords); WriteResult(getResult); }
public async Task <ListResponse <DataStreamResult> > GetStreamDataAsync(DataStream stream, IDataStreamConnector connector, string deviceId, EntityHeader org, EntityHeader user, ListRequest request) { await AuthorizeAsync(stream, AuthorizeResult.AuthorizeActions.Read, user, org, "ReadDeviceData"); await connector.InitAsync(stream); return(await connector.GetItemsAsync(deviceId, request)); }