210 lines
6.9 KiB
HTML
210 lines
6.9 KiB
HTML
|
<!DOCTYPE html>
|
||
|
<html lang="en" class="has-navbar-fixed-top">
|
||
|
|
||
|
<head>
|
||
|
<meta charset="utf-8">
|
||
|
<title>DeepZoom Tests</title>
|
||
|
<!-- disable zooming -->
|
||
|
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1, minimum-scale=1, maximum-scale=1">
|
||
|
|
||
|
<script src="../../../lib/3rdparty/all.js"></script>
|
||
|
<script src="../../../lib/all.js"></script>
|
||
|
|
||
|
<link rel="stylesheet" href="../test/lib/bulma.css">
|
||
|
<link rel="stylesheet" href="../test/lib/mocha.min.css">
|
||
|
|
||
|
<link rel="stylesheet" href="../test/test.css">
|
||
|
|
||
|
<script src="../test/lib/fontawesome.js"></script>
|
||
|
<script src="../test/lib/chai.js"></script>
|
||
|
<script src="../test/lib/mocha.min.js"></script>
|
||
|
<script src="../test/lib/Chart.bundle.min.js"></script>
|
||
|
</head>
|
||
|
|
||
|
<body>
|
||
|
<nav class="navbar is-fixed-top has-shadow">
|
||
|
<div class="navbar-brand">
|
||
|
<a class="navbar-item" href="../../../index.html">
|
||
|
<img class="image is-32x32" src="../../../assets/icons/icon.png">
|
||
|
</a>
|
||
|
<div class="navbar-item">
|
||
|
DeepZoom Tests
|
||
|
</div>
|
||
|
</div>
|
||
|
</nav>
|
||
|
<section class="section">
|
||
|
<div class="columns">
|
||
|
<div class="column" id="main"></div>
|
||
|
<div class="column">
|
||
|
<aside class="menu">
|
||
|
<p class="menu-label">
|
||
|
All tests
|
||
|
</p>
|
||
|
<ul class="menu-list">
|
||
|
<li>
|
||
|
<a onclick="uiTestSuite.run()">Run all tests</a>
|
||
|
</li>
|
||
|
</ul>
|
||
|
<p class="menu-label">
|
||
|
Memory tests
|
||
|
</p>
|
||
|
<ul class="menu-list">
|
||
|
<li>
|
||
|
<a onclick="uiTestSuite.run('zoomInZoomOut')">Zoom in, Zoom out, Zoom in, Zoom out, ...</a>
|
||
|
</li>
|
||
|
</ul>
|
||
|
<p class="menu-label">Test report</p>
|
||
|
<div id="mocha"></div>
|
||
|
<div id="chart" style="position: relative; height: 400px; width: 100%;">
|
||
|
<canvas id="memoryChart"></canvas>
|
||
|
</div>
|
||
|
</aside>
|
||
|
</div>
|
||
|
</div>
|
||
|
</section>
|
||
|
|
||
|
<script>
|
||
|
|
||
|
// testFrame
|
||
|
//--------------------
|
||
|
function loadTestFrame(cb) {
|
||
|
|
||
|
// remove old iframe
|
||
|
const element = document.getElementById('testFrame')
|
||
|
if (element) {
|
||
|
main.removeChild(element)
|
||
|
}
|
||
|
|
||
|
// create new iframe
|
||
|
const iframe = document.createElement("iframe")
|
||
|
iframe.setAttribute('id', 'testFrame')
|
||
|
iframe.setAttribute('src', './index.html')
|
||
|
iframe.setAttribute('style', 'border: 2px solid gray;')
|
||
|
iframe.setAttribute('width', '1024')
|
||
|
iframe.setAttribute('height', '768')
|
||
|
if (cb) {
|
||
|
iframe.addEventListener('load', function _callback(event) {
|
||
|
cb.call(this, event, iframe)
|
||
|
iframe.removeEventListener('load', _callback, true) // execute callback only once
|
||
|
}, true)
|
||
|
}
|
||
|
main.appendChild(iframe)
|
||
|
|
||
|
// bind to main window (testFrame is not bound automatically)
|
||
|
window.testFrame = iframe
|
||
|
}
|
||
|
|
||
|
loadTestFrame()
|
||
|
|
||
|
// chart
|
||
|
//--------------------
|
||
|
const data = {
|
||
|
datasets: [{
|
||
|
label: 'Total HeapSize',
|
||
|
data: [],
|
||
|
backgroundColor: 'rgba(54, 162, 235, 0.2)',
|
||
|
borderColor: 'rgba(54, 162, 235, 1)',
|
||
|
borderWidth: 1,
|
||
|
pointRadius: 1
|
||
|
}, {
|
||
|
label: 'Used HeapSize',
|
||
|
data: [],
|
||
|
backgroundColor: 'rgba(255, 206, 86, 0.2)',
|
||
|
borderColor: 'rgba(255, 206, 86, 1)',
|
||
|
borderWidth: 1,
|
||
|
pointRadius: 1
|
||
|
}, {
|
||
|
label: 'HeapSize Limit',
|
||
|
data: [],
|
||
|
backgroundColor: 'rgba(255, 99, 132, 0.2)',
|
||
|
borderColor: 'rgba(255,99,132,1)',
|
||
|
borderWidth: 1,
|
||
|
pointRadius: 1
|
||
|
}]
|
||
|
}
|
||
|
|
||
|
function addChart() {
|
||
|
|
||
|
const ctx = document.getElementById('memoryChart').getContext('2d')
|
||
|
|
||
|
const chart = new Chart(ctx, {
|
||
|
type: 'scatter',
|
||
|
data,
|
||
|
options: {
|
||
|
responsive: true,
|
||
|
title: {
|
||
|
display: true,
|
||
|
text: 'JavaScript Memory'
|
||
|
},
|
||
|
tooltips: {
|
||
|
enabled: false
|
||
|
},
|
||
|
hover: {
|
||
|
enabled: false
|
||
|
},
|
||
|
scales: {
|
||
|
xAxes: [{
|
||
|
display: true,
|
||
|
scaleLabel: {
|
||
|
display: true,
|
||
|
labelString: 'Time [min]'
|
||
|
},
|
||
|
ticks: {
|
||
|
min: 0,
|
||
|
max: 10,
|
||
|
stepSize: 2
|
||
|
}
|
||
|
}],
|
||
|
yAxes: [{
|
||
|
display: true,
|
||
|
scaleLabel: {
|
||
|
display: true,
|
||
|
labelString: 'HeapSize [MB]'
|
||
|
},
|
||
|
ticks: {
|
||
|
maxTicksLimit: 6
|
||
|
}
|
||
|
}]
|
||
|
}
|
||
|
}
|
||
|
})
|
||
|
|
||
|
const start = Date.now()
|
||
|
|
||
|
setInterval(() => {
|
||
|
|
||
|
data.datasets.forEach(function(dataset) {
|
||
|
const memory = window.performance.memory
|
||
|
const x = (Date.now() - start) / 1000 / 60
|
||
|
let y = 0
|
||
|
if (dataset.label === 'Total HeapSize') {
|
||
|
y = memory.totalJSHeapSize / 1000 / 1000
|
||
|
} else if (dataset.label === 'Used HeapSize') {
|
||
|
y = memory.usedJSHeapSize / 1000 / 1000
|
||
|
} else {
|
||
|
y = memory.jsHeapSizeLimit / 1000 / 1000
|
||
|
}
|
||
|
dataset.data.push({x, y})
|
||
|
});
|
||
|
|
||
|
chart.update()
|
||
|
|
||
|
}, 1000)
|
||
|
}
|
||
|
|
||
|
if (/chrome/i.test(navigator.userAgent)) {
|
||
|
addChart()
|
||
|
} else {
|
||
|
console.log('No Chrome, no Chart :-(')
|
||
|
}
|
||
|
|
||
|
</script>
|
||
|
|
||
|
<script src="../../../lib/bootstrap.js"></script>
|
||
|
<script>
|
||
|
Bootstrap.import('../test/testsuite.js')
|
||
|
</script>
|
||
|
|
||
|
</body>
|
||
|
|
||
|
</html>
|