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 }