Implement 'show' command. 15/30715/1
authorTaseer <taseer94@gmail.com>
Mon, 13 Mar 2017 16:13:45 +0000 (21:13 +0500)
committerYujun Zhang <zhang.yujunz@zte.com.cn>
Thu, 16 Mar 2017 15:57:14 +0000 (15:57 +0000)
- Render the description via templates

JIRA: QTIP-205

Change-Id: I10523f85f80350e901a4a701bb65ca4833f8ff7c
Signed-off-by: Taseer Ahmed <taseer94@gmail.com>
(cherry picked from commit bb5af4b9be1325b61c7f80e71c7d50892ae22956)

qtip/cli/commands/cmd_metric.py
qtip/cli/commands/cmd_plan.py
qtip/cli/commands/cmd_qpi.py
qtip/cli/templates/metric.j2 [new file with mode: 0644]
qtip/cli/templates/plan.j2 [new file with mode: 0644]
qtip/cli/templates/qpi.j2 [new file with mode: 0644]
qtip/cli/utils.py
tests/unit/cli/cmd_metric_test.py
tests/unit/cli/cmd_plan_test.py
tests/unit/cli/cmd_qpi_test.py

index e8d8697..31b7b70 100644 (file)
@@ -35,7 +35,10 @@ def cmd_list(ctx):
 @click.argument('name')
 @pass_context
 def show(ctx, name):
-    pass
+    metric = MetricSpec('{}.yaml'.format(name))
+    cnt = metric.content
+    output = utils.render('metric', cnt)
+    click.echo(output)
 
 
 @cli.command('run', help='Run tests to run Performance Metrics')
index 2f07965..9077349 100644 (file)
@@ -43,7 +43,10 @@ def list(ctx):
 @click.argument('name')
 @pass_context
 def show(ctx, name):
-    pass
+    plan = Plan('{}.yaml'.format(name))
+    cnt = plan.content
+    output = utils.render('plan', cnt)
+    click.echo(output)
 
 
 @cli.command('run', help='Execute a Plan')
index a12fa98..1f23211 100644 (file)
@@ -36,7 +36,10 @@ def cmd_list(ctx):
 @click.argument('name')
 @pass_context
 def show(ctx, name):
-    pass
+    qpi = QPISpec('{}.yaml'.format(name))
+    cnt = qpi.content
+    output = utils.render('qpi', cnt)
+    click.echo(output)
 
 
 @cli.command('run', help='Run performance tests for the specified QPI')
diff --git a/qtip/cli/templates/metric.j2 b/qtip/cli/templates/metric.j2
new file mode 100644 (file)
index 0000000..126587f
--- /dev/null
@@ -0,0 +1,6 @@
+Name: {{ name }}
+Description: {{ description }}
+Workloads:
+{% for wl in workloads %}
+  {{ wl }}
+{% endfor %}
diff --git a/qtip/cli/templates/plan.j2 b/qtip/cli/templates/plan.j2
new file mode 100644 (file)
index 0000000..c9adccc
--- /dev/null
@@ -0,0 +1,2 @@
+Name: {{ name }}
+Description: {{ description }}
diff --git a/qtip/cli/templates/qpi.j2 b/qtip/cli/templates/qpi.j2
new file mode 100644 (file)
index 0000000..cc85f10
--- /dev/null
@@ -0,0 +1,12 @@
+Name: {{ title }}
+Description: {{ description }}
+{% for section in sections %}
+  Name: {{ section.name }}
+  Weight: {{ section.weight }}
+  Formula: {{ section.formula }}
+  Metrics:
+  {% for metric in section.metrics %}
+    {{ metric }}
+  {% endfor %}
+{% endfor %}
+
index 844d4f3..a747323 100644 (file)
@@ -7,6 +7,9 @@
 # http://www.apache.org/licenses/LICENSE-2.0
 ##############################################################################
 
+from jinja2 import Environment
+from jinja2 import FileSystemLoader
+from os import path
 from prettytable import PrettyTable
 
 
@@ -16,3 +19,13 @@ def table(name, components):
     table.align[name] = 'l'
     [table.add_row([component['name'][0:-5]]) for component in components]
     return table
+
+
+def render(name, var_dict):
+    """ Get the templates to render for specific component """
+    tmpl_path = path.join(path.dirname(__file__), 'templates')
+    tmpl_loader = FileSystemLoader(tmpl_path)
+    env = Environment(loader=tmpl_loader)
+    template = env.get_template('{}.j2'.format(name))
+    result = template.render(var_dict)
+    return result
index e121fb1..cd496ad 100644 (file)
@@ -34,8 +34,10 @@ def test_run(runner):
 
 
 def test_show(runner):
-    result = runner.invoke(cli, ['metric', 'show', 'fake-metric'])
-    assert result.output == ''
+    result = runner.invoke(cli, ['metric', 'show', 'dhrystone'])
+    assert 'Name: dhrystone' in result.output
+    assert 'Description: A synthetic computing benchmark program intended to be representative of' \
+           'system (integer) programming.'
 
     result = runner.invoke(cli, ['metric', 'show'])
     assert 'Missing argument "name".' in result.output
index 7c3335f..30025ae 100644 (file)
@@ -32,8 +32,9 @@ def test_run(runner):
 
 
 def test_show(runner):
-    result = runner.invoke(cli, ['plan', 'show', 'fake-plan'])
-    assert result.output == ''
+    result = runner.invoke(cli, ['plan', 'show', 'compute'])
+    assert 'Name: compute QPI' in result.output
+    assert 'Description: compute QPI profile'
 
     result = runner.invoke(cli, ['plan', 'show'])
     assert 'Missing argument "name".' in result.output
index 7067d62..3d2c261 100644 (file)
@@ -32,8 +32,9 @@ def test_run(runner):
 
 
 def test_show(runner):
-    result = runner.invoke(cli, ['qpi', 'show', 'fake-qpi'])
-    assert result.output == ''
+    result = runner.invoke(cli, ['qpi', 'show', 'compute'])
+    assert 'Name: compute' in result.output
+    assert 'Description: sample performance index of computing' in result.output
 
     result = runner.invoke(cli, ['qpi', 'show'])
     assert 'Missing argument "name".' in result.output