1
0
mirror of https://github.com/fumiama/go-registry.git synced 2026-06-19 00:55:36 +08:00

优化速度

This commit is contained in:
fumiama
2022-02-15 13:26:16 +08:00
parent e7c05d8bc8
commit b6a85b186c
4 changed files with 171 additions and 181 deletions

View File

@@ -1,130 +1,40 @@
package registry
import (
"net"
"errors"
"testing"
tea "github.com/fumiama/gofastTEA"
)
func TestCmdPacket(t *testing.T) {
conn, err := net.Dial("tcp", "127.0.0.1:8888")
func TestRegedit(t *testing.T) {
reg := NewRegedit("127.0.0.1:8888", "testpwd", "testsps")
err := reg.Connect()
if err != nil {
t.Fatal(err)
}
tp := tea.NewTeaCipherLittleEndian([]byte("testpwd\x00\x00\x00\x00\x00\x00\x00\x00\x00"))
ts := tea.NewTeaCipherLittleEndian([]byte("testsps\x00\x00\x00\x00\x00\x00\x00\x00\x00"))
var seq byte
p := NewCmdPacket(CMDGET, []byte("test"), &tp)
conn.Write(p.Encrypt(seq))
seq++
ackp := ack(t, conn, &tp)
err = ackp.Decrypt(seq)
if err != nil {
ret, err := reg.Get("test")
if err != nil && !errors.Is(err, ErrNoSuchKey) {
t.Fatal(err)
}
a := string(ackp.data)
t.Log(a)
if a != "null" {
t.Fail()
}
seq++
p = NewCmdPacket(CMDSET, []byte("test"), &ts)
conn.Write(p.Encrypt(seq))
seq++
ackp = ack(t, conn, &tp)
err = ackp.Decrypt(seq)
if err != nil {
t.Fatal(err)
}
a = string(ackp.data)
t.Log(a)
if a != "data" {
t.Fail()
}
seq++
p = NewCmdPacket(CMDDAT, []byte("测试"), &ts)
conn.Write(p.Encrypt(seq))
seq++
ackp = ack(t, conn, &tp)
err = ackp.Decrypt(seq)
if err != nil {
t.Fatal(err)
}
a = string(ackp.data)
t.Log(a)
if a != "succ" {
t.Fail()
}
seq++
p = NewCmdPacket(CMDGET, []byte("test"), &tp)
conn.Write(p.Encrypt(seq))
seq++
ackp = ack(t, conn, &tp)
err = ackp.Decrypt(seq)
if err != nil {
t.Fatal(err)
}
a = string(ackp.data)
t.Log(a)
if a != "测试" {
t.Fail()
}
seq++
p = NewCmdPacket(CMDDEL, []byte("test"), &ts)
conn.Write(p.Encrypt(seq))
seq++
ackp = ack(t, conn, &tp)
err = ackp.Decrypt(seq)
if err != nil {
t.Fatal(err)
}
a = string(ackp.data)
t.Log(a)
if a != "succ" {
t.Fail()
}
seq++
p = NewCmdPacket(CMDGET, []byte("test"), &tp)
conn.Write(p.Encrypt(seq))
seq++
ackp = ack(t, conn, &tp)
err = ackp.Decrypt(seq)
if err != nil {
t.Fatal(err)
}
a = string(ackp.data)
t.Log(a)
if a != "null" {
t.Fail()
}
seq++
}
func ack(t *testing.T, conn net.Conn, tp *tea.TEA) *CmdPacket {
var buf [1024]byte
n, err := conn.Read(buf[:])
if err != nil {
t.Fatal(err)
}
for n < 1+1+16 {
m, err := conn.Read(buf[n:])
t.Log(ret)
if ret != "" {
err = reg.Del("test")
if err != nil {
t.Fatal(err)
}
n += m
}
for n < 1+1+16+int(buf[1]) {
m, err := conn.Read(buf[n:])
if err != nil {
t.Fatal(err)
}
n += m
err = reg.Set("test", "测试")
if err != nil {
t.Fatal(err)
}
ret, err = reg.Get("test")
if err != nil {
t.Fatal(err)
}
if ret != "测试" {
t.Fail()
}
err = reg.Close()
if err != nil {
t.Fatal(err)
}
return ParseCmdPacket(buf[:], tp)
}