If I follow tests for "Catalog", I see that only one test is overwritten in 
test_backend_sql.py while the remaining 2 test are new (i.e. not declared in 
test_backend.py). I am only having SQL driver interface. So, should I write any 
test in test_backend.py or not?
Can I write tests only in test_backend_sql.py and a blank class definition in 
test_backend.py and nothing anywhere else?
What all care should I take in doing this?



________________________________
 From: Dolph Mathews <[email protected]>
To: Akshat Kakkar <[email protected]> 
Cc: Adam Young <[email protected]>; OpenStack Development Mailing List 
<[email protected]> 
Sent: Monday, 15 July 2013 5:44 PM
Subject: Re: [openstack-dev] [Keystone] How to write unit tests for db methods?
 




On Mon, Jul 15, 2013 at 9:36 AM, Akshat Kakkar <[email protected]> wrote:

As in my methods, I do not pass session object from outside so I am followin 
the unit test for catalog. But what I am unable to understand is that there are 
some test in test_backend.py and some in test_backend_sql.py. What is the 
difference in between the two?

Tests in test_backend.py are run against all implementations of a driver's 
interface (KVS, SQL, LDAP, memcache, etc). Each driver type has a module (e.g. 
test_backend_sql.py) that sets up & tears down a backend for the driver, 
inherits tests from test_backend.py, overwrites/extends tests as necessary to 
document exceptions to the expected behavior (e.g. LDAP doesn't support 
multiple domains). Follow the inheritance hierarchy for any given class in 
test_backend_sql.py to illustrate.
 

>
>
>________________________________
> From: Adam Young <[email protected]>
>To: Akshat Kakkar <[email protected]> 
>Cc: OpenStack Development Mailing List <[email protected]>; 
>"[email protected]" <[email protected]> 
>Sent: Thursday, 11 July 2013 4:29 PM
>
>Subject: Re: [openstack-dev] [Keystone] How to write unit tests for db methods?
> 
>
>
>On 07/11/2013 05:23 AM, Akshat Kakkar wrote:
>
>
>>The methods of read/write/update/delete of records in the tables are written 
>>using SQLalchemy only and no direct sql is used.
>>
>>
>>I have implemented the things on the lines of trusts only.  Similar to 
>>trusts, I am also having RESTful APIs and unit tests for them are succesfully 
>>written. In test_backend_sql.py, it is seen that no unit tests are defined 
>>for trusts. So, it's confusing for me to implement the unit test for my 
>>backend sql code.
>Yeah, trusts themselves are pretty simple as far as REST, and they
    are exercised via the Token backend code as well as test_auth.py and
    test_v3_auth.py.
>
>Look at the tests for identity and catalog, those should be a better
    example to follow.
>
>
>
>
>>
>>I know I am confusing the things and I apologise for that, but I am asking 
>>because of that confusion only!
>>
>>
>>
>>
>>________________________________
>> From: Adam Young <[email protected]>
>>To: [email protected] 
>>Sent: Thursday, 11 July 2013 4:28 AM
>>Subject: Re: [openstack-dev] [Keystone] How to write unit tests for db 
>>methods?
>> 
>>
>>
>>On 07/10/2013 06:56 AM, Akshat Kakkar wrote:
>>
>>I have added 2 tables to keystone.
>>This should be done in a migration, and should be
                  tested using the test_db_update.py file.
>>
>>
>>I have methods which do the read/write/update/delete of records in these 
>>tables. 
PLease explain.  We are not doing direct sql, but rather using SQLalchemy.
>>
>>
>>
>>I want to write unit test for all this. These methods of mine inherit from 
>>keystone.common.sql and hence any call that these methods will make will go 
>>to the db returned by keystone.common.sql when creating a session. For 
>>writing a unit test this db should be a test db and not the production db. 
>>So, how can I have a session of test db? or is there altogether a different 
>>way of writing the unit test.
>>>
See test_backend_sql.py
>>
>>
>>>
>>>
>>>
>>>
>>>________________________________
>>> From: Dolph Mathews <[email protected]>
>>>To: Akshat Kakkar <[email protected]>; OpenStack Development Mailing 
>>>List <[email protected]>see  
>>>Sent: Tuesday, 9 July 2013 7:39 PM
>>>Subject: Re: [openstack-dev] [Keystone] How to write unit tests for db 
>>>methods?
>>> 
>>>
>>>
>>>I'm assuming you're referring to testing backend drivers as opposed to 
>>>database migrations (tests/test_sql_upgrade.py). 
>>>
>>>
>>>Backend agnostic tests land in tests/test_backend.py. Backend-specific 
>>>tests, overrides, etc belong in tests/test_backend_sql.py, 
>>>tests/test_backend_kvs.py, etc.
>>>
>>>
>>>Generally, you can't assume that keystone is backed by a database, however, 
>>>as it's entirely possible to deploy without one.
>>>
>>>
>>>
>>>On Tue, Jul 9, 2013 at 10:55 AM, Akshat Kakkar <[email protected]> 
>>>wrote:
>>>
>>>How to write unit tests in keystone for the methods which are directly 
>>>calling the backend db? I understand that for testing purpose it should be a 
>>>*fake db*, but how to do that in keystone?
>>>>
>>>>_______________________________________________
>>>>OpenStack-dev mailing list
>>>>[email protected]
>>>>http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>>>>
>>>>
>>>
>>>
>>>
>>>
-- 
>>>
>>>
>>>
-Dolph 
>>>
>>>
>>>
>>>
>>>_______________________________________________
OpenStack-dev mailing list [email protected] 
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev 
>>
>>_______________________________________________
>>OpenStack-dev mailing list
>>[email protected]
>>http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>>
>>
>>
>
>
>


-- 

-Dolph 
_______________________________________________
OpenStack-dev mailing list
[email protected]
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

Reply via email to