Opened 12 years ago
Closed 9 years ago
#19542 closed Bug (fixed)
Testing with Oracle: mirror databases do not work
Reported by: | Shai Berger | Owned by: | Shai Berger |
---|---|---|---|
Component: | Testing framework | Version: | dev |
Severity: | Normal | Keywords: | oracle |
Cc: | Triage Stage: | Accepted | |
Has patch: | yes | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
By "mirror databases" I here mean two related cases:
- A database is explicitly designated as "TEST_MIRROR" of another
- A database is implicitly a test mirror of another, because they have the same essential parameters
In these cases, the test framework needs to do things a little differently -- create only one database, and make all relevant connections refer to it.
This breaks with Oracle, because setting up test databases there is different from elsewhere. Quoting myself,
The root of the problem is that unlike the other DBMSs, where you can create a new database for testing, Oracle does not have the concept of separate databases within the same server. So, to have a clean schema to work in, the test framework creates a new user (in Oracle there's also a 1-1 correspondence between users and schemas) when it creates the test database.
This is all done in the backend-specific
_create_test_db()
. The problem is that this code only takes care of a single db (naturally). There is generic code (inDjangoTestSuiteRunner.setup_databases()
), that takes care of multiple dbs -- including [...] mirrors. This code isn't aware of the Oracle-specific settings changes. To handle mirrors, it just updates the database name of the mirror to the one set by_create_test_db()
. In the Oracle case, this is a no-op (self.connection.settings_dict['NAME']
is not changed); and nobody is left to update the user, password and tablespace parameters, which the backend does change.
Anssi Kääriäinen added that the "guilty" line seems to be line 321 of django/test/simple.py
.
Attachments (1)
Change History (7)
comment:1 by , 12 years ago
Triage Stage: | Unreviewed → Accepted |
---|
comment:2 by , 12 years ago
Keywords: | oracle added |
---|
comment:3 by , 9 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
comment:5 by , 9 years ago
Has patch: | set |
---|---|
Owner: | changed from | to
Status: | new → assigned |
Version: | 1.4 → master |
by , 9 years ago
Attachment: | test_mirroring.tgz added |
---|
A simple project which can be used to test that mirroring works in testing. You will need to change credentials, of course.
Some time within the changes in test-runner, this seems to have been resolved.