Modify some tests

This commit is contained in:
Qian Wang 2019-08-07 17:06:31 +01:00
parent d99b4009b2
commit e244340885
3 changed files with 174 additions and 6 deletions

View File

@ -83,7 +83,7 @@ func BenchmarkObfs(b *testing.B) {
testPayload,
}
obfsBuf := make([]byte, 512)
obfsBuf := make([]byte, 2048)
var key [32]byte
rand.Read(key[:])
@ -94,7 +94,11 @@ func BenchmarkObfs(b *testing.B) {
obfs := MakeObfs(key, payloadCipher)
b.ResetTimer()
for i := 0; i < b.N; i++ {
obfs(testFrame, obfsBuf)
n, err := obfs(testFrame, obfsBuf)
if err != nil {
b.Error(err)
}
b.SetBytes(int64(n))
}
})
b.Run("AES128GCM", func(b *testing.B) {
@ -104,14 +108,22 @@ func BenchmarkObfs(b *testing.B) {
obfs := MakeObfs(key, payloadCipher)
b.ResetTimer()
for i := 0; i < b.N; i++ {
obfs(testFrame, obfsBuf)
n, err := obfs(testFrame, obfsBuf)
if err != nil {
b.Error(err)
}
b.SetBytes(int64(n))
}
})
b.Run("plain", func(b *testing.B) {
obfs := MakeObfs(key, nil)
b.ResetTimer()
for i := 0; i < b.N; i++ {
obfs(testFrame, obfsBuf)
n, err := obfs(testFrame, obfsBuf)
if err != nil {
b.Error(err)
}
b.SetBytes(int64(n))
}
})
b.Run("chacha20Poly1305", func(b *testing.B) {
@ -120,7 +132,91 @@ func BenchmarkObfs(b *testing.B) {
obfs := MakeObfs(key, payloadCipher)
b.ResetTimer()
for i := 0; i < b.N; i++ {
obfs(testFrame, obfsBuf)
n, err := obfs(testFrame, obfsBuf)
if err != nil {
b.Error(err)
}
b.SetBytes(int64(n))
}
})
}
func BenchmarkDeobfs(b *testing.B) {
testPayload := make([]byte, 1024)
rand.Read(testPayload)
testFrame := &Frame{
1,
0,
0,
testPayload,
}
obfsBuf := make([]byte, 2048)
var key [32]byte
rand.Read(key[:])
b.Run("AES256GCM", func(b *testing.B) {
c, _ := aes.NewCipher(key[:])
payloadCipher, _ := cipher.NewGCM(c)
obfs := MakeObfs(key, payloadCipher)
n, _ := obfs(testFrame, obfsBuf)
deobfs := MakeDeobfs(key, payloadCipher)
b.ResetTimer()
for i := 0; i < b.N; i++ {
_, err := deobfs(obfsBuf[:n])
if err != nil {
b.Error(err)
}
b.SetBytes(int64(n))
}
})
b.Run("AES128GCM", func(b *testing.B) {
c, _ := aes.NewCipher(key[:16])
payloadCipher, _ := cipher.NewGCM(c)
obfs := MakeObfs(key, payloadCipher)
n, _ := obfs(testFrame, obfsBuf)
deobfs := MakeDeobfs(key, payloadCipher)
b.ResetTimer()
for i := 0; i < b.N; i++ {
_, err := deobfs(obfsBuf[:n])
if err != nil {
b.Error(err)
}
b.SetBytes(int64(n))
}
})
b.Run("plain", func(b *testing.B) {
obfs := MakeObfs(key, nil)
n, _ := obfs(testFrame, obfsBuf)
deobfs := MakeDeobfs(key, nil)
b.ResetTimer()
for i := 0; i < b.N; i++ {
_, err := deobfs(obfsBuf[:n])
if err != nil {
b.Error(err)
}
b.SetBytes(int64(n))
}
})
b.Run("chacha20Poly1305", func(b *testing.B) {
payloadCipher, _ := chacha20poly1305.New(key[:16])
obfs := MakeObfs(key, payloadCipher)
n, _ := obfs(testFrame, obfsBuf)
deobfs := MakeDeobfs(key, payloadCipher)
b.ResetTimer()
for i := 0; i < b.N; i++ {
_, err := deobfs(obfsBuf[:n])
if err != nil {
b.Error(err)
}
b.SetBytes(int64(n))
}
})
}

View File

@ -0,0 +1,72 @@
package multiplex
import (
"github.com/cbeuw/Cloak/internal/util"
"math/rand"
"testing"
)
func BenchmarkRecvDataFromRemote(b *testing.B) {
testPayload := make([]byte, 1024)
rand.Read(testPayload)
f := &Frame{
1,
0,
0,
testPayload,
}
obfsBuf := make([]byte, 17000)
sessionKey := make([]byte, 32)
rand.Read(sessionKey)
b.Run("plain", func(b *testing.B) {
obfuscator, _ := GenerateObfs(0x00, sessionKey)
sesh := MakeSession(0, UNLIMITED_VALVE, obfuscator, util.ReadTLS)
n, _ := sesh.Obfs(f, obfsBuf)
originalHeader := make([]byte, 12)
copy(originalHeader, obfsBuf[5:17])
b.ResetTimer()
for i := 0; i < b.N; i++ {
sesh.recvDataFromRemote(obfsBuf[:n])
b.SetBytes(int64(n))
copy(obfsBuf[5:17], originalHeader)
}
})
b.Run("aes-gcm", func(b *testing.B) {
obfuscator, _ := GenerateObfs(0x01, sessionKey)
sesh := MakeSession(0, UNLIMITED_VALVE, obfuscator, util.ReadTLS)
n, _ := sesh.Obfs(f, obfsBuf)
// because deobfs decrypts the header in-place, which alters the input
originalHeader := make([]byte, 12)
copy(originalHeader, obfsBuf[5:17])
b.ResetTimer()
for i := 0; i < b.N; i++ {
sesh.recvDataFromRemote(obfsBuf[:n])
b.SetBytes(int64(n))
copy(obfsBuf[5:17], originalHeader)
}
})
b.Run("chacha20-poly1305", func(b *testing.B) {
obfuscator, _ := GenerateObfs(0x02, sessionKey)
sesh := MakeSession(0, UNLIMITED_VALVE, obfuscator, util.ReadTLS)
n, _ := sesh.Obfs(f, obfsBuf)
originalHeader := make([]byte, 12)
copy(originalHeader, obfsBuf[5:17])
b.ResetTimer()
for i := 0; i < b.N; i++ {
sesh.recvDataFromRemote(obfsBuf[:n])
b.SetBytes(int64(n))
copy(obfsBuf[5:17], originalHeader)
}
})
}

View File

@ -42,7 +42,7 @@ func (b *blackhole) SetReadDeadline(t time.Time) error { return nil }
func (b *blackhole) SetWriteDeadline(t time.Time) error { return nil }
func BenchmarkStream_Write(b *testing.B) {
const PAYLOAD_LEN = 1 << 20 * 100
const PAYLOAD_LEN = 1000
hole := newBlackHole()
sesh := setupSesh()
sesh.AddConnection(hole)