github.com/aavshr/aws-sdk-go@v1.41.3/private/protocol/restjson/build_bench_test.go (about)

     1  //go:build bench
     2  // +build bench
     3  
     4  package restjson_test
     5  
     6  import (
     7  	"net/http"
     8  	"net/http/httptest"
     9  	"os"
    10  	"testing"
    11  
    12  	"github.com/aavshr/aws-sdk-go/aws"
    13  	"github.com/aavshr/aws-sdk-go/aws/credentials"
    14  	"github.com/aavshr/aws-sdk-go/aws/endpoints"
    15  	"github.com/aavshr/aws-sdk-go/aws/request"
    16  	"github.com/aavshr/aws-sdk-go/aws/session"
    17  	"github.com/aavshr/aws-sdk-go/private/protocol/restjson"
    18  	"github.com/aavshr/aws-sdk-go/service/elastictranscoder"
    19  )
    20  
    21  var (
    22  	elastictranscoderSvc *elastictranscoder.ElasticTranscoder
    23  )
    24  
    25  func TestMain(m *testing.M) {
    26  	server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
    27  		w.WriteHeader(http.StatusOK)
    28  	}))
    29  
    30  	sess := session.Must(session.NewSession(&aws.Config{
    31  		Credentials:      credentials.NewStaticCredentials("Key", "Secret", "Token"),
    32  		Endpoint:         aws.String(server.URL),
    33  		S3ForcePathStyle: aws.Bool(true),
    34  		DisableSSL:       aws.Bool(true),
    35  		Region:           aws.String(endpoints.UsWest2RegionID),
    36  	}))
    37  	elastictranscoderSvc = elastictranscoder.New(sess)
    38  
    39  	c := m.Run()
    40  	server.Close()
    41  	os.Exit(c)
    42  }
    43  
    44  func BenchmarkRESTJSONBuild_Complex_ETCCreateJob(b *testing.B) {
    45  	params := elastictranscoderCreateJobInput()
    46  
    47  	benchRESTJSONBuild(b, func() *request.Request {
    48  		req, _ := elastictranscoderSvc.CreateJobRequest(params)
    49  		return req
    50  	})
    51  }
    52  
    53  func BenchmarkRESTJSONBuild_Simple_ETCListJobsByPipeline(b *testing.B) {
    54  	params := elastictranscoderListJobsByPipeline()
    55  
    56  	benchRESTJSONBuild(b, func() *request.Request {
    57  		req, _ := elastictranscoderSvc.ListJobsByPipelineRequest(params)
    58  		return req
    59  	})
    60  }
    61  
    62  func BenchmarkRESTJSONRequest_Complex_CFCreateJob(b *testing.B) {
    63  	benchRESTJSONRequest(b, func() *request.Request {
    64  		req, _ := elastictranscoderSvc.CreateJobRequest(elastictranscoderCreateJobInput())
    65  		return req
    66  	})
    67  }
    68  
    69  func BenchmarkRESTJSONRequest_Simple_ETCListJobsByPipeline(b *testing.B) {
    70  	benchRESTJSONRequest(b, func() *request.Request {
    71  		req, _ := elastictranscoderSvc.ListJobsByPipelineRequest(elastictranscoderListJobsByPipeline())
    72  		return req
    73  	})
    74  }
    75  
    76  func benchRESTJSONBuild(b *testing.B, reqFn func() *request.Request) {
    77  	b.ResetTimer()
    78  
    79  	for i := 0; i < b.N; i++ {
    80  		req := reqFn()
    81  		restjson.Build(req)
    82  		if req.Error != nil {
    83  			b.Fatal("Unexpected error", req.Error)
    84  		}
    85  	}
    86  }
    87  
    88  func benchRESTJSONRequest(b *testing.B, reqFn func() *request.Request) {
    89  	b.ResetTimer()
    90  
    91  	for i := 0; i < b.N; i++ {
    92  		err := reqFn().Send()
    93  		if err != nil {
    94  			b.Fatal("Unexpected error", err)
    95  		}
    96  	}
    97  }
    98  
    99  func elastictranscoderListJobsByPipeline() *elastictranscoder.ListJobsByPipelineInput {
   100  	return &elastictranscoder.ListJobsByPipelineInput{
   101  		PipelineId: aws.String("Id"), // Required
   102  		Ascending:  aws.String("Ascending"),
   103  		PageToken:  aws.String("Id"),
   104  	}
   105  }
   106  
   107  func elastictranscoderCreateJobInput() *elastictranscoder.CreateJobInput {
   108  	return &elastictranscoder.CreateJobInput{
   109  		Input: &elastictranscoder.JobInput{ // Required
   110  			AspectRatio: aws.String("AspectRatio"),
   111  			Container:   aws.String("JobContainer"),
   112  			DetectedProperties: &elastictranscoder.DetectedProperties{
   113  				DurationMillis: aws.Int64(1),
   114  				FileSize:       aws.Int64(1),
   115  				FrameRate:      aws.String("FloatString"),
   116  				Height:         aws.Int64(1),
   117  				Width:          aws.Int64(1),
   118  			},
   119  			Encryption: &elastictranscoder.Encryption{
   120  				InitializationVector: aws.String("ZeroTo255String"),
   121  				Key:                  aws.String("Base64EncodedString"),
   122  				KeyMd5:               aws.String("Base64EncodedString"),
   123  				Mode:                 aws.String("EncryptionMode"),
   124  			},
   125  			FrameRate:  aws.String("FrameRate"),
   126  			Interlaced: aws.String("Interlaced"),
   127  			Key:        aws.String("Key"),
   128  			Resolution: aws.String("Resolution"),
   129  		},
   130  		PipelineId: aws.String("Id"), // Required
   131  		Output: &elastictranscoder.CreateJobOutput{
   132  			AlbumArt: &elastictranscoder.JobAlbumArt{
   133  				Artwork: []*elastictranscoder.Artwork{
   134  					{ // Required
   135  						AlbumArtFormat: aws.String("JpgOrPng"),
   136  						Encryption: &elastictranscoder.Encryption{
   137  							InitializationVector: aws.String("ZeroTo255String"),
   138  							Key:                  aws.String("Base64EncodedString"),
   139  							KeyMd5:               aws.String("Base64EncodedString"),
   140  							Mode:                 aws.String("EncryptionMode"),
   141  						},
   142  						InputKey:      aws.String("WatermarkKey"),
   143  						MaxHeight:     aws.String("DigitsOrAuto"),
   144  						MaxWidth:      aws.String("DigitsOrAuto"),
   145  						PaddingPolicy: aws.String("PaddingPolicy"),
   146  						SizingPolicy:  aws.String("SizingPolicy"),
   147  					},
   148  					// More values...
   149  				},
   150  				MergePolicy: aws.String("MergePolicy"),
   151  			},
   152  			Captions: &elastictranscoder.Captions{
   153  				CaptionFormats: []*elastictranscoder.CaptionFormat{
   154  					{ // Required
   155  						Encryption: &elastictranscoder.Encryption{
   156  							InitializationVector: aws.String("ZeroTo255String"),
   157  							Key:                  aws.String("Base64EncodedString"),
   158  							KeyMd5:               aws.String("Base64EncodedString"),
   159  							Mode:                 aws.String("EncryptionMode"),
   160  						},
   161  						Format:  aws.String("CaptionFormatFormat"),
   162  						Pattern: aws.String("CaptionFormatPattern"),
   163  					},
   164  					// More values...
   165  				},
   166  				CaptionSources: []*elastictranscoder.CaptionSource{
   167  					{ // Required
   168  						Encryption: &elastictranscoder.Encryption{
   169  							InitializationVector: aws.String("ZeroTo255String"),
   170  							Key:                  aws.String("Base64EncodedString"),
   171  							KeyMd5:               aws.String("Base64EncodedString"),
   172  							Mode:                 aws.String("EncryptionMode"),
   173  						},
   174  						Key:        aws.String("Key"),
   175  						Label:      aws.String("Name"),
   176  						Language:   aws.String("Key"),
   177  						TimeOffset: aws.String("TimeOffset"),
   178  					},
   179  					// More values...
   180  				},
   181  				MergePolicy: aws.String("CaptionMergePolicy"),
   182  			},
   183  			Composition: []*elastictranscoder.Clip{
   184  				{ // Required
   185  					TimeSpan: &elastictranscoder.TimeSpan{
   186  						Duration:  aws.String("Time"),
   187  						StartTime: aws.String("Time"),
   188  					},
   189  				},
   190  				// More values...
   191  			},
   192  			Encryption: &elastictranscoder.Encryption{
   193  				InitializationVector: aws.String("ZeroTo255String"),
   194  				Key:                  aws.String("Base64EncodedString"),
   195  				KeyMd5:               aws.String("Base64EncodedString"),
   196  				Mode:                 aws.String("EncryptionMode"),
   197  			},
   198  			Key:             aws.String("Key"),
   199  			PresetId:        aws.String("Id"),
   200  			Rotate:          aws.String("Rotate"),
   201  			SegmentDuration: aws.String("FloatString"),
   202  			ThumbnailEncryption: &elastictranscoder.Encryption{
   203  				InitializationVector: aws.String("ZeroTo255String"),
   204  				Key:                  aws.String("Base64EncodedString"),
   205  				KeyMd5:               aws.String("Base64EncodedString"),
   206  				Mode:                 aws.String("EncryptionMode"),
   207  			},
   208  			ThumbnailPattern: aws.String("ThumbnailPattern"),
   209  			Watermarks: []*elastictranscoder.JobWatermark{
   210  				{ // Required
   211  					Encryption: &elastictranscoder.Encryption{
   212  						InitializationVector: aws.String("ZeroTo255String"),
   213  						Key:                  aws.String("Base64EncodedString"),
   214  						KeyMd5:               aws.String("Base64EncodedString"),
   215  						Mode:                 aws.String("EncryptionMode"),
   216  					},
   217  					InputKey:          aws.String("WatermarkKey"),
   218  					PresetWatermarkId: aws.String("PresetWatermarkId"),
   219  				},
   220  				// More values...
   221  			},
   222  		},
   223  		OutputKeyPrefix: aws.String("Key"),
   224  		Outputs: []*elastictranscoder.CreateJobOutput{
   225  			{ // Required
   226  				AlbumArt: &elastictranscoder.JobAlbumArt{
   227  					Artwork: []*elastictranscoder.Artwork{
   228  						{ // Required
   229  							AlbumArtFormat: aws.String("JpgOrPng"),
   230  							Encryption: &elastictranscoder.Encryption{
   231  								InitializationVector: aws.String("ZeroTo255String"),
   232  								Key:                  aws.String("Base64EncodedString"),
   233  								KeyMd5:               aws.String("Base64EncodedString"),
   234  								Mode:                 aws.String("EncryptionMode"),
   235  							},
   236  							InputKey:      aws.String("WatermarkKey"),
   237  							MaxHeight:     aws.String("DigitsOrAuto"),
   238  							MaxWidth:      aws.String("DigitsOrAuto"),
   239  							PaddingPolicy: aws.String("PaddingPolicy"),
   240  							SizingPolicy:  aws.String("SizingPolicy"),
   241  						},
   242  						// More values...
   243  					},
   244  					MergePolicy: aws.String("MergePolicy"),
   245  				},
   246  				Captions: &elastictranscoder.Captions{
   247  					CaptionFormats: []*elastictranscoder.CaptionFormat{
   248  						{ // Required
   249  							Encryption: &elastictranscoder.Encryption{
   250  								InitializationVector: aws.String("ZeroTo255String"),
   251  								Key:                  aws.String("Base64EncodedString"),
   252  								KeyMd5:               aws.String("Base64EncodedString"),
   253  								Mode:                 aws.String("EncryptionMode"),
   254  							},
   255  							Format:  aws.String("CaptionFormatFormat"),
   256  							Pattern: aws.String("CaptionFormatPattern"),
   257  						},
   258  						// More values...
   259  					},
   260  					CaptionSources: []*elastictranscoder.CaptionSource{
   261  						{ // Required
   262  							Encryption: &elastictranscoder.Encryption{
   263  								InitializationVector: aws.String("ZeroTo255String"),
   264  								Key:                  aws.String("Base64EncodedString"),
   265  								KeyMd5:               aws.String("Base64EncodedString"),
   266  								Mode:                 aws.String("EncryptionMode"),
   267  							},
   268  							Key:        aws.String("Key"),
   269  							Label:      aws.String("Name"),
   270  							Language:   aws.String("Key"),
   271  							TimeOffset: aws.String("TimeOffset"),
   272  						},
   273  						// More values...
   274  					},
   275  					MergePolicy: aws.String("CaptionMergePolicy"),
   276  				},
   277  				Composition: []*elastictranscoder.Clip{
   278  					{ // Required
   279  						TimeSpan: &elastictranscoder.TimeSpan{
   280  							Duration:  aws.String("Time"),
   281  							StartTime: aws.String("Time"),
   282  						},
   283  					},
   284  					// More values...
   285  				},
   286  				Encryption: &elastictranscoder.Encryption{
   287  					InitializationVector: aws.String("ZeroTo255String"),
   288  					Key:                  aws.String("Base64EncodedString"),
   289  					KeyMd5:               aws.String("Base64EncodedString"),
   290  					Mode:                 aws.String("EncryptionMode"),
   291  				},
   292  				Key:             aws.String("Key"),
   293  				PresetId:        aws.String("Id"),
   294  				Rotate:          aws.String("Rotate"),
   295  				SegmentDuration: aws.String("FloatString"),
   296  				ThumbnailEncryption: &elastictranscoder.Encryption{
   297  					InitializationVector: aws.String("ZeroTo255String"),
   298  					Key:                  aws.String("Base64EncodedString"),
   299  					KeyMd5:               aws.String("Base64EncodedString"),
   300  					Mode:                 aws.String("EncryptionMode"),
   301  				},
   302  				ThumbnailPattern: aws.String("ThumbnailPattern"),
   303  				Watermarks: []*elastictranscoder.JobWatermark{
   304  					{ // Required
   305  						Encryption: &elastictranscoder.Encryption{
   306  							InitializationVector: aws.String("ZeroTo255String"),
   307  							Key:                  aws.String("Base64EncodedString"),
   308  							KeyMd5:               aws.String("Base64EncodedString"),
   309  							Mode:                 aws.String("EncryptionMode"),
   310  						},
   311  						InputKey:          aws.String("WatermarkKey"),
   312  						PresetWatermarkId: aws.String("PresetWatermarkId"),
   313  					},
   314  					// More values...
   315  				},
   316  			},
   317  			// More values...
   318  		},
   319  		Playlists: []*elastictranscoder.CreateJobPlaylist{
   320  			{ // Required
   321  				Format: aws.String("PlaylistFormat"),
   322  				HlsContentProtection: &elastictranscoder.HlsContentProtection{
   323  					InitializationVector:  aws.String("ZeroTo255String"),
   324  					Key:                   aws.String("Base64EncodedString"),
   325  					KeyMd5:                aws.String("Base64EncodedString"),
   326  					KeyStoragePolicy:      aws.String("KeyStoragePolicy"),
   327  					LicenseAcquisitionUrl: aws.String("ZeroTo512String"),
   328  					Method:                aws.String("HlsContentProtectionMethod"),
   329  				},
   330  				Name: aws.String("Filename"),
   331  				OutputKeys: []*string{
   332  					aws.String("Key"), // Required
   333  					// More values...
   334  				},
   335  				PlayReadyDrm: &elastictranscoder.PlayReadyDrm{
   336  					Format:                aws.String("PlayReadyDrmFormatString"),
   337  					InitializationVector:  aws.String("ZeroTo255String"),
   338  					Key:                   aws.String("NonEmptyBase64EncodedString"),
   339  					KeyId:                 aws.String("KeyIdGuid"),
   340  					KeyMd5:                aws.String("NonEmptyBase64EncodedString"),
   341  					LicenseAcquisitionUrl: aws.String("OneTo512String"),
   342  				},
   343  			},
   344  			// More values...
   345  		},
   346  		UserMetadata: map[string]*string{
   347  			"Key": aws.String("String"), // Required
   348  			// More values...
   349  		},
   350  	}
   351  }