Re: rgw: refactoring test_multi.py for teuthology

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Shilpa and list,

A big set of test_multi.py changes merged recently that added support for multiple zonegroups - see https://github.com/ceph/ceph/pull/14216 (many thanks to @dongbula!). I was afraid that this would introduce a lot of conflicts with the refactoring work in progress, so I spent some time over the weekend doing that refactoring myself:

https://github.com/ceph/ceph/pull/14433

There are still some open questions about the layout and organization of the python stuff that I would love some feedback on. Any review and testing would also be appreciated. The next step will be to integrate them into a new rgw/multisite teuthology suite.

Thanks,
Casey

p.s. For those wondering how to run test_multi.py against a cmake build:

~/ceph/build $ nosetests ../src/test/rgw/test_multi.py


On 01/11/2017 12:49 AM, Shilpa Manjarabad Jagannath wrote:
Sure, thanks Ali.

Regards,
Shilpa MJ.

----- Original Message -----
From: "Ali Maredia" <amaredia@xxxxxxxxxx>
To: "Shilpa Manjarabad Jagannath" <smanjara@xxxxxxxxxx>
Cc: "Casey Bodley" <cbodley@xxxxxxxxxx>
Sent: Wednesday, January 11, 2017 3:35:55 AM
Subject: Re: rgw: refactoring test_multi.py for teuthology

Shilpa,

I talked to Casey today and have a good idea of how this is going to be split
up.

I'm all ready for integrating the scripts in teuthology once you're done
splitting
out the generic code from test_multi.py and verifying that the vstart version
still works.

-Ali

----- Original Message -----
From: "Shilpa Manjarabad Jagannath" <smanjara@xxxxxxxxxx>
To: "Ali Maredia" <amaredia@xxxxxxxxxx>
Cc: "Casey Bodley" <cbodley@xxxxxxxxxx>
Sent: Tuesday, January 10, 2017 3:52:36 AM
Subject: Re: rgw: refactoring test_multi.py for teuthology

Hi Ali,

I was going to start working on this. Just wanted to know if you are
already
at it?


Regards,
Shilpa MJ.

----- Original Message -----
From: "Shilpa Manjarabad Jagannath" <smanjara@xxxxxxxxxx>
To: "Casey Bodley" <cbodley@xxxxxxxxxx>
Cc: "Ali Maredia" <amaredia@xxxxxxxxxx>, "The Sacred Order of the Squid
Cybernetic" <ceph-devel@xxxxxxxxxxxxxxx>
Sent: Wednesday, January 4, 2017 4:49:42 PM
Subject: Re: rgw: refactoring test_multi.py for teuthology



----- Original Message -----
From: "Casey Bodley" <cbodley@xxxxxxxxxx>
To: "Shilpa Manjarabad Jagannath" <smanjara@xxxxxxxxxx>
Cc: "Ali Maredia" <amaredia@xxxxxxxxxx>, "The Sacred Order of the Squid
Cybernetic" <ceph-devel@xxxxxxxxxxxxxxx>
Sent: Wednesday, January 4, 2017 2:12:50 AM
Subject: rgw: refactoring test_multi.py for teuthology

Hi Shilpa, Ali, and list,

The rgw multisite tests are currently running out of
src/test/rgw/test_multi.py, and use shell scripts to set up multiple
vstart clusters. We'd like to adapt these tests so they can run inside
of teuthology as well (while preserving the ability to run them
manually). Running inside of teuthology means using an existing
multisite configuration, rather than building one up with the shell
scripts.

The python script currently has classes for RGWRealm, RGWCluster, and
RGWMulti. The RGWMulti.setup() method creates an RGWRealm and builds an
array of RGWClusters. RGWCluster.start() calls the mstart.sh script to
create a vstart cluster in a subdirectory. RGWRealm.init_zone() is then
running all of the radosgw-admin commands to configure that
zonegroup/zone/etc.

These seem like good base classes for this abstraction. For example, we
can derive VRealm/VCluster/VMulti to represent the existing vstart
implementation, and TRealm/TCluster/TMulti to represent their
teuthology
counterparts.

The existing unit tests only need to know the realm, which they access
as a global variable. We can turn the generic part (the test_*
functions
and their helper functions like check_*) into a separate module like
src/test/rgw/rgw_multi.py, and add a set_realm() function to set this
global variable.

Then the vstart version of the test (src/test/rgw/test_multi.py) can
import rgw_multi, instantiate its VRealm/etc to run the cluster
creation/configuration, then pass its realm to set_realm() for the unit
tests. In order for nosetests to find and run the test_* functions in
rgw_multi.py, test_multi.py needs to use 'from rgw_multi import *'.

A separate python script, probably under qa/tasks/, would implement the
TRealm/etc subclasses by making the appropriate calls into teuthology.
Instead of creating the cluster during initialization, it would read
the
existing multisite configuration - either by interpreting the
teuthology
'config', or by running radosgw-admin commands like 'period get'.

It seems like a good first step would be to split out the generic code
from test_multi.py into rgw_multi.py and verify that the vstart version
still works.

Casey

--
To unsubscribe from this list: send the line "unsubscribe ceph-devel"
in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


--
To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [CEPH Users]     [Ceph Large]     [Information on CEPH]     [Linux BTRFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]
  Powered by Linux