예제 #1
0
        public void ReadHits_WithValidKustoResponse_ReturnsAllHitsParsed()
        {
            using var hitsTable = GetTestTable();

            var query = new QueryData("query", "index");

            var stubKustoResponse = new Mock <KustoResponseDataSet>();
            var kustoTableData    = new KustoResponseDataTable(hitsTable, WellKnownDataSet.PrimaryResult);
            var logger            = new Mock <ILogger <KustoResponseParser> >();

            stubKustoResponse.Setup(res => res["hits"]).Returns(kustoTableData);
            var kustoResponseParser = new KustoResponseParser(logger.Object, false, stubMetric);
            var result = kustoResponseParser.ReadHits(stubKustoResponse.Object, query).ToList();

            Assert.AreEqual(2, result.Count);

            Assert.AreEqual(result[0].Index, "index");
            Assert.AreEqual(result[1].Index, "index");

            var expectedHitSource1 = new JObject
            {
                { "column1", "r1c1" },
                { "column2", "r1c2" },
            };

            Assert.AreEqual(result[0].Source, expectedHitSource1);

            var expectedHitSource2 = new JObject
            {
                { "column1", "r2c1" },
                { "column2", "r2c2" },
            };

            Assert.AreEqual(result[1].Source, expectedHitSource2);
        }
예제 #2
0
        public void ParseElasticResponse_BackendQueryFalse_ReturnsNull()
        {
            using var aggsTable = GetAggsTable();
            aggsTable.TableName = "aggs";

            var timeTaken = new TimeSpan(17);
            var query     = new QueryData("query", "index", null);

            var reader     = aggsTable.CreateDataReader();
            var stubLogger = new Mock <ILogger <KustoResponseParser> >().Object;

            var result = new KustoResponseParser(stubLogger, false, stubMetric).Parse(reader, query, timeTaken);

            Assert.IsNull(result.Responses.First().BackendQuery);
        }
예제 #3
0
        public void ParseElasticResponse_BackendQueryTrue_ReturnsTheQuery()
        {
            using var aggsTable = GetAggsTable();
            aggsTable.TableName = "aggs";

            var timeTaken = new TimeSpan(17);
            var queryText = "query";
            var query     = new QueryData(queryText, "index", null);

            var reader     = aggsTable.CreateDataReader();
            var stubLogger = new Mock <ILogger <KustoResponseParser> >().Object;

            var result = new KustoResponseParser(stubLogger, true, stubMetric).Parse(reader, query, timeTaken);
            var check  = result.Responses.First().BackendQuery;

            Assert.AreEqual(queryText, result.Responses.First().BackendQuery);
        }
예제 #4
0
        public void ReadHits_WithNoHitsInKustoResponse_ReturnsEmptyHits()
        {
            using var anyTable = GetTestTable();
            anyTable.TableName = "not_hits";

            var query = new QueryData("query", "index");

            var stubKustoResponse = new Mock <KustoResponseDataSet>();
            var logger            = new Mock <ILogger <KustoResponseParser> >();
            var kustoTableData    = new KustoResponseDataTable(anyTable, WellKnownDataSet.PrimaryResult);

            stubKustoResponse.SetupGet(ds => ds["no_hits"]).Returns(kustoTableData);
            var kustoResponseParser = new KustoResponseParser(logger.Object, false, stubMetric);

            var result = kustoResponseParser.ReadHits(stubKustoResponse.Object, query).ToList();

            Assert.AreEqual(0, result.Count);
        }
예제 #5
0
        public void ParseElasticResponse_WithEmptyHitsAndAggs_ReturnsEmptyParsedElasticResponse()
        {
            using var anyTable = GetTestTable();

            var timeTaken  = new TimeSpan(17);
            var query      = new QueryData("query", "index");
            var reader     = anyTable.CreateDataReader();
            var stubLogger = new Mock <ILogger <KustoResponseParser> >().Object;

            var result = new KustoResponseParser(stubLogger, false, stubMetric).Parse(reader, query, timeTaken);

            Assert.AreEqual(1, result.Responses.Count());

            var elasticResult = result.Responses.ToList()[0];

            Assert.AreEqual(0, elasticResult.Hits.Hits.Count());
            Assert.AreEqual(0, elasticResult.Aggregations.Collection.Buckets.Count());
        }
예제 #6
0
        public void ParseElasticResponse_WithHits_ReturnsElasticResponseWithHits()
        {
            using var hitsTable = GetTestTable();
            hitsTable.TableName = "hits";

            var timeTaken = new TimeSpan(17);
            var query     = new QueryData("query", "index");

            var reader     = hitsTable.CreateDataReader();
            var stubLogger = new Mock <ILogger <KustoResponseParser> >().Object;

            var result = new KustoResponseParser(stubLogger, false, stubMetric).Parse(reader, query, timeTaken);

            Assert.AreEqual(1, result.Responses.Count());

            var elasticResult = result.Responses.ToList()[0];

            Assert.AreEqual(2, elasticResult.Hits.Hits.Count());
        }