1
0
mirror of https://github.com/redis/go-redis.git synced 2025-07-28 06:42:00 +03:00

Make Script and Pipeline interoperable. Fixes #18.

This commit is contained in:
Vladimir Mihailenco
2013-12-30 13:02:14 +02:00
parent af4ea559fe
commit 82a41314a0
5 changed files with 57 additions and 23 deletions

View File

@ -2844,15 +2844,15 @@ func (t *RedisTest) TestScriptingEvalSha(c *C) {
c.Assert(set.Err(), IsNil)
c.Assert(set.Val(), Equals, "OK")
eval := t.client.Eval("return redis.call('get','foo')", []string{}, []string{})
eval := t.client.Eval("return redis.call('get','foo')", nil, nil)
c.Assert(eval.Err(), IsNil)
c.Assert(eval.Val(), Equals, "bar")
evalSha := t.client.EvalSha("6b1bf486c81ceb7edf3c093f4c48582e38c0e791", []string{}, []string{})
evalSha := t.client.EvalSha("6b1bf486c81ceb7edf3c093f4c48582e38c0e791", nil, nil)
c.Assert(evalSha.Err(), IsNil)
c.Assert(evalSha.Val(), Equals, "bar")
evalSha = t.client.EvalSha("ffffffffffffffffffffffffffffffffffffffff", []string{}, []string{})
evalSha = t.client.EvalSha("ffffffffffffffffffffffffffffffffffffffff", nil, nil)
c.Assert(evalSha.Err(), ErrorMatches, "NOSCRIPT No matching script. Please use EVAL.")
c.Assert(evalSha.Val(), Equals, nil)
}
@ -2888,6 +2888,35 @@ func (t *RedisTest) TestScriptingScriptLoad(c *C) {
c.Assert(scriptLoad.Val(), Equals, "6b1bf486c81ceb7edf3c093f4c48582e38c0e791")
}
func (t *RedisTest) TestNewScript(c *C) {
s := redis.NewScript("return 1")
run := s.Run(t.client, nil, nil)
c.Assert(run.Err(), IsNil)
c.Assert(run.Val(), Equals, int64(1))
}
func (t *RedisTest) TestEvalAndPipeline(c *C) {
pipeline := t.client.Pipeline()
s := redis.NewScript("return 1")
run := s.Eval(pipeline, nil, nil)
_, err := pipeline.Exec()
c.Assert(err, IsNil)
c.Assert(run.Err(), IsNil)
c.Assert(run.Val(), Equals, int64(1))
}
func (t *RedisTest) TestEvalShaAndPipeline(c *C) {
s := redis.NewScript("return 1")
c.Assert(s.Load(t.client).Err(), IsNil)
pipeline := t.client.Pipeline()
run := s.Eval(pipeline, nil, nil)
_, err := pipeline.Exec()
c.Assert(err, IsNil)
c.Assert(run.Err(), IsNil)
c.Assert(run.Val(), Equals, int64(1))
}
//------------------------------------------------------------------------------
func (t *RedisTest) BenchmarkRedisPing(c *C) {