----- "sudhir kumar" <smalikphy@xxxxxxxxx> wrote: > On Sat, Oct 31, 2009 at 3:37 AM, Lucas Meneghel Rodrigues > <lmr@xxxxxxxxxx> wrote: > > Recently autoserv changed its default behavior of rsyncing > > the whole client directory to the test machine, now it > > will copy only the needed tests to the client machine. > > > > Also, the way the tests are loaded when running from the > > server has changed, breaking the KVM test when ran from > > autoserv. > > > > So change the mechanism to load KVM subtests, in order to > > cope with the recent autoserv changes. > > > > Thanks to Ryan Harper for having noticed this issue. > > > > Signed-off-by: Lucas Meneghel Rodrigues <lmr@xxxxxxxxxx> > > --- > > client/tests/kvm/kvm.py | 9 +++++---- > > 1 files changed, 5 insertions(+), 4 deletions(-) > > > > diff --git a/client/tests/kvm/kvm.py b/client/tests/kvm/kvm.py > > index 204164d..06ef9f5 100644 > > --- a/client/tests/kvm/kvm.py > > +++ b/client/tests/kvm/kvm.py > > @@ -22,9 +22,9 @@ class kvm(test.test): > > """ > > version = 1 > > def initialize(self): > > - # Make it possible to import modules from the test's > bindir > > - sys.path.append(self.bindir) > > + # Make it possible to import modules from the subtest dir > > self.subtest_dir = os.path.join(self.bindir, 'tests') > > + sys.path.append(self.subtest_dir) > > > > > > def run_once(self, params): > > @@ -51,7 +51,7 @@ class kvm(test.test): > > raise error.TestError("No %s.py test file found" > % type) > > # Load the tests directory (which was turned into a > py module) > > try: > > - test_module = __import__("tests.%s" % type) > > + test_module = __import__(type) > > This seems to have broken the execution of autotest under kvm guests. > I see the following error > 'module' object has no attribute 'run_autotest' > Traceback (most recent call last): > File > "/scratch/images/sudhir/devel/autotest/client/common_lib/test.py", > line 570, in _call_test_function > return func(*args, **dargs) > File > "/scratch/images/sudhir/devel/autotest/client/common_lib/test.py", > line 279, in execute > postprocess_profiled_run, args, dargs) > File > "/scratch/images/sudhir/devel/autotest/client/common_lib/test.py", > line 201, in _call_run_once > self.run_once(*args, **dargs) > File > "/scratch/images/sudhir/devel/autotest/client/tests/kvm/kvm.py", line > 63, in run_once > run_func = getattr(test_module, "run_%s" % > type) > AttributeError: 'module' object has no attribute > 'run_autotest' > > A little more debugging prints out that the module 'autotest' has > been > imported from a wrong place. > <module 'autotest' from > '/scratch/images/sudhir/devel/autotest/client/tests/kvm/autotest/__init__.pyc'> > So may be either we need to force to import from specific path or > change the name autotest. > > I had the test variant as below > only autotest.hackbench > I am unable to run any of the tests under autotest. I've encountered the same problem. I suggest we use the builtin imp module and import by filename. I'll try it and post a patch if it works. > > except ImportError, e: > > raise error.TestError("Failed to import test %s: > %s" % > > (type, e)) > > @@ -60,7 +60,8 @@ class kvm(test.test): > > kvm_preprocessing.preprocess(self, params, env) > > kvm_utils.dump_env(env, env_filename) > > # Run the test function > > - eval("test_module.%s.run_%s(self, params, env)" % > (type, type)) > > + run_func = getattr(test_module, "run_%s" % type) > > + run_func(self, params, env) > > kvm_utils.dump_env(env, env_filename) > > > > except Exception, e: > > -- > > 1.6.2.5 > > > > _______________________________________________ > > Autotest mailing list > > Autotest@xxxxxxxxxxxxxxx > > http://test.kernel.org/cgi-bin/mailman/listinfo/autotest > > > > > > -- > Sudhir Kumar > _______________________________________________ > Autotest mailing list > Autotest@xxxxxxxxxxxxxxx > http://test.kernel.org/cgi-bin/mailman/listinfo/autotest -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html