summaryrefslogtreecommitdiff
path: root/framing/framing_test.go
diff options
context:
space:
mode:
authorYawning Angel <yawning@schwanenlied.me>2014-05-14 09:58:53 +0000
committerYawning Angel <yawning@schwanenlied.me>2014-05-14 09:58:53 +0000
commit48c6f06d04440996b05503add1e6bb3225d87590 (patch)
tree94576a56373e71618598554408bc460fcb199025 /framing/framing_test.go
parent89d5338eed93e9324d91ff498962c7dbe5b93f56 (diff)
Change the framing Encoder/Decoder to take the destination slice.
In theory this is easier on the garbage collector. Probably could reuse more of the intermediary buffers by stashing them in the connection state, but that makes the code kind of messy. This should be an improvement.
Diffstat (limited to 'framing/framing_test.go')
-rw-r--r--framing/framing_test.go41
1 files changed, 17 insertions, 24 deletions
diff --git a/framing/framing_test.go b/framing/framing_test.go
index 221ea5e..08f5f17 100644
--- a/framing/framing_test.go
+++ b/framing/framing_test.go
@@ -69,7 +69,8 @@ func TestEncoder_Encode(t *testing.T) {
buf := make([]byte, MaximumFramePayloadLength)
_, _ = rand.Read(buf) // YOLO
for i := 0; i <= MaximumFramePayloadLength; i++ {
- n, frame, err := encoder.Encode(buf[0:i])
+ var frame [MaximumSegmentLength]byte
+ n, err := encoder.Encode(frame[:], buf[0:i])
if err != nil {
t.Fatalf("Encoder.encode([%d]byte), failed: %s", i, err)
}
@@ -77,10 +78,6 @@ func TestEncoder_Encode(t *testing.T) {
t.Fatalf("Unexpected encoded framesize: %d, expecting %d", n, i+
FrameOverhead)
}
- if len(frame) != n {
- t.Fatalf("Encoded frame length/rval mismatch: %d != %d",
- len(frame), n)
- }
}
}
@@ -88,9 +85,10 @@ func TestEncoder_Encode(t *testing.T) {
func TestEncoder_Encode_Oversize(t *testing.T) {
encoder := newEncoder(t)
- buf := make([]byte, MaximumFramePayloadLength+1)
- _, _ = rand.Read(buf) // YOLO
- _, _, err := encoder.Encode(buf)
+ var frame [MaximumSegmentLength]byte
+ var buf [MaximumFramePayloadLength+1]byte
+ _, _ = rand.Read(buf[:]) // YOLO
+ _, err := encoder.Encode(frame[:], buf[:])
if _, ok := err.(InvalidPayloadLengthError); !ok {
t.Error("Encoder.encode() returned unexpected error:", err)
}
@@ -112,10 +110,11 @@ func TestDecoder_Decode(t *testing.T) {
encoder := NewEncoder(key)
decoder := NewDecoder(key)
- buf := make([]byte, MaximumFramePayloadLength)
- _, _ = rand.Read(buf) // YOLO
+ var buf [MaximumFramePayloadLength]byte
+ _, _ = rand.Read(buf[:]) // YOLO
for i := 0; i <= MaximumFramePayloadLength; i++ {
- encLen, frame, err := encoder.Encode(buf[0:i])
+ var frame [MaximumSegmentLength]byte
+ encLen, err := encoder.Encode(frame[:], buf[0:i])
if err != nil {
t.Fatalf("Encoder.encode([%d]byte), failed: %s", i, err)
}
@@ -123,12 +122,10 @@ func TestDecoder_Decode(t *testing.T) {
t.Fatalf("Unexpected encoded framesize: %d, expecting %d", encLen,
i+FrameOverhead)
}
- if len(frame) != encLen {
- t.Fatalf("Encoded frame length/rval mismatch: %d != %d",
- len(frame), encLen)
- }
- decLen, decoded, err := decoder.Decode(bytes.NewBuffer(frame))
+ var decoded [MaximumFramePayloadLength]byte
+
+ decLen, err := decoder.Decode(decoded[:], bytes.NewBuffer(frame[:encLen]))
if err != nil {
t.Fatalf("Decoder.decode([%d]byte), failed: %s", i, err)
}
@@ -136,13 +133,8 @@ func TestDecoder_Decode(t *testing.T) {
t.Fatalf("Unexpected decoded framesize: %d, expecting %d",
decLen, i)
}
- if len(decoded) != i {
- t.Fatalf("Encoded frame length/rval mismatch: %d != %d",
- len(decoded), i)
-
- }
- if 0 != bytes.Compare(decoded, buf[0:i]) {
+ if 0 != bytes.Compare(decoded[:decLen], buf[:i]) {
t.Fatalf("Frame %d does not match encoder input", i)
}
}
@@ -152,6 +144,7 @@ func TestDecoder_Decode(t *testing.T) {
// of payload.
func BenchmarkEncoder_Encode(b *testing.B) {
var chopBuf [MaximumFramePayloadLength]byte
+ var frame [MaximumSegmentLength]byte
payload := make([]byte, 1024*1024)
encoder := NewEncoder(generateRandomKey())
b.ResetTimer()
@@ -165,8 +158,8 @@ func BenchmarkEncoder_Encode(b *testing.B) {
b.Fatal("buffer.Read() failed:", err)
}
- n, frame, err := encoder.Encode(chopBuf[:n])
- transfered += len(frame) - FrameOverhead
+ n, err = encoder.Encode(frame[:], chopBuf[:n])
+ transfered += n - FrameOverhead
}
if transfered != len(payload) {
b.Fatalf("Transfered length mismatch: %d != %d", transfered,