public void TableServiceQueryExecuteSegmentedBasicTask() { CloudTableClient tableClient = GenerateCloudTableClient(); TableServiceContext ctx = tableClient.GetTableServiceContext(); // Retrieve Entities TableServiceQuery <BaseEntity> query = (from ent in ctx.CreateQuery <BaseEntity>(currentTable.Name) select ent).AsTableServiceQuery(ctx); List <BaseEntity> totalResults = new List <BaseEntity>(); TableQuerySegment <BaseEntity> segment = null; do { segment = query.ExecuteSegmentedAsync(segment != null ? segment.ContinuationToken : null).Result; if (totalResults.Count == 0) { // Assert first segment has continuation token Assert.IsNotNull(segment.ContinuationToken); } totalResults.AddRange(segment); }while (segment.ContinuationToken != null); Assert.AreEqual(totalResults.Count, totalTestEntities); }
public void TableServiceQueryWithRetryTask() { CloudTableClient tableClient = GenerateCloudTableClient(); TableServiceContext ctx = tableClient.GetTableServiceContext(); for (int m = 0; m < 1000; m++) { // Insert Entity ComplexEntity insertEntity = new ComplexEntity("insert test", m.ToString()); ctx.AddObject(currentTable.Name, insertEntity); if ((m + 1) % 100 == 0) { ctx.SaveChangesWithRetriesAsync(SaveChangesOptions.Batch).Wait(); } } TableServiceQuery <ComplexEntity> query = (from ent in ctx.CreateQuery <ComplexEntity>(currentTable.Name) select ent).AsTableServiceQuery(ctx); TestHelper.ExecuteTaskMethodWithRetry( 2, // 1 failure, one success new[] { //Insert upstream network delay to prevent upload to server @ 1000ms / kb PerformanceBehaviors.InsertDownstreamNetworkDelay( 10000, AzureStorageSelectors.TableTraffic() .IfHostNameContains(tableClient.Credentials.AccountName) .Alternating(true)), // After 100 ms return throttle message DelayedActionBehaviors.ExecuteAfter( Actions.ThrottleTableRequest, 100, AzureStorageSelectors.TableTraffic() .IfHostNameContains(tableClient.Credentials.AccountName) .Alternating(true)) }, (options, opContext) => query.ExecuteSegmentedAsync(null, (TableRequestOptions)options, opContext)); }