Files
v2ray_simple/httpLayer/fallback_test.go
e1732a364fed 3e7e779920 修订代码; 完善ws; 令Pool使用指针,而不是slice
令 websocket在path访问正确但是不是ws连接时,也进行回落,而不是返回一个错误

将 GetH1RequestMethod_and_PATH_from_Bytes 改名为 ParseH1Request, 且支持 读取header

同时新增了 RawHeader 结构 用于 上述目的。httpLayer还添加了 CanonicalizeHeaderKey 方法。

令Pool使用指针 后,测速从 3200左右上升至3800左右,也不知道是不是这个优化导致的。如果是的话,那也太猛了。
2022-05-07 09:51:45 +08:00

74 lines
1.6 KiB
Go

package httpLayer_test
import (
"net"
"testing"
"github.com/e1732a364fed/v2ray_simple/httpLayer"
"github.com/e1732a364fed/v2ray_simple/netLayer"
)
var testf = httpLayer.FallbackConditionSet{
Path: "/verysimple",
Sni: "fake.www.verysimple.com",
AlpnMask: 1,
}
var testMap = make(map[httpLayer.FallbackConditionSet]*httpLayer.FallbackResult)
var testMap2 = make(map[httpLayer.FallbackConditionSet]*httpLayer.FallbackResult)
//var testMap3 = make(map[httpLayer.FallbackConditionSet]*httpLayer.FallbackResult)
const map2Mask = httpLayer.Fallback_sni | httpLayer.Fallback_alpn
func init() {
testMap[httpLayer.FallbackConditionSet{
Sni: "fake.www.verysimple.com",
}] = &httpLayer.FallbackResult{
Addr: netLayer.Addr{
IP: net.ParseIP("127.0.0.1"),
Port: 443,
},
}
testMap2[httpLayer.FallbackConditionSet{
Sni: "fake.www.verysimple.com",
AlpnMask: 1,
}] = &httpLayer.FallbackResult{
Addr: netLayer.Addr{
IP: net.ParseIP("127.0.0.1"),
Port: 443,
},
}
}
func TestGetFallbackAllSubsets(t *testing.T) {
t.Log(testf.GetAllSubSets())
}
func TestTestAllSubSets(t *testing.T) {
t.Log(testf.TestAllSubSets(httpLayer.Fallback_sni, testMap))
t.Log(testf.TestAllSubSets(map2Mask, testMap2))
}
/*
goos: darwin
goarch: arm64
AllSubSets 378.2 ns/op
AllSubSets_improve1 227.7 ns/op
TestAllSubSets 肯定快不少,因为跳过了无效子集以及内存分配, 就不测了.
因为不好测,和数据本身有关,分最好情况、一般情况 和 最差情况。
*/
func BenchmarkFallbackGetAllSubSets(b *testing.B) {
for i := 0; i < b.N; i++ {
testf.GetAllSubSets()
}
}