Browse Source

Merge pull request #24 from CorpGlory/fix-postgres-and-elastic-tests

Fix postgres and elastic tests
tests-recovery
Coin de Gamma 3 years ago committed by GitHub
parent
commit
43cc30182c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 48
      spec/elasticsearch.jest.ts
  2. 41
      spec/postgres.jest.ts

48
spec/elasticsearch.jest.ts

@ -1,12 +1,11 @@
import { ElasticsearchMetric } from '../src/metrics/elasticsearch_metric'; import { ElasticsearchMetric } from '../src/metrics/elasticsearch_metric';
import { MetricQuery, Datasource } from '../src/metrics/metric'; import { Datasource } from '../src/metrics/metric';
import 'jest';
import * as _ from 'lodash'; import * as _ from 'lodash';
describe('simple query', function(){ describe('simple query', function(){
let datasourse: Datasource = { let datasource: Datasource = {
url: "api/datasources/proxy/1/_msearch", url: "api/datasources/proxy/1/_msearch",
data: [{ data: [{
"search_type": "query_then_fetch", "search_type": "query_then_fetch",
@ -65,7 +64,7 @@ describe('simple query', function(){
}], }],
type: "elasticsearch" type: "elasticsearch"
}; };
datasourse.data = datasourse.data.map(d => JSON.stringify(d)).join('\n'); datasource.data = datasource.data.map(d => JSON.stringify(d)).join('\n');
let targets = [ let targets = [
{ {
@ -120,8 +119,8 @@ describe('simple query', function(){
{ {
"range": { "range": {
"@timestamp": { "@timestamp": {
"gte": "0", "gte": "1545933121101",
"lte": "1", "lte": "1545954721101",
"format": "epoch_millis" "format": "epoch_millis"
} }
} }
@ -163,25 +162,35 @@ describe('simple query', function(){
} }
}]; }];
let elasticMetric = new ElasticsearchMetric(datasourse, targets); let elasticMetric = new ElasticsearchMetric(datasource, targets);
it('check correct time processing', function() { it('check correct time processing', function() {
const expectedQueryTemplate = _.cloneDeep(queryTemplate);
const from = 0;
const to = 1;
const limit = 222;
const offset = 333;
expectedQueryTemplate[1].query.bool.filter[0].range['@timestamp'].gte = from.toString();
expectedQueryTemplate[1].query.bool.filter[0].range['@timestamp'].lte = to.toString();
expectedQueryTemplate[1].aggs["2"].date_histogram.extended_bounds = {
min: from.toString(),
max: to.toString()
};
let expectedQuery = { let expectedQuery = {
headers: { headers: {
'Content-Type': 'application/json' 'Content-Type': 'application/json'
}, },
url: datasourse.url, url: datasource.url,
method: 'POST', method: 'POST',
schema: { schema: {
data: queryTemplate.map(e => JSON.stringify(e)).join('\n') data: expectedQueryTemplate.map(e => JSON.stringify(e)).join('\n') + '\n'
} }
}; };
let from = 0;
let to = 1;
let limit = 222;
let offset = 333;
let result = elasticMetric.getQuery(from, to, limit, offset); let result = elasticMetric.getQuery(from, to, limit, offset);
expect(result).toEqual(expectedQuery); expect(result).toEqual(expectedQuery);
@ -248,11 +257,12 @@ describe('simple query', function(){
it('check results parsing', function() { it('check results parsing', function() {
let expectedResult = { let expectedResult = {
columns: ['timestamp', 'target'], columns: ['timestamp', 'target'],
values: [[1545934140000, null], values: [
[1545934200000, 991287.4583339691], [1545934140000, null],
[1545934260000, 898992.5] [1545934200000, 991287.4583339691],
] [1545934260000, 898992.5]
} ]
};
expect(elasticMetric.getResults(result)).toEqual(expectedResult); expect(elasticMetric.getResults(result)).toEqual(expectedResult);
}); });

41
spec/postgres.jest.ts

@ -11,7 +11,7 @@ describe('Test query creation', function() {
let offset = 0; let offset = 0;
let from = 1542983750857; let from = 1542983750857;
let to = 1542984313292; let to = 1542984313292;
let postgres = getDefaultMetric(); let postgres = getMetricForSqlQuery();
let mQuery: MetricQuery = postgres.getQuery(from, to, limit, offset); let mQuery: MetricQuery = postgres.getQuery(from, to, limit, offset);
it('test that payload placed to data field', function() { it('test that payload placed to data field', function() {
@ -31,7 +31,7 @@ describe('Test query creation', function() {
}); });
describe('Test result parsing', function() { describe('Test result parsing', function() {
let postgres = getDefaultMetric(); let postgres = getMetricForSqlQuery();
let timestamps = [1542983800000, 1542983800060, 1542983800120] let timestamps = [1542983800000, 1542983800060, 1542983800120]
let response = { let response = {
data: { data: {
@ -216,38 +216,29 @@ describe('Test sql processing', function() {
}); });
function checkExpectation(original: string, expected: string, from: number, to: number, limit: number, offset: number) { function checkExpectation(original: string, expected: string, from: number, to: number, limit: number, offset: number) {
let metric = getMetricWithSql(original); let metric = getMetricForSqlQuery(original);
expect(metric.getQuery(from, to, limit, offset).schema.data.queries[0].rawSql).toBe(expected); expect(metric.getQuery(from, to, limit, offset).schema.data.queries[0].rawSql).toBe(expected);
} }
function getMetricWithSql(sql: string): PostgresMetric { function getMetricForSqlQuery(query: string = ''): PostgresMetric {
let metric = getDefaultMetric(); const queryPayload = {
metric.datasource.data.queries[0].rawSql = sql;
return metric;
}
function getDefaultMetric(): PostgresMetric {
let queryPayload = {
from: 1542983750857, from: 1542983750857,
to: 1542984313292, to: 1542984313292
queries:[{
refId: 'A',
intervalMs:2000,
maxDataPoints:191,
datasourceId:1,
rawSql: 'SELECT\n \"time\" AS \"time\",\n val\nFROM local\nORDER BY 1',
format: 'time_series'
}]
}; };
let datasource = { const datasource = {
url: 'api/tsdb/query', url: 'api/tsdb/query',
type: 'postgres', type: 'postgres',
data: queryPayload data: queryPayload
}; };
let targets = [{ const targets = [{
refId: 'A', refId: 'A',
intervalMs: 2000,
maxDataPoints: 191,
datasourceId: 1,
rawSql: query,
format: 'time_series'
}]; }];
return new PostgresMetric(datasource, targets); return new PostgresMetric(datasource, targets);

Loading…
Cancel
Save