public void TestAccumulator() { IndexUtilizationInfo.Accumulator accumulator = new IndexUtilizationInfo.Accumulator(); accumulator = accumulator.Accumulate(MockIndexUtilizationInfo); accumulator = accumulator.Accumulate(MockIndexUtilizationInfo); IndexUtilizationInfo doubleInfo = IndexUtilizationInfo.Accumulator.ToIndexUtilizationInfo(accumulator); Assert.AreEqual(2 * MockIndexUtilizationInfo.PotentialIndexes.Count, doubleInfo.PotentialIndexes.Count); Assert.AreEqual(2 * MockIndexUtilizationInfo.UtilizedIndexes.Count, doubleInfo.UtilizedIndexes.Count); }
static async Task ImplementationAsync(Container container, IReadOnlyList <CosmosObject> documents) { string query = string.Format("SELECT * FROM c WHERE c.name = 'ABC' AND c.age > 12"); // Build the expected string Assert.IsTrue(IndexUtilizationInfo.TryCreateFromDelimitedString("eyJVdGlsaXplZFNpbmdsZUluZGV4ZXMiOlt7IkZpbHRlckV4cHJlc3Npb24iOiIoUk9PVC5uYW1lID0gXCJBQkNcIikiLCJJbmRleFNwZWMiOiJcL25hbWVcLz8iLCJGaWx0ZXJQcmVjaXNlU2V0Ijp0cnVlLCJJbmRleFByZWNpc2VTZXQiOnRydWUsIkluZGV4SW1wYWN0U2NvcmUiOiJIaWdoIn0seyJGaWx0ZXJFeHByZXNzaW9uIjoiKFJPT1QuYWdlID4gMTIpIiwiSW5kZXhTcGVjIjoiXC9hZ2VcLz8iLCJGaWx0ZXJQcmVjaXNlU2V0Ijp0cnVlLCJJbmRleFByZWNpc2VTZXQiOnRydWUsIkluZGV4SW1wYWN0U2NvcmUiOiJIaWdoIn1dLCJQb3RlbnRpYWxTaW5nbGVJbmRleGVzIjpbXSwiVXRpbGl6ZWRDb21wb3NpdGVJbmRleGVzIjpbXSwiUG90ZW50aWFsQ29tcG9zaXRlSW5kZXhlcyI6W3siSW5kZXhTcGVjcyI6WyJcL25hbWUgQVNDIiwiXC9hZ2UgQVNDIl0sIkluZGV4UHJlY2lzZVNldCI6ZmFsc2UsIkluZGV4SW1wYWN0U2NvcmUiOiJIaWdoIn1dfQ==", out IndexUtilizationInfo parsedInfo)); StringBuilder stringBuilder = new StringBuilder(); IndexMetricWriter indexMetricWriter = new IndexMetricWriter(stringBuilder); indexMetricWriter.WriteIndexMetrics(parsedInfo); string expectedIndexMetricsString = stringBuilder.ToString(); // Test using GetItemQueryIterator QueryRequestOptions requestOptions = new QueryRequestOptions() { PopulateIndexMetrics = true }; FeedIterator <CosmosElement> itemQuery = container.GetItemQueryIterator <CosmosElement>( query, requestOptions: requestOptions); while (itemQuery.HasMoreResults) { FeedResponse <CosmosElement> page = await itemQuery.ReadNextAsync(); Assert.IsTrue(page.Headers.AllKeys().Length > 1); Assert.IsNotNull(page.Headers.Get(HttpConstants.HttpHeaders.IndexUtilization), "Expected index utilization headers for query"); Assert.IsNotNull(page.IndexMetrics, "Expected index metrics response for query"); Assert.AreEqual(expectedIndexMetricsString, page.IndexMetrics); } // Test using Stream API using (FeedIterator feedIterator = container.GetItemQueryStreamIterator( queryText: query, continuationToken: null, requestOptions: new QueryRequestOptions { PopulateIndexMetrics = true, })) { using (ResponseMessage response = await feedIterator.ReadNextAsync()) { Assert.IsNotNull(response.Content); Assert.IsTrue(response.Headers.AllKeys().Length > 1); Assert.IsNotNull(response.Headers.Get(HttpConstants.HttpHeaders.IndexUtilization), "Expected index utilization headers for query"); Assert.AreEqual(expectedIndexMetricsString, response.IndexMetrics); } } }
public void TestParseEmptyString() { Assert.IsTrue(IndexUtilizationInfo.TryCreateFromDelimitedString(string.Empty, out IndexUtilizationInfo parsedInfo)); Assert.AreEqual(IndexUtilizationInfo.Empty, parsedInfo); }
public void TestParse() { Assert.IsTrue(IndexUtilizationInfo.TryCreateFromDelimitedString("eyJVdGlsaXplZEluZGV4ZXMiOlt7IkZpbHRlckV4cHJlc3Npb24iOiIoUk9PVC5leWVDb2xvciA9IFwiYmx1ZVwiKSIsIkluZGV4U3BlYyI6IlwvZXllQ29sb3JcLz8iLCJGaWx0ZXJQcmVjaXNlU2V0Ijp0cnVlLCJJbmRleFByZWNpc2VTZXQiOnRydWV9LHsiRmlsdGVyRXhwcmVzc2lvbiI6IihST09ULmFnZSA9IDI3KSIsIkluZGV4U3BlYyI6IlwvYWdlXC8/IiwiRmlsdGVyUHJlY2lzZVNldCI6dHJ1ZSwiSW5kZXhQcmVjaXNlU2V0Ijp0cnVlfSx7IkZpbHRlckV4cHJlc3Npb24iOiIoUk9PVC5pZCA+IDApIiwiSW5kZXhTcGVjIjoiXC9pZFwvPyIsIkZpbHRlclByZWNpc2VTZXQiOnRydWUsIkluZGV4UHJlY2lzZVNldCI6dHJ1ZX0seyJGaWx0ZXJFeHByZXNzaW9uIjoiSXNEZWZpbmVkKFJPT1QuZmlyc3ROYW1lKSIsIkluZGV4U3BlYyI6IlwvZmlyc3ROYW1lXC8/IiwiRmlsdGVyUHJlY2lzZVNldCI6ZmFsc2UsIkluZGV4UHJlY2lzZVNldCI6dHJ1ZX0seyJGaWx0ZXJFeHByZXNzaW9uIjoiSXNEZWZpbmVkKFJPT1QubGFzdE5hbWUpIiwiSW5kZXhTcGVjIjoiXC9sYXN0TmFtZVwvPyIsIkZpbHRlclByZWNpc2VTZXQiOmZhbHNlLCJJbmRleFByZWNpc2VTZXQiOnRydWV9LHsiRmlsdGVyRXhwcmVzc2lvbiI6IihST09ULmdlbmRlciA9IFwiZmVtYWxlXCIpIiwiSW5kZXhTcGVjIjoiXC9nZW5kZXJcLz8iLCJGaWx0ZXJQcmVjaXNlU2V0Ijp0cnVlLCJJbmRleFByZWNpc2VTZXQiOnRydWV9LHsiRmlsdGVyRXhwcmVzc2lvbiI6IihST09ULnNhbGFyeSA+IDE4NjAwMCkiLCJJbmRleFNwZWMiOiJcL3NhbGFyeVwvPyIsIkZpbHRlclByZWNpc2VTZXQiOnRydWUsIkluZGV4UHJlY2lzZVNldCI6dHJ1ZX0seyJGaWx0ZXJFeHByZXNzaW9uIjoiKFJPT1QuY29tcGFueSA9IFwiRmFjZWJvb2tcIikiLCJJbmRleFNwZWMiOiJcL2NvbXBhbnlcLz8iLCJGaWx0ZXJQcmVjaXNlU2V0Ijp0cnVlLCJJbmRleFByZWNpc2VTZXQiOnRydWV9XSwiUG90ZW50aWFsSW5kZXhlcyI6W119", out IndexUtilizationInfo parsedInfo)); Assert.IsNotNull(parsedInfo); }