| 
									
										
										
										
											2020-06-30 18:47:13 +03:00
										 |  |  | package cloudmonitoring | 
					
						
							| 
									
										
										
										
											2018-09-24 16:02:35 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | import ( | 
					
						
							|  |  |  | 	"testing" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-08 14:46:35 +02:00
										 |  |  | 	"github.com/grafana/grafana-plugin-sdk-go/backend" | 
					
						
							| 
									
										
										
										
											2021-01-06 20:42:48 +01:00
										 |  |  | 	"github.com/stretchr/testify/assert" | 
					
						
							|  |  |  | 	"github.com/stretchr/testify/require" | 
					
						
							| 
									
										
										
										
											2018-09-24 16:02:35 +02:00
										 |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-08 07:02:49 +01:00
										 |  |  | func TestExecutor_parseToAnnotations(t *testing.T) { | 
					
						
							| 
									
										
										
										
											2021-02-25 18:29:17 +02:00
										 |  |  | 	d, err := loadTestFile("./test-data/2-series-response-no-agg.json") | 
					
						
							| 
									
										
										
										
											2021-01-06 20:42:48 +01:00
										 |  |  | 	require.NoError(t, err) | 
					
						
							| 
									
										
										
										
											2021-02-25 18:29:17 +02:00
										 |  |  | 	require.Len(t, d.TimeSeries, 3) | 
					
						
							| 
									
										
										
										
											2021-01-06 20:42:48 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-08 14:46:35 +02:00
										 |  |  | 	res := &backend.DataResponse{} | 
					
						
							| 
									
										
										
										
											2018-09-24 16:02:35 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-11-08 15:41:17 +01:00
										 |  |  | 	err = parseToAnnotations("anno", res, d, "atitle {{metric.label.instance_name}} {{metric.value}}", | 
					
						
							| 
									
										
										
										
											2021-11-11 13:38:04 +01:00
										 |  |  | 		"atext {{resource.label.zone}}") | 
					
						
							| 
									
										
										
										
											2021-01-06 20:42:48 +01:00
										 |  |  | 	require.NoError(t, err) | 
					
						
							| 
									
										
										
										
											2018-09-27 15:17:35 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-05-19 13:52:52 -07:00
										 |  |  | 	require.Len(t, res.Frames, 1) | 
					
						
							|  |  |  | 	assert.Equal(t, "time", res.Frames[0].Fields[0].Name) | 
					
						
							| 
									
										
										
										
											2021-10-08 14:46:35 +02:00
										 |  |  | 	assert.Equal(t, "title", res.Frames[0].Fields[1].Name) | 
					
						
							|  |  |  | 	assert.Equal(t, "tags", res.Frames[0].Fields[2].Name) | 
					
						
							|  |  |  | 	assert.Equal(t, "text", res.Frames[0].Fields[3].Name) | 
					
						
							| 
									
										
										
										
											2022-05-19 13:52:52 -07:00
										 |  |  | 	assert.Equal(t, 9, res.Frames[0].Fields[0].Len()) | 
					
						
							|  |  |  | 	assert.Equal(t, 9, res.Frames[0].Fields[1].Len()) | 
					
						
							|  |  |  | 	assert.Equal(t, 9, res.Frames[0].Fields[2].Len()) | 
					
						
							|  |  |  | 	assert.Equal(t, 9, res.Frames[0].Fields[3].Len()) | 
					
						
							| 
									
										
										
										
											2021-02-25 18:29:17 +02:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func TestCloudMonitoringExecutor_parseToAnnotations_emptyTimeSeries(t *testing.T) { | 
					
						
							| 
									
										
										
										
											2021-10-08 14:46:35 +02:00
										 |  |  | 	res := &backend.DataResponse{} | 
					
						
							| 
									
										
										
										
											2021-02-25 18:29:17 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	response := cloudMonitoringResponse{ | 
					
						
							|  |  |  | 		TimeSeries: []timeSeries{}, | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-11-08 15:41:17 +01:00
										 |  |  | 	err := parseToAnnotations("anno", res, response, "atitle", "atext") | 
					
						
							| 
									
										
										
										
											2021-02-25 18:29:17 +02:00
										 |  |  | 	require.NoError(t, err) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-05-19 13:52:52 -07:00
										 |  |  | 	require.Len(t, res.Frames, 1) | 
					
						
							|  |  |  | 	assert.Equal(t, "time", res.Frames[0].Fields[0].Name) | 
					
						
							|  |  |  | 	assert.Equal(t, "title", res.Frames[0].Fields[1].Name) | 
					
						
							|  |  |  | 	assert.Equal(t, "tags", res.Frames[0].Fields[2].Name) | 
					
						
							|  |  |  | 	assert.Equal(t, "text", res.Frames[0].Fields[3].Name) | 
					
						
							|  |  |  | 	assert.Equal(t, 0, res.Frames[0].Fields[0].Len()) | 
					
						
							|  |  |  | 	assert.Equal(t, 0, res.Frames[0].Fields[1].Len()) | 
					
						
							|  |  |  | 	assert.Equal(t, 0, res.Frames[0].Fields[2].Len()) | 
					
						
							|  |  |  | 	assert.Equal(t, 0, res.Frames[0].Fields[3].Len()) | 
					
						
							| 
									
										
										
										
											2021-02-25 18:29:17 +02:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func TestCloudMonitoringExecutor_parseToAnnotations_noPointsInSeries(t *testing.T) { | 
					
						
							| 
									
										
										
										
											2021-10-08 14:46:35 +02:00
										 |  |  | 	res := &backend.DataResponse{} | 
					
						
							| 
									
										
										
										
											2021-02-25 18:29:17 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	response := cloudMonitoringResponse{ | 
					
						
							|  |  |  | 		TimeSeries: []timeSeries{ | 
					
						
							|  |  |  | 			{Points: nil}, | 
					
						
							|  |  |  | 		}, | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-11-08 15:41:17 +01:00
										 |  |  | 	err := parseToAnnotations("anno", res, response, "atitle", "atext") | 
					
						
							| 
									
										
										
										
											2021-02-25 18:29:17 +02:00
										 |  |  | 	require.NoError(t, err) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-05-19 13:52:52 -07:00
										 |  |  | 	require.Len(t, res.Frames, 1) | 
					
						
							|  |  |  | 	assert.Equal(t, "time", res.Frames[0].Fields[0].Name) | 
					
						
							|  |  |  | 	assert.Equal(t, "title", res.Frames[0].Fields[1].Name) | 
					
						
							|  |  |  | 	assert.Equal(t, "tags", res.Frames[0].Fields[2].Name) | 
					
						
							|  |  |  | 	assert.Equal(t, "text", res.Frames[0].Fields[3].Name) | 
					
						
							|  |  |  | 	assert.Equal(t, 0, res.Frames[0].Fields[0].Len()) | 
					
						
							|  |  |  | 	assert.Equal(t, 0, res.Frames[0].Fields[1].Len()) | 
					
						
							|  |  |  | 	assert.Equal(t, 0, res.Frames[0].Fields[2].Len()) | 
					
						
							|  |  |  | 	assert.Equal(t, 0, res.Frames[0].Fields[3].Len()) | 
					
						
							| 
									
										
										
										
											2018-09-24 16:02:35 +02:00
										 |  |  | } |