]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
correcting dataload profiles for various tests
authorMike Bayer <mike_mp@zzzcomputing.com>
Sat, 10 May 2008 18:38:20 +0000 (18:38 +0000)
committerMike Bayer <mike_mp@zzzcomputing.com>
Sat, 10 May 2008 18:38:20 +0000 (18:38 +0000)
test/orm/_base.py
test/orm/_fixtures.py
test/orm/assorted_eager.py
test/orm/cycles.py
test/orm/memusage.py
test/orm/pickled.py
test/orm/unitofwork.py
test/testlib/testing.py

index bfce00d0f03a9c5d44a4f1278190f04e3b7c0066..444d4b88cc2fecab182122f6b41c16168a2d7e24 100644 (file)
@@ -174,8 +174,10 @@ class MappedTest(ORMTest):
         if self.run_define_tables == 'each':
             self.tables.clear()
             self.metadata.drop_all()
+            self.metadata.clear()
             self.define_tables(self.metadata)
             self.metadata.create_all()
+            self.tables.update(self.metadata.tables)
 
         if self.run_setup_classes == 'each':
             self.classes.clear()
@@ -197,12 +199,13 @@ class MappedTest(ORMTest):
 
         if self.run_setup_mappers == 'each':
             sa.orm.clear_mappers()
-
-        if self.run_deletes:
+        
+        # no need to run deletes if tables are recreated on setup
+        if self.run_define_tables != 'each' and self.run_deletes:
             for table in self.metadata.table_iterator(reverse=True):
                 try:
                     table.delete().execute().close()
-                except sa.orm.DBAPIError, ex:
+                except sa.exc.DBAPIError, ex:
                     print >> sys.stderr, "Error emptying table %s: %r" % (
                         table, ex)
 
index 07367895fee581cea0ed1c5dcc22bb1abf436f3c..09fab5dbaa5a4aa0a8c6dc137f3e90c5f64dc4c7 100644 (file)
@@ -242,7 +242,7 @@ class FixtureTest(_base.MappedTest):
     run_setup_mappers = 'each'
     run_inserts = 'each'
     run_deletes = 'each'
-
+    
     metadata = fixture_metadata
     fixture_classes = dict(User=User,
                            Order=Order,
index 47247928a81c4a857afca7122ebc532f72847d48..c8c0f6a7231a1cf5963313020080c48aad81c936 100644 (file)
@@ -14,7 +14,9 @@ from orm import _base
 
 
 class EagerTest(_base.MappedTest):
-
+    run_deletes = None
+    run_inserts = "once"
+    
     def define_tables(self, metadata):
         # determine a literal value for "false" based on the dialect
         # FIXME: this PassiveDefault setup is bogus.
index d21cd1974bf6e8a95df8afafcffccb827cf75153..c92228def758ee2bb789a6fa220b9ebd6747cdb0 100644 (file)
@@ -228,6 +228,7 @@ class InheritTestTwo(_base.MappedTest):
     could create duplicate entries in the final sort
 
     """
+
     def define_tables(self, metadata):
         Table('a', metadata,
             Column('id', Integer, primary_key=True),
@@ -273,7 +274,8 @@ class InheritTestTwo(_base.MappedTest):
 
 
 class BiDirectionalManyToOneTest(_base.MappedTest):
-
+    run_define_tables = 'each'
+    
     def define_tables(self, metadata):
         Table('t1', metadata,
             Column('id', Integer, primary_key=True),
@@ -360,6 +362,8 @@ class BiDirectionalManyToOneTest(_base.MappedTest):
 class BiDirectionalOneToManyTest(_base.MappedTest):
     """tests two mappers with a one-to-many relation to each other."""
 
+    run_define_tables = 'each'
+
     def define_tables(self, metadata):
         Table('t1', metadata,
               Column('c1', Integer, primary_key=True,
@@ -407,6 +411,8 @@ class BiDirectionalOneToManyTest(_base.MappedTest):
 class BiDirectionalOneToManyTest2(_base.MappedTest):
     """Two mappers with a one-to-many relation to each other, with a second one-to-many on one of the mappers"""
 
+    run_define_tables = 'each'
+
     def define_tables(self, metadata):
         Table('t1', metadata,
               Column('c1', Integer, primary_key=True),
@@ -479,7 +485,8 @@ class OneToManyManyToOneTest(_base.MappedTest):
     dependencies are sorted.
 
     """
-
+    run_define_tables = 'each'
+    
     def define_tables(self, metadata):
         Table('ball', metadata,
               Column('id', Integer, primary_key=True,
index 2c431bf4611f938c1e7060c1d7ee3273fccba3c1..f9c645c8b3e5f9c3ab9b94ccff5e873206d92d1d 100644 (file)
@@ -31,12 +31,9 @@ def profile_memory(func):
         # if a drop is detected, it's assumed that GC is able
         # to reduce memory.  better methodology would
         # make this more accurate.
-        for i, x in enumerate(samples):
-            if i < len(samples) - 1 and x < samples[i+1]:
-                continue
-        else:
-            return
-        assert False, repr(samples)
+        for i in range(len(samples) - 20, len(samples)):
+            if samples[i] > samples[i-1]:
+                assert False, repr(samples) +  " %d > %d"  % (samples[i], samples[i-1])
     return profile
 
 def assert_no_mappers():
@@ -50,7 +47,18 @@ class EnsureZeroed(_base.ORMTest):
         _mapper_registry.clear()
 
 class MemUsageTest(EnsureZeroed):
-
+    
+    @testing.fails_if(lambda:True)
+    def test_fixture(self):
+        class Foo(object):
+            pass
+            
+        x = []
+        @profile_memory
+        def go():
+            x[-1:] = [Foo(), Foo(), Foo(), Foo(), Foo(), Foo()]
+        go()
+            
     def test_session(self):
         metadata = MetaData(testing.db)
 
index ecce320a5557168908698ad174794b20a920c6c2..a4eadf5a9751809c2445f829ff6fb2fabcdffa6f 100644 (file)
@@ -9,7 +9,8 @@ from orm import _base, _fixtures
 User, EmailUser = None, None
 
 class PickleTest(_fixtures.FixtureTest):
-
+    run_inserts = None
+    
     @testing.resolve_artifact_names
     def test_transient(self):
         mapper(User, users, properties={
index c722a4cfe08ec649c18b364d0faecc69774fd492..f9be94c98ba5671228c865d9103ab24673546ec8 100644 (file)
@@ -1061,7 +1061,7 @@ class OneToManyTest(_fixtures.FixtureTest):
              {'users_id': u2.id, 'name': 'user2modified'}),
 
             ("UPDATE addresses SET user_id=:user_id "
-             "WHERE addresses.id = :email_addresses_id",
+             "WHERE addresses.id = :addresses_id",
              {'user_id': None, 'addresses_id': a1.id}),
 
             ("UPDATE addresses SET user_id=:user_id "
@@ -1473,7 +1473,8 @@ class SaveTest(_fixtures.FixtureTest):
 
 
 class ManyToOneTest(_fixtures.FixtureTest):
-
+    run_inserts = None
+    
     @testing.resolve_artifact_names
     def test_m2o_one_to_one(self):
         # TODO: put assertion in here !!!
@@ -1684,7 +1685,6 @@ class ManyToManyTest(_fixtures.FixtureTest):
                                      {'name':'round'},
                                      {'name':'small'}])}]
 
-        _fixtures.run_inserts_for(keywords)
         session = create_session()
 
         objects = []
@@ -1855,7 +1855,6 @@ class ManyToManyTest(_fixtures.FixtureTest):
         mapper(Item, items, properties=dict(
             keywords=relation(IKAssociation, lazy=False)))
 
-        _fixtures.run_inserts_for(keywords)
         session = create_session()
 
         def fixture():
index 67918c5d4d063afbf6d63f34d83e6744b5c44466..e1f8e4350245e0e0273f05443dabf351dcd886b3 100644 (file)
@@ -562,7 +562,7 @@ def resolve_artifact_names(fn):
     # rebound functions aren't regular Python..
     #
     # Also: it's lame that CPython accepts a dict-subclass for globals, but
-    # only calls dict methods.  Taht would allow 'global' to pass through to
+    # only calls dict methods.  That would allow 'global' to pass through to
     # the func_globals.
     def resolved(*args, **kwargs):
         self = args[0]