Update tests

This commit is contained in:
Andy Wang 2020-04-08 21:47:31 +01:00
parent 693544659f
commit ec76ecfe71
6 changed files with 34 additions and 45 deletions

View File

@ -37,11 +37,10 @@ type connPair struct {
func makeSessionPair(numConn int) (*Session, *Session, []*connPair) { func makeSessionPair(numConn int) (*Session, *Session, []*connPair) {
sessionKey := [32]byte{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31} sessionKey := [32]byte{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}
sessionId := 1 sessionId := 1
obfuscator, _ := MakeObfuscator(E_METHOD_CHACHA20_POLY1305, sessionKey, true) obfuscator, _ := MakeObfuscator(E_METHOD_CHACHA20_POLY1305, sessionKey)
clientConfig := SessionConfig{ clientConfig := SessionConfig{
Obfuscator: obfuscator, Obfuscator: obfuscator,
Valve: nil, Valve: nil,
UnitRead: util.ReadTLS,
Unordered: false, Unordered: false,
} }
serverConfig := clientConfig serverConfig := clientConfig
@ -51,7 +50,9 @@ func makeSessionPair(numConn int) (*Session, *Session, []*connPair) {
paris := make([]*connPair, numConn) paris := make([]*connPair, numConn)
for i := 0; i < numConn; i++ { for i := 0; i < numConn; i++ {
clientConn, serverConn := connutil.AsyncPipe() c, s := connutil.AsyncPipe()
clientConn := &util.TLSConn{Conn: c}
serverConn := &util.TLSConn{Conn: s}
paris[i] = &connPair{ paris[i] = &connPair{
clientConn: clientConn, clientConn: clientConn,
serverConn: serverConn, serverConn: serverConn,

View File

@ -39,7 +39,7 @@ func TestGenerateObfs(t *testing.T) {
} }
t.Run("plain", func(t *testing.T) { t.Run("plain", func(t *testing.T) {
obfuscator, err := MakeObfuscator(E_METHOD_PLAIN, sessionKey, true) obfuscator, err := MakeObfuscator(E_METHOD_PLAIN, sessionKey)
if err != nil { if err != nil {
t.Errorf("failed to generate obfuscator %v", err) t.Errorf("failed to generate obfuscator %v", err)
} else { } else {
@ -47,7 +47,7 @@ func TestGenerateObfs(t *testing.T) {
} }
}) })
t.Run("plain no record layer", func(t *testing.T) { t.Run("plain no record layer", func(t *testing.T) {
obfuscator, err := MakeObfuscator(E_METHOD_PLAIN, sessionKey, false) obfuscator, err := MakeObfuscator(E_METHOD_PLAIN, sessionKey)
if err != nil { if err != nil {
t.Errorf("failed to generate obfuscator %v", err) t.Errorf("failed to generate obfuscator %v", err)
} else { } else {
@ -55,7 +55,7 @@ func TestGenerateObfs(t *testing.T) {
} }
}) })
t.Run("aes-gcm", func(t *testing.T) { t.Run("aes-gcm", func(t *testing.T) {
obfuscator, err := MakeObfuscator(E_METHOD_AES_GCM, sessionKey, true) obfuscator, err := MakeObfuscator(E_METHOD_AES_GCM, sessionKey)
if err != nil { if err != nil {
t.Errorf("failed to generate obfuscator %v", err) t.Errorf("failed to generate obfuscator %v", err)
} else { } else {
@ -63,7 +63,7 @@ func TestGenerateObfs(t *testing.T) {
} }
}) })
t.Run("aes-gcm no record layer", func(t *testing.T) { t.Run("aes-gcm no record layer", func(t *testing.T) {
obfuscator, err := MakeObfuscator(E_METHOD_AES_GCM, sessionKey, false) obfuscator, err := MakeObfuscator(E_METHOD_AES_GCM, sessionKey)
if err != nil { if err != nil {
t.Errorf("failed to generate obfuscator %v", err) t.Errorf("failed to generate obfuscator %v", err)
} else { } else {
@ -71,7 +71,7 @@ func TestGenerateObfs(t *testing.T) {
} }
}) })
t.Run("chacha20-poly1305", func(t *testing.T) { t.Run("chacha20-poly1305", func(t *testing.T) {
obfuscator, err := MakeObfuscator(E_METHOD_CHACHA20_POLY1305, sessionKey, true) obfuscator, err := MakeObfuscator(E_METHOD_CHACHA20_POLY1305, sessionKey)
if err != nil { if err != nil {
t.Errorf("failed to generate obfuscator %v", err) t.Errorf("failed to generate obfuscator %v", err)
} else { } else {
@ -79,7 +79,7 @@ func TestGenerateObfs(t *testing.T) {
} }
}) })
t.Run("unknown encryption method", func(t *testing.T) { t.Run("unknown encryption method", func(t *testing.T) {
_, err := MakeObfuscator(0xff, sessionKey, true) _, err := MakeObfuscator(0xff, sessionKey)
if err == nil { if err == nil {
t.Errorf("unknown encryption mehtod error expected") t.Errorf("unknown encryption mehtod error expected")
} }
@ -104,7 +104,7 @@ func BenchmarkObfs(b *testing.B) {
c, _ := aes.NewCipher(key[:]) c, _ := aes.NewCipher(key[:])
payloadCipher, _ := cipher.NewGCM(c) payloadCipher, _ := cipher.NewGCM(c)
obfs := MakeObfs(key, payloadCipher, true) obfs := MakeObfs(key, payloadCipher)
b.ResetTimer() b.ResetTimer()
for i := 0; i < b.N; i++ { for i := 0; i < b.N; i++ {
n, err := obfs(testFrame, obfsBuf) n, err := obfs(testFrame, obfsBuf)
@ -119,7 +119,7 @@ func BenchmarkObfs(b *testing.B) {
c, _ := aes.NewCipher(key[:16]) c, _ := aes.NewCipher(key[:16])
payloadCipher, _ := cipher.NewGCM(c) payloadCipher, _ := cipher.NewGCM(c)
obfs := MakeObfs(key, payloadCipher, true) obfs := MakeObfs(key, payloadCipher)
b.ResetTimer() b.ResetTimer()
for i := 0; i < b.N; i++ { for i := 0; i < b.N; i++ {
n, err := obfs(testFrame, obfsBuf) n, err := obfs(testFrame, obfsBuf)
@ -131,7 +131,7 @@ func BenchmarkObfs(b *testing.B) {
} }
}) })
b.Run("plain", func(b *testing.B) { b.Run("plain", func(b *testing.B) {
obfs := MakeObfs(key, nil, true) obfs := MakeObfs(key, nil)
b.ResetTimer() b.ResetTimer()
for i := 0; i < b.N; i++ { for i := 0; i < b.N; i++ {
n, err := obfs(testFrame, obfsBuf) n, err := obfs(testFrame, obfsBuf)
@ -145,7 +145,7 @@ func BenchmarkObfs(b *testing.B) {
b.Run("chacha20Poly1305", func(b *testing.B) { b.Run("chacha20Poly1305", func(b *testing.B) {
payloadCipher, _ := chacha20poly1305.New(key[:16]) payloadCipher, _ := chacha20poly1305.New(key[:16])
obfs := MakeObfs(key, payloadCipher, true) obfs := MakeObfs(key, payloadCipher)
b.ResetTimer() b.ResetTimer()
for i := 0; i < b.N; i++ { for i := 0; i < b.N; i++ {
n, err := obfs(testFrame, obfsBuf) n, err := obfs(testFrame, obfsBuf)
@ -176,9 +176,9 @@ func BenchmarkDeobfs(b *testing.B) {
c, _ := aes.NewCipher(key[:]) c, _ := aes.NewCipher(key[:])
payloadCipher, _ := cipher.NewGCM(c) payloadCipher, _ := cipher.NewGCM(c)
obfs := MakeObfs(key, payloadCipher, true) obfs := MakeObfs(key, payloadCipher)
n, _ := obfs(testFrame, obfsBuf) n, _ := obfs(testFrame, obfsBuf)
deobfs := MakeDeobfs(key, payloadCipher, true) deobfs := MakeDeobfs(key, payloadCipher)
b.ResetTimer() b.ResetTimer()
for i := 0; i < b.N; i++ { for i := 0; i < b.N; i++ {
@ -194,9 +194,9 @@ func BenchmarkDeobfs(b *testing.B) {
c, _ := aes.NewCipher(key[:16]) c, _ := aes.NewCipher(key[:16])
payloadCipher, _ := cipher.NewGCM(c) payloadCipher, _ := cipher.NewGCM(c)
obfs := MakeObfs(key, payloadCipher, true) obfs := MakeObfs(key, payloadCipher)
n, _ := obfs(testFrame, obfsBuf) n, _ := obfs(testFrame, obfsBuf)
deobfs := MakeDeobfs(key, payloadCipher, true) deobfs := MakeDeobfs(key, payloadCipher)
b.ResetTimer() b.ResetTimer()
for i := 0; i < b.N; i++ { for i := 0; i < b.N; i++ {
@ -209,9 +209,9 @@ func BenchmarkDeobfs(b *testing.B) {
} }
}) })
b.Run("plain", func(b *testing.B) { b.Run("plain", func(b *testing.B) {
obfs := MakeObfs(key, nil, true) obfs := MakeObfs(key, nil)
n, _ := obfs(testFrame, obfsBuf) n, _ := obfs(testFrame, obfsBuf)
deobfs := MakeDeobfs(key, nil, true) deobfs := MakeDeobfs(key, nil)
b.ResetTimer() b.ResetTimer()
for i := 0; i < b.N; i++ { for i := 0; i < b.N; i++ {
@ -226,9 +226,9 @@ func BenchmarkDeobfs(b *testing.B) {
b.Run("chacha20Poly1305", func(b *testing.B) { b.Run("chacha20Poly1305", func(b *testing.B) {
payloadCipher, _ := chacha20poly1305.New(key[:16]) payloadCipher, _ := chacha20poly1305.New(key[:16])
obfs := MakeObfs(key, payloadCipher, true) obfs := MakeObfs(key, payloadCipher)
n, _ := obfs(testFrame, obfsBuf) n, _ := obfs(testFrame, obfsBuf)
deobfs := MakeDeobfs(key, payloadCipher, true) deobfs := MakeDeobfs(key, payloadCipher)
b.ResetTimer() b.ResetTimer()
for i := 0; i < b.N; i++ { for i := 0; i < b.N; i++ {

View File

@ -2,7 +2,6 @@ package multiplex
import ( import (
"bytes" "bytes"
"github.com/cbeuw/Cloak/internal/util"
"math/rand" "math/rand"
"strconv" "strconv"
"sync/atomic" "sync/atomic"
@ -12,13 +11,11 @@ import (
var seshConfigOrdered = SessionConfig{ var seshConfigOrdered = SessionConfig{
Obfuscator: nil, Obfuscator: nil,
Valve: nil, Valve: nil,
UnitRead: util.ReadTLS,
} }
var seshConfigUnordered = SessionConfig{ var seshConfigUnordered = SessionConfig{
Obfuscator: nil, Obfuscator: nil,
Valve: nil, Valve: nil,
UnitRead: util.ReadTLS,
Unordered: true, Unordered: true,
} }
@ -37,7 +34,7 @@ func TestRecvDataFromRemote(t *testing.T) {
var sessionKey [32]byte var sessionKey [32]byte
rand.Read(sessionKey[:]) rand.Read(sessionKey[:])
t.Run("plain ordered", func(t *testing.T) { t.Run("plain ordered", func(t *testing.T) {
obfuscator, _ := MakeObfuscator(E_METHOD_PLAIN, sessionKey, true) obfuscator, _ := MakeObfuscator(E_METHOD_PLAIN, sessionKey)
seshConfigOrdered.Obfuscator = obfuscator seshConfigOrdered.Obfuscator = obfuscator
sesh := MakeSession(0, seshConfigOrdered) sesh := MakeSession(0, seshConfigOrdered)
n, _ := sesh.Obfs(f, obfsBuf) n, _ := sesh.Obfs(f, obfsBuf)
@ -64,7 +61,7 @@ func TestRecvDataFromRemote(t *testing.T) {
} }
}) })
t.Run("aes-gcm ordered", func(t *testing.T) { t.Run("aes-gcm ordered", func(t *testing.T) {
obfuscator, _ := MakeObfuscator(E_METHOD_AES_GCM, sessionKey, true) obfuscator, _ := MakeObfuscator(E_METHOD_AES_GCM, sessionKey)
seshConfigOrdered.Obfuscator = obfuscator seshConfigOrdered.Obfuscator = obfuscator
sesh := MakeSession(0, seshConfigOrdered) sesh := MakeSession(0, seshConfigOrdered)
n, _ := sesh.Obfs(f, obfsBuf) n, _ := sesh.Obfs(f, obfsBuf)
@ -91,7 +88,7 @@ func TestRecvDataFromRemote(t *testing.T) {
} }
}) })
t.Run("chacha20-poly1305 ordered", func(t *testing.T) { t.Run("chacha20-poly1305 ordered", func(t *testing.T) {
obfuscator, _ := MakeObfuscator(E_METHOD_CHACHA20_POLY1305, sessionKey, true) obfuscator, _ := MakeObfuscator(E_METHOD_CHACHA20_POLY1305, sessionKey)
seshConfigOrdered.Obfuscator = obfuscator seshConfigOrdered.Obfuscator = obfuscator
sesh := MakeSession(0, seshConfigOrdered) sesh := MakeSession(0, seshConfigOrdered)
n, _ := sesh.Obfs(f, obfsBuf) n, _ := sesh.Obfs(f, obfsBuf)
@ -119,7 +116,7 @@ func TestRecvDataFromRemote(t *testing.T) {
}) })
t.Run("plain unordered", func(t *testing.T) { t.Run("plain unordered", func(t *testing.T) {
obfuscator, _ := MakeObfuscator(E_METHOD_PLAIN, sessionKey, true) obfuscator, _ := MakeObfuscator(E_METHOD_PLAIN, sessionKey)
seshConfigUnordered.Obfuscator = obfuscator seshConfigUnordered.Obfuscator = obfuscator
sesh := MakeSession(0, seshConfigOrdered) sesh := MakeSession(0, seshConfigOrdered)
n, _ := sesh.Obfs(f, obfsBuf) n, _ := sesh.Obfs(f, obfsBuf)
@ -156,7 +153,7 @@ func TestRecvDataFromRemote_Closing_InOrder(t *testing.T) {
var sessionKey [32]byte var sessionKey [32]byte
rand.Read(sessionKey[:]) rand.Read(sessionKey[:])
obfuscator, _ := MakeObfuscator(E_METHOD_PLAIN, sessionKey, true) obfuscator, _ := MakeObfuscator(E_METHOD_PLAIN, sessionKey)
seshConfigOrdered.Obfuscator = obfuscator seshConfigOrdered.Obfuscator = obfuscator
sesh := MakeSession(0, seshConfigOrdered) sesh := MakeSession(0, seshConfigOrdered)
@ -287,7 +284,7 @@ func TestRecvDataFromRemote_Closing_OutOfOrder(t *testing.T) {
var sessionKey [32]byte var sessionKey [32]byte
rand.Read(sessionKey[:]) rand.Read(sessionKey[:])
obfuscator, _ := MakeObfuscator(E_METHOD_PLAIN, sessionKey, true) obfuscator, _ := MakeObfuscator(E_METHOD_PLAIN, sessionKey)
seshConfigOrdered.Obfuscator = obfuscator seshConfigOrdered.Obfuscator = obfuscator
sesh := MakeSession(0, seshConfigOrdered) sesh := MakeSession(0, seshConfigOrdered)
@ -346,7 +343,7 @@ func TestParallel(t *testing.T) {
var sessionKey [32]byte var sessionKey [32]byte
rand.Read(sessionKey[:]) rand.Read(sessionKey[:])
obfuscator, _ := MakeObfuscator(E_METHOD_PLAIN, sessionKey, true) obfuscator, _ := MakeObfuscator(E_METHOD_PLAIN, sessionKey)
seshConfigOrdered.Obfuscator = obfuscator seshConfigOrdered.Obfuscator = obfuscator
sesh := MakeSession(0, seshConfigOrdered) sesh := MakeSession(0, seshConfigOrdered)
@ -417,7 +414,7 @@ func BenchmarkRecvDataFromRemote_Ordered(b *testing.B) {
rand.Read(sessionKey[:]) rand.Read(sessionKey[:])
b.Run("plain", func(b *testing.B) { b.Run("plain", func(b *testing.B) {
obfuscator, _ := MakeObfuscator(E_METHOD_PLAIN, sessionKey, true) obfuscator, _ := MakeObfuscator(E_METHOD_PLAIN, sessionKey)
seshConfigOrdered.Obfuscator = obfuscator seshConfigOrdered.Obfuscator = obfuscator
sesh := MakeSession(0, seshConfigOrdered) sesh := MakeSession(0, seshConfigOrdered)
n, _ := sesh.Obfs(f, obfsBuf) n, _ := sesh.Obfs(f, obfsBuf)
@ -430,7 +427,7 @@ func BenchmarkRecvDataFromRemote_Ordered(b *testing.B) {
}) })
b.Run("aes-gcm", func(b *testing.B) { b.Run("aes-gcm", func(b *testing.B) {
obfuscator, _ := MakeObfuscator(E_METHOD_AES_GCM, sessionKey, true) obfuscator, _ := MakeObfuscator(E_METHOD_AES_GCM, sessionKey)
seshConfigOrdered.Obfuscator = obfuscator seshConfigOrdered.Obfuscator = obfuscator
sesh := MakeSession(0, seshConfigOrdered) sesh := MakeSession(0, seshConfigOrdered)
n, _ := sesh.Obfs(f, obfsBuf) n, _ := sesh.Obfs(f, obfsBuf)
@ -443,7 +440,7 @@ func BenchmarkRecvDataFromRemote_Ordered(b *testing.B) {
}) })
b.Run("chacha20-poly1305", func(b *testing.B) { b.Run("chacha20-poly1305", func(b *testing.B) {
obfuscator, _ := MakeObfuscator(E_METHOD_CHACHA20_POLY1305, sessionKey, true) obfuscator, _ := MakeObfuscator(E_METHOD_CHACHA20_POLY1305, sessionKey)
seshConfigOrdered.Obfuscator = obfuscator seshConfigOrdered.Obfuscator = obfuscator
sesh := MakeSession(0, seshConfigOrdered) sesh := MakeSession(0, seshConfigOrdered)
n, _ := sesh.Obfs(f, obfsBuf) n, _ := sesh.Obfs(f, obfsBuf)

View File

@ -2,7 +2,6 @@ package multiplex
import ( import (
"bytes" "bytes"
"github.com/cbeuw/Cloak/internal/util"
"io" "io"
"math/rand" "math/rand"
"net" "net"
@ -15,12 +14,11 @@ import (
func setupSesh(unordered bool) *Session { func setupSesh(unordered bool) *Session {
var sessionKey [32]byte var sessionKey [32]byte
rand.Read(sessionKey[:]) rand.Read(sessionKey[:])
obfuscator, _ := MakeObfuscator(0x00, sessionKey, true) obfuscator, _ := MakeObfuscator(0x00, sessionKey)
seshConfig := SessionConfig{ seshConfig := SessionConfig{
Obfuscator: obfuscator, Obfuscator: obfuscator,
Valve: nil, Valve: nil,
UnitRead: util.ReadTLS,
Unordered: unordered, Unordered: unordered,
} }
return MakeSession(0, seshConfig) return MakeSession(0, seshConfig)

View File

@ -1,7 +1,6 @@
package multiplex package multiplex
import ( import (
"github.com/cbeuw/Cloak/internal/util"
"github.com/cbeuw/connutil" "github.com/cbeuw/connutil"
"math/rand" "math/rand"
"testing" "testing"
@ -55,7 +54,6 @@ func TestSwitchboard_Send(t *testing.T) {
seshConfig := SessionConfig{ seshConfig := SessionConfig{
Obfuscator: nil, Obfuscator: nil,
Valve: nil, Valve: nil,
UnitRead: util.ReadTLS,
Unordered: false, Unordered: false,
} }
doTest(seshConfig) doTest(seshConfig)
@ -64,7 +62,6 @@ func TestSwitchboard_Send(t *testing.T) {
seshConfig := SessionConfig{ seshConfig := SessionConfig{
Obfuscator: nil, Obfuscator: nil,
Valve: nil, Valve: nil,
UnitRead: util.ReadTLS,
Unordered: true, Unordered: true,
} }
doTest(seshConfig) doTest(seshConfig)
@ -76,7 +73,6 @@ func BenchmarkSwitchboard_Send(b *testing.B) {
seshConfig := SessionConfig{ seshConfig := SessionConfig{
Obfuscator: nil, Obfuscator: nil,
Valve: nil, Valve: nil,
UnitRead: util.ReadTLS,
} }
sesh := MakeSession(0, seshConfig) sesh := MakeSession(0, seshConfig)
sesh.sb.addConn(hole) sesh.sb.addConn(hole)
@ -102,7 +98,6 @@ func TestSwitchboard_TxCredit(t *testing.T) {
seshConfig := SessionConfig{ seshConfig := SessionConfig{
Obfuscator: nil, Obfuscator: nil,
Valve: MakeValve(1<<20, 1<<20), Valve: MakeValve(1<<20, 1<<20),
UnitRead: util.ReadTLS,
} }
sesh := MakeSession(0, seshConfig) sesh := MakeSession(0, seshConfig)
hole := connutil.Discard() hole := connutil.Discard()

View File

@ -5,7 +5,6 @@ import (
"encoding/base64" "encoding/base64"
mux "github.com/cbeuw/Cloak/internal/multiplex" mux "github.com/cbeuw/Cloak/internal/multiplex"
"github.com/cbeuw/Cloak/internal/server/usermanager" "github.com/cbeuw/Cloak/internal/server/usermanager"
"github.com/cbeuw/Cloak/internal/util"
"os" "os"
"testing" "testing"
) )
@ -13,12 +12,11 @@ import (
func getSeshConfig(unordered bool) mux.SessionConfig { func getSeshConfig(unordered bool) mux.SessionConfig {
var sessionKey [32]byte var sessionKey [32]byte
rand.Read(sessionKey[:]) rand.Read(sessionKey[:])
obfuscator, _ := mux.MakeObfuscator(0x00, sessionKey, true) obfuscator, _ := mux.MakeObfuscator(0x00, sessionKey)
seshConfig := mux.SessionConfig{ seshConfig := mux.SessionConfig{
Obfuscator: obfuscator, Obfuscator: obfuscator,
Valve: nil, Valve: nil,
UnitRead: util.ReadTLS,
Unordered: unordered, Unordered: unordered,
} }
return seshConfig return seshConfig