| // Copyright (c) HashiCorp, Inc. |
| // SPDX-License-Identifier: MPL-2.0 |
| |
| package transit |
| |
| import ( |
| "context" |
| "testing" |
| |
| "github.com/hashicorp/vault/sdk/logical" |
| ) |
| |
| func BenchmarkTransit_BatchDecryption1(b *testing.B) { |
| BTransit_BatchDecryption(b, 1) |
| } |
| |
| func BenchmarkTransit_BatchDecryption10(b *testing.B) { |
| BTransit_BatchDecryption(b, 10) |
| } |
| |
| func BenchmarkTransit_BatchDecryption50(b *testing.B) { |
| BTransit_BatchDecryption(b, 50) |
| } |
| |
| func BenchmarkTransit_BatchDecryption100(b *testing.B) { |
| BTransit_BatchDecryption(b, 100) |
| } |
| |
| func BenchmarkTransit_BatchDecryption1000(b *testing.B) { |
| BTransit_BatchDecryption(b, 1_000) |
| } |
| |
| func BenchmarkTransit_BatchDecryption10000(b *testing.B) { |
| BTransit_BatchDecryption(b, 10_000) |
| } |
| |
| func BTransit_BatchDecryption(b *testing.B, bsize int) { |
| b.StopTimer() |
| |
| var resp *logical.Response |
| var err error |
| |
| backend, s := createBackendWithStorage(b) |
| |
| batchEncryptionInput := make([]interface{}, 0, bsize) |
| for i := 0; i < bsize; i++ { |
| batchEncryptionInput = append( |
| batchEncryptionInput, |
| map[string]interface{}{"plaintext": "dGhlIHF1aWNrIGJyb3duIGZveA=="}, |
| ) |
| } |
| |
| batchEncryptionData := map[string]interface{}{ |
| "batch_input": batchEncryptionInput, |
| } |
| |
| batchEncryptionReq := &logical.Request{ |
| Operation: logical.CreateOperation, |
| Path: "encrypt/upserted_key", |
| Storage: s, |
| Data: batchEncryptionData, |
| } |
| resp, err = backend.HandleRequest(context.Background(), batchEncryptionReq) |
| if err != nil || (resp != nil && resp.IsError()) { |
| b.Fatalf("err:%v resp:%#v", err, resp) |
| } |
| |
| batchResponseItems := resp.Data["batch_results"].([]EncryptBatchResponseItem) |
| batchDecryptionInput := make([]interface{}, len(batchResponseItems)) |
| for i, item := range batchResponseItems { |
| batchDecryptionInput[i] = map[string]interface{}{"ciphertext": item.Ciphertext} |
| } |
| batchDecryptionData := map[string]interface{}{ |
| "batch_input": batchDecryptionInput, |
| } |
| |
| batchDecryptionReq := &logical.Request{ |
| Operation: logical.UpdateOperation, |
| Path: "decrypt/upserted_key", |
| Storage: s, |
| Data: batchDecryptionData, |
| } |
| |
| b.StartTimer() |
| for i := 0; i < b.N; i++ { |
| resp, err = backend.HandleRequest(context.Background(), batchDecryptionReq) |
| if err != nil || (resp != nil && resp.IsError()) { |
| b.Fatalf("err:%v resp:%#v", err, resp) |
| } |
| } |
| } |