[openstack-dev] [Heat] moving sqlite migration scripts to tests

Anant Patil anant.patil at hp.com
Mon Apr 27 02:42:36 UTC 2015


On 18-Apr-15 02:41, Mike Bayer wrote:
> 
> 
> On 4/17/15 1:29 PM, Zane Bitter wrote:
>> On 16/04/15 04:05, Anant Patil wrote:
>>> Hi,
>>>
>>> Sometime back we had a discussion on IRC regarding sqlite migration
>>> scripts. Since sqlite is mostly used for testing, we were thinking
>>> about moving the sqlite migration related code to tests folder and
>>> keep the migrate_repo sane (with only production code). There was
>>> utility class[1] added recently for helping with sqlite migrations
>>> and there were questions on the location of that class. The utility
>>> lives in heat/db/sqlalchemy folder and since it is used only for
>>> testing, it should probably live somewhere in the tests folder (like
>>> tests/migrate_repo? ) along with the sqlite migration scripts.
>>>
>>> It would be better if we have a separate path for testing code and
>>> depending on the configured DB back-end (for example, sqlite), we pass
>>> the appropriate path (something like tests/migrate_repo for sqlite) to
>>> oslo_migration.db_sync().
>>>
>>> If it is okay to assume that sqlite is *always* used for testing, then
>>> IMO, we should re-factor the migration scripts. Please help us with your
>>> thoughts.
>>>
>>> [1]
>>> https://github.com/openstack/heat/blob/master/heat/db/sqlalchemy/utils.py 
>>>
>>>
>>> - Anant
>>
>> You're correct that we can assume SQLite is only used for tests.
>>
>> However, I'm not convinced that we need to change the migration 
>> scripts... it's bad enough that we have to write two different 
>> migrations in many cases (and totally unclear to me how this is 
>> testing anything useful), but having to write them in two different 
>> places seems even worse.
>>
>> I'd be more interested in seeing a change whereby we stop doing 
>> pointless migrations on an empty SQLite DB prior to testing and just 
>> generate it from the model. I think we can rely on the migration tests 
>> that run against the actual mariadb/postgresql clients to test the 
>> migrations themselves - we effectively already are in many cases.
> 
> We definitely should be generating to SQLite from the model directly for 
> all projects without using migrations.     I'm going to be pushing more 
> for migrating projects from sqlalchemy-migrate to alembic, and while 
> Alembic does do SQLite migrations now, it would be cleaner if we just 
> didn't bother.
> 
> There are also new features in the oslo.db test base that can allow a 
> schema to be created only once for lots of tests, where the tests 
> themselves run under a transaction that's rolled back during teardown; 
> the table structures stay in place.  We should be looking to use that 
> base for most/all of our DB-active tests.
> 
> 
> 
> 
> 
> 
>>
>> cheers,
>> Zane.
>>
>> __________________________________________________________________________ 
>>
>> OpenStack Development Mailing List (not for usage questions)
>> Unsubscribe: 
>> OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
> 
> 
> __________________________________________________________________________
> OpenStack Development Mailing List (not for usage questions)
> Unsubscribe: OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
> 

+1 for moving to Alembic as it abstracts out the migration logic, and
that will help Heat have a cleaner code base for migrations.



More information about the OpenStack-dev mailing list