In my local codeline I added a new upgrade fixture to upgradeTests/Changes10_4.java that creates a primary key and several foreign keys. After doing so I noticed that a handful of the fixtures in jdbcapi/DatabaseMetaDataTest, when run as part of upgradeTests/_Suite.java, started failing.

From what I can tell there are a couple of test cases--esp. for ODBC testing--which execute DatabaseMetaData procedures that are meant to return "all (non-system) keys in the database". Since the ChangesXX_y tests are interspersed with DatabaseMetaDataTests for each phase, and since my new fixture in Changes10_4.java creates several new keys, the metadata test cases which check for "all keys in the database" now have more rows than previously expected, and thus fail. But if I change the DatabaseMetaData tests to account for the additional keys, they will fail when run standalone because those keys won't exist outside of the upgrade suite.

I couldn't find any obvious "quick fixes" for this, so I made some changes locally to separate the database metadata upgrade tests out from the ChangesXX_y upgrade tests, so that the former are not affected by the latter. I.e. with my changes upgradeTests/_Suite will first run a suite that tests the 5 phases of upgrade with the various ChangesXX_y fixtures, and then when that's done, it'll start a second suite that repeats the 5 phases with the DatabaseMetaData tests. This seems to have worked for me locally...

But is that really necessary, or is there a known (cleaner) way to deal with this kind of thing?

For what it's worth, I did a quick grep for "foreign" and "primary" in the various ChangesXX_y.java files and found no declarations of primary nor foreign keys. So I'm guessing this particular behavior is simply not an issue with the current set of upgrade tests...but I could of course be mistaken...

Army

Reply via email to