Commit bd48408e by Marcus Efraimsson Committed by GitHub

Merge pull request #15215 from thatsparesh/13324-mssql-pass-timerange-for-template-variable-queries

mssql: pass timerange for template variable queries
parents 9ab06c6e 105879ab
......@@ -8,7 +8,7 @@ export class MssqlDatasource {
interval: string;
/** @ngInject */
constructor(instanceSettings, private backendSrv, private $q, private templateSrv) {
constructor(instanceSettings, private backendSrv, private $q, private templateSrv, private timeSrv) {
this.name = instanceSettings.name;
this.id = instanceSettings.id;
this.responseParser = new ResponseParser(this.$q);
......@@ -107,13 +107,18 @@ export class MssqlDatasource {
format: 'table',
};
const range = this.timeSrv.timeRange();
const data = {
queries: [interpolatedQuery],
from: range.from.valueOf().toString(),
to: range.to.valueOf().toString(),
};
return this.backendSrv
.datasourceRequest({
url: '/api/tsdb/query',
method: 'POST',
data: {
queries: [interpolatedQuery],
},
data: data,
})
.then(data => this.responseParser.parseMetricFindQueryResult(refId, data));
}
......
import moment from 'moment';
import { MssqlDatasource } from '../datasource';
import { TemplateSrvStub } from 'test/specs/helpers';
import { TemplateSrvStub, TimeSrvStub } from 'test/specs/helpers';
import { CustomVariable } from 'app/features/templating/custom_variable';
import q from 'q';
......@@ -8,13 +8,14 @@ describe('MSSQLDatasource', () => {
const ctx: any = {
backendSrv: {},
templateSrv: new TemplateSrvStub(),
timeSrv: new TimeSrvStub(),
};
beforeEach(() => {
ctx.$q = q;
ctx.instanceSettings = { name: 'mssql' };
ctx.ds = new MssqlDatasource(ctx.instanceSettings, ctx.backendSrv, ctx.$q, ctx.templateSrv);
ctx.ds = new MssqlDatasource(ctx.instanceSettings, ctx.backendSrv, ctx.$q, ctx.templateSrv, ctx.timeSrv);
});
describe('When performing annotationQuery', () => {
......@@ -188,6 +189,49 @@ describe('MSSQLDatasource', () => {
});
});
describe('When performing metricFindQuery', () => {
let results;
const query = 'select * from atable';
const response = {
results: {
tempvar: {
meta: {
rowCount: 1,
},
refId: 'tempvar',
tables: [
{
columns: [{ text: 'title' }],
rows: [['aTitle']],
},
],
},
},
};
const time = {
from: moment(1521545610656),
to: moment(1521546251185)
};
beforeEach(() => {
ctx.timeSrv.setTime(time);
ctx.backendSrv.datasourceRequest = options => {
results = options.data;
return ctx.$q.when({ data: response, status: 200 });
};
return ctx.ds.metricFindQuery(query);
});
it('should pass timerange to datasourceRequest', () => {
expect(results.from).toBe(time.from.valueOf().toString());
expect(results.to).toBe(time.to.valueOf().toString());
expect(results.queries.length).toBe(1);
expect(results.queries[0].rawSql).toBe(query);
});
});
describe('When interpolating variables', () => {
beforeEach(() => {
ctx.variable = new CustomVariable({}, {});
......
......@@ -143,7 +143,7 @@ export function DashboardViewStateStub(this: any) {
}
export function TimeSrvStub(this: any) {
this.init = sinon.spy();
this.init = () => {};
this.time = { from: 'now-1h', to: 'now' };
this.timeRange = function(parse) {
if (parse === false) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment