test_pickleshare.py
60 lines
| 1.9 KiB
| text/x-python
|
PythonLexer
Thomas Kluyver
|
r15517 | from __future__ import print_function | |
Thomas Kluyver
|
r15516 | import os | |
from unittest import TestCase | |||
from IPython.testing.decorators import skip | |||
from IPython.utils.tempdir import TemporaryDirectory | |||
from IPython.utils.pickleshare import PickleShareDB | |||
class PickleShareDBTestCase(TestCase): | |||
def setUp(self): | |||
self.tempdir = TemporaryDirectory() | |||
def tearDown(self): | |||
self.tempdir.cleanup() | |||
def test_picklesharedb(self): | |||
db = PickleShareDB(self.tempdir.name) | |||
db.clear() | |||
print("Should be empty:",db.items()) | |||
db['hello'] = 15 | |||
db['aku ankka'] = [1,2,313] | |||
db['paths/nest/ok/keyname'] = [1,(5,46)] | |||
db.hset('hash', 'aku', 12) | |||
db.hset('hash', 'ankka', 313) | |||
self.assertEqual(db.hget('hash','aku'), 12) | |||
self.assertEqual(db.hget('hash','ankka'), 313) | |||
print("all hashed",db.hdict('hash')) | |||
print(db.keys()) | |||
print(db.keys('paths/nest/ok/k*')) | |||
print(dict(db)) # snapsot of whole db | |||
db.uncache() # frees memory, causes re-reads later | |||
# shorthand for accessing deeply nested files | |||
lnk = db.getlink('myobjects/test') | |||
lnk.foo = 2 | |||
lnk.bar = lnk.foo + 5 | |||
self.assertEqual(lnk.bar, 7) | |||
@skip("Too slow for regular running.") | |||
def test_stress(self): | |||
db = PickleShareDB('~/fsdbtest') | |||
import time,sys | |||
for i in range(1000): | |||
for j in range(1000): | |||
if i % 15 == 0 and i < 200: | |||
if str(j) in db: | |||
del db[str(j)] | |||
continue | |||
if j%33 == 0: | |||
time.sleep(0.02) | |||
db[str(j)] = db.get(str(j), []) + [(i,j,"proc %d" % os.getpid())] | |||
db.hset('hash',j, db.hget('hash',j,15) + 1 ) | |||
print(i, end=' ') | |||
sys.stdout.flush() | |||
if i % 10 == 0: | |||
db.uncache() |