1// +build bench
2
3package ec2query_test
4
5import (
6	"testing"
7
8	"github.com/aws/aws-sdk-go/aws"
9	"github.com/aws/aws-sdk-go/aws/request"
10	"github.com/aws/aws-sdk-go/awstesting"
11	"github.com/aws/aws-sdk-go/private/protocol/ec2query"
12	"github.com/aws/aws-sdk-go/service/ec2"
13)
14
15func BenchmarkEC2QueryBuild_Complex_ec2AuthorizeSecurityGroupEgress(b *testing.B) {
16	params := &ec2.AuthorizeSecurityGroupEgressInput{
17		GroupId:  aws.String("String"), // Required
18		CidrIp:   aws.String("String"),
19		DryRun:   aws.Bool(true),
20		FromPort: aws.Int64(1),
21		IpPermissions: []*ec2.IpPermission{
22			{ // Required
23				FromPort:   aws.Int64(1),
24				IpProtocol: aws.String("String"),
25				IpRanges: []*ec2.IpRange{
26					{ // Required
27						CidrIp: aws.String("String"),
28					},
29					// More values...
30				},
31				PrefixListIds: []*ec2.PrefixListId{
32					{ // Required
33						PrefixListId: aws.String("String"),
34					},
35					// More values...
36				},
37				ToPort: aws.Int64(1),
38				UserIdGroupPairs: []*ec2.UserIdGroupPair{
39					{ // Required
40						GroupId:   aws.String("String"),
41						GroupName: aws.String("String"),
42						UserId:    aws.String("String"),
43					},
44					// More values...
45				},
46			},
47			// More values...
48		},
49		IpProtocol:                 aws.String("String"),
50		SourceSecurityGroupName:    aws.String("String"),
51		SourceSecurityGroupOwnerId: aws.String("String"),
52		ToPort:                     aws.Int64(1),
53	}
54
55	benchEC2QueryBuild(b, "AuthorizeSecurityGroupEgress", params)
56}
57
58func BenchmarkEC2QueryBuild_Simple_ec2AttachNetworkInterface(b *testing.B) {
59	params := &ec2.AttachNetworkInterfaceInput{
60		DeviceIndex:        aws.Int64(1),         // Required
61		InstanceId:         aws.String("String"), // Required
62		NetworkInterfaceId: aws.String("String"), // Required
63		DryRun:             aws.Bool(true),
64	}
65
66	benchEC2QueryBuild(b, "AttachNetworkInterface", params)
67}
68
69func benchEC2QueryBuild(b *testing.B, opName string, params interface{}) {
70	svc := awstesting.NewClient()
71	svc.ServiceName = "ec2"
72	svc.APIVersion = "2015-04-15"
73
74	for i := 0; i < b.N; i++ {
75		r := svc.NewRequest(&request.Operation{
76			Name:       opName,
77			HTTPMethod: "POST",
78			HTTPPath:   "/",
79		}, params, nil)
80		ec2query.Build(r)
81		if r.Error != nil {
82			b.Fatal("Unexpected error", r.Error)
83		}
84	}
85}
86