def test_init(self): fdb = FriendlyDB(host=self.host, port=self.port, db=self.db) self.assertEqual(fdb.host, self.host) self.assertEqual(fdb.port, self.port) self.assertEqual(fdb.db, self.db) self.assertEqual(fdb.user_klass, FriendlyUser) self.assertEqual(fdb.separator, None) self.assertTrue(fdb.is_setup)
def setup(options): # Feel gross about this but just sucking it up for now. global fdb if not options.data_directory: print("The -d flag is required!") sys.exit() fdb = FriendlyDB(options.data_directory, options.hash_width)
def test_clear(self): fdb = FriendlyDB(data_directory=self.data_dir) daniel = fdb['daniel'] self.assertFalse(os.path.exists(daniel.full_path)) daniel.setup() self.assertTrue(os.path.exists(daniel.full_path)) self.assertTrue(fdb.clear()) self.assertFalse(os.path.exists(daniel.full_path))
def test_init(self): self.assertFalse(os.path.exists(self.data_dir)) fdb = FriendlyDB(data_directory=self.data_dir) self.assertEqual(fdb.data_directory, self.data_dir) self.assertEqual(fdb.hash_width, HASH_WIDTH) self.assertEqual(fdb.separator, SEPARATOR) self.assertEqual(fdb.user_klass, FriendlyUser) self.assertTrue(fdb.is_setup) self.assertTrue(os.path.exists(self.data_dir)) self.assertTrue(os.path.exists(os.path.join(self.data_dir, 'config.json')))
def test_clear(self): fdb = FriendlyDB(host=self.host, port=self.port, db=self.db) daniel = fdb['daniel'] daniel_key = daniel.generate_key(daniel.username, 'following') self.assertFalse(self.conn.zrange(daniel_key, 0, -1)) daniel.follow('alice') self.assertTrue(self.conn.zrange(daniel_key, 0, -1)) self.assertTrue(fdb.clear()) self.assertFalse(self.conn.zrange(daniel_key, 0, -1))
def test_delete_user(self): fdb = FriendlyDB(host=self.host, port=self.port, db=self.db) daniel = fdb['daniel'] alice = fdb['alice'] daniel.follow('alice') alice.follow('daniel') alice.follow('bob') self.assertEqual(daniel.following(), ['alice']) self.assertEqual(alice.following(), ['daniel', 'bob']) self.assertEqual(alice.followers(), ['daniel']) fdb.delete_user('alice') self.assertEqual(daniel.following(), [])
def test_delete_user(self): fdb = FriendlyDB(data_directory=self.data_dir) daniel = fdb['daniel'] alice = fdb['alice'] bob = fdb['bob'] daniel.follow('alice') alice.follow('daniel') alice.follow('bob') self.assertEqual(daniel.following(), ['alice']) self.assertEqual(alice.following(), ['daniel', 'bob']) self.assertEqual(alice.followers(), ['daniel']) fdb.delete_user('alice') self.assertEqual(daniel.following(), [])
def setup(options): # Feel gross about this but just sucking it up for now. global fdb fdb = FriendlyDB(host=options.redis_host, port=options.redis_port, db=options.redis_db)
def test_get_user(self): fdb = FriendlyDB(data_directory=self.data_dir) daniel = fdb['daniel'] self.assertTrue(isinstance(daniel, FriendlyUser)) self.assertEqual(daniel.username, 'daniel')
def test_get_user(self): fdb = FriendlyDB(host=self.host, port=self.port, db=self.db) daniel = fdb['daniel'] self.assertTrue(isinstance(daniel, FriendlyUser)) self.assertEqual(daniel.username, 'daniel')
# Config. all_chars = 'abcdefghijklmnopqrstuvwxyz0123456789' host = 'localhost' port = 6379 db = 15 user_count = 10000 relation_count = 1000000 followers_check = 1000 # Go go go! chars = [char for char in all_chars] users = [] fdb = FriendlyDB(host=host, port=port, db=db) def time_taken(func): start = time.time() func() return time.time() - start def generate_users(): # Generate enough usernames to matter. for i in range(0, user_count): users.append(''.join(random.sample(chars, random.randint(6, 12)))) def build_relations():
import time from friendlydb.db import FriendlyDB # Config. all_chars = 'abcdefghijklmnopqrstuvwxyz0123456789' data_dir = '/tmp/bench_friendly' user_count = 10000 relation_count = 1000000 followers_check = 1000 # Go go go! chars = [char for char in all_chars] users = [] fdb = FriendlyDB(data_dir) def time_taken(func): start = time.time() func() return time.time() - start def generate_users(): # Generate enough usernames to matter. for i in range(0, user_count): users.append(''.join(random.sample(chars, random.randint(6, 12)))) def build_relations():
self.conn.srem("%s_followers" % username, self.username) def following(self): return self.conn.smembers("%s_following" % self.username) def followers(self): return self.conn.smembers("%s_followers" % self.username) def is_following(self, username): return self.conn.sismember("%s_following" % self.username, username) def is_followed_by(self, username): return self.conn.sismember("%s_followers" % self.username, username) fdb = FriendlyDB(data_dir, user_klass=RedisFriendlyUser) def time_taken(func): start = time.time() func() return time.time() - start def generate_users(): # Generate enough usernames to matter. for i in range(0, user_count): users.append(''.join(random.sample(chars, random.randint(6, 12)))) def build_relations():