@ -291,6 +291,245 @@ describe('Prometheus Result Transformer', () => {
expect ( series . data [ 0 ] . fields [ 3 ] . values . toArray ( ) ) . toEqual ( [ 10 , 0 , 10 ] ) ;
expect ( series . data [ 0 ] . fields [ 3 ] . values . toArray ( ) ) . toEqual ( [ 10 , 0 , 10 ] ) ;
} ) ;
} ) ;
it ( 'results with heatmap format from multiple queries should be correctly transformed' , ( ) = > {
const options = {
targets : [
{
format : 'heatmap' ,
refId : 'A' ,
} ,
{
format : 'heatmap' ,
refId : 'B' ,
} ,
] ,
} as unknown as DataQueryRequest < PromQuery > ;
const response = {
state : 'Done' ,
data : [
new MutableDataFrame ( {
refId : 'A' ,
fields : [
{ name : 'Time' , type : FieldType . time , values : [ 6 , 5 , 4 ] } ,
{
name : 'Value' ,
type : FieldType . number ,
values : [ 10 , 10 , 0 ] ,
labels : { le : '1' } ,
} ,
] ,
} ) ,
new MutableDataFrame ( {
refId : 'A' ,
fields : [
{ name : 'Time' , type : FieldType . time , values : [ 6 , 5 , 4 ] } ,
{
name : 'Value' ,
type : FieldType . number ,
values : [ 20 , 10 , 30 ] ,
labels : { le : '2' } ,
} ,
] ,
} ) ,
new MutableDataFrame ( {
refId : 'A' ,
fields : [
{ name : 'Time' , type : FieldType . time , values : [ 6 , 5 , 4 ] } ,
{
name : 'Value' ,
type : FieldType . number ,
values : [ 30 , 10 , 40 ] ,
labels : { le : '+Inf' } ,
} ,
] ,
} ) ,
new MutableDataFrame ( {
refId : 'B' ,
fields : [
{ name : 'Time' , type : FieldType . time , values : [ 6 , 5 , 4 ] } ,
{
name : 'Value' ,
type : FieldType . number ,
values : [ 10 , 10 , 0 ] ,
labels : { le : '1' } ,
} ,
] ,
} ) ,
new MutableDataFrame ( {
refId : 'B' ,
fields : [
{ name : 'Time' , type : FieldType . time , values : [ 6 , 5 , 4 ] } ,
{
name : 'Value' ,
type : FieldType . number ,
values : [ 20 , 10 , 30 ] ,
labels : { le : '2' } ,
} ,
] ,
} ) ,
new MutableDataFrame ( {
refId : 'B' ,
fields : [
{ name : 'Time' , type : FieldType . time , values : [ 6 , 5 , 4 ] } ,
{
name : 'Value' ,
type : FieldType . number ,
values : [ 30 , 10 , 40 ] ,
labels : { le : '+Inf' } ,
} ,
] ,
} ) ,
] ,
} as unknown as DataQueryResponse ;
const series = transformV2 ( response , options , { } ) ;
expect ( series . data [ 0 ] . fields . length ) . toEqual ( 4 ) ;
expect ( series . data [ 0 ] . fields [ 1 ] . values . toArray ( ) ) . toEqual ( [ 10 , 10 , 0 ] ) ;
expect ( series . data [ 0 ] . fields [ 2 ] . values . toArray ( ) ) . toEqual ( [ 10 , 0 , 30 ] ) ;
expect ( series . data [ 0 ] . fields [ 3 ] . values . toArray ( ) ) . toEqual ( [ 10 , 0 , 10 ] ) ;
} ) ;
it ( 'results with heatmap format and multiple histograms should be grouped and de-accumulated by non-le labels' , ( ) = > {
const options = {
targets : [
{
format : 'heatmap' ,
refId : 'A' ,
} ,
] ,
} as unknown as DataQueryRequest < PromQuery > ;
const response = {
state : 'Done' ,
data : [
// 10
new MutableDataFrame ( {
refId : 'A' ,
fields : [
{ name : 'Time' , type : FieldType . time , values : [ 6 , 5 , 4 ] } ,
{
name : 'Value' ,
type : FieldType . number ,
values : [ 10 , 10 , 0 ] ,
labels : { le : '1' , additionalProperty : '10' } ,
} ,
] ,
} ) ,
new MutableDataFrame ( {
refId : 'A' ,
fields : [
{ name : 'Time' , type : FieldType . time , values : [ 6 , 5 , 4 ] } ,
{
name : 'Value' ,
type : FieldType . number ,
values : [ 20 , 10 , 30 ] ,
labels : { le : '2' , additionalProperty : '10' } ,
} ,
] ,
} ) ,
new MutableDataFrame ( {
refId : 'A' ,
fields : [
{ name : 'Time' , type : FieldType . time , values : [ 6 , 5 , 4 ] } ,
{
name : 'Value' ,
type : FieldType . number ,
values : [ 30 , 10 , 40 ] ,
labels : { le : '+Inf' , additionalProperty : '10' } ,
} ,
] ,
} ) ,
// 20
new MutableDataFrame ( {
refId : 'A' ,
fields : [
{ name : 'Time' , type : FieldType . time , values : [ 6 , 5 , 4 ] } ,
{
name : 'Value' ,
type : FieldType . number ,
values : [ 0 , 10 , 10 ] ,
labels : { le : '1' , additionalProperty : '20' } ,
} ,
] ,
} ) ,
new MutableDataFrame ( {
refId : 'A' ,
fields : [
{ name : 'Time' , type : FieldType . time , values : [ 6 , 5 , 4 ] } ,
{
name : 'Value' ,
type : FieldType . number ,
values : [ 20 , 10 , 40 ] ,
labels : { le : '2' , additionalProperty : '20' } ,
} ,
] ,
} ) ,
new MutableDataFrame ( {
refId : 'A' ,
fields : [
{ name : 'Time' , type : FieldType . time , values : [ 6 , 5 , 4 ] } ,
{
name : 'Value' ,
type : FieldType . number ,
values : [ 30 , 10 , 60 ] ,
labels : { le : '+Inf' , additionalProperty : '20' } ,
} ,
] ,
} ) ,
// 30
new MutableDataFrame ( {
refId : 'A' ,
fields : [
{ name : 'Time' , type : FieldType . time , values : [ 6 , 5 , 4 ] } ,
{
name : 'Value' ,
type : FieldType . number ,
values : [ 30 , 30 , 60 ] ,
labels : { le : '1' , additionalProperty : '30' } ,
} ,
] ,
} ) ,
new MutableDataFrame ( {
refId : 'A' ,
fields : [
{ name : 'Time' , type : FieldType . time , values : [ 6 , 5 , 4 ] } ,
{
name : 'Value' ,
type : FieldType . number ,
values : [ 30 , 40 , 60 ] ,
labels : { le : '2' , additionalProperty : '30' } ,
} ,
] ,
} ) ,
new MutableDataFrame ( {
refId : 'A' ,
fields : [
{ name : 'Time' , type : FieldType . time , values : [ 6 , 5 , 4 ] } ,
{
name : 'Value' ,
type : FieldType . number ,
values : [ 40 , 40 , 60 ] ,
labels : { le : '+Inf' , additionalProperty : '30' } ,
} ,
] ,
} ) ,
] ,
} as unknown as DataQueryResponse ;
const series = transformV2 ( response , options , { } ) ;
expect ( series . data [ 0 ] . fields . length ) . toEqual ( 4 ) ;
expect ( series . data [ 0 ] . fields [ 1 ] . values . toArray ( ) ) . toEqual ( [ 10 , 10 , 0 ] ) ;
expect ( series . data [ 0 ] . fields [ 2 ] . values . toArray ( ) ) . toEqual ( [ 10 , 0 , 30 ] ) ;
expect ( series . data [ 0 ] . fields [ 3 ] . values . toArray ( ) ) . toEqual ( [ 10 , 0 , 10 ] ) ;
expect ( series . data [ 1 ] . fields [ 1 ] . values . toArray ( ) ) . toEqual ( [ 0 , 10 , 10 ] ) ;
expect ( series . data [ 1 ] . fields [ 2 ] . values . toArray ( ) ) . toEqual ( [ 20 , 0 , 30 ] ) ;
expect ( series . data [ 1 ] . fields [ 3 ] . values . toArray ( ) ) . toEqual ( [ 10 , 0 , 20 ] ) ;
expect ( series . data [ 2 ] . fields [ 1 ] . values . toArray ( ) ) . toEqual ( [ 30 , 30 , 60 ] ) ;
expect ( series . data [ 2 ] . fields [ 2 ] . values . toArray ( ) ) . toEqual ( [ 0 , 10 , 0 ] ) ;
expect ( series . data [ 2 ] . fields [ 3 ] . values . toArray ( ) ) . toEqual ( [ 10 , 0 , 0 ] ) ;
} ) ;
it ( 'Retains exemplar frames when data returned is a heatmap' , ( ) = > {
it ( 'Retains exemplar frames when data returned is a heatmap' , ( ) = > {
const options = {
const options = {
targets : [
targets : [