|
|
|
@ -9,20 +9,26 @@ import ( |
|
|
|
|
"github.com/aws/aws-sdk-go/service/ec2" |
|
|
|
|
"github.com/aws/aws-sdk-go/service/ec2/ec2iface" |
|
|
|
|
"github.com/bmizerany/assert" |
|
|
|
|
"github.com/grafana/grafana/pkg/components/securejsondata" |
|
|
|
|
"github.com/grafana/grafana/pkg/components/simplejson" |
|
|
|
|
"github.com/grafana/grafana/pkg/models" |
|
|
|
|
"github.com/grafana/grafana/pkg/tsdb" |
|
|
|
|
. "github.com/smartystreets/goconvey/convey" |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
type mockedEc2 struct { |
|
|
|
|
ec2iface.EC2API |
|
|
|
|
Resp ec2.DescribeInstancesOutput |
|
|
|
|
Resp ec2.DescribeInstancesOutput |
|
|
|
|
RespRegions ec2.DescribeRegionsOutput |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func (m mockedEc2) DescribeInstancesPages(in *ec2.DescribeInstancesInput, fn func(*ec2.DescribeInstancesOutput, bool) bool) error { |
|
|
|
|
fn(&m.Resp, true) |
|
|
|
|
return nil |
|
|
|
|
} |
|
|
|
|
func (m mockedEc2) DescribeRegions(in *ec2.DescribeRegionsInput) (*ec2.DescribeRegionsOutput, error) { |
|
|
|
|
return &m.RespRegions, nil |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func TestCloudWatchMetrics(t *testing.T) { |
|
|
|
|
|
|
|
|
@ -82,6 +88,31 @@ func TestCloudWatchMetrics(t *testing.T) { |
|
|
|
|
}) |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
Convey("When calling handleGetRegions", t, func() { |
|
|
|
|
executor := &CloudWatchExecutor{ |
|
|
|
|
ec2Svc: mockedEc2{RespRegions: ec2.DescribeRegionsOutput{ |
|
|
|
|
Regions: []*ec2.Region{ |
|
|
|
|
{ |
|
|
|
|
RegionName: aws.String("ap-northeast-2"), |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
}}, |
|
|
|
|
} |
|
|
|
|
jsonData := simplejson.New() |
|
|
|
|
jsonData.Set("defaultRegion", "default") |
|
|
|
|
executor.DataSource = &models.DataSource{ |
|
|
|
|
JsonData: jsonData, |
|
|
|
|
SecureJsonData: securejsondata.SecureJsonData{}, |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
result, _ := executor.handleGetRegions(context.Background(), simplejson.New(), &tsdb.TsdbQuery{}) |
|
|
|
|
|
|
|
|
|
Convey("Should return regions", func() { |
|
|
|
|
So(result[0].Text, ShouldEqual, "ap-northeast-1") |
|
|
|
|
So(result[1].Text, ShouldEqual, "ap-northeast-2") |
|
|
|
|
}) |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
Convey("When calling handleGetEc2InstanceAttribute", t, func() { |
|
|
|
|
executor := &CloudWatchExecutor{ |
|
|
|
|
ec2Svc: mockedEc2{Resp: ec2.DescribeInstancesOutput{ |
|
|
|
|