コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }