| 
									
										
										
										
											2019-11-14 17:59:41 +08:00
										 |  |  | package cloudwatch | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import ( | 
					
						
							|  |  |  | 	"context" | 
					
						
							|  |  |  | 	"testing" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	"github.com/aws/aws-sdk-go/aws" | 
					
						
							|  |  |  | 	"github.com/aws/aws-sdk-go/aws/request" | 
					
						
							|  |  |  | 	"github.com/aws/aws-sdk-go/service/cloudwatch" | 
					
						
							| 
									
										
										
										
											2020-10-06 19:45:58 +08:00
										 |  |  | 	"github.com/aws/aws-sdk-go/service/cloudwatch/cloudwatchiface" | 
					
						
							| 
									
										
										
										
											2020-05-18 18:25:58 +08:00
										 |  |  | 	"github.com/stretchr/testify/assert" | 
					
						
							|  |  |  | 	"github.com/stretchr/testify/require" | 
					
						
							| 
									
										
										
										
											2019-11-14 17:59:41 +08:00
										 |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | type cloudWatchFakeClient struct { | 
					
						
							| 
									
										
										
										
											2020-10-06 19:45:58 +08:00
										 |  |  | 	cloudwatchiface.CloudWatchAPI | 
					
						
							| 
									
										
										
										
											2022-02-25 19:20:07 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	counterForGetMetricDataWithContext int | 
					
						
							| 
									
										
										
										
											2019-11-14 17:59:41 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func (client *cloudWatchFakeClient) GetMetricDataWithContext(ctx aws.Context, input *cloudwatch.GetMetricDataInput, opts ...request.Option) (*cloudwatch.GetMetricDataOutput, error) { | 
					
						
							|  |  |  | 	nextToken := "next" | 
					
						
							|  |  |  | 	res := []*cloudwatch.MetricDataResult{{ | 
					
						
							|  |  |  | 		Values: []*float64{aws.Float64(12.3), aws.Float64(23.5)}, | 
					
						
							|  |  |  | 	}} | 
					
						
							| 
									
										
										
										
											2022-02-25 19:20:07 +08:00
										 |  |  | 	if client.counterForGetMetricDataWithContext == 0 { | 
					
						
							| 
									
										
										
										
											2019-11-14 17:59:41 +08:00
										 |  |  | 		nextToken = "" | 
					
						
							|  |  |  | 		res = []*cloudwatch.MetricDataResult{{ | 
					
						
							|  |  |  | 			Values: []*float64{aws.Float64(100)}, | 
					
						
							|  |  |  | 		}} | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2022-02-25 19:20:07 +08:00
										 |  |  | 	client.counterForGetMetricDataWithContext-- | 
					
						
							| 
									
										
										
										
											2019-11-14 17:59:41 +08:00
										 |  |  | 	return &cloudwatch.GetMetricDataOutput{ | 
					
						
							|  |  |  | 		MetricDataResults: res, | 
					
						
							|  |  |  | 		NextToken:         aws.String(nextToken), | 
					
						
							|  |  |  | 	}, nil | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func TestGetMetricDataExecutorTest(t *testing.T) { | 
					
						
							| 
									
										
										
										
											2020-07-14 14:23:23 +08:00
										 |  |  | 	executor := &cloudWatchExecutor{} | 
					
						
							| 
									
										
										
										
											2020-05-18 18:25:58 +08:00
										 |  |  | 	inputs := &cloudwatch.GetMetricDataInput{MetricDataQueries: []*cloudwatch.MetricDataQuery{}} | 
					
						
							| 
									
										
										
										
											2022-02-25 19:20:07 +08:00
										 |  |  | 	res, err := executor.executeRequest(context.Background(), &cloudWatchFakeClient{counterForGetMetricDataWithContext: 1}, inputs) | 
					
						
							| 
									
										
										
										
											2020-05-18 18:25:58 +08:00
										 |  |  | 	require.NoError(t, err) | 
					
						
							|  |  |  | 	require.Len(t, res, 2) | 
					
						
							|  |  |  | 	require.Len(t, res[0].MetricDataResults[0].Values, 2) | 
					
						
							|  |  |  | 	assert.Equal(t, 23.5, *res[0].MetricDataResults[0].Values[1]) | 
					
						
							|  |  |  | 	assert.Equal(t, 100.0, *res[1].MetricDataResults[0].Values[0]) | 
					
						
							| 
									
										
										
										
											2019-11-14 17:59:41 +08:00
										 |  |  | } |