summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xci/create_glance_image.sh15
-rwxr-xr-xci/daily.sh8
-rwxr-xr-xci/generate-admin-rc.sh25
-rwxr-xr-xci/generate-environment.sh10
-rwxr-xr-xci/start_job.sh1
-rw-r--r--docker-compose/create-compose.py13
-rw-r--r--docker-compose/docker-compose.yaml3
-rw-r--r--docker/storperf-master/storperf/db/graphite_db.py7
-rw-r--r--docker/storperf-master/storperf/db/test_results_db.py11
-rw-r--r--docker/storperf-master/storperf/storperf_master.py20
-rw-r--r--docker/storperf-master/storperf/test_executor.py7
-rw-r--r--docker/storperf-master/storperf/utilities/data_handler.py12
-rw-r--r--docker/storperf-master/storperf/workloads/_base_workload.py2
-rw-r--r--docker/storperf-master/tests/db_tests/graphite_db_test.py5
-rw-r--r--docker/storperf-master/tests/utilities_tests/data_handler_test.py3
-rw-r--r--docker/storperf-reporting/src/templates/plot_multi_data.html55
16 files changed, 125 insertions, 72 deletions
diff --git a/ci/create_glance_image.sh b/ci/create_glance_image.sh
index e99de8c..9181a05 100755
--- a/ci/create_glance_image.sh
+++ b/ci/create_glance_image.sh
@@ -8,9 +8,12 @@
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
+cd "$(dirname "$0")" || exit
+mkdir -p job
+
ARCH="${ARCH:-$(uname -m)}"
-IMAGE_NAME="Ubuntu 16.04 ${ARCH}"
+IMAGE_NAME="Ubuntu 17.04 ${ARCH}"
echo "Checking for ${IMAGE_NAME} in Glance"
@@ -21,14 +24,14 @@ then
case "${ARCH}" in
aarch64)
- FILE=ubuntu-16.04-server-cloudimg-arm64-uefi1.img
+ FILE=ubuntu-17.04-server-cloudimg-arm64.img
PROPERTIES="--property hw_firmware_type=uefi --property hw_video_model=vga"
;;
armhf)
- FILE=ubuntu-16.04-server-cloudimg-armhf-disk1.img
+ FILE=ubuntu-17.04-server-cloudimg-armhf.img
;;
x86_64)
- FILE=ubuntu-16.04-server-cloudimg-amd64-disk1.img
+ FILE=ubuntu-17.04-server-cloudimg-amd64.img
;;
*)
echo "Unsupported architecture: ${ARCH}"
@@ -36,10 +39,12 @@ then
;;
esac
- wget --continue -q "https://cloud-images.ubuntu.com/releases/16.04/release/${FILE}"
+ wget --continue -q "https://cloud-images.ubuntu.com/releases/17.04/release/${FILE}"
openstack image create "${IMAGE_NAME}" --disk-format qcow2 --public \
${PROPERTIES} \
--container-format bare --file "${FILE}"
fi
openstack image show "${IMAGE_NAME}"
+
+echo "${IMAGE_NAME}" > job/glance_image_name
diff --git a/ci/daily.sh b/ci/daily.sh
index 0170b41..f87690f 100755
--- a/ci/daily.sh
+++ b/ci/daily.sh
@@ -36,9 +36,11 @@ pip install python-openstackclient==3.7.0
pip install python-heatclient==1.7.0
"${WORKSPACE}/ci/generate-admin-rc.sh"
+
echo "TEST_DB_URL=http://testresults.opnfv.org/test/api/v1" >> "${WORKSPACE}/ci/job/admin.rc"
"${WORKSPACE}/ci/generate-environment.sh"
+
# shellcheck source=/dev/null
source "${WORKSPACE}/ci/job/environment.rc"
@@ -61,7 +63,6 @@ export VOLUME_SIZE=${VOLUME_SIZE:-2}
export WORKLOADS=${WORKLOADS:-ws,rs,rw}
ARCH="${ARCH:-$(uname -m)}"
-IMAGE_NAME="Ubuntu 16.04 ${ARCH}"
echo ==========================================================================
echo Environment
@@ -71,6 +72,7 @@ echo ==========================================================================
"$WORKSPACE/ci/remove_docker_container.sh"
"$WORKSPACE/ci/delete_stack.sh"
"$WORKSPACE/ci/create_glance_image.sh"
+IMAGE_NAME=$(cat $WORKSPACE/ci/job/glance_image_name)
"$WORKSPACE/ci/create_storperf_flavor.sh"
"$WORKSPACE/ci/launch_docker_container.sh"
"$WORKSPACE/ci/create_stack.sh" "${AGENT_COUNT}" "${VOLUME_SIZE}" "${IMAGE_NAME}" "${NETWORK}"
@@ -88,14 +90,14 @@ JOB=$("${WORKSPACE}/ci/start_job.sh" \
curl -s -X GET "http://127.0.0.1:5000/api/v1.0/jobs?id=${JOB}&type=status" \
-o "${WORKSPACE}/ci/job/status.json"
-JOB_STATUS=$(awk '/Status/ {print $2}' "${WORKSPACE}/ci/job/status.json" | cut -d\" -f2)
+JOB_STATUS=$(grep -A2 $JOB "${WORKSPACE}/ci/job/status.json" | awk '/Status/ {print $2}' | cut -d\" -f2)
while [ "${JOB_STATUS}" != "Completed" ]
do
sleep 600
mv "${WORKSPACE}/ci/job/status.json" "${WORKSPACE}/ci/job/old-status.json"
curl -s -X GET "http://127.0.0.1:5000/api/v1.0/jobs?id=${JOB}&type=status" \
-o "${WORKSPACE}/ci/job/status.json"
- JOB_STATUS=$(awk '/Status/ {print $2}' "${WORKSPACE}/ci/job/status.json" | cut -d\" -f2)
+ JOB_STATUS=$(grep -A2 $JOB "${WORKSPACE}/ci/job/status.json" | awk '/Status/ {print $2}' | cut -d\" -f2)
if diff "${WORKSPACE}/ci/job/status.json" "${WORKSPACE}/ci/job/old-status.json" >/dev/null
then
cat "${WORKSPACE}/ci/job/status.json"
diff --git a/ci/generate-admin-rc.sh b/ci/generate-admin-rc.sh
index e1e6bc9..6767fab 100755
--- a/ci/generate-admin-rc.sh
+++ b/ci/generate-admin-rc.sh
@@ -10,16 +10,14 @@
cd $(dirname "$0")
-if [ ! -d job ]
-then
- mkdir job
-fi
+mkdir -p job
SSH_KEY=""
+CA_CERT=""
INSTALLER="$(./detect_installer.sh)"
case $INSTALLER in
joid)
- OS_AUTH_URL=http://`juju status keystone | grep public | awk '{print $2}'`:5000/v2.0
+ OS_AUTH_URL=http://$(juju status keystone | grep public | awk '{print $2}'):5000/v2.0
OS_USERNAME=admin
OS_PASSWORD=openstack
cat << EOF > job/openstack.rc
@@ -31,12 +29,23 @@ export OS_PROJECT_NAME=admin
EOF
;;
fuel)
- INSTALLER_IP=$(sudo virsh domifaddr cfg01 | grep ipv4 | awk '{print $4}' | cut -d/ -f1)
+ INSTALLER_IP=$(sudo virsh net-dumpxml mcpcontrol | grep 'cfg01' | cut -d"'" -f6)
+ if [ -z "${INSTALLER_IP}" ] ; then
+ echo "Could not find FUEL installer IP"
+ exit 1
+ fi
export BRANCH="${BRANCH:-master}"
+ export BUILD_TAG="${BUILD_TAG:-baremetal}"
SSH_KEY="-s /var/lib/opnfv/mcp.rsa"
+ mkdir -p ../docker-compose/certs
+ CA_CERT="-o ../docker-compose/certs/mcp_os_cacert"
;;
apex)
INSTALLER_IP=$(sudo virsh domifaddr undercloud | grep ipv4 | awk '{print $4}' | cut -d/ -f1)
+ if [ -z "${INSTALLER_IP}" ] ; then
+ echo "Could not find Apex installer IP"
+ exit 1
+ fi
;;
*)
echo "Unknown installer ${INSTALLER}"
@@ -45,12 +54,12 @@ esac
if [ ! -z "${INSTALLER_IP}" ]
then
- CMD="./job/releng/utils/fetch_os_creds.sh -i $INSTALLER -a $INSTALLER_IP $SSH_KEY -d job/openstack.rc"
+ CMD="./job/releng/utils/fetch_os_creds.sh -i $INSTALLER -a $INSTALLER_IP $CA_CERT $SSH_KEY -d job/openstack.rc"
echo $CMD
$CMD
echo export OS_PROJECT_NAME=admin >> job/openstack.rc
fi
-grep "export" job/openstack.rc | sed "s/export //" > job/admin.rc
+awk '/export / { gsub(/"/, x); print $2}' job/openstack.rc > job/admin.rc
echo "INSTALLER_TYPE=${INSTALLER}" >> job/admin.rc
diff --git a/ci/generate-environment.sh b/ci/generate-environment.sh
index c65dc17..79bd20f 100755
--- a/ci/generate-environment.sh
+++ b/ci/generate-environment.sh
@@ -16,6 +16,7 @@ fi
ssh_options="-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no"
export INSTALLER=`./detect_installer.sh`
+TARGET="/dev/vdb"
case $INSTALLER in
joid)
@@ -36,6 +37,12 @@ case $INSTALLER in
# juju status | grep hardware: | grep tags | grep -v virtual
NETWORK=ext-net
;;
+ fuel)
+ CINDER_BACKEND=LVM
+ CINDER_NODES=4
+ NETWORK=floating_net
+ TARGET="/dev/vdc"
+ ;;
apex)
INSTALLER_IP=`sudo virsh domifaddr undercloud | grep ipv4 | awk '{print $4}' | cut -d/ -f1`
CINDER_BACKEND=ceph
@@ -54,4 +61,5 @@ export CINDER_BACKEND=$CINDER_BACKEND
export CINDER_NODES=$CINDER_NODES
export INSTALLER=$INSTALLER
export NETWORK=$NETWORK
-EOF \ No newline at end of file
+export TARGET=$TARGET
+EOF
diff --git a/ci/start_job.sh b/ci/start_job.sh
index 715d40a..6991a0c 100755
--- a/ci/start_job.sh
+++ b/ci/start_job.sh
@@ -15,6 +15,7 @@ cat << EOF > body.json
"steady_state_samples": ${STEADY_STATE_SAMPLES},
"queue_depths": "${QUEUE_DEPTH}",
"workload": "${WORKLOAD}",
+ "target": "${TARGET}",
"metadata": {
"disk_type": "${DISK_TYPE}",
"pod_name": "${POD_NAME}",
diff --git a/docker-compose/create-compose.py b/docker-compose/create-compose.py
index 1a63336..3e3b0c0 100644
--- a/docker-compose/create-compose.py
+++ b/docker-compose/create-compose.py
@@ -26,6 +26,8 @@ services:
container_name: "storperf-master"
image: "opnfv/storperf-master:{storperf_tag}"
env_file: {ENV_FILE}
+ volumes:
+ - ./certs:/etc/ssl/certs/
links:
- storperf-graphite
@@ -54,19 +56,20 @@ services:
- storperf-swaggerui
- storperf-graphite
'''
-storeperf_tag = input("Enter image TAG for storperf-master: ") or 'latest'
+storeperf_tag = input("Enter image TAG for storperf-master: ") \
+ or 'x86_64-latest'
assert isinstance(storeperf_tag, str)
-reporting_tag = input("Enter image TAG for reporting: ") or 'latest'
+reporting_tag = input("Enter image TAG for reporting: ") or 'x86_64-latest'
assert isinstance(reporting_tag, str)
-frontend_tag = input("Enter image TAG for frontend: ") or 'latest'
+frontend_tag = input("Enter image TAG for frontend: ") or 'x86_64-latest'
assert isinstance(frontend_tag, str)
-graphite_tag = input("Enter image TAG for graphite: ") or 'latest'
+graphite_tag = input("Enter image TAG for graphite: ") or 'x86_64-latest'
assert isinstance(graphite_tag, str)
-swaggerui_tag = input("Enter image TAG for swaggerui: ") or 'latest'
+swaggerui_tag = input("Enter image TAG for swaggerui: ") or 'x86_64-latest'
assert isinstance(swaggerui_tag, str)
env_file = input("Enter path to environment file: ")
diff --git a/docker-compose/docker-compose.yaml b/docker-compose/docker-compose.yaml
index 734fb5b..7280d90 100644
--- a/docker-compose/docker-compose.yaml
+++ b/docker-compose/docker-compose.yaml
@@ -13,6 +13,8 @@ services:
container_name: "storperf-master"
image: "opnfv/storperf-master:${TAG}"
env_file: ${ENV_FILE}
+ volumes:
+ - ./certs:/etc/ssl/certs/
links:
- storperf-graphite
@@ -30,6 +32,7 @@ services:
volumes:
- ${CARBON_DIR}:/opt/graphite/storage/whisper
+
storperf-httpfrontend:
container_name: "storperf-httpfrontend"
image: "opnfv/storperf-httpfrontend:${TAG}"
diff --git a/docker/storperf-master/storperf/db/graphite_db.py b/docker/storperf-master/storperf/db/graphite_db.py
index aa71855..8ebd22e 100644
--- a/docker/storperf-master/storperf/db/graphite_db.py
+++ b/docker/storperf-master/storperf/db/graphite_db.py
@@ -33,19 +33,20 @@ class GraphiteDB(object):
return result
- def fetch_series(self, workload, metric, io_type, time, duration):
+ def fetch_series(self, function, workload, metric,
+ io_type, time, duration):
series = []
end = time
start = end - duration
request = ("http://%s:%s/graphite/render/?target="
- "averageSeries(%s.*.jobs.1.%s.%s)"
+ "%s(%s.*.jobs.1.%s.%s)"
"&format=json"
"&from=%s"
"&until=%s"
% (self.graphite_host, self.graphite_port,
- workload, io_type, metric,
+ function, workload, io_type, metric,
start, end))
self.logger.debug("Calling %s" % (request))
diff --git a/docker/storperf-master/storperf/db/test_results_db.py b/docker/storperf-master/storperf/db/test_results_db.py
index 8e9c5ef..3ee09d2 100644
--- a/docker/storperf-master/storperf/db/test_results_db.py
+++ b/docker/storperf-master/storperf/db/test_results_db.py
@@ -17,17 +17,12 @@ def push_results_to_db(db_url, details, logger):
"""
url = db_url + "/results"
- params = details["report"]
-
- if logger:
- logger.info("popped params= %s" % params)
-
headers = {'Content-Type': 'application/json'}
try:
if logger:
- jsonified_params = json.dumps(params)
+ jsonified_params = json.dumps(details)
logger.info("Pushing results to %s" % (url))
- logger.debug("Parameters: %s" % jsonified_params[:1024])
+ logger.debug("Parameters: %s" % details)
r = requests.post(url, data=jsonified_params, headers=headers)
if logger:
logger.debug(r)
@@ -37,5 +32,5 @@ def push_results_to_db(db_url, details, logger):
except Exception:
if logger:
logger.exception("Error [push_results_to_db('%s', '%s')]:" %
- (db_url, params))
+ (db_url, details))
return None
diff --git a/docker/storperf-master/storperf/storperf_master.py b/docker/storperf-master/storperf/storperf_master.py
index 8a67048..c84a02c 100644
--- a/docker/storperf-master/storperf/storperf_master.py
+++ b/docker/storperf-master/storperf/storperf_master.py
@@ -422,11 +422,6 @@ class StorPerfMaster(object):
metadata = self.fetch_metadata(job)
if 'report' in metadata:
metadata['report']['_id'] = job
- metadata['report']['start_date'] = \
- metadata['report']['start_time']
- metadata['report']['end_date'] = \
- metadata['report']['end_time']
- metadata['report']['_id'] = job
job_report['results'].append(metadata['report'])
return job_report
@@ -538,7 +533,14 @@ class StorPerfMaster(object):
loader = loading.get_plugin_loader('password')
auth = loader.load_from_options(**creds)
- sess = session.Session(auth=auth)
+
+ https_cacert = os.getenv('OS_CACERT', '')
+ https_insecure = os.getenv('OS_INSECURE', '').lower() == 'true'
+
+ self.logger.info("cacert=%s" % https_cacert)
+
+ sess = session.Session(auth=auth,
+ verify=(https_cacert or not https_insecure))
self.logger.debug("Looking up orchestration endpoint")
heat_endpoint = sess.get_endpoint(auth=auth,
@@ -546,13 +548,13 @@ class StorPerfMaster(object):
endpoint_type='publicURL')
self.logger.debug("Orchestration endpoint is %s" % heat_endpoint)
- token = sess.get_token(auth=auth)
self._heat_client = heatclient.Client(
"1",
endpoint=heat_endpoint,
- token=token)
+ session=sess)
self.logger.debug("Creating cinder client")
- self._cinder_client = cinderclient.Client("2", session=sess)
+ self._cinder_client = cinderclient.Client("2", session=sess,
+ cacert=https_cacert)
self.logger.debug("OpenStack authentication complete")
diff --git a/docker/storperf-master/storperf/test_executor.py b/docker/storperf-master/storperf/test_executor.py
index 629ae15..96c2ee4 100644
--- a/docker/storperf-master/storperf/test_executor.py
+++ b/docker/storperf-master/storperf/test_executor.py
@@ -230,7 +230,12 @@ class TestExecutor(object):
for job in jobs:
if self.job_db.job_id == job_id and self._terminated is False:
status = "Running"
- result[job] = status
+ result['Status'] = status
+ result['Workloads'] = self.workload_status
+ result['TestResultURL'] = self.result_url
+ else:
+ result[job] = {}
+ result[job]['Status'] = "Completed"
return result
diff --git a/docker/storperf-master/storperf/utilities/data_handler.py b/docker/storperf-master/storperf/utilities/data_handler.py
index 8a69180..b85517f 100644
--- a/docker/storperf-master/storperf/utilities/data_handler.py
+++ b/docker/storperf-master/storperf/utilities/data_handler.py
@@ -43,7 +43,12 @@ class DataHandler(object):
for io_type in ('read', 'write'):
metrics[metric][io_type] = {}
- series = self._lookup_prior_data(executor, metric, io_type)
+ function = "sumSeries"
+ if 'mean' in metric:
+ function = "averageSeries"
+
+ series = self._lookup_prior_data(executor, metric, io_type,
+ function)
series = self._convert_timestamps_to_samples(
executor, series)
steady = self._evaluate_prior_data(
@@ -85,7 +90,7 @@ class DataHandler(object):
if steady_state and not workload_name.startswith('_'):
executor.terminate_current_run()
- def _lookup_prior_data(self, executor, metric, io_type):
+ def _lookup_prior_data(self, executor, metric, io_type, function):
workload = executor.current_workload
graphite_db = GraphiteDB()
@@ -93,7 +98,8 @@ class DataHandler(object):
# data we just sent to it
now = int(time.time())
backtime = 60 * (executor.steady_state_samples + 1)
- data_series = graphite_db.fetch_series(workload,
+ data_series = graphite_db.fetch_series(function,
+ workload,
metric,
io_type,
now,
diff --git a/docker/storperf-master/storperf/workloads/_base_workload.py b/docker/storperf-master/storperf/workloads/_base_workload.py
index c045278..d5282d7 100644
--- a/docker/storperf-master/storperf/workloads/_base_workload.py
+++ b/docker/storperf-master/storperf/workloads/_base_workload.py
@@ -23,7 +23,7 @@ class _base_workload(object):
'bs': '64k',
'iodepth': '1',
'numjobs': '1',
- 'loops': '20',
+ 'loops': '200',
'output-format': 'json',
'status-interval': '60'
}
diff --git a/docker/storperf-master/tests/db_tests/graphite_db_test.py b/docker/storperf-master/tests/db_tests/graphite_db_test.py
index d4c6fb6..d5fbbfc 100644
--- a/docker/storperf-master/tests/db_tests/graphite_db_test.py
+++ b/docker/storperf-master/tests/db_tests/graphite_db_test.py
@@ -83,9 +83,10 @@ class GraphiteDBTest(unittest.TestCase):
[1480456040, 219.28],
[1480456050, 217.75]]
- mock_requests.side_effect = (response, )
+ mock_requests.side_effect = (response,)
- actual = self.graphdb.fetch_series("workload", "iops",
+ actual = self.graphdb.fetch_series("averageSeries",
+ "workload", "iops",
"write", 0, 600)
self.assertEqual(expected, actual)
diff --git a/docker/storperf-master/tests/utilities_tests/data_handler_test.py b/docker/storperf-master/tests/utilities_tests/data_handler_test.py
index 8c7deb5..35150dd 100644
--- a/docker/storperf-master/tests/utilities_tests/data_handler_test.py
+++ b/docker/storperf-master/tests/utilities_tests/data_handler_test.py
@@ -85,7 +85,8 @@ class DataHandlerTest(unittest.TestCase):
8,
8192))
- actual = self.data_handler._lookup_prior_data(self, 'read', 'iops')
+ actual = self.data_handler._lookup_prior_data(self, "sumSeries",
+ 'read', 'iops')
self.assertEqual(expected, actual)
def test_short_sample(self):
diff --git a/docker/storperf-reporting/src/templates/plot_multi_data.html b/docker/storperf-reporting/src/templates/plot_multi_data.html
index 3e64538..9a81599 100644
--- a/docker/storperf-reporting/src/templates/plot_multi_data.html
+++ b/docker/storperf-reporting/src/templates/plot_multi_data.html
@@ -35,8 +35,8 @@
text += "<h4> Criteria : " + results[i]["criteria"] + "</h4>";
text += "<h4> Build Tag : " + results[i]["build_tag"] + "</h4>";
text += "<button type='button' class='btn btn-default btn-lg' id='para-"+ ids[i] +
- "' onclick=add_info('" + ids[i] + "')> Click here to view details </button>";
- text += "</div>";
+ "' onclick=add_info('" + ids[i] + "')> Click here to view details </button>";
+ text += "</div>";
}
$("#content").html(text);
}
@@ -60,15 +60,15 @@
text += "<h4> Criteria : " + results[i]["criteria"] + "</h4>";
text += "<h4> Build Tag : " + results[i]["build_tag"] + "</h4>";
text += "<button type='button' class='btn btn-default btn-lg' onclick=init()>Go Back</button>";
- text += "<button type='button' class='btn btn-default btn-lg' onclick=create_block_report() style='float: right;'> Steady State Convergence Report - All Block Sizes </button>";
+ text += "<button type='button' class='btn btn-default btn-lg' onclick=create_block_report() style='float: right;'> Steady State Convergence Report - All Runs </button>";
text += "<div class='row' id='block_report'></div>"
text += "</div>";
for (var i = 0; i < keys.length; i++ ){
text += "<div class='row' id='row-"+ keys[i] +"'>";
text += "<h4 onclick=add_test('" + keys[i] + "')>" + keys[i] + "</h4>";
text += "</div>";
- }
- $("#content").html(text);
+ }
+ $("#content").html(text);
}
function add_test(key){
if(document.getElementById("test-" + key) == null){
@@ -94,7 +94,7 @@
for( item in report_data[key][test] ){
var state = report_data[key][test][item]["steady_state"];
text += "<li onclick=create_modal('" + key + "','" + test + "','" + item + "') id='";
- text += key + "-" + test + "-" + item + "'>" + item + " (steady state: " + state +")";
+ text += key + "-" + test + "-" + item + "'>" + item + " (steady state: " + state +")";
text += "<br><div id='modal-" + key + "-" + test + "-" + item + "'>";
text += '<div class="modal-content-'+ key + '-' + test + '-' + item +'">';
text += '<div id="modal-text-'+ key + '-' + test + '-' + item +'"></div>';
@@ -131,9 +131,13 @@
else
name = "Latency (nanoseconds/ns)";
var len = data["series"].length;
+ var max_y = 1.25*average
for(var i = 0 ; i < len ; i++){
x[i] = data["series"][i][0];
y[i] = data["series"][i][1];
+ if(y[i] > max_y){
+ max_y=y[i]
+ }
}
var trace1 = {
x: x,
@@ -146,40 +150,41 @@
title: 'Round'
},
yaxis: {
- title: name
+ title: name,
+ range: [0, max_y]
}
};
// Creating average plot in var trace2
- var average_y = [];
+ var average_plus_y = [];
for(var i = 0; i < len ;i++ ){
- average_y.push(average)
+ average_plus_y.push(1.2*average)
}
var trace2 = {
x: x,
- y: average_y,
- name: 'Average',
+ y: average_plus_y,
+ name: 'Average + 20%',
type: 'scatter'
};
// Creating average plot in var trace3
- var average_plus_y = [];
+ var average_y = [];
for(var i = 0; i < len ;i++ ){
- average_plus_y.push(1.1*average)
+ average_y.push(average)
}
var trace3 = {
x: x,
- y: average_plus_y,
- name: '110%*Average',
+ y: average_y,
+ name: 'Average',
type: 'scatter'
};
// Creating average plot in var trace4
var average_minus_y = [];
for(var i = 0; i < len ;i++ ){
- average_minus_y.push(0.9*average)
+ average_minus_y.push(0.8*average)
}
var trace4 = {
x: x,
y: average_minus_y,
- name: '90%*Average',
+ name: 'Average - 20%',
type: 'scatter'
};
// Creating slope plot in var trace5
@@ -223,7 +228,8 @@
"</td><td> Measured Maximum Slope Excursion: " + data["slope"] + "</td></tr>";
table += "</tbody></table>";
document.getElementById("report-" + key + "-" + test + "-" + item).innerHTML = table;
- } function create_block_report(){
+ }
+ function create_block_report(){
var ele = document.getElementById("block_report");
var text = "";
text += "<ul class='list-group' style='margin: auto;'>"
@@ -283,10 +289,10 @@
for(i in report_data){
if(report_data[i][test] == undefined && test == 'lat_ns.mean')
test = 'lat.mean';
- data[i] = report_data[i][test][key];
+ data[i] = report_data[i][test][key];
}
document.getElementById('close-block-report-'+key+'-'+test).style.display = 'block';
- var modal = document.getElementById('modal-block-report-'+key+'-'+test);
+ var modal = document.getElementById('modal-block-report-'+key+'-'+test);
var modal_div = document.getElementById('modal-text-block-report-'+key+'-'+test);
modal_div.innerHTML += "<div id='graph-"+key+ "-"+ test+ "'></div><br><div id='report-"+key+ "-"+ test+ "'></div>";
var name = "";
@@ -298,6 +304,7 @@
else
name = "Latency (nanoseconds/ns)";
var plot_data = [];
+ var max_y = 0
for(i in data){
var x = [];
var y = [];
@@ -305,6 +312,9 @@
for(var j = 0 ; j < len ; j++){
x[j] = data[i]["series"][j][0];
y[j] = data[i]["series"][j][1];
+ if(y[j] > max_y){
+ max_y=y[j]
+ }
}
var trace = {
x: x,
@@ -320,7 +330,8 @@
title: 'Round'
},
yaxis: {
- title: name
+ title: name,
+ range: [0, max_y]
},
};
Plotly.newPlot('graph-'+key+'-'+test,plot_data,layout);
@@ -330,4 +341,4 @@
</script>
</body>
-</html> \ No newline at end of file
+</html>