def test_thread_locality(self): store = localstore.LocalStore() store['name'] = "Hi" q = Queue() def do_test(): sleep(0.1) t = current_thread() name = t.name store[name] = 1 store['name'] = name q.put(dict(store)) threads = [] for x in range(5): t = Thread(target=do_test, name='thread%x' % x) t.start() threads.append(t) for t in threads: t.join() # assert none of the thread stuff touched our queue self.assertEqual(store['name'], 'Hi') self.assertEqual(q.qsize(), 5) qcontents = [] while not q.empty(): qcontents.append(q.get()) self.assertEqual(len(qcontents), 5) for d in qcontents: self.assertEqual(len(d), 2) self.assertNotEqual(d['name'], 'Hi') self.assertEqual(d[d['name']], 1)
def test_custom_clear(self): """Test that clear(glob) works as expected.""" store = localstore.LocalStore() for x in (1, 2, 3, 4, 5): store['key_%s' % x] = 'value_%s' % x store['ex_%s' % x] = 'ecks_%s' % x self.assertEquals(len(store), 10) store.clear('*4') self.assertEquals(len(store), 8) store.clear('ex_*') self.assertEquals(len(store), 4) self.assertEquals(len(store.mget('key*')), 4) self.assertEquals(len(store.mget('*_2')), 1)
def test_basic_operation(self): store = localstore.LocalStore() for x in (1, 2, 3, 4, 5): store['key%s' % x] = "value%s" % x self.assertEquals(store.key3, "value3") self.assertEquals(store['key4'], "value4") self.assertEquals(len(store), 5) self.assertEquals(sorted(list(store)), sorted(store.keys())) self.assertEquals(store.setdefault('key6', 'value6'), 'value6') self.assertEquals(store['key6'], 'value6') del store['key2'] self.assertEquals(len(store), 5) store.clear() self.assertEquals(len(store), 0)
def test_thread_locality(self): from Queue import Queue try: from threading import Thread, current_thread except: #python 2.5 difference from threading import Thread from threading import currentThread as current_thread from time import sleep store = localstore.LocalStore() store['name'] = "Hi" q = Queue() def do_test(): sleep(0.1) t = current_thread() try: name = t.name except AttributeError: #python 2.5 difference name = t.getName() store[name] = 1 store['name'] = name q.put(dict(store)) threads = [] for x in range(5): t = Thread(target=do_test, name='thread%x' % x) t.start() threads.append(t) for t in threads: t.join() # assert none of the thread stuff touched our queue self.assertEquals(store['name'], 'Hi') self.assertEquals(q.qsize(), 5) qcontents = [] while not q.empty(): qcontents.append(q.get()) self.assertEquals(len(qcontents), 5) for d in qcontents: self.assertEquals(len(d), 2) self.assertNotEquals(d['name'], 'Hi') self.assertEquals(d[d['name']], 1)