File: test_gets.py

package info (click to toggle)
nutcracker 0.4.1%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye, buster, stretch
  • size: 1,388 kB
  • ctags: 1,493
  • sloc: ansic: 14,328; python: 1,147; sh: 854; makefile: 105
file content (108 lines) | stat: -rw-r--r-- 2,513 bytes parent folder | download
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
#!/usr/bin/env python
#coding: utf-8

import os
import sys
import redis
import memcache

PWD = os.path.dirname(os.path.realpath(__file__))
WORKDIR = os.path.join(PWD,  '../')
sys.path.append(os.path.join(WORKDIR, 'lib/'))
sys.path.append(os.path.join(WORKDIR, 'conf/'))
import conf

from server_modules import *
from utils import *

CLUSTER_NAME = 'ntest'
all_mc= [
        Memcached('127.0.0.1', 2200, '/tmp/r/memcached-2200/', CLUSTER_NAME, 'mc-2200'),
        Memcached('127.0.0.1', 2201, '/tmp/r/memcached-2201/', CLUSTER_NAME, 'mc-2201'),
    ]

nc_verbose = int(getenv('T_VERBOSE', 4))
mbuf = int(getenv('T_MBUF', 512))
large = int(getenv('T_LARGE', 1000))

nc = NutCracker('127.0.0.1', 4100, '/tmp/r/nutcracker-4100', CLUSTER_NAME,
                all_mc, mbuf=mbuf, verbose=nc_verbose, is_redis=False)

def setup():
    for r in all_mc:
        r.deploy()
        r.stop()
        r.start()

    nc.deploy()
    nc.stop()
    nc.start()

def teardown():
    for r in all_mc:
        r.stop()
    assert(nc._alive())
    nc.stop()

def getconn():
    host_port = '%s:%s' % (nc.host(), nc.port())
    return memcache.Client([host_port])

def test_basic():
    conn = getconn()
    conn.set('k', 'v')
    assert('v' == conn.get('k'))

    conn.set("key", "1")
    for i in range(10):
        conn.incr("key")
        assert(str(i+2) == conn.get('key'))

    conn.delete("key")
    assert(None == conn.get('key'))

default_kv = {'kkk-%s' % i :'vvv-%s' % i for i in range(10)}
def test_mget_mset(kv=default_kv):
    conn = getconn()
    conn.set_multi(kv)
    keys = sorted(kv.keys())

    assert(conn.get_multi(keys) == kv)
    assert(conn.gets_multi(keys) == kv)

    #del
    conn.delete_multi(keys)
    #mget again
    vals = conn.get_multi(keys)
    assert({} == vals)

def test_mget_mset_large():
    for cnt in range(179, large, 179):
        #print 'test', cnt
        kv = {'kkk-%s' % i :'vvv-%s' % i for i in range(cnt)}
        test_mget_mset(kv)

def test_mget_mset_key_not_exists(kv=default_kv):
    conn = getconn()
    conn.set_multi(kv)

    keys = kv.keys()
    keys2 = ['x-'+k for k in keys]
    keys = keys + keys2
    random.shuffle(keys)

    for i in range(2):
        #mget to check
        vals = conn.get_multi(keys)
        for i, k in enumerate(keys):
            if k in kv:
                assert(kv[k] == vals[k])
            else:
                assert(k not in vals)

    #del
    conn.delete_multi(keys)
    #mget again
    vals = conn.get_multi(keys)
    assert({} == vals)