##############################################################################
# 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 os import path
import pytest
@pytest.fixture(scope='session')
def data_root():
return path.join(path.dirname(__file__), 'data')
@pytest.fixture(scope='session')
def benchmarks_root(data_root):
return path.join(data_root, 'benchmarks')
@pytest.fixture(scope='session')
def metrics():
return {
"ssl_rsa": {
"rsa_sign": [500],
"rsa_verify": [600]
}
}
@pytest.fixture(scope='session')
def metric_spec():
return {
"name": "ssl_rsa",
"workloads": [
{"name": "rsa_sign"},
{"name": "rsa_verify"}
]
}
@pytest.fixture(scope='session')
def section_spec(metric_spec):
return {
"name": "ssl",
"description": "cryptography and SSL/TLS performance",
"metrics": [metric_spec]
}
@pytest.fixture(scope='session')
def qpi_spec(section_spec):
return {
"name": "compute",
"description": "QTIP Performance Index of compute",
"sections": [section_spec]
}
@pytest.fixture(scope='session')
def rsa_sign_baseline():
return {'name': 'rsa_sign', 'baseline': '500'}
@pytest.fixture(scope='session')
def rsa_verify_baseline():
return {"name": "rsa_verify", "baseline": 600}
@pytest.fixture(scope='session')
def metric_baseline(rsa_sign_baseline, rsa_verify_baseline):
return {
"name": "ssl_rsa",
"workloads": [rsa_sign_baseline, rsa_verify_baseline]
}
@pytest.fixture(scope='session')
def section_baseline(metric_baseline):
return {
"name": "ssl",
"metrics": [metric_baseline]
}
@pytest.fixture(scope='session')
def qpi_baseline(section_baseline):
return {
"name": "compute-baseline",
"description": "The baseline for compute QPI",
"score": 2048,
"sections": [section_baseline]
}
@pytest.fixture(scope='session')
def metric_result():
return {'score': 1.0,
'name': 'ssl_rsa',
'description': 'metric',
'workloads': [{'description': 'workload', 'name': 'rsa_sign',
'score': 1.0, 'result': 500},
{'description': 'workload', 'name': 'rsa_verify',
'score': 1.0, 'result': 600}]}
@pytest.fixture(scope='session')
def section_result(metric_result):
return {'score': 1.0,
'name': 'ssl',
'description': 'cryptography and SSL/TLS performance',
'metrics': [metric_result]}
@pytest.fixture(scope='session')
def info():
return {
"system_info": {
"kernel": "4.4.0-72-generic x86_64 (64 bit)",
"product": "EC600G3",
"os": "Ubuntu 16.04 xenial",
"cpu": "2 Deca core Intel Xeon E5-2650 v3s (-HT-MCP-SMP-)",
"disk": "1200.3GB (25.1% used)",
"memory": "30769.7/128524.1MB"
}
}
@pytest.fixture(scope='session')
def spec():
""" refers to resources/QPI/compute.yaml """
return {
"sections": [{
"name": "ssl",
"description": "cryptography and SSL/TLS performance",
"metrics": [{
"workloads": [
{"name": "rsa_sign",
"description": "rsa x bits sign per second"},
{"name": "rsa_verify",
"description": "rsa x bits verify per second"}]
}]
}]
}
@pytest.fixture(scope='session')
def qpi_result(section_result, info):
return {'score': 2048,
'name': 'compute',
'description': 'QTIP Performance Index of compute',
'system_info': info,
'sections': [section_result],
'spec': "https://git.opnfv.org/qtip/tree/resources/QPI/compute.yaml",
'baseline': "https://git.opnfv.org/qtip/tree/resources/QPI/compute-baseline.json",
}
@pytest.fixture(scope='session')
def aggregated_report(qpi_result):
return {
'score': 2017,
'name': 'compute',
'description': 'POD compute QPI',
'nodes': [qpi_result]
}