source: OpenRLabs-Git/deploy/rlabs-docker/web2py-rlabs/gluon/tests/test_redis.py @ 42095c5

mainqndtest v1.1.1
Last change on this file since 42095c5 was 42bd667, checked in by David Fuertes <dfuertes@…>, 4 years ago

Historial Limpio

  • Property mode set to 100755
File size: 2.9 KB
Line 
1#!/usr/bin/env python
2# -*- coding: utf-8 -*-
3
4""" Unit tests for redis """
5
6import unittest
7from datetime import datetime
8
9from gluon._compat import to_bytes, pickle
10from gluon.storage import Storage
11from gluon.utils import web2py_uuid
12from gluon.globals import Request, Response, Session, current
13from gluon.contrib.redis_utils import RConn
14from gluon.contrib.redis_session import RedisSession
15from gluon.contrib.redis_cache import RedisCache
16
17
18class TestRedis(unittest.TestCase):
19    """ Tests the Redis contrib packages """
20    def setUp(self):
21        request = Request(env={})
22        request.application = 'a'
23        request.controller = 'c'
24        request.function = 'f'
25        request.folder = 'applications/admin'
26        response = Response()
27        session = Session()
28        session.connect(request, response)
29        from gluon.globals import current
30        current.request = request
31        current.response = response
32        current.session = session
33        self.current = current
34        rconn = RConn(host='localhost')
35        self.db = RedisSession(redis_conn=rconn, session_expiry=False)
36        self.tname = 'testtablename'
37        return current
38
39    def test_0_redis_session(self):
40        """ Basic redis read-write """
41        db = self.db
42        response = self.current.response
43        Field = db.Field
44        db.define_table(
45            self.tname,
46            Field('locked', 'boolean', default=False),
47            Field('client_ip', length=64),
48            Field('created_datetime', 'datetime',
49                  default=datetime.now().isoformat()),
50            Field('modified_datetime', 'datetime'),
51            Field('unique_key', length=64),
52            Field('session_data', 'blob'),
53        )
54        table = db[self.tname]
55        unique_key = web2py_uuid()
56        dd = dict(
57            locked=0,
58            client_ip=response.session_client,
59            modified_datetime=datetime.now().isoformat(),
60            unique_key=unique_key,
61            session_data=pickle.dumps({'test': 123, 'me': 112312312}, pickle.HIGHEST_PROTOCOL)
62        )
63        record_id = table.insert(**dd)
64        data_from_db = db(table.id == record_id).select()[0]
65        self.assertDictEqual(Storage(dd), data_from_db, 'get inserted dict')
66
67        dd['locked'] = 1
68        table._db(table.id == record_id).update(**dd)
69        data_from_db = db(table.id == record_id).select()[0]
70        self.assertDictEqual(Storage(dd), data_from_db, 'get the updated value')
71
72    def test_1_redis_delete(self):
73        """ Redis session get and delete sessions """
74        db = self.db
75        table = db[self.tname]
76        all_sessions = db(table.id > 0).select()
77        self.assertIsNotNone(all_sessions, 'we must have some keys in db')
78
79        for entry in all_sessions:
80            res = entry.delete_record()
81            self.assertIsNone(res, 'delete should return None')
82
83        empty_sessions = db(table.id > 0).select()
84        self.assertEqual(empty_sessions, [], 'no sessions left')
85
Note: See TracBrowser for help on using the repository browser.