mirror of
https://github.com/fumiama/go-registry.git
synced 2026-06-19 00:55:36 +08:00
优化速度
This commit is contained in:
136
cmd_test.go
136
cmd_test.go
@@ -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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user