4
4
5
5
from .conftest import skip_if_server_version_lt
6
6
7
- function = "redis.register_function('myfunc', function(keys, args) return args[1] end)"
7
+ engine = "lua"
8
+ lib = "mylib"
9
+ lib2 = "mylib2"
10
+ function = "redis.register_function{function_name='myfunc', callback=function(keys, \
11
+ args) return args[1] end, flags={ 'no-writes' }}"
8
12
function2 = "redis.register_function('hello', function() return 'Hello World' end)"
9
- set_function = "redis.register_function('set', function(keys, args) \
10
- return redis.call('SET', keys[1], args[1]) end)"
11
- get_function = "redis.register_function('get', function(keys, args) \
12
- return redis.call('GET', keys[1]) end)"
13
+ set_function = "redis.register_function('set', function(keys, args) return \
14
+ redis.call('SET', keys[1], args[1]) end)"
15
+ get_function = "redis.register_function('get', function(keys, args) return \
16
+ redis.call('GET', keys[1]) end)"
13
17
14
18
15
19
@skip_if_server_version_lt ("7.0.0" )
@@ -19,25 +23,28 @@ def reset_functions(self, r):
19
23
r .function_flush ()
20
24
21
25
def test_function_load (self , r ):
22
- assert r .function_load ("Lua" , "mylib" , function )
23
- assert r .function_load ("Lua" , "mylib" , function , replace = True )
26
+ print ("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" )
27
+ assert lib == r .function_load (f"#!{ engine } name={ lib } \n { function } " )
28
+ assert lib == r .function_load (
29
+ f"#!{ engine } name={ lib } \n { function } " , replace = True
30
+ )
24
31
with pytest .raises (ResponseError ):
25
- r .function_load ("Lua" , "mylib" , function )
32
+ r .function_load (f"#! { engine } name= { lib } \n { function } " )
26
33
with pytest .raises (ResponseError ):
27
- r .function_load ("Lua" , "mylib2" , function )
34
+ r .function_load (f"#! { engine } name= { lib2 } \n { function } " )
28
35
29
36
def test_function_delete (self , r ):
30
- r .function_load ("Lua" , "mylib" , set_function )
37
+ r .function_load (f"#! { engine } name= { lib } \n { set_function } " )
31
38
with pytest .raises (ResponseError ):
32
- r .function_load ("Lua" , "mylib" , set_function )
39
+ r .function_load (f"#! { engine } name= { lib } \n { set_function } " )
33
40
assert r .fcall ("set" , 1 , "foo" , "bar" ) == "OK"
34
41
assert r .function_delete ("mylib" )
35
42
with pytest .raises (ResponseError ):
36
43
r .fcall ("set" , 1 , "foo" , "bar" )
37
- assert r .function_load ("Lua" , "mylib" , set_function )
44
+ assert lib == r .function_load (f"#! { engine } name= { lib } \n { set_function } " )
38
45
39
46
def test_function_flush (self , r ):
40
- r .function_load ("Lua" , "mylib" , function )
47
+ r .function_load (f"#! { engine } name= { lib } \n { function } " )
41
48
assert r .fcall ("myfunc" , 0 , "hello" ) == "hello"
42
49
assert r .function_flush ()
43
50
with pytest .raises (ResponseError ):
@@ -47,36 +54,35 @@ def test_function_flush(self, r):
47
54
48
55
@pytest .mark .onlynoncluster
49
56
def test_function_list (self , r ):
50
- r .function_load ("Lua" , "mylib" , function )
57
+ r .function_load (f"#! { engine } name= { lib } \n { function } " )
51
58
res = [
52
59
[
53
60
"library_name" ,
54
61
"mylib" ,
55
62
"engine" ,
56
63
"LUA" ,
57
- "description" ,
58
- None ,
59
64
"functions" ,
60
- [["name" , "myfunc" , "description" , None ]],
65
+ [["name" , "myfunc" , "description" , None , "flags" , [ "no-writes" ] ]],
61
66
],
62
67
]
63
68
assert r .function_list () == res
64
69
assert r .function_list (library = "*lib" ) == res
65
- assert r .function_list (withcode = True )[0 ][9 ] == function
70
+ assert (
71
+ r .function_list (withcode = True )[0 ][7 ]
72
+ == f"#!{ engine } name={ lib } \n { function } "
73
+ )
66
74
67
75
@pytest .mark .onlycluster
68
76
def test_function_list_on_cluster (self , r ):
69
- r .function_load ("Lua" , "mylib" , function )
77
+ r .function_load (f"#! { engine } name= { lib } \n { function } " )
70
78
function_list = [
71
79
[
72
80
"library_name" ,
73
81
"mylib" ,
74
82
"engine" ,
75
83
"LUA" ,
76
- "description" ,
77
- None ,
78
84
"functions" ,
79
- [["name" , "myfunc" , "description" , None ]],
85
+ [["name" , "myfunc" , "description" , None , "flags" , [ "no-writes" ] ]],
80
86
],
81
87
]
82
88
primaries = r .get_primaries ()
@@ -86,33 +92,36 @@ def test_function_list_on_cluster(self, r):
86
92
assert r .function_list () == res
87
93
assert r .function_list (library = "*lib" ) == res
88
94
node = primaries [0 ].name
89
- assert r .function_list (withcode = True )[node ][0 ][9 ] == function
95
+ assert (
96
+ r .function_list (withcode = True )[node ][0 ][7 ]
97
+ == f"#!{ engine } name={ lib } \n { function } "
98
+ )
90
99
91
100
def test_fcall (self , r ):
92
- r .function_load ("Lua" , "mylib" , set_function )
93
- r .function_load ("Lua" , "mylib2" , get_function )
101
+ r .function_load (f"#! { engine } name= { lib } \n { set_function } " )
102
+ r .function_load (f"#! { engine } name= { lib2 } \n { get_function } " )
94
103
assert r .fcall ("set" , 1 , "foo" , "bar" ) == "OK"
95
104
assert r .fcall ("get" , 1 , "foo" ) == "bar"
96
105
with pytest .raises (ResponseError ):
97
106
r .fcall ("myfunc" , 0 , "hello" )
98
107
99
108
def test_fcall_ro (self , r ):
100
- r .function_load ("Lua" , "mylib" , function )
109
+ r .function_load (f"#! { engine } name= { lib } \n { function } " )
101
110
assert r .fcall_ro ("myfunc" , 0 , "hello" ) == "hello"
102
- r .function_load ("Lua" , "mylib2" , set_function )
111
+ r .function_load (f"#! { engine } name= { lib2 } \n { set_function } " )
103
112
with pytest .raises (ResponseError ):
104
113
r .fcall_ro ("set" , 1 , "foo" , "bar" )
105
114
106
115
def test_function_dump_restore (self , r ):
107
- r .function_load ("Lua" , "mylib" , set_function )
116
+ r .function_load (f"#! { engine } name= { lib } \n { set_function } " )
108
117
payload = r .function_dump ()
109
118
assert r .fcall ("set" , 1 , "foo" , "bar" ) == "OK"
110
119
r .function_delete ("mylib" )
111
120
with pytest .raises (ResponseError ):
112
121
r .fcall ("set" , 1 , "foo" , "bar" )
113
122
assert r .function_restore (payload )
114
123
assert r .fcall ("set" , 1 , "foo" , "bar" ) == "OK"
115
- r .function_load ("Lua" , "mylib2" , get_function )
124
+ r .function_load (f"#! { engine } name= { lib2 } \n { get_function } " )
116
125
assert r .fcall ("get" , 1 , "foo" ) == "bar"
117
126
r .function_delete ("mylib" )
118
127
assert r .function_restore (payload , "FLUSH" )
0 commit comments