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);
        }
예제 #2
0
        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));
        }