summaryrefslogtreecommitdiffstats
path: root/qtip
diff options
context:
space:
mode:
authorYujun Zhang <zhang.yujunz@zte.com.cn>2017-07-26 14:30:28 +0800
committerYujun Zhang <zhang.yujunz@zte.com.cn>2017-07-26 14:32:46 +0800
commit683831e33bab86dd1f8d6844f7fa2aec5e12b171 (patch)
treeb4152dd8054b3ac9048bba98edf3493bb12d68d9 /qtip
parent5bd3241840ff2f2db64f7d5e139d05b011bae941 (diff)
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 <zhang.yujunz@zte.com.cn>
Diffstat (limited to 'qtip')
-rw-r--r--qtip/api/controllers/metric.py25
-rw-r--r--qtip/api/controllers/plan.py31
-rw-r--r--qtip/api/swagger/swagger.yaml194
-rw-r--r--qtip/cli/commands/cmd_metric.py54
-rw-r--r--qtip/loader/metric.py16
-rw-r--r--qtip/loader/plan.py58
-rw-r--r--qtip/loader/qpi.py3
7 files changed, 0 insertions, 381 deletions
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]]