From 683831e33bab86dd1f8d6844f7fa2aec5e12b171 Mon Sep 17 00:00:00 2001 From: Yujun Zhang Date: Wed, 26 Jul 2017 14:30:28 +0800 Subject: Deprecate plan and metric loader - qtip test plan is now automaticlly generated by `qtip create`. The original way of loading plans is no longer valid - metric specs are now embedded in qpi spec, no separated loader are required now JIRA: QTIP-258 Change-Id: I768d75b014163ce060faff00f415a1cdc437ce73 Signed-off-by: Yujun Zhang --- qtip/api/controllers/metric.py | 25 ------ qtip/api/controllers/plan.py | 31 ------- qtip/api/swagger/swagger.yaml | 194 ---------------------------------------- qtip/cli/commands/cmd_metric.py | 54 ----------- qtip/loader/metric.py | 16 ---- qtip/loader/plan.py | 58 ------------ qtip/loader/qpi.py | 3 - 7 files changed, 381 deletions(-) delete mode 100644 qtip/api/controllers/metric.py delete mode 100644 qtip/api/controllers/plan.py delete mode 100644 qtip/cli/commands/cmd_metric.py delete mode 100644 qtip/loader/metric.py delete mode 100644 qtip/loader/plan.py (limited to 'qtip') diff --git a/qtip/api/controllers/metric.py b/qtip/api/controllers/metric.py deleted file mode 100644 index 96cd985c..00000000 --- a/qtip/api/controllers/metric.py +++ /dev/null @@ -1,25 +0,0 @@ -############################################################################## -# Copyright (c) 2017 akhil.batra@research.iiit.ac.in and others. -# -# All rights reserved. This program and the accompanying materials -# are made available under the terms of the Apache License, Version 2.0 -# which accompanies this distribution, and is available at -# http://www.apache.org/licenses/LICENSE-2.0 -############################################################################## - -import httplib - -from qtip.api.controllers import common -from qtip.loader import metric - - -def list_metrics(): - metrics = list(metric.MetricSpec.list_all()) - metrics_by_name = [m['name'] for m in metrics] - return {'metrics': metrics_by_name}, httplib.OK - - -@common.check_endpoint_for_error(resource='Metric') -def get_metric(name): - metric_spec = metric.MetricSpec(name) - return metric_spec.content diff --git a/qtip/api/controllers/plan.py b/qtip/api/controllers/plan.py deleted file mode 100644 index 00593878..00000000 --- a/qtip/api/controllers/plan.py +++ /dev/null @@ -1,31 +0,0 @@ -############################################################################## -# Copyright (c) 2017 akhil.batra@research.iiit.ac.in and others. -# -# All rights reserved. This program and the accompanying materials -# are made available under the terms of the Apache License, Version 2.0 -# which accompanies this distribution, and is available at -# http://www.apache.org/licenses/LICENSE-2.0 -############################################################################## - -import httplib - -from qtip.api.controllers import common -from qtip.base import error -from qtip.loader import plan - - -def list_plans(): - plans = list(plan.Plan.list_all()) - plans_by_name = [p['name'] for p in plans] - return {'plans': plans_by_name}, httplib.OK - - -@common.check_endpoint_for_error(resource='Plan') -def get_plan(name): - plan_spec = plan.Plan(name) - return plan_spec.content - - -@common.check_endpoint_for_error(resource='Plan', operation='Run') -def run_plan(name, action="run"): - raise error.ToBeDoneError('run_plan', 'plan') diff --git a/qtip/api/swagger/swagger.yaml b/qtip/api/swagger/swagger.yaml index 51c3ebb8..8cb0e23b 100644 --- a/qtip/api/swagger/swagger.yaml +++ b/qtip/api/swagger/swagger.yaml @@ -16,95 +16,6 @@ consumes: produces: - application/json paths: - /plans: - get: - summary: List all plans - operationId: qtip.api.controllers.plan.list_plans - tags: - - Plan - - Standalone - responses: - 200: - description: A list of plans - schema: - type: array - items: - $ref: '#/definitions/Plans' - 501: - description: Resource not implemented - schema: - $ref: '#/definitions/Error' - default: - description: Unexpected error - schema: - $ref: '#/definitions/Error' - /plans/{name}: - get: - summary: Get a plan by plan name - operationId: qtip.api.controllers.plan.get_plan - tags: - - Plan - - Standalone - parameters: - - name: name - in: path - description: Plan name - required: true - type: string - responses: - 200: - description: Plan information - schema: - $ref: '#/definitions/Plan' - 404: - description: Plan not found - schema: - $ref: '#/definitions/Error' - 501: - description: Resource not implemented - schema: - $ref: '#/definitions/Error' - default: - description: Unexpected error - schema: - $ref: '#/definitions/Error' - post: - summary: Run a plan and return results - operationId: qtip.api.controllers.plan.run_plan - tags: - - Plan - - Standalone - parameters: - - name: name - in: path - description: Plan name - required: true - type: string - - name: action - in: query - description: action for a plan - required: true - type: string - responses: - 200: - description: Result of the run of the plan - #TODO (akhil) define schema - 404: - description: Plan not found - schema: - $ref: '#/definitions/Error' - 400: - description: Invalid parameters - schema: - $ref: '#/definitions/Error' - 501: - description: Resource not implemented - schema: - $ref: '#/definitions/Error' - default: - description: Unexpected error - schema: - $ref: '#/definitions/Error' /qpis: get: summary: List all QPIs @@ -158,112 +69,7 @@ paths: description: Unexpected error schema: $ref: '#/definitions/Error' - /metrics: - get: - summary: List all metrics - operationId: qtip.api.controllers.metric.list_metrics - tags: - - Metric - - Standalone - - Agent - responses: - 200: - description: A list of metrics - schema: - items: - $ref: '#/definitions/Metrics' - 501: - description: Resource not implemented - schema: - $ref: '#/definitions/Error' - default: - description: Unexpected error - schema: - $ref: '#/definitions/Error' - /metrics/{name}: - get: - summary: Get a metric - operationId: qtip.api.controllers.metric.get_metric - tags: - - Metric - - Standalone - - Agent - parameters: - - name: name - in: path - description: Metric name - required: true - type: string - responses: - 200: - description: Metric information - schema: - $ref: '#/definitions/Metric' - 404: - description: Metric not found - schema: - $ref: '#/definitions/Error' - 501: - description: Resource not implemented - schema: - $ref: '#/definitions/Error' - default: - description: Unexpected error - schema: - $ref: '#/definitions/Error' definitions: - Plan: - type: object - required: - - name - properties: - name: - type: string - description: - type: string - info: - type: object - config: - type: object - QPIs: - type: array - items: - type: object - Plans: - type: object - required: - - plans - properties: - plans: - type: array - items: - type: string - Metric: - type: object - required: - - name - properties: - name: - type: string - description: - type: string - links: - type: array - items: - type: string - workloads: - type: array - items: - type: string - Metrics: - type: object - required: - - metrics - properties: - metrics: - type: array - items: - type: string QPI: type: object required: diff --git a/qtip/cli/commands/cmd_metric.py b/qtip/cli/commands/cmd_metric.py deleted file mode 100644 index 0a385898..00000000 --- a/qtip/cli/commands/cmd_metric.py +++ /dev/null @@ -1,54 +0,0 @@ -############################################################################## -# Copyright (c) 2017 taseer94@gmail.com and others. -# -# All rights reserved. This program and the accompanying materials -# are made available under the terms of the Apache License, Version 2.0 -# which accompanies this distribution, and is available at -# http://www.apache.org/licenses/LICENSE-2.0 -############################################################################## - -import click -from colorama import Fore -import os - -from qtip.base.error import InvalidContentError -from qtip.base.error import NotFoundError -from qtip.cli import utils -from qtip.loader.metric import MetricSpec - - -@click.group() -def cli(): - ''' Performance Metrics Group ''' - pass - - -@cli.command('list', help='List all the Metric Groups') -def cmd_list(): - metrics = MetricSpec.list_all() - table = utils.table('Metrics', metrics) - click.echo(table) - - -@cli.command('show', help='View details of a Metric') -@click.argument('name') -def show(name): - try: - metric = MetricSpec('{}.yaml'.format(name)) - except NotFoundError as nf: - click.echo(Fore.RED + "ERROR: metric spec: " + nf.message) - except InvalidContentError as ice: - click.echo(Fore.RED + "ERROR: metric spec " + ice.message) - else: - cnt = metric.content - output = utils.render('metric', cnt) - click.echo(output) - - -@cli.command('run', help='Run performance test') -@click.argument('name') -@click.option('-p', '--path', help='Path to store results') -def run(name, path): - runner_path = os.path.join(os.path.dirname(__file__), os.path.pardir, os.path.pardir, - 'runner/runner.py') - os.system('python {0} -b {1} -d {2}'.format(runner_path, name, path)) diff --git a/qtip/loader/metric.py b/qtip/loader/metric.py deleted file mode 100644 index 842fcdbf..00000000 --- a/qtip/loader/metric.py +++ /dev/null @@ -1,16 +0,0 @@ -############################################################################## -# Copyright (c) 2016 ZTE Corp and others. -# -# All rights reserved. This program and the accompanying materials -# are made available under the terms of the Apache License, Version 2.0 -# which accompanies this distribution, and is available at -# http://www.apache.org/licenses/LICENSE-2.0 -############################################################################## - -from yaml_file import YamlFileLoader - - -class MetricSpec(YamlFileLoader): - """metrics in QTIP are categorized by performance test tools, such as - dhrystone, whetstone and etc""" - RELATIVE_PATH = 'metric' diff --git a/qtip/loader/plan.py b/qtip/loader/plan.py deleted file mode 100644 index e15651a3..00000000 --- a/qtip/loader/plan.py +++ /dev/null @@ -1,58 +0,0 @@ -############################################################################## -# Copyright (c) 2016 ZTE Corp and others. -# -# All rights reserved. This program and the accompanying materials -# are made available under the terms of the Apache License, Version 2.0 -# which accompanies this distribution, and is available at -# http://www.apache.org/licenses/LICENSE-2.0 -############################################################################## - - -from qtip.base.constant import BaseProp -from qtip.collector import CollectorProp as CProp -from qtip.collector.logfile import LogfileCollector -from qtip.loader.yaml_file import YamlFileLoader -from qtip.loader.qpi import QPISpec - - -# TODO(yujunz) more elegant way to load module dynamically -def load_collector(type_name): - if type_name == LogfileCollector.TYPE: - return LogfileCollector - else: - raise Exception("Invalid collector type: {}".format(type_name)) - - -class Plan(YamlFileLoader): - """ - a benchmark plan is consist of configuration and a QPI list - """ - - RELATIVE_PATH = 'plan' - - def __init__(self, name, paths=None): - super(Plan, self).__init__(name, paths) - - _config = self.content[PlanProp.CONFIG] - - self.collectors = [load_collector(c[CProp.TYPE])(c, self) - for c in _config[PlanProp.COLLECTORS]] - - self.qpis = [QPISpec(qpi, paths=paths) - for qpi in self.content[PlanProp.QPIS]] - - -class PlanProp(BaseProp): - # plan - INFO = 'info' - - FACILITY = 'facility' - ENGINEER = 'engineer' - - CONFIG = 'config' - - DRIVER = 'driver' - COLLECTORS = 'collectors' - REPORTER = 'reporter' - - QPIS = 'QPIs' diff --git a/qtip/loader/qpi.py b/qtip/loader/qpi.py index 73da61e9..2a85766e 100644 --- a/qtip/loader/qpi.py +++ b/qtip/loader/qpi.py @@ -8,7 +8,6 @@ ############################################################################## from yaml_file import YamlFileLoader -from metric import MetricSpec from qtip.base.constant import SpecProp from qtip.util.formula import Formula @@ -34,5 +33,3 @@ class Section(object): self.name = content[SpecProp.NAME] self.weight = content[SpecProp.WEIGHT] self.formula = Formula(content[SpecProp.FORMULA]) - self.metrics = [MetricSpec(record, paths=paths) - for record in content[SpecProp.METRICS]] -- cgit 1.2.3-korg