示例#1
0
 def testRedisLPUSHListOfValues(self):
     db = yield redis.Connection(REDIS_HOST, REDIS_PORT, reconnect=False)
     yield db.delete("trex:LPUSH")
     yield db.lpush("trex:LPUSH", [1, 2, 3])
     result = yield db.lrange("trex:LPUSH", 0, -1)
     self.assertEqual(result, [3, 2, 1])
     yield db.disconnect()
示例#2
0
 def setUp(self):
     self.db = yield redis.Connection(REDIS_HOST,
                                      REDIS_PORT,
                                      reconnect=False)
     self.db1 = None
     self.redis_2_6 = yield self.is_redis_2_6()
     yield self.db.script_flush()
示例#3
0
    def testRedisPublish(self):
        db = yield redis.Connection(REDIS_HOST, REDIS_PORT, reconnect=False)

        for value in ("foo", "bar"):
            yield db.publish("test_publish", value)

        yield db.disconnect()
示例#4
0
    def testRedisError(self):
        db = yield redis.Connection(REDIS_HOST, REDIS_PORT, reconnect=False)
        yield db.set('trex:a', 'test')
        try:
            yield db.sort('trex:a', end='a')
        except trex.exceptions.RedisError:
            pass
        else:
            yield db.disconnect()
            self.fail('RedisError not raised')

        try:
            yield db.incr('trex:a')
        except trex.exceptions.ResponseError:
            pass
        else:
            yield db.disconnect()
            self.fail('ResponseError not raised on redis error')
        yield db.disconnect()
        try:
            yield db.get('trex:a')
        except trex.exceptions.ConnectionError:
            pass
        else:
            self.fail('ConnectionError not raised')
示例#5
0
 def testRedisRPUSHSingleValue(self):
     db = yield redis.Connection(REDIS_HOST, REDIS_PORT, reconnect=False)
     yield db.delete("trex:RPUSH")
     yield db.lpush("trex:RPUSH", "singlevalue")
     result = yield db.lpop("trex:RPUSH")
     self.assertEqual(result, "singlevalue")
     yield db.disconnect()
示例#6
0
    def testRedisHSetHGet(self):
        db = yield redis.Connection(REDIS_HOST, REDIS_PORT, reconnect=False)
        for hk in ("foo", "bar"):
            yield db.hset("trex:HSetHGet", hk, 1)
            result = yield db.hget("trex:HSetHGet", hk)
            self.assertEqual(result, 1)

        yield db.disconnect()
示例#7
0
    def test_ConnectionDB1(self):

        db = yield redis.Connection(REDIS_HOST,
                                    REDIS_PORT,
                                    dbid=1,
                                    reconnect=False)
        yield self._assert_simple_sets_on_pipeline(db=db)
        yield db.disconnect()
示例#8
0
    def testRedisHGetAll(self):
        db = yield redis.Connection(REDIS_HOST, REDIS_PORT, reconnect=False)

        d = {u"key1": u"uno", u"key2": u"dos"}
        yield db.hmset("trex:HGetAll", d)
        s = yield db.hgetall("trex:HGetAll")

        self.assertEqual(d, s)
        yield db.disconnect()
示例#9
0
    def test_charset_None(self):
        db = yield redis.Connection(charset=None)

        yield db.set(self.TEST_KEY, self.TEST_VALUE_BINARY)
        result = yield db.get(self.TEST_KEY)
        self.assertTrue(type(result) == str)
        self.assertEqual(result, self.TEST_VALUE_BINARY)

        yield db.delete(self.TEST_KEY)
        yield db.disconnect()
示例#10
0
    def testWatchEdgeCase_1(self):
        rapi = yield redis.Connection(REDIS_HOST, REDIS_PORT)

        tx = yield rapi.multi("foobar")
        yield tx.unwatch()
        self.assertTrue(tx.inTransaction)
        yield tx.discard()
        self.assertFalse(tx.inTransaction)

        yield rapi.disconnect()
示例#11
0
    def testRedisOperationTime(self):
        db = yield redis.Connection(REDIS_HOST, REDIS_PORT, reconnect=False)

        time = yield db.time()
        self.assertIsInstance(time, list)
        self.assertEqual(len(time), 2)
        self.assertIsInstance(time[0], int)
        self.assertIsInstance(time[1], int)

        yield db.disconnect()
示例#12
0
    def test_charset_default(self):
        db = yield redis.Connection()

        yield db.set(self.TEST_KEY, self.TEST_VALUE_UNICODE)
        result = yield db.get(self.TEST_KEY)
        self.assertTrue(type(result) == unicode)
        self.assertEqual(result, self.TEST_VALUE_UNICODE)

        yield db.delete(self.TEST_KEY)
        yield db.disconnect()
示例#13
0
    def testRedisWithWatchAndMulti(self):
        rapi = yield redis.Connection(REDIS_HOST, REDIS_PORT)

        tx = yield rapi.watch("trex:testRedisWithWatchAndMulti")
        yield tx.multi()
        yield tx.unwatch()
        self.assertTrue(tx.inTransaction)
        yield tx.commit()
        self.assertFalse(tx.inTransaction)

        yield rapi.disconnect()
示例#14
0
    def testRedisOperations1(self):
        db = yield redis.Connection(REDIS_HOST, REDIS_PORT, reconnect=False)

        # test set() operation
        kvpairs = (("trex:test1", "foo"), ("trex:test2", "bar"))
        for key, value in kvpairs:
            yield db.set(key, value)
            result = yield db.get(key)
            self.assertEqual(result, value)

        yield db.disconnect()
示例#15
0
    def testWatchEdgeCase_2(self):
        rapi = yield redis.Connection(REDIS_HOST, REDIS_PORT)

        tx = yield rapi.multi()
        try:
            yield tx.watch("foobar")
        except trex.exceptions.ResponseError:
            pass
        yield tx.unwatch()
        self.assertTrue(tx.inTransaction)
        yield tx.discard()
        self.assertFalse(tx.inTransaction)
        yield rapi.disconnect()
示例#16
0
    def testRedisWithOnlyWatchUnwatch(self):
        rapi = yield redis.Connection(REDIS_HOST, REDIS_PORT)

        k = "trex:testRedisWithOnlyWatchAndUnwatch"
        tx = yield rapi.watch(k)
        self.assertTrue(tx.inTransaction)
        yield tx.set(k, "bar")
        v = yield tx.get(k)
        self.assertEqual("bar", v)
        yield tx.unwatch()
        self.assertFalse(tx.inTransaction)

        yield rapi.disconnect()
示例#17
0
    def testRedisHIncrBy(self):
        db = yield redis.Connection(REDIS_HOST, REDIS_PORT, reconnect=False)
        yield db.hset("trex:HIncrBy", "value", 1)
        yield db.hincr("trex:HIncrBy", "value")
        yield db.hincrby("trex:HIncrBy", "value", 2)
        result = yield db.hget("trex:HIncrBy", "value")
        self.assertEqual(result, 4)

        yield db.hincrby("trex:HIncrBy", "value", 10)
        yield db.hdecr("trex:HIncrBy", "value")
        result = yield db.hget("trex:HIncrBy", "value")
        self.assertEqual(result, 13)

        yield db.disconnect()
示例#18
0
    def testRedisHMSetHMGet(self):
        db = yield redis.Connection(REDIS_HOST, REDIS_PORT, reconnect=False)
        t_dict = {}
        t_dict['key1'] = 'uno'
        t_dict['key2'] = 'dos'
        yield db.hmset("trex:HMSetHMGet", t_dict)
        ks = t_dict.keys()
        ks.reverse()
        vs = t_dict.values()
        vs.reverse()
        res = yield db.hmget("trex:HMSetHMGet", ks)
        self.assertEqual(vs, res)

        yield db.disconnect()
示例#19
0
    def testRedisOperations2(self):
        db = yield redis.Connection(REDIS_HOST, REDIS_PORT, reconnect=False)

        k = ["trex:a", "trex:b"]
        v = [1, 2]
        yield db.mset(dict(zip(k, v)))
        values = yield db.mget(k)
        self.assertEqual(values, v)

        k = ['trex:a', 'trex:notset', 'trex:b']
        values = yield db.mget(k)
        self.assertEqual(values, [1, None, 2])

        yield db.disconnect()
示例#20
0
    def testRedisConnection(self):
        rapi = yield redis.Connection(REDIS_HOST, REDIS_PORT)

        # test set() operation
        transaction = yield rapi.multi("trex:test_transaction")
        self.assertTrue(transaction.inTransaction)
        for key, value in (("trex:test_transaction", "foo"),
                           ("trex:test_transaction", "bar")):
            yield transaction.set(key, value)
        yield transaction.commit()
        self.assertFalse(transaction.inTransaction)
        result = yield rapi.get("trex:test_transaction")
        self.assertEqual(result, "bar")

        yield rapi.disconnect()
示例#21
0
    def testRedisHKeysHVals(self):
        db = yield redis.Connection(REDIS_HOST, REDIS_PORT, reconnect=False)
        t_dict = {}
        t_dict['key1'] = 'uno'
        t_dict['key2'] = 'dos'
        yield db.hmset("trex:HKeysHVals", t_dict)

        vs_u = [unicode(v) for v in t_dict.values()]
        ks_u = [unicode(k) for k in t_dict.keys()]
        k_res = yield db.hkeys("trex:HKeysHVals")
        v_res = yield db.hvals("trex:HKeysHVals")
        self.assertEqual(ks_u, k_res)
        self.assertEqual(vs_u, v_res)

        yield db.disconnect()
示例#22
0
    def testRedisOperationsSet2(self):
        db = yield redis.Connection(REDIS_HOST, REDIS_PORT, reconnect=False)
        key, value = "trex:test_exists", "foo"
        # ensure value does not exits and new value sets
        yield db.delete(key)
        yield db.set(key, value, only_if_not_exists=True)
        result_1 = yield db.get(key)
        self.assertEqual(result_1, value)

        # new values not set cos, values exists
        yield db.set(key, "foo2", only_if_not_exists=True)
        result_2 = yield db.get(key)
        # nothing changed result is same "foo"
        self.assertEqual(result_2, value)
        yield db.disconnect()
示例#23
0
    def testRedisOperationsSet3(self):
        db = yield redis.Connection(REDIS_HOST, REDIS_PORT, reconnect=False)
        key, value = "trex:test_not_exists", "foo_not_exists"
        # ensure that such key does not exits, and value not sets
        yield db.delete(key)
        yield db.set(key, value, only_if_exists=True)
        result_1 = yield db.get(key)
        self.assertEqual(result_1, None)

        # ensure key exits, and value updates
        yield db.set(key, value)
        yield db.set(key, "foo", only_if_exists=True)
        result_2 = yield db.get(key)
        self.assertEqual(result_2, "foo")
        yield db.disconnect()
示例#24
0
    def testRedisHLenHDelMulti(self):
        db = yield redis.Connection(REDIS_HOST, REDIS_PORT, reconnect=False)
        t_dict = {}
        t_dict['key1'] = 'uno'
        t_dict['key2'] = 'dos'

        s = yield db.hmset("trex:HDelHExists", t_dict)
        r_len = yield db.hlen("trex:HDelHExists")
        self.assertEqual(r_len, 2)

        s = yield db.hdel("trex:HDelHExists", ["key1", "key2"])
        r_len = yield db.hlen("trex:HDelHExists")
        self.assertEqual(r_len, 0)

        s = yield db.hexists("trex:HDelHExists", ["key1", "key2"])
        self.assertEqual(s, 0)

        yield db.disconnect()
示例#25
0
    def testNestedMultiBulkTransaction(self):
        db = yield redis.Connection(REDIS_HOST, REDIS_PORT, reconnect=False)

        test1 = {u"foo1": u"bar1", u"something": u"else"}
        test2 = {u"foo2": u"bar2", u"something": u"else"}

        t = yield db.multi()
        yield t.hmset("trex:nmb:test1", test1)
        yield t.hgetall("trex:nmb:test1")
        yield t.hmset("trex:nmb:test2", test2)
        yield t.hgetall("trex:nmb:test2")
        r = yield t.commit()

        self.assertEqual(r[0], "OK")
        self.assertEqual(sorted(r[1].keys()), sorted(test1.keys()))
        self.assertEqual(sorted(r[1].values()), sorted(test1.values()))
        self.assertEqual(r[2], "OK")
        self.assertEqual(sorted(r[3].keys()), sorted(test2.keys()))
        self.assertEqual(sorted(r[3].values()), sorted(test2.values()))

        yield db.disconnect()
示例#26
0
 def test_script_kill(self):
     self._skipCheck()
     try:
         result = yield self.db.script_kill()
     except trex.exceptions.NoScriptRunning:
         pass
     except:
         raise self.failureException(
             '%s raised instead of %s:\n %s' %
             (sys.exc_info()[0], 'trex.exceptions.NoScriptRunning',
              failure.Failure().getTraceback()))
     else:
         raise self.failureException(
             '%s not raised (%r returned)' %
             ('trex.exceptions.ResponseError', result))
     # Run an infinite loop script from one connection
     # and kill it from another.
     inf_loop = "while 1 do end"
     self.db1 = yield redis.Connection(REDIS_HOST,
                                       REDIS_PORT,
                                       reconnect=False)
     eval_deferred = self.db1.eval(inf_loop)
     reactor.iterate()
     r = yield self.db.script_kill()
     self.assertEqual(r, 'OK')
     try:
         result = yield eval_deferred
     except trex.exceptions.ResponseError:
         pass
     except:
         raise self.failureException(
             '%s raised instead of %s:\n %s' %
             (sys.exc_info()[0], 'trex.exceptions.ResponseError',
              failure.Failure().getTraceback()))
     else:
         raise self.failureException(
             '%s not raised (%r returned)' %
             ('trex.exceptions.ResponseError', result))
示例#27
0
    def testRedisOperationsSet1(self):
        def sleep(secs):
            d = defer.Deferred()
            reactor.callLater(secs, d.callback, None)
            return d

        db = yield redis.Connection(REDIS_HOST, REDIS_PORT, reconnect=False)
        key, value = "trex:test1", "foo"
        # test expiration in milliseconds
        yield db.set(key, value, pexpire=10)
        result_1 = yield db.get(key)
        self.assertEqual(result_1, value)
        yield sleep(0.015)
        result_2 = yield db.get(key)
        self.assertEqual(result_2, None)

        # same thing but timeout in seconds
        yield db.set(key, value, expire=1)
        result_3 = yield db.get(key)
        self.assertEqual(result_3, value)
        yield sleep(1.001)
        result_4 = yield db.get(key)
        self.assertEqual(result_4, None)
        yield db.disconnect()
示例#28
0
 def test_Connection(self):
     db = yield redis.Connection(REDIS_HOST, REDIS_PORT, reconnect=False)
     self.assertEqual(isinstance(db, redis.ConnectionHandler), True)
     yield db.disconnect()
示例#29
0
 def setUp(self):
     self.db = yield redis.Connection(REDIS_HOST,
                                      REDIS_PORT,
                                      reconnect=False)
     self.redis_2_8_9 = yield self.checkVersion(2, 8, 9)
     yield self.db.delete(*self._KEYS)
示例#30
0
 def setUp(self):
     self.db = yield redis.Connection(REDIS_HOST, REDIS_PORT,
                                      reconnect=False)