mirror of
https://github.com/Ysurac/openmptcprouter-feeds.git
synced 2025-03-09 15:40:03 +00:00
Test upload and download with iperf
This commit is contained in:
parent
ed45459144
commit
fa86ba21a6
2 changed files with 69 additions and 22 deletions
|
@ -10,7 +10,7 @@ function index()
|
||||||
entry({"admin", "services", "iperf", "run_test"}, post("run_test")).leaf = true
|
entry({"admin", "services", "iperf", "run_test"}, post("run_test")).leaf = true
|
||||||
end
|
end
|
||||||
|
|
||||||
function run_test(server,proto,mode)
|
function run_test(server,proto,mode,updown)
|
||||||
luci.http.prepare_content("text/plain")
|
luci.http.prepare_content("text/plain")
|
||||||
local iperf
|
local iperf
|
||||||
local addr = uci:get("iperf",server,"host")
|
local addr = uci:get("iperf",server,"host")
|
||||||
|
@ -21,10 +21,18 @@ function run_test(server,proto,mode)
|
||||||
end
|
end
|
||||||
local port = t[ math.random( #t ) ]
|
local port = t[ math.random( #t ) ]
|
||||||
if proto == "ipv4" then
|
if proto == "ipv4" then
|
||||||
iperf = io.popen("iperf3 -c %s -P 10 -4 -p %s -J" % {ut.shellquote(addr),port})
|
if updown == "upload" then
|
||||||
|
iperf = io.popen("iperf3 -c %s -P 10 -4 -p %s -O 3 -J" % {ut.shellquote(addr),port})
|
||||||
|
else
|
||||||
|
iperf = io.popen("iperf3 -c %s -P 10 -4 -p %s -O 3 -R -J" % {ut.shellquote(addr),port})
|
||||||
|
end
|
||||||
--iperf = io.popen("iperf3 -c bouygues.iperf.fr -P 10 -4 -J")
|
--iperf = io.popen("iperf3 -c bouygues.iperf.fr -P 10 -4 -J")
|
||||||
else
|
else
|
||||||
iperf = io.popen("iperf3 -c %s -P 10 -6 -p %s -J" % {ut.shellquote(addr),port})
|
if updown == "upload" then
|
||||||
|
iperf = io.popen("iperf3 -c %s -P 10 -6 -p %s -O 3 -J" % {ut.shellquote(addr),port})
|
||||||
|
else
|
||||||
|
iperf = io.popen("iperf3 -c %s -P 10 -6 -p %s -O 3 -R -J" % {ut.shellquote(addr),port})
|
||||||
|
end
|
||||||
end
|
end
|
||||||
if iperf then
|
if iperf then
|
||||||
while true do
|
while true do
|
||||||
|
|
|
@ -8,45 +8,84 @@
|
||||||
<script type="text/javascript">//<![CDATA[
|
<script type="text/javascript">//<![CDATA[
|
||||||
var stxhr = new XHR();
|
var stxhr = new XHR();
|
||||||
|
|
||||||
function update_status(field, proto, mode)
|
function update_speed(field, proto, mode)
|
||||||
|
{
|
||||||
|
update_upload(field,proto,mode);
|
||||||
|
}
|
||||||
|
|
||||||
|
function update_upload(field, proto, mode)
|
||||||
{
|
{
|
||||||
var tool = field.name;
|
var tool = field.name;
|
||||||
var addr = field.value;
|
var addr = field.value;
|
||||||
|
|
||||||
var legend = document.getElementById('diag-rc-legend');
|
var upload = document.getElementById('iperf-upload');
|
||||||
var output = document.getElementById('diag-rc-output');
|
|
||||||
|
|
||||||
if (legend && output)
|
if (upload)
|
||||||
{
|
{
|
||||||
output.innerHTML =
|
upload.innerHTML =
|
||||||
'<img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="vertical-align:middle" /> ' +
|
'<img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="vertical-align:middle" /> ' + '<%:Upload%> - ' +
|
||||||
'<%:Waiting for command to complete...%>'
|
'<%:Waiting for command to complete...%>'
|
||||||
;
|
;
|
||||||
|
|
||||||
legend.parentNode.style.display = 'block';
|
stxhr.post('<%=url('admin/services/iperf')%>/run_test' + '/' + addr + '/' + proto + '/' + mode + '/upload', { token: '<%=token%>' },
|
||||||
legend.style.display = 'inline';
|
|
||||||
|
|
||||||
stxhr.post('<%=url('admin/services/iperf')%>/run_test' + '/' + addr + '/' + proto + '/' + mode, { token: '<%=token%>' },
|
|
||||||
function(x)
|
function(x)
|
||||||
{
|
{
|
||||||
if (x.responseText)
|
if (x.responseText)
|
||||||
{
|
{
|
||||||
legend.style.display = 'none';
|
|
||||||
var response = JSON.parse(x.responseText);
|
var response = JSON.parse(x.responseText);
|
||||||
if (response.error)
|
if (response.error)
|
||||||
{
|
{
|
||||||
output.innerHTML = String.format('<pre>%s</pre>', response.error );
|
upload.innerHTML = String.format('<%:Upload%> - <pre>%s</pre>', response.error );
|
||||||
} else {
|
} else {
|
||||||
var sent_speed = (response.end.sum_sent.bits_per_second/1000000);
|
var sent_speed = (response.end.sum_sent.bits_per_second/1000000);
|
||||||
var received_speed = (response.end.sum_received.bits_per_second/1000000);
|
var received_speed = (response.end.sum_received.bits_per_second/1000000);
|
||||||
var server = response.start.connecting_to.host;
|
var server = response.start.connecting_to.host;
|
||||||
output.innerHTML = String.format('<pre>Server: %s - Sent: %sMb/s - Received: %sMb/s</pre>', server, sent_speed.toFixed(2), received_speed.toFixed(2) );
|
upload.innerHTML = String.format('<pre><%:Upload%> - Server: %s - Sender: %sMb/s - Receiver: %sMb/s</pre>', server, sent_speed.toFixed(2), received_speed.toFixed(2) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
legend.style.display = 'none';
|
upload.innerHTML = '<%:Upload%> - <span class="error"><%:Bad address specified!%></span>';
|
||||||
output.innerHTML = '<span class="error"><%:Bad address specified!%></span>';
|
}
|
||||||
|
update_download(field,proto,mode);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function update_download(field, proto, mode)
|
||||||
|
{
|
||||||
|
var tool = field.name;
|
||||||
|
var addr = field.value;
|
||||||
|
|
||||||
|
var download = document.getElementById('iperf-download');
|
||||||
|
|
||||||
|
if (download)
|
||||||
|
{
|
||||||
|
download.innerHTML =
|
||||||
|
'<img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="vertical-align:middle" /> ' + '<%:Download%> - ' +
|
||||||
|
'<%:Waiting for command to complete...%>'
|
||||||
|
;
|
||||||
|
|
||||||
|
stxhr.post('<%=url('admin/services/iperf')%>/run_test' + '/' + addr + '/' + proto + '/' + mode + '/download', { token: '<%=token%>' },
|
||||||
|
function(x)
|
||||||
|
{
|
||||||
|
if (x.responseText)
|
||||||
|
{
|
||||||
|
var response = JSON.parse(x.responseText);
|
||||||
|
if (response.error)
|
||||||
|
{
|
||||||
|
download.innerHTML = String.format('<%:Download%> - <pre>%s</pre>', response.error );
|
||||||
|
} else {
|
||||||
|
var sent_speed = (response.end.sum_sent.bits_per_second/1000000);
|
||||||
|
var received_speed = (response.end.sum_received.bits_per_second/1000000);
|
||||||
|
var server = response.start.connecting_to.host;
|
||||||
|
download.innerHTML = String.format('<pre><%:Download%> - Server: %s - Sender: %sMb/s - Receiver: %sMb/s</pre>', server, sent_speed.toFixed(2), received_speed.toFixed(2) );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
download.innerHTML = '<%:Download%> - <span class="error"><%:Bad address specified!%></span>';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
@ -94,13 +133,13 @@
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<input type="button" value="<%:Test%>" class="cbi-button cbi-button-apply" onclick="update_status(this.form.addr,this.form.proto.value,this.form.mode.value)" />
|
<input type="button" value="<%:Test%>" class="cbi-button cbi-button-apply" onclick="update_speed(this.form.addr,this.form.proto.value,this.form.mode.value)" />
|
||||||
</fieldset>
|
</fieldset>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<div class="cbi-section" style="display:none">
|
<div class="cbi-section">
|
||||||
<strong id="diag-rc-legend"></strong>
|
<span id="iperf-upload"></span>
|
||||||
<span id="diag-rc-output"></span>
|
<span id="iperf-download"></span>
|
||||||
</div>
|
</div>
|
||||||
<%+footer%>
|
<%+footer%>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue