Sfoglia il codice sorgente

use timeSrv in metricFindQuery as timeRange

thatsparesh 6 anni fa
parent
commit
105879ab5d

+ 4 - 10
public/app/plugins/datasource/mssql/datasource.ts

@@ -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,19 +107,13 @@ export class MssqlDatasource {
       format: 'table',
     };
 
+    const range = this.timeSrv.timeRange();
     const data = {
       queries: [interpolatedQuery],
+      from: range.from.valueOf().toString(),
+      to: range.to.valueOf().toString(),
     };
 
-    if (optionalOptions && optionalOptions.range) {
-      if (optionalOptions.range.from) {
-        data['from'] = optionalOptions.range.from.valueOf().toString();
-      }
-      if (optionalOptions.range.to) {
-        data['to'] = optionalOptions.range.to.valueOf().toString();
-      }
-    }
-
     return this.backendSrv
       .datasourceRequest({
         url: '/api/tsdb/query',

+ 46 - 2
public/app/plugins/datasource/mssql/specs/datasource.test.ts

@@ -1,6 +1,6 @@
 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({}, {});