|
|
@@ -581,7 +581,7 @@ describe('PrometheusDatasource', () => {
|
|
|
describe('When performing annotationQuery', () => {
|
|
|
let results;
|
|
|
|
|
|
- const options = {
|
|
|
+ const options: any = {
|
|
|
annotation: {
|
|
|
expr: 'ALERTS{alertstate="firing"}',
|
|
|
tagKeys: 'job',
|
|
|
@@ -594,79 +594,60 @@ describe('PrometheusDatasource', () => {
|
|
|
},
|
|
|
};
|
|
|
|
|
|
- beforeEach(async () => {
|
|
|
- const response = {
|
|
|
- status: 'success',
|
|
|
+ const response = {
|
|
|
+ status: 'success',
|
|
|
+ data: {
|
|
|
data: {
|
|
|
- data: {
|
|
|
- resultType: 'matrix',
|
|
|
- result: [
|
|
|
- {
|
|
|
- metric: {
|
|
|
- __name__: 'ALERTS',
|
|
|
- alertname: 'InstanceDown',
|
|
|
- alertstate: 'firing',
|
|
|
- instance: 'testinstance',
|
|
|
- job: 'testjob',
|
|
|
- },
|
|
|
- values: [[123, '1']],
|
|
|
+ resultType: 'matrix',
|
|
|
+ result: [
|
|
|
+ {
|
|
|
+ metric: {
|
|
|
+ __name__: 'ALERTS',
|
|
|
+ alertname: 'InstanceDown',
|
|
|
+ alertstate: 'firing',
|
|
|
+ instance: 'testinstance',
|
|
|
+ job: 'testjob',
|
|
|
},
|
|
|
- ],
|
|
|
- },
|
|
|
+ values: [[123, '1']],
|
|
|
+ },
|
|
|
+ ],
|
|
|
},
|
|
|
- };
|
|
|
+ },
|
|
|
+ };
|
|
|
|
|
|
- backendSrv.datasourceRequest = jest.fn(() => Promise.resolve(response));
|
|
|
- ctx.ds = new PrometheusDatasource(instanceSettings, q, backendSrv as any, templateSrv, timeSrv);
|
|
|
+ describe('not use useValueForTime', () => {
|
|
|
+ beforeEach(async () => {
|
|
|
+ options.annotation.useValueForTime = false;
|
|
|
+ backendSrv.datasourceRequest = jest.fn(() => Promise.resolve(response));
|
|
|
+ ctx.ds = new PrometheusDatasource(instanceSettings, q, <any>backendSrv, templateSrv, timeSrv);
|
|
|
|
|
|
- await ctx.ds.annotationQuery(options).then(data => {
|
|
|
- results = data;
|
|
|
+ await ctx.ds.annotationQuery(options).then(function (data) {
|
|
|
+ results = data;
|
|
|
+ });
|
|
|
+ });
|
|
|
+
|
|
|
+ it('should return annotation list', () => {
|
|
|
+ expect(results.length).toBe(1);
|
|
|
+ expect(results[0].tags).toContain('testjob');
|
|
|
+ expect(results[0].title).toBe('InstanceDown');
|
|
|
+ expect(results[0].text).toBe('testinstance');
|
|
|
+ expect(results[0].time).toBe(123 * 1000);
|
|
|
});
|
|
|
});
|
|
|
- it('should return annotation list', () => {
|
|
|
- expect(results.length).toBe(1);
|
|
|
- expect(results[0].tags).toContain('testjob');
|
|
|
- expect(results[0].title).toBe('InstanceDown');
|
|
|
- expect(results[0].text).toBe('testinstance');
|
|
|
- expect(results[0].time).toBe(123 * 1000);
|
|
|
- });
|
|
|
-
|
|
|
- it('should return annotation list with seriesValueAsTiemstamp', () => {
|
|
|
- const options = {
|
|
|
- annotation: {
|
|
|
- expr: 'timestamp_seconds',
|
|
|
- tagKeys: 'job',
|
|
|
- titleFormat: '{{job}}',
|
|
|
- textFormat: '{{instance}}',
|
|
|
- useValueForTime: true,
|
|
|
- },
|
|
|
- range: {
|
|
|
- from: new Date('2014-04-10T05:20:10Z'),
|
|
|
- to: new Date('2014-05-20T03:10:22Z'),
|
|
|
- },
|
|
|
- };
|
|
|
- ctx.backendSrvMock.datasourceRequest.mockReturnValue(
|
|
|
- Promise.resolve({
|
|
|
- status: 'success',
|
|
|
- data: {
|
|
|
- resultType: 'matrix',
|
|
|
- result: [
|
|
|
- {
|
|
|
- metric: {
|
|
|
- __name__: 'timestamp_milliseconds',
|
|
|
- instance: 'testinstance',
|
|
|
- job: 'testjob',
|
|
|
- },
|
|
|
- values: [[1443454528, '1500000000000']],
|
|
|
- },
|
|
|
- ],
|
|
|
- },
|
|
|
- })
|
|
|
- );
|
|
|
- ctx.ds = new PrometheusDatasource(instanceSettings, q, ctx.backendSrvMock, ctx.templateSrvMock, ctx.timeSrvMock);
|
|
|
- ctx.ds.annotationQuery(options).then(function (results) {
|
|
|
- expect(results[0].time).toEqual(1500000000000);
|
|
|
- ctx.backendSrvMock.datasourceRequest.mockReset();
|
|
|
+
|
|
|
+ describe('use useValueForTime', () => {
|
|
|
+ beforeEach(async () => {
|
|
|
+ options.annotation.useValueForTime = true;
|
|
|
+ backendSrv.datasourceRequest = jest.fn(() => Promise.resolve(response));
|
|
|
+ ctx.ds = new PrometheusDatasource(instanceSettings, q, <any>backendSrv, templateSrv, timeSrv);
|
|
|
+
|
|
|
+ await ctx.ds.annotationQuery(options).then(function (data) {
|
|
|
+ results = data;
|
|
|
+ });
|
|
|
+ });
|
|
|
+
|
|
|
+ it('should return annotation list', () => {
|
|
|
+ expect(results[0].time).toEqual(1);
|
|
|
});
|
|
|
});
|
|
|
});
|