File: session.storage.test.lua

package info (click to toggle)
tarantool 2.6.0-1.4
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 85,412 kB
  • sloc: ansic: 513,775; cpp: 69,493; sh: 25,650; python: 19,190; perl: 14,973; makefile: 4,178; yacc: 1,329; sql: 1,074; pascal: 620; ruby: 190; awk: 18; lisp: 7
file content (60 lines) | stat: -rwxr-xr-x 2,063 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#!/usr/bin/env tarantool

local tap = require('tap')
local test = tap.test('session')
local net_box = require("net.box")

local test_run = require('test_run')
local inspector = test_run.new()

test:plan(15)

test:is(
    inspector:cmd("create server session_storage with script='box/tiny.lua'\n"),
    true, 'instance created'
)
test:is(
    inspector:cmd('start server session_storage'),
    true, 'instance started'
)

local uri = inspector:eval('session_storage', 'box.cfg.listen')[1]
conn1 = net_box.connect(uri)

conn1:eval("session = box.session")
test:is(conn1:eval("return type(session.id())"), "number", "session.id()")
test:ok(conn1:eval("return session.unknown_field == nil"), "no field")


test:is(conn1:eval("return type(session.storage)"), "table", "storage")
conn1:eval("session.storage.abc = 'cde'")
test:is(conn1:eval("return session.storage.abc"), "cde", "written to storage")

conn1:eval("all = getmetatable(session).aggregate_storage")
test:ok(conn1:eval("return all[session.id()].abc == 'cde'"), "check meta table")


conn2 = net_box.connect(uri)

test:is(conn2:eval("return type(session.storage)"), "table", "storage")
test:isnil(conn2:eval("return type(session.storage.abc)"), "empty storage")
conn2:eval("session.storage.abc = 'def'")
test:ok(conn2:eval("return session.storage.abc == 'def'"), "written to storage")

test:ok(conn1:eval("return session.storage.abc == 'cde'"), "first conn storage")
test:ok(conn1:eval("return all[session.id()].abc == 'cde'"), "check first conn metatable")
test:ok(conn2:eval("return all[session.id()].abc == 'def'"), "check second conn metatable")

tres1 = conn1:eval("t1 = {} for k, v in pairs(all) do table.insert(t1, v.abc) end return t1")

conn1:close()
conn2:close()
conn3 = net_box.connect(uri)
tres2 = conn3:eval("t2 = {} for k, v in pairs(all) do table.insert(t2, v.abc) end return t2")
table.sort(tres1)
table.sort(tres2)
test:is(tres1[1], "cde", "check after closing")
test:is(#tres2, 0, "check after closing")
conn3:close()
inspector:cmd('stop server session_storage with cleanup=1')
os.exit(0)