CEPH filesystem development
 help / color / mirror / Atom feed
* rgw: refactoring test_multi.py for teuthology
@ 2017-01-03 20:42 Casey Bodley
  2017-01-04 11:19 ` Shilpa Manjarabad Jagannath
  0 siblings, 1 reply; 3+ messages in thread
From: Casey Bodley @ 2017-01-03 20:42 UTC (permalink / raw)
  To: Shilpa Manjarabad Jagannath
  Cc: Ali Maredia, The Sacred Order of the Squid Cybernetic

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


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2017-04-10 14:59 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-01-03 20:42 rgw: refactoring test_multi.py for teuthology Casey Bodley
2017-01-04 11:19 ` Shilpa Manjarabad Jagannath
     [not found]   ` <104748175.9087619.1484038356875.JavaMail.zimbra@redhat.com>
     [not found]     ` <1014219555.87677510.1484085955314.JavaMail.zimbra@redhat.com>
     [not found]       ` <1064077357.9340713.1484113756463.JavaMail.zimbra@redhat.com>
2017-04-10 14:59         ` Casey Bodley

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox