On Mon, 2009-06-08 at 09:10 -0700, Martin Bligh wrote: > On Fri, Jun 5, 2009 at 1:46 PM, Lucas Meneghel Rodrigues<lmr@xxxxxxxxxx> wrote: > > pickle allows more control over the load/save process. Specifically, it > > enables us to dump the contents of an object to disk without having to > > unpickle it. > > > > shelve, which uses pickle, seems to pickle and unpickle every time sync() > > is called. This is bad for classes that need to be unpickled only once > > per test (such a class will be introduced in a future patch). > > > > > +def dump_env(obj, filename): > > + file = open(filename, "w") > > + cPickle.dump(obj, file) > > + file.close() > > This seems like a strange function name - it's really pickling any > object, nothing specific to do with the environment? Yes, I agree it's pickling any object, but in the end, we are using this file to unpickle data from our environment file, hence Michael choose that name. > > + > > +def load_env(filename, default=None): > > + try: > > + file = open(filename, "r") > > + except: > > + return default > > + obj = cPickle.load(file) > > + file.close() > > + return obj > > + > > + > > class kvm(test.test): > > """ > > Suite of KVM virtualization functional tests. > > @@ -62,12 +78,12 @@ class kvm(test.test): > > keys = params.keys() > > keys.sort() > > for key in keys: > > - logging.debug(" %s = %s" % (key, params[key])) > > + logging.debug(" %s = %s", key, params[key]) > > self.write_test_keyval({key: params[key]}) > > > > # Open the environment file > > env_filename = os.path.join(self.bindir, "env") > > - env = shelve.open(env_filename, writeback=True) > > + env = load_env(env_filename, {}) > > logging.debug("Contents of environment: %s" % str(env)) > > > > try: > > @@ -90,21 +106,20 @@ class kvm(test.test): > > > > # Preprocess > > kvm_preprocessing.preprocess(self, params, env) > > - env.sync() > > + dump_env(env, env_filename) > > # Run the test function > > routine_obj.routine(self, params, env) > > - env.sync() > > + dump_env(env, env_filename) > > > > except Exception, e: > > - logging.error("Test failed: %s" % e) > > + logging.error("Test failed: %s", e) > > logging.debug("Postprocessing on error...") > > kvm_preprocessing.postprocess_on_error(self, params, env) > > - env.sync() > > + dump_env(env, env_filename) > > raise > > > > finally: > > # Postprocess > > kvm_preprocessing.postprocess(self, params, env) > > - logging.debug("Contents of environment: %s" % str(env)) > > - env.sync() > > - env.close() > > + logging.debug("Contents of environment: %s", str(env)) > > + dump_env(env, env_filename) > > -- > > 1.6.2.2 > > > > _______________________________________________ > > Autotest mailing list > > Autotest@xxxxxxxxxxxxxxx > > http://test.kernel.org/cgi-bin/mailman/listinfo/autotest > > -- Lucas Meneghel Rodrigues Software Engineer (QE) Red Hat - Emerging Technologies -- 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