Esempio n. 1
0
class TestPeafowl(unittest.TestCase):
    def setUp(self):
        self.memcache = Client(['127.0.0.1:21122'])

    def tearDown(self):
        self.memcache.disconnect_all()

    def test_set_and_get_one_entry(self):
        v = random.randint(1, 32)
        self.assertEqual(None, self.memcache.get('test_set_and_get_one_entry'))
        self.memcache.set('test_set_and_get_one_entry', v)
        self.assertEqual(v, self.memcache.get('test_set_and_get_one_entry'))

    def test_set_with_expiry(self):
        v = random.randint(1, 32)
        self.assertEqual(None, self.memcache.get('test_set_with_expiry'))
        now = time.time()
        self.memcache.set('test_set_with_expiry', v + 2, now)
        self.memcache.set('test_set_with_expiry', v)
        time.sleep(now + 1 - time.time())
        self.assertEqual(v, self.memcache.get('test_set_with_expiry'))

    def test_long_value(self):
        string = ''.join([
            random.choice(
                "abcdefghjkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ23456789")
            for i in range(300)
        ])
        self.memcache.set('test_long_value', string)
        string = self.memcache.get('test_long_value')
        self.assertEqual(len(string), 300)

    def test_stats(self):
        (key, stats) = self.memcache.get_stats()[0]
        self.assertEqual('127.0.0.1:21122 (1)', key)
        keys = [
            'bytes', 'pid', 'time', 'limit_maxbytes', 'cmd_get', 'version',
            'bytes_written', 'cmd_set', 'get_misses', 'total_connections',
            'curr_connections', 'curr_items', 'uptime', 'get_hits',
            'total_items', 'rusage_system', 'rusage_user', 'bytes_read'
        ]
        for key in keys:
            self.assert_(stats.has_key(key), "key '%s' is not in stats" % key)

    def test_unknown_command_returns_valid_result(self):
        response = self.memcache.add('blah', 1)
        self.assertEqual(False, response)

    def test_that_disconnecting_and_reconnecting_works(self):
        v = random.randint(1, 32)
        self.memcache.set('test_that_disconnecting_and_reconnecting_works', v)
        self.memcache.disconnect_all()
        self.assertEqual(
            v,
            int(
                self.memcache.get(
                    'test_that_disconnecting_and_reconnecting_works')))
Esempio n. 2
0
class TestPeafowl(unittest.TestCase):
    def setUp(self):
        self.memcache = Client(['127.0.0.1:21122'])
        
    def tearDown(self):
        self.memcache.disconnect_all()

    def test_set_and_get_one_entry(self):
        v = random.randint(1, 32)
        self.assertEqual(None, self.memcache.get('test_set_and_get_one_entry'))
        self.memcache.set('test_set_and_get_one_entry', v)
        self.assertEqual(v, self.memcache.get('test_set_and_get_one_entry'))
    
    def test_set_with_expiry(self):
        v = random.randint(1, 32)
        self.assertEqual(None, self.memcache.get('test_set_with_expiry'))
        now = time.time()
        self.memcache.set('test_set_with_expiry', v + 2, now)
        self.memcache.set('test_set_with_expiry', v)
        time.sleep(now + 1 - time.time())
        self.assertEqual(v, self.memcache.get('test_set_with_expiry'))

    def test_long_value(self):
        string = ''.join([random.choice("abcdefghjkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ23456789") for i in range(300)])
        self.memcache.set('test_long_value', string)
        string = self.memcache.get('test_long_value')
        self.assertEqual(len(string), 300)

    def test_stats(self):
        (key, stats) = self.memcache.get_stats()[0]
        self.assertEqual('127.0.0.1:21122 (1)', key)
        keys = ['bytes', 'pid', 'time', 'limit_maxbytes', 
                 'cmd_get', 'version', 'bytes_written', 'cmd_set', 
                 'get_misses', 'total_connections', 'curr_connections', 
                 'curr_items', 'uptime', 'get_hits', 'total_items', 
                 'rusage_system', 'rusage_user', 'bytes_read']
        for key in keys:
            self.assert_(stats.has_key(key), "key '%s' is not in stats" % key)
    
    def test_unknown_command_returns_valid_result(self):
        response = self.memcache.add('blah', 1)
        self.assertEqual(False, response)

    def test_that_disconnecting_and_reconnecting_works(self):
        v = random.randint(1, 32)
        self.memcache.set('test_that_disconnecting_and_reconnecting_works', v)
        self.memcache.disconnect_all()
        self.assertEqual(v, int(self.memcache.get('test_that_disconnecting_and_reconnecting_works')))
Esempio n. 3
0
class Queue(BaseQueue):
    def __init__(self, name):
        self._connection = Client(CONN.split(';'))
        self.backend = 'memcached'
        self.name = name
        self._connection.set('%s_head' % self.name, None)
        self._connection.set('%s_len' % self.name, 0)

    def read(self):
        try:
            _head = self._connection.get('%s_head' % self.name)
            if _head:
                value, _next = self._connection.get('%s_%s' %
                                                    (self.name, _head))
                length = self._connection.get('%s_len' % self.name)
                self._connection.set('%s_len' % self.name, length - 1)
                self._connection.delete('%s_%s' % (self.name, _head))
                self._connection.set('%s_head' % self.name, _next)
                return value
            else:
                return None
        except Exception:
            pass

    def write(self, message):
        try:
            _head = self._connection.get('%s_head' % self.name)
            _label = str(uuid1())
            _node_value = (message, _head)
            self._connection.set('%s_%s' % (self.name, _label), _node_value)
            length = self._connection.get('%s_len' % self.name)
            self._connection.set('%s_len' % self.name, length + 1)
            self._connection.set('%s_head' % self.name, _label)
            return True
        except Exception:
            pass

    def __len__(self):
        try:
            try:
                return self._connection.get('%s_len' % self.name)
            except Exception:
                pass
        except AttributeError:
            # If this memcached backend doesn't support starling-style stats
            # or if this queue doesn't exist
            return 0

    def __repr__(self):
        return "<Queue %s>" % self.name
Esempio n. 4
0
class Queue(BaseQueue):
    def __init__(self, name):
        self._connection = Client(CONN.split(';'))
        self.backend = 'memcached'
        self.name = name
        self._connection.set('%s_head' % self.name, None)
        self._connection.set('%s_len' % self.name, 0)

    def read(self):
        try:
            _head = self._connection.get('%s_head' % self.name)
            if _head:
                value, _next = self._connection.get('%s_%s' % (self.name, _head))
                length = self._connection.get('%s_len' % self.name)
                self._connection.set('%s_len' % self.name, length - 1)
                self._connection.delete('%s_%s' % (self.name, _head))
                self._connection.set('%s_head' % self.name, _next)
                return value
            else:
                return None
        except Exception:
            pass

    def write(self, message):
        try:
            _head = self._connection.get('%s_head' % self.name)
            _label = str(uuid1())
            _node_value = (message, _head)
            self._connection.set('%s_%s' % (self.name, _label), _node_value)
            length = self._connection.get('%s_len' % self.name)
            self._connection.set('%s_len' % self.name, length + 1)
            self._connection.set('%s_head' % self.name, _label)
            return True
        except Exception:
            pass

    def __len__(self):
        try:
            try:
                return self._connection.get('%s_len' % self.name)
            except Exception:
                pass
        except AttributeError:
            # If this memcached backend doesn't support starling-style stats
            # or if this queue doesn't exist
            return 0

    def __repr__(self):
        return "<Queue %s>" % self.name