[Checkins] SVN: relstorage/trunk/relstorage/ Avoid NamedTemporaryFile in favor of mkstemp, for Windows
Shane Hathaway
shane at hathawaymix.org
Sun Oct 4 01:14:01 EDT 2009
Log message for revision 104774:
Avoid NamedTemporaryFile in favor of mkstemp, for Windows
Changed:
U relstorage/trunk/relstorage/adapters/tests/test_connmanager.py
U relstorage/trunk/relstorage/adapters/tests/test_replica.py
A relstorage/trunk/relstorage/tests/replicas.conf
U relstorage/trunk/relstorage/tests/testmysql.py
U relstorage/trunk/relstorage/tests/testoracle.py
U relstorage/trunk/relstorage/tests/testpostgresql.py
-=-
Modified: relstorage/trunk/relstorage/adapters/tests/test_connmanager.py
===================================================================
--- relstorage/trunk/relstorage/adapters/tests/test_connmanager.py 2009-10-04 00:22:21 UTC (rev 104773)
+++ relstorage/trunk/relstorage/adapters/tests/test_connmanager.py 2009-10-04 05:14:00 UTC (rev 104774)
@@ -29,18 +29,19 @@
self.assertTrue(conn.rolled_back)
def test_with_replica_conf(self):
- import tempfile
- f = tempfile.NamedTemporaryFile()
- f.write("example.com:1234\n")
- f.flush()
- options = MockOptions(f.name)
+ import os
+ import relstorage.tests
+ tests_dir = relstorage.tests.__file__
+ replica_conf = os.path.join(os.path.dirname(tests_dir), 'replicas.conf')
+ options = MockOptions(replica_conf)
- from relstorage.adapters.connmanager import AbstractConnectionManager
+ from relstorage.adapters.connmanager \
+ import AbstractConnectionManager
from relstorage.adapters.interfaces import ReplicaClosedException
cm = AbstractConnectionManager(options)
conn = MockConnection()
- conn.replica = 'example.com:1234'
+ conn.replica = 'localhost'
cm.restart_load(conn, MockCursor())
self.assertTrue(conn.rolled_back)
conn.replica = 'other'
@@ -48,7 +49,7 @@
cm.restart_load, conn, MockCursor())
conn = MockConnection()
- conn.replica = 'example.com:1234'
+ conn.replica = 'localhost'
cm.restart_store(conn, MockCursor())
self.assertTrue(conn.rolled_back)
conn.replica = 'other'
Modified: relstorage/trunk/relstorage/adapters/tests/test_replica.py
===================================================================
--- relstorage/trunk/relstorage/adapters/tests/test_replica.py 2009-10-04 00:22:21 UTC (rev 104773)
+++ relstorage/trunk/relstorage/adapters/tests/test_replica.py 2009-10-04 05:14:00 UTC (rev 104774)
@@ -17,16 +17,18 @@
class ReplicaSelectorTests(unittest.TestCase):
def setUp(self):
+ import os
import tempfile
- self.f = tempfile.NamedTemporaryFile()
- self.f.write(
+ fd, self.fn = tempfile.mkstemp()
+ os.write(fd,
"# Replicas\n\nexample.com:1234\nlocalhost:4321\n"
"\nlocalhost:9999\n")
- self.f.flush()
- self.options = MockOptions(self.f.name)
+ os.close(fd)
+ self.options = MockOptions(self.fn)
def tearDown(self):
- self.f.close()
+ import os
+ os.remove(self.fn)
def test__read_config_normal(self):
from relstorage.adapters.replica import ReplicaSelector
@@ -36,8 +38,7 @@
def test__read_config_empty(self):
from relstorage.adapters.replica import ReplicaSelector
- self.f.seek(0)
- self.f.truncate()
+ open(self.fn, 'w').close() # truncate the replica list file
self.assertRaises(IndexError, ReplicaSelector, self.options)
def test__is_config_modified(self):
@@ -71,9 +72,9 @@
rs = ReplicaSelector(self.options)
self.assertEqual(rs.current(), 'example.com:1234')
# change the file and get the new current replica
- self.f.seek(0)
- self.f.write('localhost\nalternate\n')
- self.f.flush()
+ f = open(self.fn, 'w')
+ f.write('localhost\nalternate\n')
+ f.close()
rs._config_checked = 0
rs._config_modified = 0
self.assertEqual(rs.current(), 'localhost')
@@ -105,10 +106,9 @@
def test_next_only_one_server(self):
from relstorage.adapters.replica import ReplicaSelector
- self.f.seek(0)
- self.f.write('localhost\n')
- self.f.flush()
- self.f.truncate()
+ f = open(self.fn, 'w')
+ f.write('localhost\n')
+ f.close()
rs = ReplicaSelector(self.options)
self.assertEqual(rs.current(), 'localhost')
self.assertEqual(rs.next(), None)
@@ -119,10 +119,9 @@
self.assertEqual(rs.current(), 'example.com:1234')
self.assertEqual(rs.next(), 'localhost:4321')
# interrupt the iteration by changing the replica conf file
- self.f.seek(0)
- self.f.write('example.com:9999\n')
- self.f.flush()
- self.f.truncate()
+ f = open(self.fn, 'w')
+ f.write('example.com:9999\n')
+ f.close()
rs._config_checked = 0
rs._config_modified = 0
self.assertEqual(rs.next(), 'example.com:9999')
Added: relstorage/trunk/relstorage/tests/replicas.conf
===================================================================
--- relstorage/trunk/relstorage/tests/replicas.conf (rev 0)
+++ relstorage/trunk/relstorage/tests/replicas.conf 2009-10-04 05:14:00 UTC (rev 104774)
@@ -0,0 +1,2 @@
+# this is used by some of the tests
+localhost
Modified: relstorage/trunk/relstorage/tests/testmysql.py
===================================================================
--- relstorage/trunk/relstorage/tests/testmysql.py 2009-10-04 00:22:21 UTC (rev 104773)
+++ relstorage/trunk/relstorage/tests/testmysql.py 2009-10-04 05:14:00 UTC (rev 104774)
@@ -42,72 +42,65 @@
class ZConfigTests:
def checkConfigureViaZConfig(self):
- import tempfile
- replica_conf = tempfile.NamedTemporaryFile()
- try:
- replica_conf.write("localhost")
- replica_conf.flush()
+ replica_conf = os.path.join(os.path.dirname(__file__), 'replicas.conf')
+ if self.keep_history:
+ dbname = 'relstoragetest'
+ else:
+ dbname = 'relstoragetest_hf'
+ conf = """
+ %%import relstorage
+ <zodb main>
+ <relstorage>
+ name xyz
+ read-only false
+ keep-history %s
+ replica-conf %s
+ <mysql>
+ db %s
+ user relstoragetest
+ passwd relstoragetest
+ </mysql>
+ </relstorage>
+ </zodb>
+ """ % (
+ self.keep_history and 'true' or 'false',
+ replica_conf,
+ dbname,
+ )
- if self.keep_history:
- dbname = 'relstoragetest'
- else:
- dbname = 'relstoragetest_hf'
- conf = """
- %%import relstorage
- <zodb main>
- <relstorage>
- name xyz
- read-only false
- keep-history %s
- replica-conf %s
- <mysql>
- db %s
- user relstoragetest
- passwd relstoragetest
- </mysql>
- </relstorage>
- </zodb>
- """ % (
- self.keep_history and 'true' or 'false',
- replica_conf.name,
- dbname,
- )
+ schema_xml = """
+ <schema>
+ <import package="ZODB"/>
+ <section type="ZODB.database" name="main" attribute="database"/>
+ </schema>
+ """
+ import ZConfig
+ from StringIO import StringIO
+ schema = ZConfig.loadSchemaFile(StringIO(schema_xml))
+ config, handler = ZConfig.loadConfigFile(schema, StringIO(conf))
- schema_xml = """
- <schema>
- <import package="ZODB"/>
- <section type="ZODB.database" name="main" attribute="database"/>
- </schema>
- """
- import ZConfig
- from StringIO import StringIO
- schema = ZConfig.loadSchemaFile(StringIO(schema_xml))
- config, handler = ZConfig.loadConfigFile(schema, StringIO(conf))
-
- db = config.database.open()
- try:
- storage = getattr(db, 'storage', None)
- if storage is None:
- # ZODB < 3.8 and before
- storage = db._storage
- self.assertEqual(storage._is_read_only, False)
- self.assertEqual(storage._name, "xyz")
- adapter = storage._adapter
- from relstorage.adapters.mysql import MySQLAdapter
- self.assert_(isinstance(adapter, MySQLAdapter))
- self.assertEqual(adapter._params, {
- 'passwd': 'relstoragetest',
- 'db': dbname,
- 'user': 'relstoragetest',
- })
- self.assertEqual(adapter.keep_history, self.keep_history)
- self.assertEqual(
- adapter.connmanager.replica_selector.replica_conf,
- replica_conf.name)
- finally:
- db.close()
+ db = config.database.open()
+ try:
+ storage = getattr(db, 'storage', None)
+ if storage is None:
+ # ZODB < 3.9
+ storage = db._storage
+ self.assertEqual(storage._is_read_only, False)
+ self.assertEqual(storage._name, "xyz")
+ adapter = storage._adapter
+ from relstorage.adapters.mysql import MySQLAdapter
+ self.assert_(isinstance(adapter, MySQLAdapter))
+ self.assertEqual(adapter._params, {
+ 'passwd': 'relstoragetest',
+ 'db': dbname,
+ 'user': 'relstoragetest',
+ })
+ self.assertEqual(adapter.keep_history, self.keep_history)
+ self.assertEqual(
+ adapter.connmanager.replica_selector.replica_conf,
+ replica_conf)
finally:
- replica_conf.close()
+ db.close()
class HPMySQLTests(UseMySQLAdapter, HistoryPreservingRelStorageTests,
Modified: relstorage/trunk/relstorage/tests/testoracle.py
===================================================================
--- relstorage/trunk/relstorage/tests/testoracle.py 2009-10-04 00:22:21 UTC (rev 104773)
+++ relstorage/trunk/relstorage/tests/testoracle.py 2009-10-04 05:14:00 UTC (rev 104774)
@@ -45,11 +45,10 @@
def checkConfigureViaZConfig(self):
import tempfile
dsn = os.environ.get('ORACLE_TEST_DSN', 'XE')
- replica_conf = tempfile.NamedTemporaryFile()
+ fd, replica_conf = tempfile.mkstemp()
+ os.write(fd, dsn)
+ os.close(fd)
try:
- replica_conf.write(dsn)
- replica_conf.flush()
-
if self.keep_history:
dbname = 'relstoragetest'
else:
@@ -71,7 +70,7 @@
</zodb>
""" % (
self.keep_history and 'true' or 'false',
- replica_conf.name,
+ replica_conf,
dbname,
dsn,
)
@@ -105,11 +104,11 @@
self.assertEqual(adapter.keep_history, self.keep_history)
self.assertEqual(
adapter.connmanager.replica_selector.replica_conf,
- replica_conf.name)
+ replica_conf)
finally:
db.close()
finally:
- replica_conf.close()
+ os.remove(replica_conf)
class HPOracleTests(UseOracleAdapter, HistoryPreservingRelStorageTests,
Modified: relstorage/trunk/relstorage/tests/testpostgresql.py
===================================================================
--- relstorage/trunk/relstorage/tests/testpostgresql.py 2009-10-04 00:22:21 UTC (rev 104773)
+++ relstorage/trunk/relstorage/tests/testpostgresql.py 2009-10-04 05:14:00 UTC (rev 104774)
@@ -40,69 +40,62 @@
class ZConfigTests:
def checkConfigureViaZConfig(self):
- import tempfile
- replica_conf = tempfile.NamedTemporaryFile()
- try:
- replica_conf.write("localhost")
- replica_conf.flush()
+ replica_conf = os.path.join(os.path.dirname(__file__), 'replicas.conf')
+ if self.keep_history:
+ dbname = 'relstoragetest'
+ else:
+ dbname = 'relstoragetest_hf'
+ dsn = (
+ "dbname='%s' user='relstoragetest' password='relstoragetest'"
+ % dbname)
+ conf = """
+ %%import relstorage
+ <zodb main>
+ <relstorage>
+ name xyz
+ read-only false
+ keep-history %s
+ replica-conf %s
+ <postgresql>
+ dsn %s
+ </postgresql>
+ </relstorage>
+ </zodb>
+ """ % (
+ self.keep_history and 'true' or 'false',
+ replica_conf,
+ dsn,
+ )
- if self.keep_history:
- dbname = 'relstoragetest'
- else:
- dbname = 'relstoragetest_hf'
- dsn = (
- "dbname='%s' user='relstoragetest' password='relstoragetest'"
- % dbname)
- conf = """
- %%import relstorage
- <zodb main>
- <relstorage>
- name xyz
- read-only false
- keep-history %s
- replica-conf %s
- <postgresql>
- dsn %s
- </postgresql>
- </relstorage>
- </zodb>
- """ % (
- self.keep_history and 'true' or 'false',
- replica_conf.name,
- dsn,
- )
+ schema_xml = """
+ <schema>
+ <import package="ZODB"/>
+ <section type="ZODB.database" name="main" attribute="database"/>
+ </schema>
+ """
+ import ZConfig
+ from StringIO import StringIO
+ schema = ZConfig.loadSchemaFile(StringIO(schema_xml))
+ config, handler = ZConfig.loadConfigFile(schema, StringIO(conf))
- schema_xml = """
- <schema>
- <import package="ZODB"/>
- <section type="ZODB.database" name="main" attribute="database"/>
- </schema>
- """
- import ZConfig
- from StringIO import StringIO
- schema = ZConfig.loadSchemaFile(StringIO(schema_xml))
- config, handler = ZConfig.loadConfigFile(schema, StringIO(conf))
-
- db = config.database.open()
- try:
- storage = getattr(db, 'storage', None)
- if storage is None:
- # ZODB < 3.8 and before
- storage = db._storage
- self.assertEqual(storage._is_read_only, False)
- self.assertEqual(storage._name, "xyz")
- adapter = storage._adapter
- from relstorage.adapters.postgresql import PostgreSQLAdapter
- self.assert_(isinstance(adapter, PostgreSQLAdapter))
- self.assertEqual(adapter._dsn, dsn)
- self.assertEqual(adapter.keep_history, self.keep_history)
- self.assertEqual(
- adapter.connmanager.replica_selector.replica_conf,
- replica_conf.name)
- finally:
- db.close()
+ db = config.database.open()
+ try:
+ storage = getattr(db, 'storage', None)
+ if storage is None:
+ # ZODB < 3.9
+ storage = db._storage
+ self.assertEqual(storage._is_read_only, False)
+ self.assertEqual(storage._name, "xyz")
+ adapter = storage._adapter
+ from relstorage.adapters.postgresql import PostgreSQLAdapter
+ self.assert_(isinstance(adapter, PostgreSQLAdapter))
+ self.assertEqual(adapter._dsn, dsn)
+ self.assertEqual(adapter.keep_history, self.keep_history)
+ self.assertEqual(
+ adapter.connmanager.replica_selector.replica_conf,
+ replica_conf)
finally:
- replica_conf.close()
+ db.close()
class HPPostgreSQLTests(UsePostgreSQLAdapter, HistoryPreservingRelStorageTests,
More information about the checkins
mailing list