diff options
author | Christian Pointner <equinox@anytun.org> | 2017-09-07 19:44:28 +0200 |
---|---|---|
committer | Christian Pointner <equinox@anytun.org> | 2017-09-07 19:44:28 +0200 |
commit | 0abaea481d4f2e41c87f1f3e05d96efe648dd22f (patch) | |
tree | 6328a2a2724e8ecde5019c6c7937d56e2d02625c /satp | |
parent | more test data (diff) |
added benchmarks for packet marshal and unmarshal
Diffstat (limited to 'satp')
-rw-r--r-- | satp/packet_test.go | 95 |
1 files changed, 91 insertions, 4 deletions
diff --git a/satp/packet_test.go b/satp/packet_test.go index 2c54d32..0aa3df4 100644 --- a/satp/packet_test.go +++ b/satp/packet_test.go @@ -37,6 +37,10 @@ import ( "testing" ) +const ( + NUM_RANDOM_DATASETS = 100 +) + var ( IPv4 = uint16(0x0800) IPv4Ping = []byte{ @@ -141,13 +145,13 @@ func generateRandomTestDataPlainPacket() (pp *PlainPacket) { } func TestPlainPacketMarshalUnmarshal(t *testing.T) { - for i := 0; i < 100; i++ { + for i := 0; i < NUM_RANDOM_DATASETS; i++ { in := generateRandomTestDataPlainPacket() marshalled, err := in.MarshalBinary() if err != nil { t.Fatal("unexpected error:", err) } - out := NewPlainPacket(in.Type) + out := &PlainPacket{} if err = out.UnmarshalBinary(marshalled); err != nil { t.Fatal("unexpected error:", err) } @@ -233,7 +237,7 @@ func TestEncryptedPacketUnmarshal(t *testing.T) { func generateRandomTestDataEncryptedPacket() (ep *EncryptedPacket) { authtaglen := uint(rand.Int31n(32)) - payloadlen := uint(rand.Int31n(2000)) + payloadlen := uint(2 + rand.Int31n(2000)) ep = NewEncryptedPacket(authtaglen) ep.SequenceNumber = rand.Uint32() @@ -245,7 +249,7 @@ func generateRandomTestDataEncryptedPacket() (ep *EncryptedPacket) { } func TestEncryptedPacketMarshalUnmarshal(t *testing.T) { - for i := 0; i < 100; i++ { + for i := 0; i < NUM_RANDOM_DATASETS; i++ { in := generateRandomTestDataEncryptedPacket() marshalled, err := in.MarshalBinary() if err != nil { @@ -260,3 +264,86 @@ func TestEncryptedPacketMarshalUnmarshal(t *testing.T) { } } } + +// +// Benchmarking +// + +func BenchmarkPlainPacketMarshal(b *testing.B) { + ins := []*PlainPacket{} + for i := 0; i < NUM_RANDOM_DATASETS; i++ { + ins = append(ins, generateRandomTestDataPlainPacket()) + } + + b.ResetTimer() + + for i := 0; i < b.N; i++ { + in := ins[i%len(ins)] + if _, err := in.MarshalBinary(); err != nil { + b.Fatal("unexpected error:", err) + } + } +} + +func BenchmarkPlainPacketUnMarshal(b *testing.B) { + ins := [][]byte{} + for i := 0; i < NUM_RANDOM_DATASETS; i++ { + in, err := generateRandomTestDataPlainPacket().MarshalBinary() + if err != nil { + b.Fatal("unexpected error:", err) + } + ins = append(ins, in) + } + + b.ResetTimer() + + for i := 0; i < b.N; i++ { + in := ins[i%len(ins)] + out := &PlainPacket{} + if err := out.UnmarshalBinary(in); err != nil { + b.Fatal("unexpected error:", err) + } + } +} + +func BenchmarkEncryptedPacketMarshal(b *testing.B) { + ins := []*EncryptedPacket{} + for i := 0; i < NUM_RANDOM_DATASETS; i++ { + ins = append(ins, generateRandomTestDataEncryptedPacket()) + } + + b.ResetTimer() + + for i := 0; i < b.N; i++ { + in := ins[i%len(ins)] + if _, err := in.MarshalBinary(); err != nil { + b.Fatal("unexpected error:", err) + } + } +} + +func BenchmarkEncryptedPacketUnMarshal(b *testing.B) { + type inType struct { + authTagLen uint + data []byte + } + ins := []inType{} + for i := 0; i < NUM_RANDOM_DATASETS; i++ { + pkt := generateRandomTestDataEncryptedPacket() + inData, err := pkt.MarshalBinary() + if err != nil { + b.Fatal("unexpected error:", err) + } + ins = append(ins, inType{uint(len(pkt.AuthTag)), inData}) + } + + b.ResetTimer() + + for i := 0; i < b.N; i++ { + in := ins[i%len(ins)] + out := NewEncryptedPacket(in.authTagLen) + if err := out.UnmarshalBinary(in.data); err != nil { + b.Fatal("unexpected error:", err) + } + } +} |