def test_consumer_group_stream_creation(self): cg = db.consumer_group('cg1', ['stream-a', 'stream-b']) self.assertFalse(db.exists('stream-a')) self.assertFalse(db.exists('stream-b')) cg.create() # The streams were created (by adding and then deleting a message). self.assertTrue(db.exists('stream-a')) self.assertTrue(db.exists('stream-b')) # The streams that were automatically created will not have any data. self.assertEqual(db.xlen('stream-a'), 0) self.assertEqual(db.xlen('stream-b'), 0) # If a stream already exists that's OK. db.xadd('stream-c', {'data': 'dummy'}, id=b'1') cg = db.consumer_group('cg2', ['stream-c', 'stream-d']) self.assertTrue(db.exists('stream-c')) self.assertEqual(db.type('stream-c'), b'stream') self.assertFalse(db.exists('stream-d')) cg.create() self.assertTrue(db.exists('stream-d')) self.assertEqual(db.type('stream-c'), b'stream') self.assertEqual(db.type('stream-d'), b'stream') self.assertEqual(db.xlen('stream-c'), 1) self.assertEqual(db.xlen('stream-d'), 0) # If a stream key already exists and is a different type, fail. db.lpush('l1', 'item-1') db.hset('h1', 'key', 'data') db.sadd('s1', 'item-1') db.set('k1', 'v1') db.zadd('z1', {'item-1': 1.0}) for key in ('l1', 'h1', 's1', 'k1', 'z1'): cg = db.consumer_group('cg-%s' % key, keys=[key]) self.assertRaises(ValueError, cg.create)
def _create_test_data(self): return (db.xadd('sa', {'k': 'a1'}, b'1'), db.xadd('sb', {'k': 'b1'}, b'2'), db.xadd('sa', {'k': 'a2'}, b'3'), db.xadd('sb', {'k': 'b2'}, b'4'), db.xadd('sb', {'k': 'b3'}, b'5'))