Skip to content

Commit 928ef5c

Browse files
committed
list_test failing because redis server timeout (idk why)
1 parent d06b874 commit 928ef5c

14 files changed

+715
-108
lines changed

client.go

+9
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,15 @@ func (r *Redis) NewClient(conn redcon.Conn) *Client {
3434
return c
3535
}
3636

37+
// NextClientId atomically gets and increments a counter to return the next client id.
38+
func (r *Redis) NextClientId() ClientId {
39+
r.Mu().Lock()
40+
defer r.Mu().Unlock()
41+
id := r.nextClientId
42+
r.nextClientId++
43+
return id
44+
}
45+
3746
// Clients gets the current connected clients.
3847
func (r *Redis) Clients() Clients {
3948
r.Mu().RLock()

cmd_lpush.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,13 @@ func LPushCommand(c *Client, cmd redcon.Command) {
1212
return
1313
}
1414
key := string(cmd.Args[1])
15-
15+
fmt.Println("KEY:", key)
1616
db := c.Db()
1717
i := db.GetOrExpire(&key, true)
1818
if i == nil {
1919
i = NewList()
2020
db.Set(&key, i, false, time.Time{})
21+
fmt.Println("CREATED NEW LIST")
2122
} else if i.Type() != ListType {
2223
c.Conn().WriteError(fmt.Sprintf("%s: key is a %s not a %s", WrongTypeErr, i.TypeFancy(), ListTypeFancy))
2324
return

cmd_set.go

+1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"time"
99
)
1010

11+
// SET key value [NX] [XX] [EX <seconds>] [PX <milliseconds>]
1112
func SetCommand(c *Client, cmd redcon.Command) {
1213
if len(cmd.Args) == 1 { // nothing done
1314
c.Conn().WriteString("OK")

list_test.go

+64
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
package redis
2+
3+
import (
4+
"github.com/stretchr/testify/assert"
5+
"testing"
6+
)
7+
8+
func TestLPushCommand(t *testing.T) {
9+
i, err := c.LPush("lpushkey", "va").Result()
10+
assert.NoError(t, err)
11+
assert.Equal(t, int64(1), i)
12+
13+
i, err = c.LPush("lpushkey", "vb").Result()
14+
assert.NoError(t, err)
15+
assert.Equal(t, int64(2), i)
16+
17+
i, err = c.LPush("lpushkey", "vc", "vd").Result()
18+
assert.NoError(t, err)
19+
assert.Equal(t, int64(4), i)
20+
21+
i, err = c.LPush("lpushkey2", "1", "2").Result()
22+
assert.NoError(t, err)
23+
assert.Equal(t, int64(2), i)
24+
25+
i, err = c.LPush("lpush3key").Result()
26+
assert.Error(t, err)
27+
}
28+
29+
func TestLPopCommand(t *testing.T) {
30+
s, err := c.LPop("lpop1").Result()
31+
assert.Zero(t, s)
32+
assert.Error(t, err)
33+
34+
i, err := c.LPush("list", "a", "b").Result()
35+
assert.NoError(t, err)
36+
assert.Equal(t, int64(2), i)
37+
38+
s, err = c.LPop("list").Result()
39+
assert.NoError(t, err)
40+
assert.Equal(t, "b", s)
41+
42+
s, err = c.LPop("list").Result()
43+
assert.NoError(t, err)
44+
assert.Equal(t, "a", s)
45+
46+
s, err = c.LPop("list").Result()
47+
assert.Error(t, err)
48+
assert.Zero(t, s)
49+
}
50+
51+
func TestLRangeCommand(t *testing.T) {
52+
s, err := c.LRange("lrange", 0, 0).Result()
53+
assert.Error(t, err)
54+
assert.Zero(t, s)
55+
56+
sl, err := c.Set("works", "esfkjsefj", 0).Result()
57+
assert.NoError(t, err)
58+
assert.NotZero(t, sl)
59+
assert.NotEmpty(t, sl)
60+
61+
i, err := c.LPush("list2", "a", "b").Result()
62+
assert.NoError(t, err)
63+
assert.Equal(t, int64(2), i)
64+
}

redis.go

-52
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
11
package redis
22

33
import (
4-
"crypto/tls"
54
"github.com/redis-go/redcon"
65
"strings"
76
"sync"
8-
"time"
97
)
108

119
const (
@@ -62,47 +60,6 @@ type Clients map[ClientId]*Client
6260
// Client id
6361
type ClientId uint64
6462

65-
// Run runs the default redis server.
66-
// Initializes the default redis if not already.
67-
func Run(addr string) error {
68-
return Default().Run(addr)
69-
}
70-
71-
// Run runs the redis server.
72-
func (r *Redis) Run(addr string) error {
73-
go r.KeyExpirer().Start(100*time.Millisecond, 20, 25)
74-
return redcon.ListenAndServe(
75-
addr,
76-
func(conn redcon.Conn, cmd redcon.Command) {
77-
r.HandlerFn()(r.NewClient(conn), cmd)
78-
},
79-
func(conn redcon.Conn) bool {
80-
return r.AcceptFn()(r.NewClient(conn))
81-
},
82-
func(conn redcon.Conn, err error) {
83-
r.OnCloseFn()(r.NewClient(conn), err)
84-
},
85-
)
86-
}
87-
88-
// Run runs the redis server with tls.
89-
func (r *Redis) RunTLS(addr string, tls *tls.Config) error {
90-
go r.KeyExpirer().Start(100*time.Millisecond, 20, 25)
91-
return redcon.ListenAndServeTLS(
92-
addr,
93-
func(conn redcon.Conn, cmd redcon.Command) {
94-
r.HandlerFn()(r.NewClient(conn), cmd)
95-
},
96-
func(conn redcon.Conn) bool {
97-
return r.AcceptFn()(r.NewClient(conn))
98-
},
99-
func(conn redcon.Conn, err error) {
100-
r.OnCloseFn()(r.NewClient(conn), err)
101-
},
102-
tls,
103-
)
104-
}
105-
10663
// Gets the handler func.
10764
func (r *Redis) HandlerFn() Handler {
10865
r.Mu().RLock()
@@ -153,15 +110,6 @@ func (r *Redis) Mu() *sync.RWMutex {
153110
return r.mu
154111
}
155112

156-
// NextClientId atomically gets and increments a counter to return the next client id.
157-
func (r *Redis) NextClientId() ClientId {
158-
r.Mu().Lock()
159-
defer r.Mu().Unlock()
160-
id := r.nextClientId
161-
r.nextClientId++
162-
return id
163-
}
164-
165113
func (r *Redis) KeyExpirer() KeyExpirer {
166114
r.Mu().RLock()
167115
defer r.Mu().RUnlock()

redis_test.go

+2-55
Original file line numberDiff line numberDiff line change
@@ -78,71 +78,18 @@ func TestTtlCommand(t *testing.T) {
7878
assert.NoError(t, err)
7979

8080
ttl, err = c.TTL("bKey").Result()
81-
assert.Equal(t, time.Duration(-1000000000), ttl)
8281
assert.NoError(t, err)
82+
assert.Equal(t, time.Duration(-1000000000), ttl)
8383
}
8484

8585
func TestExpiry(t *testing.T) {
8686
s, err := c.Set("x", "val", 10*time.Millisecond).Result()
87-
assert.Equal(t, "OK", s)
8887
assert.NoError(t, err)
88+
assert.Equal(t, "OK", s)
8989

9090
time.Sleep(10 * time.Millisecond)
9191

9292
s, err = c.Get("x").Result()
9393
assert.Equal(t, "", s)
9494
assert.Error(t, err)
9595
}
96-
97-
func TestLPushCommand(t *testing.T) {
98-
i, err := c.LPush("lpushkey", "va").Result()
99-
assert.Equal(t, int64(1), i)
100-
assert.NoError(t, err)
101-
102-
i, err = c.LPush("lpushkey", "vb").Result()
103-
assert.Equal(t, int64(2), i)
104-
assert.NoError(t, err)
105-
106-
i, err = c.LPush("lpushkey", "vc", "vd").Result()
107-
assert.Equal(t, int64(4), i)
108-
assert.NoError(t, err)
109-
110-
i, err = c.LPush("lpushkey2", "1", "2").Result()
111-
assert.Equal(t, int64(2), i)
112-
assert.NoError(t, err)
113-
114-
i, err = c.LPush("lpush3key").Result()
115-
assert.Error(t, err)
116-
}
117-
118-
func TestLPopCommand(t *testing.T) {
119-
s, err := c.LPop("lpop1").Result()
120-
assert.Zero(t, s)
121-
assert.Error(t, err)
122-
123-
i, err := c.LPush("list", "a", "b").Result()
124-
assert.Equal(t, int64(2), i)
125-
assert.NoError(t, err)
126-
127-
s, err = c.LPop("list").Result()
128-
assert.Equal(t, "b", s)
129-
assert.NoError(t, err)
130-
131-
s, err = c.LPop("list").Result()
132-
assert.Equal(t, "a", s)
133-
assert.NoError(t, err)
134-
135-
s, err = c.LPop("list").Result()
136-
assert.Zero(t, s)
137-
assert.Error(t, err)
138-
}
139-
140-
func TestLRangeCommand(t *testing.T) {
141-
s, err := c.LRange("lrange", 0, 0).Result()
142-
assert.Zero(t, s)
143-
assert.Error(t, err)
144-
145-
i, err := c.LPush("list2", "a", "b").Result()
146-
assert.Equal(t, int64(2), i)
147-
assert.NoError(t, err)
148-
}

serve.go

+48
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package redis
2+
3+
import (
4+
"crypto/tls"
5+
"github.com/redis-go/redcon"
6+
"time"
7+
)
8+
9+
// Run runs the default redis server.
10+
// Initializes the default redis if not already.
11+
func Run(addr string) error {
12+
return Default().Run(addr)
13+
}
14+
15+
// Run runs the redis server.
16+
func (r *Redis) Run(addr string) error {
17+
go r.KeyExpirer().Start(100*time.Millisecond, 20, 25)
18+
return redcon.ListenAndServe(
19+
addr,
20+
func(conn redcon.Conn, cmd redcon.Command) {
21+
r.HandlerFn()(r.NewClient(conn), cmd)
22+
},
23+
func(conn redcon.Conn) bool {
24+
return r.AcceptFn()(r.NewClient(conn))
25+
},
26+
func(conn redcon.Conn, err error) {
27+
r.OnCloseFn()(r.NewClient(conn), err)
28+
},
29+
)
30+
}
31+
32+
// Run runs the redis server with tls.
33+
func (r *Redis) RunTLS(addr string, tls *tls.Config) error {
34+
go r.KeyExpirer().Start(100*time.Millisecond, 20, 25)
35+
return redcon.ListenAndServeTLS(
36+
addr,
37+
func(conn redcon.Conn, cmd redcon.Command) {
38+
r.HandlerFn()(r.NewClient(conn), cmd)
39+
},
40+
func(conn redcon.Conn) bool {
41+
return r.AcceptFn()(r.NewClient(conn))
42+
},
43+
func(conn redcon.Conn, err error) {
44+
r.OnCloseFn()(r.NewClient(conn), err)
45+
},
46+
tls,
47+
)
48+
}

vendor/github.com/pkg/errors/.gitignore

+24
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/pkg/errors/.travis.yml

+11
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/pkg/errors/LICENSE

+23
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)