Skip to content

Commit 123b9e1

Browse files
Merge pull request #9 from fabricekabongo/codex/écrire-des-tests-pour-la-réponse-serveur
Add server listener integration test
2 parents 3d47336 + 92adfab commit 123b9e1

1 file changed

Lines changed: 85 additions & 0 deletions

File tree

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
package server
2+
3+
import (
4+
"bufio"
5+
"github.com/ataul443/memnet"
6+
"github.com/fabricekabongo/loggerhead/query"
7+
"github.com/fabricekabongo/loggerhead/world"
8+
"testing"
9+
"time"
10+
)
11+
12+
func TestListenerCRUDFlow(t *testing.T) {
13+
netListener, err := memnet.Listen(1, 4096, "test")
14+
if err != nil {
15+
t.Fatalf("Failed to create memnet listener: %v", err)
16+
}
17+
w := world.NewWorld()
18+
engine := query.NewQueryEngine(w)
19+
l := NewListener(19999, 10, time.Second, engine)
20+
21+
go l.Handler.listen(netListener)
22+
time.Sleep(100 * time.Millisecond)
23+
24+
conn, err := netListener.Dial()
25+
if err != nil {
26+
t.Fatalf("Failed to dial connection: %v", err)
27+
}
28+
defer func() {
29+
conn.Close()
30+
if h, ok := l.Handler.(*Handler); ok {
31+
close(h.closeChan)
32+
}
33+
netListener.Close()
34+
}()
35+
36+
reader := bufio.NewReader(conn)
37+
38+
writeAndRead := func(cmd string, lines int) string {
39+
_, err := conn.Write([]byte(cmd + "\n"))
40+
if err != nil {
41+
t.Fatalf("Failed to write command %s: %v", cmd, err)
42+
}
43+
var result string
44+
for i := 0; i < lines; i++ {
45+
line, err := reader.ReadString('\n')
46+
if err != nil {
47+
t.Fatalf("Failed to read response for %s: %v", cmd, err)
48+
}
49+
result += line
50+
}
51+
return result
52+
}
53+
54+
// create
55+
resp := writeAndRead("SAVE ns loc 1.0 2.0", 1)
56+
if resp != "1.0,saved\n" {
57+
t.Fatalf("Unexpected response: %q", resp)
58+
}
59+
60+
// read
61+
resp = writeAndRead("GET ns loc", 2)
62+
if resp != "1.0,ns,loc,1.000000,2.000000\n1.0,done\n" {
63+
t.Fatalf("Unexpected get response: %q", resp)
64+
}
65+
66+
// update
67+
resp = writeAndRead("SAVE ns loc 2.0 3.0", 1)
68+
if resp != "1.0,saved\n" {
69+
t.Fatalf("Unexpected response after update: %q", resp)
70+
}
71+
resp = writeAndRead("GET ns loc", 2)
72+
if resp != "1.0,ns,loc,2.000000,3.000000\n1.0,done\n" {
73+
t.Fatalf("Unexpected get after update response: %q", resp)
74+
}
75+
76+
// delete
77+
resp = writeAndRead("DELETE ns loc", 1)
78+
if resp != "1.0,deleted\n" {
79+
t.Fatalf("Unexpected delete response: %q", resp)
80+
}
81+
resp = writeAndRead("GET ns loc", 1)
82+
if resp != "1.0,done\n" {
83+
t.Fatalf("Unexpected final get response: %q", resp)
84+
}
85+
}

0 commit comments

Comments
 (0)