public async Task ItemIterator() { IList <ToDoActivity> deleteList = null; HashSet <string> itemIds = null; try { deleteList = await CreateRandomItems(3, randomPartitionKey : true); itemIds = deleteList.Select(x => x.id).ToHashSet <string>(); CosmosResultSetIterator <ToDoActivity> setIterator = this.Container.Items.GetItemIterator <ToDoActivity>(); while (setIterator.HasMoreResults) { foreach (ToDoActivity toDoActivity in await setIterator.FetchNextSetAsync(this.cancellationToken)) { if (itemIds.Contains(toDoActivity.id)) { itemIds.Remove(toDoActivity.id); } } } } finally { foreach (ToDoActivity delete in deleteList) { CosmosResponseMessage deleteResponse = await this.Container.Items.DeleteItemStreamAsync(delete.status, delete.id); deleteResponse.Dispose(); } } Assert.AreEqual(itemIds.Count, 0); }
public async Task ItemMultiplePartitionOrderByQueryStream() { IList <ToDoActivity> deleteList = new List <ToDoActivity>(); try { deleteList = await CreateRandomItems(300, randomPartitionKey : true); CosmosSqlQueryDefinition sql = new CosmosSqlQueryDefinition("SELECT * FROM toDoActivity t ORDER BY t.taskNum "); CosmosQueryRequestOptions requestOptions = new CosmosQueryRequestOptions() { MaxBufferedItemCount = 10, ResponseContinuationTokenLimitInKb = 500 }; List <ToDoActivity> resultList = new List <ToDoActivity>(); double totalRequstCharge = 0; CosmosResultSetIterator setIterator = this.Container.Items.CreateItemQueryAsStream(sql, maxConcurrency: 5, maxItemCount: 1, requestOptions: requestOptions); while (setIterator.HasMoreResults) { using (CosmosQueryResponse iter = await setIterator.FetchNextSetAsync()) { Assert.IsTrue(iter.IsSuccess); Assert.IsNull(iter.ErrorMessage); Assert.IsTrue(iter.Count <= 5); totalRequstCharge += iter.RequestCharge; ToDoActivity response = this.jsonSerializer.FromStream <ToDoActivity[]>(iter.Content).First(); resultList.Add(response); } } Assert.AreEqual(deleteList.Count, resultList.Count); Assert.IsTrue(totalRequstCharge > 0); List <ToDoActivity> verifiedOrderBy = deleteList.OrderBy(x => x.taskNum).ToList(); for (int i = 0; i < verifiedOrderBy.Count(); i++) { Assert.AreEqual(verifiedOrderBy[i].taskNum, resultList[i].taskNum); Assert.AreEqual(verifiedOrderBy[i].id, resultList[i].id); } } finally { foreach (ToDoActivity delete in deleteList) { CosmosResponseMessage deleteResponse = await this.Container.Items.DeleteItemStreamAsync(delete.status, delete.id); deleteResponse.Dispose(); } } }
public async Task ValidateMaxItemCountOnItemQuery() { IList <ToDoActivity> deleteList = new List <ToDoActivity>(); HashSet <string> itemIds = new HashSet <string>(); try { deleteList = await CreateRandomItems(6, randomPartitionKey : false); CosmosSqlQueryDefinition sql = new CosmosSqlQueryDefinition("select * from toDoActivity t where t.taskNum = @task").UseParameter("@task", deleteList.First().taskNum); // Test max size at 1 CosmosResultSetIterator <ToDoActivity> setIterator = this.Container.Items.CreateItemQuery <ToDoActivity>(sql, "TBD", maxItemCount: 1); while (setIterator.HasMoreResults) { CosmosQueryResponse <ToDoActivity> iter = await setIterator.FetchNextSetAsync(); Assert.AreEqual(1, iter.Count()); } // Test max size at 2 CosmosResultSetIterator <ToDoActivity> setIteratorMax2 = this.Container.Items.CreateItemQuery <ToDoActivity>(sql, "TBD", maxItemCount: 2); while (setIteratorMax2.HasMoreResults) { CosmosQueryResponse <ToDoActivity> iter = await setIteratorMax2.FetchNextSetAsync(); Assert.AreEqual(2, iter.Count()); } } finally { foreach (ToDoActivity delete in deleteList) { CosmosResponseMessage deleteResponse = await this.Container.Items.DeleteItemStreamAsync(delete.status, delete.id); deleteResponse.Dispose(); } } }
public async Task ItemMultiplePartitionQuery() { IList <ToDoActivity> deleteList = new List <ToDoActivity>(); try { deleteList = await CreateRandomItems(3, randomPartitionKey : true); ToDoActivity find = deleteList.First(); CosmosSqlQueryDefinition sql = new CosmosSqlQueryDefinition("select * from toDoActivity t where t.id = '" + find.id + "'"); CosmosQueryRequestOptions requestOptions = new CosmosQueryRequestOptions() { MaxBufferedItemCount = 10, ResponseContinuationTokenLimitInKb = 500 }; CosmosResultSetIterator <ToDoActivity> setIterator = this.Container.Items.CreateItemQuery <ToDoActivity>(sql, maxConcurrency: 1, maxItemCount: 1, requestOptions: requestOptions); while (setIterator.HasMoreResults) { CosmosQueryResponse <ToDoActivity> iter = await setIterator.FetchNextSetAsync(); Assert.AreEqual(1, iter.Count()); ToDoActivity response = iter.First(); Assert.AreEqual(find.id, response.id); } } finally { foreach (ToDoActivity delete in deleteList) { CosmosResponseMessage deleteResponse = await this.Container.Items.DeleteItemStreamAsync(delete.status, delete.id); deleteResponse.Dispose(); } } }
public async Task ItemQueryStreamSerializationSetting() { IList <ToDoActivity> deleteList = new List <ToDoActivity>(); try { deleteList = await CreateRandomItems(101, randomPartitionKey : true); CosmosSqlQueryDefinition sql = new CosmosSqlQueryDefinition("SELECT * FROM toDoActivity t ORDER BY t.taskNum"); CosmosSerializationOptions options = new CosmosSerializationOptions( ContentSerializationFormat.CosmosBinary.ToString(), (content) => JsonNavigator.Create(content), () => JsonWriter.Create(JsonSerializationFormat.Binary)); CosmosQueryRequestOptions requestOptions = new CosmosQueryRequestOptions() { CosmosSerializationOptions = options }; List <ToDoActivity> resultList = new List <ToDoActivity>(); double totalRequstCharge = 0; CosmosResultSetIterator setIterator = this.Container.Items.CreateItemQueryAsStream(sql, maxConcurrency: 5, maxItemCount: 5, requestOptions: requestOptions); while (setIterator.HasMoreResults) { using (CosmosQueryResponse iter = await setIterator.FetchNextSetAsync()) { Assert.IsTrue(iter.IsSuccess); Assert.IsNull(iter.ErrorMessage); Assert.IsTrue(iter.Count <= 5); totalRequstCharge += iter.RequestCharge; IJsonReader reader = JsonReader.Create(iter.Content); IJsonWriter textWriter = JsonWriter.Create(JsonSerializationFormat.Text); textWriter.WriteAll(reader); string json = Encoding.UTF8.GetString(textWriter.GetResult()); Assert.IsNotNull(json); ToDoActivity[] responseActivities = JsonConvert.DeserializeObject <ToDoActivity[]>(json); resultList.AddRange(responseActivities); } } Assert.AreEqual(deleteList.Count, resultList.Count); Assert.IsTrue(totalRequstCharge > 0); List <ToDoActivity> verifiedOrderBy = deleteList.OrderBy(x => x.taskNum).ToList(); for (int i = 0; i < verifiedOrderBy.Count(); i++) { Assert.AreEqual(verifiedOrderBy[i].taskNum, resultList[i].taskNum); Assert.AreEqual(verifiedOrderBy[i].id, resultList[i].id); } } finally { foreach (ToDoActivity delete in deleteList) { CosmosResponseMessage deleteResponse = await this.Container.Items.DeleteItemStreamAsync(delete.status, delete.id); deleteResponse.Dispose(); } } }