def clone_redis(target, creds=False): if not os.path.exists("dump"): os.makedirs("dump") elif not os.path.exists("dump/redis"): os.makedirs("dump/redis") print(colored("[-] Clone Module For NoSQL Framework Launched ..", 'blue')) try: content = redisdl.dumps(str(target), 6379) file = open("./dump/redis/" + str(target) + ".rdb", "w") file.write(content) file.close() print(colored( "[-] Dumped Successfully Find the logs @ ./dump/redis/" + target + ".rdb", 'green')) except redis.exceptions.ResponseError: print(colored("[-] Authentication Required \n", 'red')) if creds: print(colored("[~] Retrying with creds Enabled", 'yellow')) content = redisdl.dumps(str(target), 6379, creds) file = open("./dump/redis/" + str(target) + ".rdb", "w") file.write(content) file.close() print(colored( "[+] Dumped Successfully Find the logs @ ./dump/redis/" + target + ".rdb\n", 'green')) else: print(colored("[-] Dump Failed \n", 'red'))
def clone_redis(target): if not os.path.exists("dump"): os.makedirs("dump") elif not os.path.exists("dump/redis"): os.makedirs("dump/redis") print colored("[-] Clone Module For NoSQL Framework Launched ..", 'blue') try: content = redisdl.dumps(str(target), 6379) file = open("./dump/redis/" + str(target) + ".rdb", "w") file.write(content) file.close() print colored( "[-] Dumped Successfully Find the logs @ ./dump/redis/" + target + ".rdb", 'green') except redis.exceptions.ResponseError: print colored("[-] Authentication Required \n", 'red') choice = raw_input( colored("[-] Do u want to enter a password \n", 'yellow')) if choice.lower() == 'y': passw = raw_input(colored("[-] Enter the password ", 'green')) content = redisdl.dumps(str(target), 6379, passw) file = open("./dump/redis/" + str(target) + ".rdb", "w") file.write(content) file.close() print colored( "[-] Dumped Successfully Find the logs @ ./dump/redis/" + target + ".rdb\n", 'green') else: print colored("[-] Dump Failed \n", 'red')
def test_dump_latin1(self): self.r = redis.Redis(charset='latin1') self.r.set('key', util.b('\xa9')) dump = redisdl.dumps(encoding='latin1') actual = json.loads(dump) expected = {'key': {'type': 'string', 'value': util.u("\u00a9")}} self.assertEqual(expected, actual)
def test_dump_utf16(self): self.r = redis.Redis(charset='utf-16') self.r.set(util.u('key'), util.b('\xff\xfeh\x00e\x00l\x00l\x00o\x00')) dump = redisdl.dumps(encoding='utf-16') actual = json.loads(dump) expected = {'key': {'type': 'string', 'value': util.u("hello")}} self.assertEqual(expected, actual)
def test_dump_specified_keys(self): self.r.set('key', 'value') self.r.set('ignore_key', 'value') dump = redisdl.dumps(keys='k*') actual = json.loads(dump) expected = {'key': {'type': 'string', 'value': 'value'}} self.assertEqual(expected, actual)
def test_dump_specified_keys(self): self.r.set("key", "value") self.r.set("ignore_key", "value") dump = redisdl.dumps(keys="k*") actual = json.loads(dump) expected = {"key": {"type": "string", "value": "value"}} self.assertEqual(expected, actual)
def test_no_ttl_dumps(self): self.r.set("a", "aaa") dump = redisdl.dumps(keys="a") actual = json.loads(dump) self.assertTrue("ttl" not in actual["a"]) self.assertTrue("expireat" not in actual["a"])
def test_no_ttl_dumps(self): self.r.set('a', 'aaa') dump = redisdl.dumps(keys='a') actual = json.loads(dump) self.assertTrue('ttl' not in actual['a']) self.assertTrue('expireat' not in actual['a'])
def test_dump_unicode_value(self): self.r.set('key', util.u("\u041c\u043e\u0441\u043a\u0432\u0430")) dump = redisdl.dumps() actual = json.loads(dump) expected = { 'key': { 'type': 'string', 'value': util.u("\u041c\u043e\u0441\u043a\u0432\u0430") } } self.assertEqual(expected, actual)
def test_ttl_precision(self): self.r.set('a', 'aaa') self.r.pexpire('a', 3600500) start_time = _time.time() dump = redisdl.dumps(keys='a') end_time = _time.time() actual = json.loads(dump) ttl = actual['a']['ttl'] assert int((ttl - int(ttl)) * 1000) > 0
def test_ttl_precision(self): self.r.set("a", "aaa") self.r.pexpire("a", 3600500) start_time = _time.time() dump = redisdl.dumps(keys="a") end_time = _time.time() actual = json.loads(dump) ttl = actual["a"]["ttl"] assert int((ttl - int(ttl)) * 1000) > 0
def check_load(self, cmd, path): with open(path) as f: dump = f.read() subprocess.check_call(cmd) redump = redisdl.dumps() expected = json.loads(dump) actual = json.loads(redump) self.assertEqual(expected, actual)
def test_load_expireat_preference(self): path = os.path.join(os.path.dirname(__file__), 'fixtures', 'ttl_and_expireat.json') with open(path) as f: dump = f.read() subprocess.check_call([self.program, '-l', '-A', path]) redump = redisdl.dumps() actual = json.loads(redump) self.assertGreater(actual['akey']['ttl'], 36000)
def test_load_unicode(self): path = os.path.join(os.path.dirname(__file__), 'fixtures', 'dump-unicode.json') with open(path) as f: dump = f.read() subprocess.check_call([self.program, '-l', path]) redump = redisdl.dumps() actual = json.loads(redump) self.maxDiff = None self.assertEqual(unicode_dump, actual)
def test_roundtrip_pretty(self): path = os.path.join(os.path.dirname(__file__), "fixtures", "dump.json") with open(path) as f: dump = f.read() redisdl.loads(dump) redump = redisdl.dumps(pretty=True) expected = json.loads(dump) actual = json.loads(redump) self.assertEqual(expected, actual)
def test_ttl_dumps(self): self.r.set("a", "aaa") self.r.expire("a", 3600) start_time = _time.time() dump = redisdl.dumps(keys="a") end_time = _time.time() actual = json.loads(dump) self.assertGreater(actual["a"]["ttl"], 0) self.assertLessEqual(actual["a"]["ttl"], 3600) self.assertGreaterEqual(actual["a"]["expireat"], int(start_time) + 3600) self.assertLessEqual(actual["a"]["expireat"], int(end_time) + 1 + 3600)
def test_roundtrip(self): path = os.path.join(os.path.dirname(__file__), 'fixtures', 'dump.json') with open(path) as f: dump = f.read() redisdl.loads(dump) redump = redisdl.dumps() expected = json.loads(dump) actual = json.loads(redump) self.assertEqual(expected, actual)
def test_roundtrip_pretty(self): path = os.path.join(os.path.dirname(__file__), 'fixtures', 'dump.json') with open(path) as f: dump = f.read() redisdl.loads(dump) redump = redisdl.dumps(pretty=True) expected = json.loads(dump) actual = json.loads(redump) self.assertEqual(expected, actual)
def test_ttl_dumps(self): self.r.set('a', 'aaa') self.r.expire('a', 3600) start_time = _time.time() dump = redisdl.dumps(keys='a') end_time = _time.time() actual = json.loads(dump) self.assertGreater(actual['a']['ttl'], 0) self.assertLessEqual(actual['a']['ttl'], 3600) self.assertGreaterEqual(actual['a']['expireat'], int(start_time) + 3600) self.assertLessEqual(actual['a']['expireat'], int(end_time) + 1 + 3600)
def clone_redis(target): if not os.path.exists("dump"): os.makedirs("dump") elif not os.path.exists("dump/redis"): os.makedirs("dump/redis") print colored("[-] Clone Module For NoSQL Framework Launched ..",'blue') try: content=redisdl.dumps(str(target),6379) file = open("./dump/redis/"+str(target)+".rdb","w") file.write(content) file.close() print colored("[-] Dumped Successfully Find the logs @ ./dump/redis/"+target+".rdb",'green') except redis.exceptions.ResponseError: print colored("[-] Authentication Required \n",'red') choice=raw_input(colored("[-] Do u want to enter a password \n",'yellow')) if choice.lower()=='y': passw=raw_input(colored("[-] Enter the password ",'green')) content=redisdl.dumps(str(target),6379,passw) file = open("./dump/redis/"+str(target)+".rdb","w") file.write(content) file.close() print colored("[-] Dumped Successfully Find the logs @ ./dump/redis/"+target+".rdb\n",'green') else: print colored("[-] Dump Failed \n",'red')
def check_delete_race(self, suffix): bd = big_data.BigData(self.r) getattr(bd, 'insert_%s' % suffix)(key_count) big_data_path = os.path.join(os.path.dirname(__file__), 'big_data.py') self.data_process = subprocess.Popen( [sys.executable, big_data_path, 'delete', str(key_count)], stdout=subprocess.PIPE, ) _time.sleep(1) start = _time.time() dump = redisdl.dumps() finish = _time.time() out, err = self.data_process.communicate() delete_start, delete_finish = [int(time) for time in out.decode().split(' ')] assert delete_start < start assert finish > start + 5 assert delete_finish > start + 5
def check_delete_race(self, suffix): bd = big_data.BigData(self.r) getattr(bd, 'insert_%s' % suffix)(key_count) big_data_path = os.path.join(os.path.dirname(__file__), 'big_data.py') self.data_process = subprocess.Popen( [sys.executable, big_data_path, 'delete', str(key_count)], stdout=subprocess.PIPE, ) _time.sleep(1) start = _time.time() dump = redisdl.dumps() finish = _time.time() out, err = self.data_process.communicate() delete_start, delete_finish = [ int(time) for time in out.decode().split(' ') ] assert delete_start < start assert finish > start + 5 assert delete_finish > start + 5
def test_dump_unicode_value(self): self.r.set("key", util.u("\u041c\u043e\u0441\u043a\u0432\u0430")) dump = redisdl.dumps() actual = json.loads(dump) expected = {"key": {"type": "string", "value": util.u("\u041c\u043e\u0441\u043a\u0432\u0430")}} self.assertEqual(expected, actual)
def test_dump_string_value(self): self.r.set('key', 'value') dump = redisdl.dumps() actual = json.loads(dump) expected = {'key': {'type': 'string', 'value': 'value'}} self.assertEqual(expected, actual)
def test_dump_string_value(self): self.r.set("key", "value") dump = redisdl.dumps() actual = json.loads(dump) expected = {"key": {"type": "string", "value": "value"}} self.assertEqual(expected, actual)
def dump_redis_to_json(): json_text = redisdl.dumps() with open('tmp/dump.json', 'w') as f: # streams data redisdl.dump(f)
def test_dump_unicode_value(self): self.r.set('key', util.u("\u041c\u043e\u0441\u043a\u0432\u0430")) dump = redisdl.dumps() actual = json.loads(dump) expected = {'key': {'type': 'string', 'value': util.u("\u041c\u043e\u0441\u043a\u0432\u0430")}} self.assertEqual(expected, actual)
# requires pip install redis-dump-load import redisdl json_text = redisdl.dumps() with open('redis-dump.json', 'w') as f: redisdl.dump(f)