github.com/siglens/siglens@v0.0.0-20240328180423-f7ce9ae441ed/pkg/integrations/otsdb/expmetricsquery_test.go (about) 1 /* 2 Copyright 2023. 3 4 Licensed under the Apache License, Version 2.0 (the "License"); 5 you may not use this file except in compliance with the License. 6 You may obtain a copy of the License at 7 8 http://www.apache.org/licenses/LICENSE-2.0 9 10 Unless required by applicable law or agreed to in writing, software 11 distributed under the License is distributed on an "AS IS" BASIS, 12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 See the License for the specific language governing permissions and 14 limitations under the License. 15 */ 16 17 package otsdbquery 18 19 import ( 20 "os" 21 "testing" 22 23 localstorage "github.com/siglens/siglens/pkg/blob/local" 24 "github.com/siglens/siglens/pkg/config" 25 otsdbquery "github.com/siglens/siglens/pkg/integrations/otsdb/query" 26 "github.com/siglens/siglens/pkg/segment/memory/limit" 27 "github.com/siglens/siglens/pkg/segment/query" 28 "github.com/siglens/siglens/pkg/segment/structs" 29 "github.com/siglens/siglens/pkg/segment/writer" 30 "github.com/siglens/siglens/pkg/segment/writer/metrics" 31 serverutils "github.com/siglens/siglens/pkg/server/utils" 32 "github.com/stretchr/testify/assert" 33 ) 34 35 // func Test_ExpMetricsQuery(t *testing.T) { 36 // config.InitializeTestingConfig() 37 // limit.InitMemoryLimiter() 38 // writer.InitWriterNode() 39 // err := query.InitQueryNode() 40 // assert.Nil(t, err) 41 // localstorage.InitLocalStorage() 42 // metrics.InitTestingConfig() 43 // err = metadata.InitMockMetricsMetadataStore(10000) 44 // assert.Nil(t, err) 45 // request := &structs.OTSDBMetricsQueryExpRequest{ 46 // Time: structs.OTSDBMetricsQueryExpTime{ 47 // Start: "1h-ago", 48 // End: "", 49 // Timezone: "UTC", 50 // Aggregator: "sum", 51 // Downsampler: structs.OTSDBMetricsQueryExpDownsampler{ 52 // Interval: "1m", 53 // Aggregator: "sum", 54 // }, 55 // }, 56 // Filters: []structs.OTSDBMetricsQueryExpFilter{ 57 // { 58 // Tags: []structs.OTSDBMetricsQueryExpTags{ 59 // { 60 // Type: "literal_or", 61 // Tagk: "color", 62 // Filter: "*", 63 // GroupBy: false, 64 // }, 65 // }, 66 // Id: "f1", 67 // }, 68 // }, 69 // Metrics: []structs.OTSDBMetricsQueryExpMetric{ 70 // { 71 // Id: "m1", 72 // MetricName: "test.metric.1", 73 // Filter: "f1", 74 // }, 75 // }, 76 // Expressions: []structs.OTSDBMetricsQueryExpressions{}, 77 // Outputs: []structs.OTSDBMetricsQueryExpOutput{ 78 // { 79 // Id: "m1", 80 // Alias: "output-m1", 81 // }, 82 // }, 83 // } 84 // metricQueryRequest, err := otsdbquery.MetricsQueryExpressionsParseRequest(request) 85 // assert.NoError(t, err) 86 // assert.NotNil(t, metricQueryRequest) 87 // assert.Len(t, metricQueryRequest, 1) 88 // var expMetricsQueryResult map[string][]*structs.MetricsQueryResponse = make(map[string][]*structs.MetricsQueryResponse) 89 // for alias, req := range metricQueryRequest { 90 // qid := rutils.GetNextQid() 91 // mQResponse := segment.ExecuteMetricsQuery(&req.MetricsQuery, &req.TimeRange, qid) 92 // assert.NotNil(t, mQResponse) 93 // assert.GreaterOrEqual(t, len(mQResponse), 1) 94 // assert.Equal(t, "output-m1", alias) 95 // expMetricsQueryResult[alias] = mQResponse 96 // } 97 // assert.Len(t, expMetricsQueryResult, 1) 98 // os.RemoveAll(config.GetDataPath()) 99 // } 100 101 // func Test_ExpMetricsQueryMultipleMetricsAndFilters(t *testing.T) { 102 // config.InitializeTestingConfig() 103 // limit.InitMemoryLimiter() 104 // writer.InitWriterNode() 105 // err := query.InitQueryNode() 106 // assert.Nil(t, err) 107 // localstorage.InitLocalStorage() 108 // metrics.InitTestingConfig() 109 // err = metadata.InitMockMetricsMetadataStore(100000) 110 // assert.Nil(t, err) 111 // request := &structs.OTSDBMetricsQueryExpRequest{ 112 // Time: structs.OTSDBMetricsQueryExpTime{ 113 // Start: "1d-ago", 114 // End: "", 115 // Timezone: "UTC", 116 // Aggregator: "sum", 117 // Downsampler: structs.OTSDBMetricsQueryExpDownsampler{ 118 // Interval: "1m", 119 // Aggregator: "sum", 120 // }, 121 // }, 122 // Filters: []structs.OTSDBMetricsQueryExpFilter{ 123 // { 124 // Tags: []structs.OTSDBMetricsQueryExpTags{ 125 // { 126 // Type: "literal_or", 127 // Tagk: "color", 128 // Filter: "*", 129 // GroupBy: false, 130 // }, 131 // }, 132 // Id: "f1", 133 // }, 134 // { 135 // Tags: []structs.OTSDBMetricsQueryExpTags{ 136 // { 137 // Type: "literal_or", 138 // Tagk: "model", 139 // Filter: "*", 140 // GroupBy: false, 141 // }, 142 // }, 143 // Id: "f2", 144 // }, 145 // }, 146 // Metrics: []structs.OTSDBMetricsQueryExpMetric{ 147 // { 148 // Id: "m1", 149 // MetricName: "test.metric.0", 150 // Filter: "f1", 151 // }, 152 // { 153 // Id: "m2", 154 // MetricName: "test.metric.1", 155 // Filter: "f2", 156 // }, 157 // }, 158 // Expressions: []structs.OTSDBMetricsQueryExpressions{}, 159 // Outputs: []structs.OTSDBMetricsQueryExpOutput{ 160 // { 161 // Id: "m1", 162 // Alias: "output-m1", 163 // }, 164 // { 165 // Id: "m2", 166 // Alias: "output-m2", 167 // }, 168 // }, 169 // } 170 // expectedAlias := []string{"output-m1", "output-m2"} 171 // metricQueryRequest, err := otsdbquery.MetricsQueryExpressionsParseRequest(request) 172 // assert.NoError(t, err) 173 // assert.NotNil(t, metricQueryRequest) 174 // assert.Len(t, metricQueryRequest, 2) 175 // var expMetricsQueryResult map[string][]*structs.MetricsQueryResponse = make(map[string][]*structs.MetricsQueryResponse) 176 // for alias, req := range metricQueryRequest { 177 // qid := rutils.GetNextQid() 178 // mQResponse := segment.ExecuteMetricsQuery(&req.MetricsQuery, &req.TimeRange, qid) 179 // assert.NotNil(t, mQResponse) 180 // assert.Contains(t, expectedAlias, alias) 181 // expMetricsQueryResult[alias] = mQResponse 182 // } 183 // assert.Len(t, expMetricsQueryResult, 2) 184 // os.RemoveAll(config.GetDataPath()) 185 // } 186 187 func getMyIds() []uint64 { 188 myids := make([]uint64, 1) 189 myids[0] = 0 190 return myids 191 } 192 193 func Test_ExpMetricsQueryIncorrectID(t *testing.T) { 194 config.InitializeTestingConfig() 195 limit.InitMemoryLimiter() 196 writer.InitWriterNode() 197 err := query.InitQueryNode(getMyIds, serverutils.ExtractKibanaRequests) 198 assert.Nil(t, err) 199 _ = localstorage.InitLocalStorage() 200 metrics.InitTestingConfig() 201 request := &structs.OTSDBMetricsQueryExpRequest{ 202 Time: structs.OTSDBMetricsQueryExpTime{ 203 Start: "1d-ago", 204 End: "", 205 Timezone: "UTC", 206 Aggregator: "sum", 207 Downsampler: structs.OTSDBMetricsQueryExpDownsampler{ 208 Interval: "1m", 209 Aggregator: "sum", 210 }, 211 }, 212 Filters: []structs.OTSDBMetricsQueryExpFilter{ 213 { 214 Tags: []structs.OTSDBMetricsQueryExpTags{ 215 { 216 Type: "literal_or", 217 Tagk: "color", 218 Filter: "*", 219 GroupBy: false, 220 }, 221 }, 222 Id: "f1", 223 }, 224 }, 225 Metrics: []structs.OTSDBMetricsQueryExpMetric{ 226 { 227 Id: "m1", 228 MetricName: "test.metric.0", 229 Filter: "f1", 230 }, 231 }, 232 Expressions: []structs.OTSDBMetricsQueryExpressions{}, 233 Outputs: []structs.OTSDBMetricsQueryExpOutput{ 234 { 235 Id: "m2", 236 Alias: "output-m1", 237 }, 238 }, 239 } 240 241 metricQueryRequest, err := otsdbquery.MetricsQueryExpressionsParseRequest(request) 242 assert.NoError(t, err) 243 assert.NotNil(t, metricQueryRequest) 244 assert.Len(t, metricQueryRequest, 0) 245 os.RemoveAll(config.GetDataPath()) 246 }