summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Pointner <equinox@anytun.org>2017-09-07 19:44:28 +0200
committerChristian Pointner <equinox@anytun.org>2017-09-07 19:44:28 +0200
commit0abaea481d4f2e41c87f1f3e05d96efe648dd22f (patch)
tree6328a2a2724e8ecde5019c6c7937d56e2d02625c
parentmore test data (diff)
added benchmarks for packet marshal and unmarshal
-rw-r--r--satp/packet_test.go95
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)
+ }
+ }
+}