public void TableContinuationTokenVerifyXmlFunctions()
        {
            CloudTableClient tableClient = GenerateCloudTableClient();

            TableResultSegment     segment      = null;
            List <CloudTable>      totalResults = new List <CloudTable>();
            TableContinuationToken token        = null;

            do
            {
                segment = tableClient.ListTablesSegmented("prefixtable", 5, segment != null ? segment.ContinuationToken : null);
                totalResults.AddRange(segment);
                token = segment.ContinuationToken;
                if (token != null)
                {
                    Assert.AreEqual(null, token.GetSchema());

                    XmlWriterSettings settings = new XmlWriterSettings();
                    settings.Indent = true;
                    StringBuilder sb = new StringBuilder();
                    using (XmlWriter writer = XmlWriter.Create(sb, settings))
                    {
                        token.WriteXml(writer);
                    }

                    using (XmlReader reader = XmlReader.Create(new StringReader(sb.ToString())))
                    {
                        token = new TableContinuationToken();
                        token.ReadXml(reader);
                    }
                }
            }while (token != null);

            Assert.AreEqual(totalResults.Count, tableClient.ListTables("prefixtable").Count());
        }
        public void ListTablesSegmentedBasicAPM()
        {
            CloudTableClient tableClient = GenerateCloudTableClient();

            TableResultSegment segment      = null;
            List <CloudTable>  totalResults = new List <CloudTable>();

            do
            {
                using (ManualResetEvent evt = new ManualResetEvent(false))
                {
                    IAsyncResult asyncRes = tableClient.BeginListTablesSegmented(segment != null ? segment.ContinuationToken : null,
                                                                                 (res) =>
                    {
                        evt.Set();
                    },
                                                                                 null);

                    evt.WaitOne();

                    segment = tableClient.EndListTablesSegmented(asyncRes);
                }

                totalResults.AddRange(segment);
            }while (segment.ContinuationToken != null);

            Assert.AreEqual(totalResults.Count, tableClient.ListTables().Count());
        }
        public IAsyncOperation <TableResultSegment> ListTablesSegmentedAsync(string prefix, int?maxResults, TableContinuationToken currentToken, TableRequestOptions requestOptions, OperationContext operationContext)
#endif
        {
            requestOptions   = TableRequestOptions.ApplyDefaults(requestOptions, this);
            operationContext = operationContext ?? new OperationContext();

            TableQuery query = this.GenerateListTablesQuery(prefix, maxResults);

#if ASPNET_K || PORTABLE
            return(Task.Run(async() =>
            {
                TableQuerySegment seg = await this.ExecuteQuerySegmentedAsync(TableConstants.TableServiceTablesName, query, currentToken, requestOptions, operationContext, cancellationToken);
#else
            return AsyncInfo.Run(async(cancellationToken) =>
            {
                TableQuerySegment seg = await this.ExecuteQuerySegmentedAsync(TableConstants.TableServiceTablesName, query, currentToken, requestOptions, operationContext).AsTask(cancellationToken);
#endif

                TableResultSegment retSegment = new TableResultSegment(seg.Results.Select(tbl => new CloudTable(tbl.Properties[TableConstants.TableName].StringValue, this)).ToList());
                retSegment.ContinuationToken = seg.ContinuationToken;
                return retSegment;

#if ASPNET_K || PORTABLE
            }, cancellationToken));
#else
});
#endif
        }
        public void ListTablesSegmentedPrefixMaxResultsTokenRequestOptionsOperationContextCancellationTokenTask()
        {
            CloudTableClient tableClient = GenerateCloudTableClient();
            string           prefix      = prefixTablesPrefix;
            int?maxResults = 10;
            TableContinuationToken token             = null;
            TableRequestOptions    requestOptions    = new TableRequestOptions();
            OperationContext       operationContext  = new OperationContext();
            CancellationToken      cancellationToken = CancellationToken.None;

            int totalCount = 0;

            do
            {
                TableResultSegment resultSegment = tableClient.ListTablesSegmentedAsync(prefix, maxResults, token, requestOptions, operationContext, cancellationToken).Result;
                token = resultSegment.ContinuationToken;

                int count = 0;
                foreach (CloudTable table in resultSegment)
                {
                    Assert.IsTrue(table.Name.StartsWith(prefix));
                    ++count;
                }

                totalCount += count;

                Assert.IsTrue(count <= maxResults.Value);
            }while (token != null);

            Assert.AreEqual(20, totalCount);
        }
Beispiel #5
0
        private async Task DoListTablesSegmentedWithPrefixAsync(TablePayloadFormat payloadFormat)
        {
            CloudTableClient tableClient = GenerateCloudTableClient();

            tableClient.DefaultRequestOptions.PayloadFormat = payloadFormat;

            TableResultSegment segment      = null;
            List <CloudTable>  totalResults = new List <CloudTable>();

            int segCount = 0;

            do
            {
                segment = await tableClient.ListTablesSegmentedAsync(prefixTablesPrefix, null, segment != null?segment.ContinuationToken : null, null, null);

                totalResults.AddRange(segment);
                segCount++;
            }while (segment.ContinuationToken != null);

            Assert.AreEqual(totalResults.Count, 20);
            foreach (CloudTable tbl in totalResults)
            {
                Assert.IsTrue(tbl.Name.StartsWith(prefixTablesPrefix));
            }
        }
        public void ListTablesSegmentedTokenTask()
        {
            CloudTableClient       tableClient = GenerateCloudTableClient();
            TableContinuationToken token       = null;

            do
            {
                TableResultSegment resultSegment = tableClient.ListTablesSegmentedAsync(token).Result;
                token = resultSegment.ContinuationToken;
            }while (token != null);
        }
        public virtual async Task <TableResultSegment> ListTablesSegmentedAsync(string prefix, int?maxResults, TableContinuationToken currentToken, TableRequestOptions requestOptions, OperationContext operationContext, CancellationToken cancellationToken)
        {
            requestOptions   = TableRequestOptions.ApplyDefaults(requestOptions, this);
            operationContext = operationContext ?? new OperationContext();

            TableQuery query = this.GenerateListTablesQuery(prefix, maxResults);

            TableQuerySegment seg = await this.ExecuteQuerySegmentedAsync(TableConstants.TableServiceTablesName, query, currentToken, requestOptions, operationContext, cancellationToken).ConfigureAwait(false);

            TableResultSegment retSegment = new TableResultSegment(seg.Results.Select(tbl => new CloudTable(tbl.Properties[TableConstants.TableName].StringValue, this)).ToList());

            retSegment.ContinuationToken = seg.ContinuationToken;
            return(retSegment);
        }
        public void ListTablesSegmentedBasicSync()
        {
            CloudTableClient tableClient = GenerateCloudTableClient();

            TableResultSegment segment      = null;
            List <CloudTable>  totalResults = new List <CloudTable>();

            do
            {
                segment = tableClient.ListTablesSegmented(segment != null ? segment.ContinuationToken : null);
                totalResults.AddRange(segment);
            }while (segment.ContinuationToken != null);

            Assert.AreEqual(totalResults.Count, tableClient.ListTables().Count());
        }
        public TableResultSegment EndListTablesSegmented(IAsyncResult asyncResult)
        {
            ResultSegment <DynamicTableEntity> res = Executor.EndExecuteAsync <ResultSegment <DynamicTableEntity> >(asyncResult);

            List <CloudTable> tables = res.Results.Select(tbl => new CloudTable(
                                                              NavigationHelper.AppendPathToUri(this.BaseUri, tbl.Properties[TableConstants.TableName].StringValue),
                                                              this)).ToList();

            TableResultSegment retSeg = new TableResultSegment(tables)
            {
                ContinuationToken = res.ContinuationToken as TableContinuationToken
            };

            return(retSeg);
        }
        /// <summary>
        /// Ends an asynchronous operation to return a result segment of tables.
        /// </summary>
        /// <param name="asyncResult">An <see cref="IAsyncResult"/> that references the pending asynchronous operation.</param>
        /// <returns>A <see cref="TableResultSegment"/> object.</returns>
        public TableResultSegment EndListTablesSegmented(IAsyncResult asyncResult)
        {
            TableQuerySegment <DynamicTableEntity> res = Executor.EndExecuteAsync <TableQuerySegment <DynamicTableEntity> >(asyncResult);

            List <CloudTable> tables = res.Results.Select(tbl => new CloudTable(
                                                              tbl.Properties[TableConstants.TableName].StringValue,
                                                              this)).ToList();

            TableResultSegment retSeg = new TableResultSegment(tables)
            {
                ContinuationToken = res.ContinuationToken
            };

            return(retSeg);
        }
        public async Task ListTablesSegmentedBasicAsync()
        {
            CloudTableClient tableClient = GenerateCloudTableClient();

            TableResultSegment segment      = null;
            List <CloudTable>  totalResults = new List <CloudTable>();

            do
            {
                segment = await tableClient.ListTablesSegmentedAsync(segment != null?segment.ContinuationToken : null, CancellationToken.None);

                totalResults.AddRange(segment);
            }while (segment.ContinuationToken != null);

            //  Assert.AreEqual(totalResults.Count, tableClient.ListTables().Count());
        }
        private async Task DoListTablesSegmentedBasicAsync(TablePayloadFormat format)
        {
            CloudTableClient tableClient = GenerateCloudTableClient();

            tableClient.DefaultRequestOptions.PayloadFormat = format;
            TableResultSegment segment      = null;
            List <CloudTable>  totalResults = new List <CloudTable>();

            do
            {
                segment = await tableClient.ListTablesSegmentedAsync(segment != null?segment.ContinuationToken : null, CancellationToken.None);

                totalResults.AddRange(segment);
            }while (segment.ContinuationToken != null);

            // Assert.AreEqual(totalResults.Count, tableClient.ListTables().Count());
        }
        private void DoListTablesSegmentedBasicSync(TablePayloadFormat format)
        {
            CloudTableClient tableClient = GenerateCloudTableClient();

            tableClient.PayloadFormat = format;

            TableResultSegment segment      = null;
            List <CloudTable>  totalResults = new List <CloudTable>();

            do
            {
                segment = tableClient.ListTablesSegmented(segment != null ? segment.ContinuationToken : null);
                totalResults.AddRange(segment);
            }while (segment.ContinuationToken != null);

            Assert.AreEqual(totalResults.Count, tableClient.ListTables().Count());
        }
        public TableResultSegment ListTablesSegmented(string prefix, int?maxResults, TableContinuationToken currentToken, TableRequestOptions requestOptions = null, OperationContext operationContext = null)
        {
            requestOptions   = TableRequestOptions.ApplyDefaults(requestOptions, this);
            operationContext = operationContext ?? new OperationContext();
            TableQuerySegment <DynamicTableEntity> res =
                CloudTableClient.GenerateListTablesQuery(prefix, maxResults).ExecuteQuerySegmentedInternal(currentToken, this, TableConstants.TableServiceTablesName, requestOptions, operationContext);

            List <CloudTable> tables = res.Results.Select(tbl => new CloudTable(
                                                              tbl.Properties[TableConstants.TableName].StringValue,
                                                              this)).ToList();

            TableResultSegment retSeg = new TableResultSegment(tables)
            {
                ContinuationToken = res.ContinuationToken as TableContinuationToken
            };

            return(retSeg);
        }
        public async Task CloudTableClientListTablesSegmentedSharedKeyLite()
        {
            CloudTableClient tableClient = GenerateCloudTableClient();

            tableClient.AuthenticationScheme = AuthenticationScheme.SharedKeyLite;

            TableResultSegment segment      = null;
            List <CloudTable>  totalResults = new List <CloudTable>();

            do
            {
                segment = await tableClient.ListTablesSegmentedAsync(segment != null?segment.ContinuationToken : null);

                totalResults.AddRange(segment);
            }while (segment.ContinuationToken != null);

            Assert.IsTrue(totalResults.Count > 0);
        }
Beispiel #16
0
        private async Task DoCloudTableClientListTablesSegmentedSharedKeyLiteAsync(TablePayloadFormat payloadFormat)
        {
            CloudTableClient tableClient = GenerateCloudTableClient();

            tableClient.DefaultRequestOptions.PayloadFormat = payloadFormat;
            tableClient.AuthenticationScheme = AuthenticationScheme.SharedKeyLite;

            TableResultSegment segment      = null;
            List <CloudTable>  totalResults = new List <CloudTable>();

            do
            {
                segment = await tableClient.ListTablesSegmentedAsync(segment != null?segment.ContinuationToken : null);

                totalResults.AddRange(segment);
            }while (segment.ContinuationToken != null);

            Assert.IsTrue(totalResults.Count > 0);
        }
        public void ListTablesSegmentedMaxResultsSync()
        {
            CloudTableClient tableClient = GenerateCloudTableClient();

            TableResultSegment segment      = null;
            List <CloudTable>  totalResults = new List <CloudTable>();

            int segCount = 0;

            do
            {
                segment = tableClient.ListTablesSegmented(string.Empty, 10, segment != null ? segment.ContinuationToken : null, null, null);
                totalResults.AddRange(segment);
                segCount++;
            }while (segment.ContinuationToken != null);

            Assert.AreEqual(totalResults.Count, tableClient.ListTables().Count());
            Assert.IsTrue(segCount >= totalResults.Count / 10);
        }
        private void DoListTablesSegmentedMaxResultsSync(TablePayloadFormat format)
        {
            CloudTableClient tableClient = GenerateCloudTableClient();

            tableClient.DefaultRequestOptions.PayloadFormat = format;

            TableResultSegment segment      = null;
            List <CloudTable>  totalResults = new List <CloudTable>();

            int segCount = 0;

            do
            {
                segment = tableClient.ListTablesSegmented(string.Empty, 10, segment != null ? segment.ContinuationToken : null, null, null);
                totalResults.AddRange(segment);
                segCount++;
            }while (segment.ContinuationToken != null);

            Assert.AreEqual(totalResults.Count, tableClient.ListTables().Count());
            Assert.IsTrue(segCount >= totalResults.Count / 10);
        }
        /// <summary>
        /// Returns a result segment containing a collection of tables beginning with the specified prefix.
        /// </summary>
        /// <param name="prefix">The table name prefix.</param>
        /// <param name="maxResults">A non-negative integer value that indicates the maximum number of results to be returned at a time, up to the
        /// per-operation limit of 5000. If this value is <c>null</c> the maximum possible number of results will be returned, up to 5000.</param>
        /// <param name="currentToken">A <see cref="TableContinuationToken"/> token returned by a previous listing operation.</param>
        /// <param name="requestOptions">A <see cref="TableRequestOptions"/> object that specifies any additional options for the request.</param>
        /// <param name="operationContext">An <see cref="OperationContext"/> object that provides information on how the operation executed.</param>
        /// <returns>The result segment containing the collection of tables.</returns>
        public IAsyncOperation <TableResultSegment> ListTablesSegmentedAsync(
            string prefix,
            int?maxResults,
            TableContinuationToken currentToken,
            TableRequestOptions requestOptions,
            OperationContext operationContext)
        {
            requestOptions   = TableRequestOptions.ApplyDefaults(requestOptions, this);
            operationContext = operationContext ?? new OperationContext();

            TableQuery query = this.GenerateListTablesQuery(prefix, maxResults);

            return(AsyncInfo.Run(async(cancellationToken) =>
            {
                TableQuerySegment seg = await this.ExecuteQuerySegmentedAsync(TableConstants.TableServiceTablesName, query, currentToken, requestOptions, operationContext).AsTask(cancellationToken);

                TableResultSegment retSegment = new TableResultSegment(seg.Results.Select(tbl => new CloudTable(NavigationHelper.AppendPathToUri(this.BaseUri, tbl.Properties[TableConstants.TableName].StringValue), this)).ToList());
                retSegment.ContinuationToken = seg.ContinuationToken as TableContinuationToken;
                return retSegment;
            }));
        }
        public void ListTablesSegmentedPrefixTokenTask()
        {
            CloudTableClient       tableClient = GenerateCloudTableClient();
            string                 prefix      = prefixTablesPrefix;
            TableContinuationToken token       = null;

            int totalCount = 0;

            do
            {
                TableResultSegment resultSegment = tableClient.ListTablesSegmentedAsync(prefix, token).Result;
                token = resultSegment.ContinuationToken;

                foreach (CloudTable table in resultSegment)
                {
                    Assert.IsTrue(table.Name.StartsWith(prefix));
                    ++totalCount;
                }
            }while (token != null);

            Assert.AreEqual(20, totalCount);
        }
        public void ListTablesSegmentedWithPrefixAPM()
        {
            CloudTableClient tableClient = GenerateCloudTableClient();

            TableResultSegment segment      = null;
            List <CloudTable>  totalResults = new List <CloudTable>();

            int segCount = 0;

            do
            {
                using (ManualResetEvent evt = new ManualResetEvent(false))
                {
                    IAsyncResult asyncRes = tableClient.BeginListTablesSegmented(prefixTablesPrefix,
                                                                                 null,
                                                                                 segment != null ? segment.ContinuationToken : null,
                                                                                 null,
                                                                                 null,
                                                                                 (res) =>
                    {
                        evt.Set();
                    },
                                                                                 null);

                    evt.WaitOne();

                    segment = tableClient.EndListTablesSegmented(asyncRes);
                }

                totalResults.AddRange(segment);
                segCount++;
            }while (segment.ContinuationToken != null);

            Assert.AreEqual(totalResults.Count, 20);
            foreach (CloudTable tbl in totalResults)
            {
                Assert.IsTrue(tbl.Name.StartsWith(prefixTablesPrefix));
            }
        }
        public void ListTablesSegmentedWithPrefixSync()
        {
            CloudTableClient tableClient = GenerateCloudTableClient();

            TableResultSegment segment      = null;
            List <CloudTable>  totalResults = new List <CloudTable>();

            int segCount = 0;

            do
            {
                segment = tableClient.ListTablesSegmented(prefixTablesPrefix, null, segment != null ? segment.ContinuationToken : null, null, null);
                totalResults.AddRange(segment);
                segCount++;
            }while (segment.ContinuationToken != null);

            Assert.AreEqual(totalResults.Count, 20);
            foreach (CloudTable tbl in totalResults)
            {
                Assert.IsTrue(tbl.Name.StartsWith(prefixTablesPrefix));
            }
        }
        public void ListTablesSegmentedMaxResultsAPM()
        {
            CloudTableClient tableClient = GenerateCloudTableClient();

            TableResultSegment segment      = null;
            List <CloudTable>  totalResults = new List <CloudTable>();

            int segCount = 0;

            do
            {
                using (ManualResetEvent evt = new ManualResetEvent(false))
                {
                    IAsyncResult asyncRes = tableClient.BeginListTablesSegmented(string.Empty,
                                                                                 10,
                                                                                 segment != null ? segment.ContinuationToken : null,
                                                                                 null,
                                                                                 null,
                                                                                 (res) =>
                    {
                        evt.Set();
                    },
                                                                                 null);

                    evt.WaitOne();

                    segment = tableClient.EndListTablesSegmented(asyncRes);
                }

                Assert.IsTrue(segment.Count() <= 10);

                totalResults.AddRange(segment);
                segCount++;
            }while (segment.ContinuationToken != null);

            Assert.AreEqual(totalResults.Count, tableClient.ListTables().Count());
            Assert.IsTrue(segCount >= totalResults.Count / 10);
        }