def test_register_experiment(): from lttngcluster.api import TraceExperiment from lttngcluster.experiments.reg import registry, AlreadyRegistered, NotRegistered class TestExperiment(TraceExperiment): def validate(self, errors): pass registry.register(TestExperiment) exp = registry.get_experiment('TestExperiment') exception1 = None exception2 = None try: registry.register(TestExperiment) except Exception as e: exception1 = e try: registry.get_experiment('bidon') except Exception as e: exception2 = e assert isinstance(exp, TraceExperiment) assert isinstance(exception1, AlreadyRegistered) assert isinstance(exception2, NotRegistered)
def cmd_trace_one(args, recipe): err = RecipeErrorCollection() opts = TraceExperimentOptions(**TraceExperimentOptions.default_options) opts.load_path(recipe) klass = registry.get_experiment(opts['experiment']) klass.set_options(opts) klass.validate(err) if len(err) > 0: pprint.pprint(opts) recipe_errors_show(recipe, err) raise Exception('validation error') if args.verbose: print('recipe:') pprint.pprint(opts) runner = TraceRunnerDefault() runner.set_dry_run(args.dry_run) runner.run(klass)
def recipe_verify(recipe, err): opts = TraceExperimentOptions(**TraceExperimentOptions.default_options) opts.load_path(recipe) klass = registry.get_experiment(opts['experiment']) klass.set_options(opts) klass.validate(err)