[Zope-dev] zope.sqlalchemy+py3 test failures.

Chris McDonough chrism at plope.com
Mon Sep 26 20:47:39 EST 2011


In case anyone is interested, I've made a stab at porting
zope.sqlalchemy to Python 3 at
http://svn.zope.org/zope.sqlalchemy/branches/chrism-py3/ .  Several
tests still fail.  I could use some help fixing them.

To run the test suite:

- Create a Python 3.2 virtualenv.

- Install nose into the virtualenv.

- Check out the "chrism-py3" transaction branch from
  svn://svn.zope.org/repos/main/transaction/branches/chrism-py3

- Install the "chrism-py3" transaction checkout into the virtualenv,
  e.g. $env32/bin/python setup.py develop.

- Install this package into the virtualenv eg. run $env32/bin/python
  setup develop.

- Run $env32/bin/python setup.py nosetests.

Currently 2 tests fail:

 [chrism at thinko zope.sqlalchemy]$ env32/bin/python setup.py test
running test
running egg_info
writing requirements to src/zope.sqlalchemy.egg-info/requires.txt
writing src/zope.sqlalchemy.egg-info/PKG-INFO
writing namespace_packages to
src/zope.sqlalchemy.egg-info/namespace_packages.txt
writing top-level names to src/zope.sqlalchemy.egg-info/top_level.txt
writing dependency_links to
src/zope.sqlalchemy.egg-info/dependency_links.txt
writing manifest file 'src/zope.sqlalchemy.egg-info/SOURCES.txt'
running build_ext
testTwoEngines (zope.sqlalchemy.tests.MultipleEngineTests) ... ok
testRetry (zope.sqlalchemy.tests.RetryTests) ... ERROR
testRetryThread (zope.sqlalchemy.tests.RetryTests) ... ERROR
testAbortAfterCommit (zope.sqlalchemy.tests.ZopeSQLAlchemyTests) ... ok
testAbortBeforeCommit (zope.sqlalchemy.tests.ZopeSQLAlchemyTests) ... ok
testBulkDelete (zope.sqlalchemy.tests.ZopeSQLAlchemyTests) ... ok
testBulkUpdate (zope.sqlalchemy.tests.ZopeSQLAlchemyTests) ... ok
testCommit (zope.sqlalchemy.tests.ZopeSQLAlchemyTests) ... ok
testCommitWithSavepoint (zope.sqlalchemy.tests.ZopeSQLAlchemyTests) ...
ok
testMarkUnknownSession (zope.sqlalchemy.tests.ZopeSQLAlchemyTests) ...
ok
testRelations (zope.sqlalchemy.tests.ZopeSQLAlchemyTests) ... ok
testRollbackAttributes (zope.sqlalchemy.tests.ZopeSQLAlchemyTests) ...
ok
testSavepoint (zope.sqlalchemy.tests.ZopeSQLAlchemyTests) ... ok
testSimplePopulation (zope.sqlalchemy.tests.ZopeSQLAlchemyTests) ... ok
testThread (zope.sqlalchemy.tests.ZopeSQLAlchemyTests) ... ok
testTransactionJoining (zope.sqlalchemy.tests.ZopeSQLAlchemyTests) ...
ok
testTwoPhase (zope.sqlalchemy.tests.ZopeSQLAlchemyTests) ... ok

======================================================================
ERROR: testRetry (zope.sqlalchemy.tests.RetryTests)
----------------------------------------------------------------------
Traceback (most recent call last):
  File
"/home/chrism/projects/zope.sqlalchemy/env32/lib/python3.2/site-packages/SQLAlchemy-0.7.2-py3.2.egg/sqlalchemy/engine/base.py", line 1633, in _execute_context
    context)
  File
"/home/chrism/projects/zope.sqlalchemy/env32/lib/python3.2/site-packages/SQLAlchemy-0.7.2-py3.2.egg/sqlalchemy/engine/default.py", line 327, in do_execute
    cursor.execute(statement, parameters)
sqlite3.OperationalError: no such table: test_users

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File
"/home/chrism/projects/zope.sqlalchemy/src/zope/sqlalchemy/tests.py",
line 513, in setUp
    self.tm1.commit()
  File "/home/chrism/projects/transaction/transaction/_manager.py", line
89, in commit
    return self.get().commit()
  File "/home/chrism/projects/transaction/transaction/_transaction.py",
line 342, in commit
    reraise(t, v, tb)
  File "/home/chrism/projects/transaction/transaction/compat.py", line
60, in reraise
    raise value
  File "/home/chrism/projects/transaction/transaction/_transaction.py",
line 333, in commit
    self._commitResources()
  File "/home/chrism/projects/transaction/transaction/_transaction.py",
line 473, in _commitResources
    reraise(t, v, tb)
  File "/home/chrism/projects/transaction/transaction/compat.py", line
60, in reraise
    raise value
  File "/home/chrism/projects/transaction/transaction/_transaction.py",
line 445, in _commitResources
    rm.tpc_begin(self)
  File
"/home/chrism/projects/zope.sqlalchemy/src/zope/sqlalchemy/datamanager.py", line 87, in tpc_begin
    self.session.flush()
  File
"/home/chrism/projects/zope.sqlalchemy/env32/lib/python3.2/site-packages/SQLAlchemy-0.7.2-py3.2.egg/sqlalchemy/orm/session.py", line 1493, in flush
    self._flush(objects)
  File
"/home/chrism/projects/zope.sqlalchemy/env32/lib/python3.2/site-packages/SQLAlchemy-0.7.2-py3.2.egg/sqlalchemy/orm/session.py", line 1562, in _flush
    flush_context.execute()
  File
"/home/chrism/projects/zope.sqlalchemy/env32/lib/python3.2/site-packages/SQLAlchemy-0.7.2-py3.2.egg/sqlalchemy/orm/unitofwork.py", line 327, in execute
    rec.execute(self)
  File
"/home/chrism/projects/zope.sqlalchemy/env32/lib/python3.2/site-packages/SQLAlchemy-0.7.2-py3.2.egg/sqlalchemy/orm/unitofwork.py", line 471, in execute
    uow
  File
"/home/chrism/projects/zope.sqlalchemy/env32/lib/python3.2/site-packages/SQLAlchemy-0.7.2-py3.2.egg/sqlalchemy/orm/mapper.py", line 2147, in _save_obj
    execute(statement, multiparams)
  File
"/home/chrism/projects/zope.sqlalchemy/env32/lib/python3.2/site-packages/SQLAlchemy-0.7.2-py3.2.egg/sqlalchemy/engine/base.py", line 1399, in execute
    params)
  File
"/home/chrism/projects/zope.sqlalchemy/env32/lib/python3.2/site-packages/SQLAlchemy-0.7.2-py3.2.egg/sqlalchemy/engine/base.py", line 1532, in _execute_clauseelement
    compiled_sql, distilled_params
  File
"/home/chrism/projects/zope.sqlalchemy/env32/lib/python3.2/site-packages/SQLAlchemy-0.7.2-py3.2.egg/sqlalchemy/engine/base.py", line 1640, in _execute_context
    context)
  File
"/home/chrism/projects/zope.sqlalchemy/env32/lib/python3.2/site-packages/SQLAlchemy-0.7.2-py3.2.egg/sqlalchemy/engine/base.py", line 1777, in _handle_dbapi_exception
    from e
sqlalchemy.exc.OperationalError: (OperationalError) no such table:
test_users 'INSERT INTO test_users (id, firstname, lastname) VALUES
(?, ?, ?)' (1, 'udo', 'juergens')

======================================================================
ERROR: testRetryThread (zope.sqlalchemy.tests.RetryTests)
----------------------------------------------------------------------
Traceback (most recent call last):
  File
"/home/chrism/projects/zope.sqlalchemy/env32/lib/python3.2/site-packages/SQLAlchemy-0.7.2-py3.2.egg/sqlalchemy/engine/base.py", line 1633, in _execute_context
    context)
  File
"/home/chrism/projects/zope.sqlalchemy/env32/lib/python3.2/site-packages/SQLAlchemy-0.7.2-py3.2.egg/sqlalchemy/engine/default.py", line 327, in do_execute
    cursor.execute(statement, parameters)
sqlite3.OperationalError: no such table: test_users

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File
"/home/chrism/projects/zope.sqlalchemy/src/zope/sqlalchemy/tests.py",
line 513, in setUp
    self.tm1.commit()
  File "/home/chrism/projects/transaction/transaction/_manager.py", line
89, in commit
    return self.get().commit()
  File "/home/chrism/projects/transaction/transaction/_transaction.py",
line 342, in commit
    reraise(t, v, tb)
  File "/home/chrism/projects/transaction/transaction/compat.py", line
60, in reraise
    raise value
  File "/home/chrism/projects/transaction/transaction/_transaction.py",
line 333, in commit
    self._commitResources()
  File "/home/chrism/projects/transaction/transaction/_transaction.py",
line 473, in _commitResources
    reraise(t, v, tb)
  File "/home/chrism/projects/transaction/transaction/compat.py", line
60, in reraise
    raise value
  File "/home/chrism/projects/transaction/transaction/_transaction.py",
line 445, in _commitResources
    rm.tpc_begin(self)
  File
"/home/chrism/projects/zope.sqlalchemy/src/zope/sqlalchemy/datamanager.py", line 87, in tpc_begin
    self.session.flush()
  File
"/home/chrism/projects/zope.sqlalchemy/env32/lib/python3.2/site-packages/SQLAlchemy-0.7.2-py3.2.egg/sqlalchemy/orm/session.py", line 1493, in flush
    self._flush(objects)
  File
"/home/chrism/projects/zope.sqlalchemy/env32/lib/python3.2/site-packages/SQLAlchemy-0.7.2-py3.2.egg/sqlalchemy/orm/session.py", line 1562, in _flush
    flush_context.execute()
  File
"/home/chrism/projects/zope.sqlalchemy/env32/lib/python3.2/site-packages/SQLAlchemy-0.7.2-py3.2.egg/sqlalchemy/orm/unitofwork.py", line 327, in execute
    rec.execute(self)
  File
"/home/chrism/projects/zope.sqlalchemy/env32/lib/python3.2/site-packages/SQLAlchemy-0.7.2-py3.2.egg/sqlalchemy/orm/unitofwork.py", line 471, in execute
    uow
  File
"/home/chrism/projects/zope.sqlalchemy/env32/lib/python3.2/site-packages/SQLAlchemy-0.7.2-py3.2.egg/sqlalchemy/orm/mapper.py", line 2147, in _save_obj
    execute(statement, multiparams)
  File
"/home/chrism/projects/zope.sqlalchemy/env32/lib/python3.2/site-packages/SQLAlchemy-0.7.2-py3.2.egg/sqlalchemy/engine/base.py", line 1399, in execute
    params)
  File
"/home/chrism/projects/zope.sqlalchemy/env32/lib/python3.2/site-packages/SQLAlchemy-0.7.2-py3.2.egg/sqlalchemy/engine/base.py", line 1532, in _execute_clauseelement
    compiled_sql, distilled_params
  File
"/home/chrism/projects/zope.sqlalchemy/env32/lib/python3.2/site-packages/SQLAlchemy-0.7.2-py3.2.egg/sqlalchemy/engine/base.py", line 1640, in _execute_context
    context)
  File
"/home/chrism/projects/zope.sqlalchemy/env32/lib/python3.2/site-packages/SQLAlchemy-0.7.2-py3.2.egg/sqlalchemy/engine/base.py", line 1777, in _handle_dbapi_exception
    from e
sqlalchemy.exc.OperationalError: (OperationalError) no such table:
test_users 'INSERT INTO test_users (id, firstname, lastname) VALUES
(?, ?, ?)' (1, 'udo', 'juergens')

----------------------------------------------------------------------
Ran 17 tests in 0.152s

FAILED (errors=2)

This appears to be some sort of Py3+SQLite thing, beacuse if I run the
tests using Postgres isntead of SQLALchemy (after
"env32/bin/easy_install py-postgresql", and then running the tests using
'TEST_DSN="postgresql+pypostgresql://localhost:5432/testing"
env32/bin/python setup.py nosetests' against Postgres 8.4.8 after a
"createdb testing"), I get different failures:

======================================================================
FAIL: testRetryThread (zope.sqlalchemy.tests.RetryTests)
----------------------------------------------------------------------
Traceback (most recent call last):
  File
"/home/chrism/projects/zope.sqlalchemy/src/zope/sqlalchemy/tests.py",
line 564, in testRetryThread
    self.assertTrue(retryable, "Error should be retryable")
AssertionError: None is not true : Error should be retryable
-------------------- >> begin captured logging << --------------------
txn.140333906949888: DEBUG: new transaction
txn.140333906949888: DEBUG: commit
<zope.sqlalchemy.datamanager.SessionDataManager object at 0x2dd6ed0>
txn.140333906949888: DEBUG: commit
txn.140333906949888: DEBUG: new transaction
txn.140333906949888: DEBUG: new transaction
txn.140333906949888: DEBUG: commit
<zope.sqlalchemy.datamanager.SessionDataManager object at 0x2dda9d0>
txn.140333906949888: DEBUG: commit
txn.140333906949888: DEBUG: new transaction
txn.140333906949888: DEBUG: abort
txn.140333906949888: DEBUG: abort
--------------------- >> end captured logging << ---------------------

----------------------------------------------------------------------
Ran 18 tests in 5.099s

FAILED (failures=1)




More information about the Zope-Dev mailing list