Esempio n. 1
0
        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);
                    }
                }
            }
Esempio n. 3
0
 public void TestParseEmptyString()
 {
     Assert.IsTrue(IndexUtilizationInfo.TryCreateFromDelimitedString(string.Empty,
                                                                     out IndexUtilizationInfo parsedInfo));
     Assert.AreEqual(IndexUtilizationInfo.Empty, parsedInfo);
 }
Esempio n. 4
0
 public void TestParse()
 {
     Assert.IsTrue(IndexUtilizationInfo.TryCreateFromDelimitedString("eyJVdGlsaXplZEluZGV4ZXMiOlt7IkZpbHRlckV4cHJlc3Npb24iOiIoUk9PVC5leWVDb2xvciA9IFwiYmx1ZVwiKSIsIkluZGV4U3BlYyI6IlwvZXllQ29sb3JcLz8iLCJGaWx0ZXJQcmVjaXNlU2V0Ijp0cnVlLCJJbmRleFByZWNpc2VTZXQiOnRydWV9LHsiRmlsdGVyRXhwcmVzc2lvbiI6IihST09ULmFnZSA9IDI3KSIsIkluZGV4U3BlYyI6IlwvYWdlXC8/IiwiRmlsdGVyUHJlY2lzZVNldCI6dHJ1ZSwiSW5kZXhQcmVjaXNlU2V0Ijp0cnVlfSx7IkZpbHRlckV4cHJlc3Npb24iOiIoUk9PVC5pZCA+IDApIiwiSW5kZXhTcGVjIjoiXC9pZFwvPyIsIkZpbHRlclByZWNpc2VTZXQiOnRydWUsIkluZGV4UHJlY2lzZVNldCI6dHJ1ZX0seyJGaWx0ZXJFeHByZXNzaW9uIjoiSXNEZWZpbmVkKFJPT1QuZmlyc3ROYW1lKSIsIkluZGV4U3BlYyI6IlwvZmlyc3ROYW1lXC8/IiwiRmlsdGVyUHJlY2lzZVNldCI6ZmFsc2UsIkluZGV4UHJlY2lzZVNldCI6dHJ1ZX0seyJGaWx0ZXJFeHByZXNzaW9uIjoiSXNEZWZpbmVkKFJPT1QubGFzdE5hbWUpIiwiSW5kZXhTcGVjIjoiXC9sYXN0TmFtZVwvPyIsIkZpbHRlclByZWNpc2VTZXQiOmZhbHNlLCJJbmRleFByZWNpc2VTZXQiOnRydWV9LHsiRmlsdGVyRXhwcmVzc2lvbiI6IihST09ULmdlbmRlciA9IFwiZmVtYWxlXCIpIiwiSW5kZXhTcGVjIjoiXC9nZW5kZXJcLz8iLCJGaWx0ZXJQcmVjaXNlU2V0Ijp0cnVlLCJJbmRleFByZWNpc2VTZXQiOnRydWV9LHsiRmlsdGVyRXhwcmVzc2lvbiI6IihST09ULnNhbGFyeSA+IDE4NjAwMCkiLCJJbmRleFNwZWMiOiJcL3NhbGFyeVwvPyIsIkZpbHRlclByZWNpc2VTZXQiOnRydWUsIkluZGV4UHJlY2lzZVNldCI6dHJ1ZX0seyJGaWx0ZXJFeHByZXNzaW9uIjoiKFJPT1QuY29tcGFueSA9IFwiRmFjZWJvb2tcIikiLCJJbmRleFNwZWMiOiJcL2NvbXBhbnlcLz8iLCJGaWx0ZXJQcmVjaXNlU2V0Ijp0cnVlLCJJbmRleFByZWNpc2VTZXQiOnRydWV9XSwiUG90ZW50aWFsSW5kZXhlcyI6W119",
                                                                     out IndexUtilizationInfo parsedInfo));
     Assert.IsNotNull(parsedInfo);
 }