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); }
public async Task DataStream_Azure_TableStorage_Validate_PaginatedItems() { var deviceId = "dev123"; var stream = GetValidStream(); var cloudTable = GetCloudTable(stream); var batchOper = new TableBatchOperation(); var connector = await GetConnector(stream); for (var idx = 0; idx < 100; ++idx) { var record = GetRecord(stream, deviceId, DateTime.UtcNow.AddMinutes(idx).ToJSONString(), new KeyValuePair <string, object>("pointIndex", idx), new KeyValuePair <string, object>("pointOne", 37.5), new KeyValuePair <string, object>("pointTwo", 58.6), new KeyValuePair <string, object>("uniqueId", Guid.NewGuid().ToId()), new KeyValuePair <string, object>("pointThree", "testing")); batchOper.Add(TableOperation.Insert(DataStreamTSEntity.FromDeviceStreamRecord(stream, record))); } var results = await cloudTable.ExecuteBatchAsync(batchOper); Assert.AreEqual(100, results.Count, "Batch result size should match insert size"); foreach (var result in results) { Assert.AreEqual(204, result.HttpStatusCode); } var getResult = await connector.GetItemsAsync(deviceId, new Core.Models.UIMetaData.ListRequest() { PageSize = 15 }); Assert.IsTrue(getResult.Successful); WriteResult(getResult); Assert.AreEqual("99", getResult.Model.ToArray()[0].Where(fld => fld.Key == "pointIndex").First().Value.ToString()); Assert.IsTrue(getResult.HasMoreRecords, "Should Have Records"); WriteResult(getResult); for (var idx = 0; idx < 5; ++idx) { getResult = await connector.GetItemsAsync(deviceId, new Core.Models.UIMetaData.ListRequest() { NextPartitionKey = getResult.NextPartitionKey, NextRowKey = getResult.NextRowKey, PageSize = 15 }); Assert.AreEqual((84 - (idx * 15)).ToString(), 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() { NextPartitionKey = getResult.NextPartitionKey, NextRowKey = getResult.NextRowKey, PageSize = 15 }); Assert.IsTrue(getResult.Successful); WriteResult(getResult); Assert.AreEqual("9", getResult.Model.ToArray()[0].Where(fld => fld.Key == "pointIndex").First().Value.ToString()); Assert.AreEqual(10, getResult.PageSize); Assert.IsFalse(getResult.HasMoreRecords); WriteResult(getResult); }