[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