[openstack-dev] [Keystone] Need help writing gate tests

Adam Young ayoung at redhat.com
Thu Jul 11 03:23:34 UTC 2013

On 07/10/2013 11:01 PM, Clark Boylan wrote:
> On Wed, Jul 10, 2013 at 7:32 PM, Adam Young <ayoung at redhat.com> wrote:
>> I want to write 3 new Jenkins gate tests:   Run the Keystone unit tests
>> against
>> 1. A live LDAP server
>> 2. MySQL
>> 3. Postgresql
>> Right now, we know that the unit tests will fail against the live DBs, so we
>> want those two to be non-voting.  The Live LDAP one should be the scheme as
>> set up by devstack, and should be voting (can be non-voting to start)
>> where do I start?  Do I need to do this in
>> https://github.com/openstack-infra/config or
>> http://ci.openstack.org/devstack-gate.html?
> Adding a Jenkins job typically involves two pieces of config in
> openstack-infra/config. First you need to add the job to the Jenkins
> Job Builder config so that the job gets into Jenkins. This is done in
> the files under
> modules/openstack_project/files/jenkins_job_builder/config. There are
> tons of examples in there and documentation can be found at
> http://ci.openstack.org/jjb.html. The other config that is needed is
> an update to the zuul layout.yaml file telling zuul when to run the
> jobs. The layout file is at
> modules/openstack_project/files/zuul/layout.yaml and documentation for
> that can be found at http://ci.openstack.org/zuul.html.
Thanks.  I'll start reading up here.

> Our CentOS 6 and Ubuntu Precise slaves (used to run python 2.6 and 2.7
> unittests) have MySQL and PostgreSQL servers running on them and are
> available to the unittests.

We currently use a sepate user and database for tests than would be run 
for a live server.  The keystone server is the keystone DB user, and the 
unit tests run against the keystone_test database as the keystone_test 
user.   I assu have to create these as part of the test setup?  I can 
possibly add the unit test runs to the current gate jobs, assuming I can 
get them to run cleanly. Would that make more sense?  I thought that the 
current gate jobs for Mysql and postgres were pretty much Tempest runs, 
and we don't currently have a way for tempest to run Keystone unit 
tests.  Does that make more sense than creating a whole separate gate 
job, or is the separate gate job the more scalable solution?

> You can see how Nova makes use of these
> servers at https://github.com/openstack/nova/blob/master/nova/tests/db/test_migrations.py#L31.
> I prefer having opportunistic tests like Nova because it keeps the
> number of special tests in our system down. If this isn't possible
> because the tests don't currently pass you will probably want to add a
> new test that runs something like `tox -evenv -- #command to run tests
> against real DBs`.
> Our CentOS 6 and Ubuntu Precise slaves do not currently have LDAP
> servers running on them but we would be happy to add them. I don't
> think disposable devstack slaves are necessary to do LDAP testing as
> your LDAP tests should be able to assert a clean LDAP state before
> testing.

Yes, that works fine. We wipe the LDAP clean before each test.  We still 
need to install the schema, as that is outside the realm of Keystone. 
Devstack does that now.  I assume we should make puppet scripts for that?

> If that isn't possible (I could be completely wrong about my
> previous statement) you will want to look at the
> gate-pbr-devstack-vm-rawinstall in the Jenkins Job Builder config as
> it will show you how to use a devstack node for something other than
> running tempest.
> Clark
> _______________________________________________
> OpenStack-dev mailing list
> OpenStack-dev at lists.openstack.org
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

More information about the OpenStack-dev mailing list