[Engine-devel] Any way to break the dao_unit_tests up?

Yair Zaslavsky yzaslavs at redhat.com
Mon Aug 20 11:24:03 UTC 2012



On 08/20/2012 01:30 PM, Shireesh Anjal wrote:
> On Monday 20 August 2012 11:16 AM, Mike Kolesnik wrote:
>> ----- Original Message -----
>>> The DAO unit tests take twice as long as the rest of the test to run
>>> is
>>> there any way to break them up into two pieces?
>>>
>> It will not be easy..
>>
>> The way the tests are built today is with DB-unit.
>> DB-unit allows to have an XML file with predefined data (called
>> fixtures) which is used to recreate the DB data each time a test-class
>> is run.
>>
>> This is all fine, except that in our tests there are (at least) 2 issues:
>>   1. The same fixtures.xml file is used in all DAO tests.
>>   2. Some DAOs require fixtures for several tables.
>>
>> Now, we could fix issue #1 by splitting the fixtures file into smaller
>> files, each relating to only one table, which would allow us to run
>> these tests in parallel on the same DB.
>> Issue #2 would require to figure out which tests require several
>> fixtures, and have them run isolated from the other tests which
>> require only a single table.
>>
>> A simpler solution could be to have the tests run each on it's own db
>> schema (or it's own db) which eliminates the dependencies and allows
>> to run all in parallel, but is a bit more complicated to maintain (we
>> would need some script that generates these schemas/dbs for tests
>> automatically) and keeping multiple schemas up to date would also
>> require CPU time.
>>
>> This is speaking in terms of the tests themselves, without considering
>> the build process itself.
>
> There are two issues here:
>
> 1) DB connection is created during initialization of every test case,
> and destroyed at the end of each test case execution
> 2) The fixtures data is inserted during initialization of every test case
>
> I think both of these can be resolved by
>   - creating the test data only during initialization of the first test
> case, which will include creating the connection (with auto-commit =
> false), inserting fixtures data and committing it
>   - rolling back any changes done to the database during test case
> execution in the tearDown method
>
> I just tried this in two phases. Using the same connection across all
> test cases brought down the dao unit tests run time from 4:42.683s to
> 1:07.628s, and inserting the fixtures data only once further brought it
> down to just 22.295s ! (on my local development machine)
>
> I've just sent a patch with these changes: http://gerrit.ovirt.org/7336

Hi Shireesh, I am also providing some input on some missing functionality


>
>>
>>> --
>>> Thanks
>>> Robert Middleswarth
>>> @rmiddle (twitter/IRC)
>>>
>>> _______________________________________________
>>> Engine-devel mailing list
>>> Engine-devel at ovirt.org
>>> http://lists.ovirt.org/mailman/listinfo/engine-devel
>>>
>> _______________________________________________
>> Engine-devel mailing list
>> Engine-devel at ovirt.org
>> http://lists.ovirt.org/mailman/listinfo/engine-devel
>
> _______________________________________________
> Engine-devel mailing list
> Engine-devel at ovirt.org
> http://lists.ovirt.org/mailman/listinfo/engine-devel



More information about the Devel mailing list