def test_configuration(self): # verify defaults .... expected = 0 # ... on db db = self.db self.assertEqual(db.getCacheSizeBytes(), expected) self.assertEqual(db.getHistoricalCacheSizeBytes(), expected) # ... on connection conn = self.conn self.assertEqual(conn._cache.cache_size_bytes, expected) # verify explicit setting ... expected = 10000 # ... on db db = databaseFromString("<zodb>\n" " cache-size-bytes %d\n" " historical-cache-size-bytes %d\n" " <mappingstorage />\n" "</zodb>" % (expected, expected + 1)) self.assertEqual(db.getCacheSizeBytes(), expected) self.assertEqual(db.getHistoricalCacheSizeBytes(), expected + 1) # ... on connectionB conn = db.open() self.assertEqual(conn._cache.cache_size_bytes, expected) # test huge (larger than 4 byte) size limit db = databaseFromString("<zodb>\n" " cache-size-bytes 8GB\n" " <mappingstorage />\n" "</zodb>") self.assertEqual(db.getCacheSizeBytes(), 0x1 << 33)
def test_configuration(self): # verify defaults .... expected = 0 # ... on db db = self.db self.assertEqual(db.getCacheSizeBytes(), expected) self.assertEqual(db.getHistoricalCacheSizeBytes(), expected) # ... on connection conn = self.conn self.assertEqual(conn._cache.cache_size_bytes, expected) # verify explicit setting ... expected = 10000 # ... on db db = databaseFromString("<zodb>\n" " cache-size-bytes %d\n" " historical-cache-size-bytes %d\n" " <mappingstorage />\n" "</zodb>" % (expected, expected+1) ) self.assertEqual(db.getCacheSizeBytes(), expected) self.assertEqual(db.getHistoricalCacheSizeBytes(), expected+1) # ... on connectionB conn = db.open() self.assertEqual(conn._cache.cache_size_bytes, expected) # test huge (larger than 4 byte) size limit db = databaseFromString("<zodb>\n" " cache-size-bytes 8GB\n" " <mappingstorage />\n" "</zodb>" ) self.assertEqual(db.getCacheSizeBytes(), 0x1 << 33)
def test_must_have_relstorage(self): with self.assertRaisesRegexp(AssertionError, "Invalid storage"): databaseFromString("""\ %import newt.db <newtdb foo> <zodb> <mappingstorage> </mappingstorage> </zodb> </newtdb> """)
def setUp(self): ZODB.tests.util.TestCase.setUp(self) self.db = db = databaseFromString("<zodb>\n<mappingstorage/>\n</zodb>") self.conn = c = db.open() self.obj = obj = _PlayPersistent() c.root()['obj'] = obj transaction.commit()
def test_newt(self): db = databaseFromString("""\ %%import newt.db <newtdb foo> <zodb> <relstorage> <newt> <postgresql> dsn dbname=%s </postgresql> </newt> </relstorage> </zodb> </newtdb> """ % self.dbname) from .._db import NewtDB self.assertEqual(db.__class__, NewtDB) from relstorage.storage import RelStorage self.assertEqual(db.storage.__class__, RelStorage) from .._adapter import Adapter self.assertEqual(db.storage._adapter.__class__, Adapter) db.close()
def test_mvccadapterNewTransactionVsInvalidations(self): """ Check that polled invalidations are consistent with the TID at which the transaction operates. Otherwise, it's like we miss invalidations. """ db = databaseFromString("<zodb>\n<mappingstorage/>\n</zodb>") try: t1 = transaction.TransactionManager() c1 = db.open(t1) r1 = c1.root() r1['a'] = 1 t1.commit() t2 = transaction.TransactionManager() c2 = db.open(t2) c2.root()['b'] = 1 s1 = c1._storage l1 = s1._lock @contextmanager def beforeLock1(): s1._lock = l1 t2.commit() with l1: yield s1._lock = beforeLock1() t1.begin() self.assertIs(s1._lock, l1) self.assertIn('b', r1) finally: db.close()
def setUp(self): ZODB.tests.util.TestCase.setUp(self) from ZODB.Connection import Connection self.db = db = databaseFromString("<zodb>\n<mappingstorage/>\n</zodb>") self.datamgr = self.db.open() self.object = StubObject() self.datamgr.add(self.object) transaction.commit() self.handler = loggingsupport.InstalledHandler("ZODB")
def __new__(self, *args, **kwargs): db = None if 'string' in kwargs: db = config.databaseFromString(kwargs['string']) if 'file' in kwargs: db = config.databaseFromFile(kwargs['file']) if 'url' in kwargs: db = config.databaseFromURL(kwargs['url']) if not db: raise ValueError('unable to obtain ZODB object from arguments') alsoProvides(db, IZODBDatabase) return db
def test_aux(self): from newt.db import pg_connection conn = pg_connection(self.dsn) with conn: with conn.cursor() as cursor: cursor.execute("create table extra (zoid bigint)") cursor.execute("create table extra2 (zoid bigint)") conn.close() db = databaseFromString("""\ %%import newt.db <newtdb foo> <zodb> <relstorage> <newt> auxiliary-tables extra extra2 <postgresql> dsn dbname=%s </postgresql> </newt> </relstorage> </zodb> </newtdb> """ % self.dbname) from .._db import NewtDB self.assertEqual(db.__class__, NewtDB) from relstorage.storage import RelStorage self.assertEqual(db.storage.__class__, RelStorage) from .._adapter import Adapter self.assertEqual(db.storage._adapter.__class__, Adapter) self.assertEqual(db.storage._adapter.mover.auxiliary_tables, ['extra', 'extra2']) db.close()
def test_connection_interface(self): from ZODB.interfaces import IConnection db = databaseFromString("<zodb>\n<mappingstorage/>\n</zodb>") cn = db.open() verifyObject(IConnection, cn)
def databaseFromDict(**kw): return databaseFromString( "%%import neo.client\n" "<zodb>\n <NEOStorage>\n%s </NEOStorage>\n</zodb>\n" % ''.join(' %s %s\n' % x for x in kw.iteritems()))