Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion benchmarks/iperf/Makefile
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
PLUGIN_NAME= iperf
PLUGIN_VERSION= 1.0
PLUGIN_REVISION= 2
PLUGIN_REVISION= 3
PLUGIN_COMMENT= Connection speed tester
PLUGIN_DEPENDS= iperf3 ruby rubygem-rexml
PLUGIN_MAINTAINER= franz.fabian.94@gmail.com
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,9 +55,11 @@ public function setAction()
'error' => 'interface parameter is missing');
}
$interface_name = $_POST['instance']['interface'];
$prefer_port_5201 = isset($_POST['instance']['prefer_port_5201']) &&
$_POST['instance']['prefer_port_5201'] === '1';
if ($interface = $this->get_real_interface_name($interface_name)) {
// start iperf
return $this->send_command("start $interface", $backend);
return $this->send_command("start $interface " . ($prefer_port_5201 ? '1' : '0'), $backend);
} else {
return array('status' => 'error',
'error' => 'interface is unknown');
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,10 @@
<type>dropdown</type>
<help>Choose the interface on which the port should be opened.</help>
</field>
<field>
<id>instance.prefer_port_5201</id>
<label>Use port 5201 when available</label>
<type>checkbox</type>
<help>Use the standard iPerf port 5201 when it is available; otherwise, use a random available port.</help>
</field>
</form>
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,9 @@
<Required>Y</Required>
<Multiple>N</Multiple>
</interface>
<prefer_port_5201 type="BooleanField">
<Default>1</Default>
<Required>N</Required>
</prefer_port_5201>
</items>
</model>
19 changes: 12 additions & 7 deletions benchmarks/iperf/src/opnsense/scripts/iperf/ruby_iperf.rb
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@
ONE_HOUR = 3600
KEY_START_TIME = 'start_time'
KEY_PORT = 'port'
IPERF_DEFAULT_PORT = 5201
LF = "\n"

def execute_firewall_port(rule)
Expand Down Expand Up @@ -106,8 +107,11 @@ def find_open_ports
ports
end

def find_open_port
find_open_ports.sample
def find_open_port(prefer_default_port = false)
ports = find_open_ports
return IPERF_DEFAULT_PORT if prefer_default_port && ports.include?(IPERF_DEFAULT_PORT)

ports.sample
end

def run_iperf3(port)
Expand All @@ -123,9 +127,9 @@ def run_iperf3(port)
output
end

def run_test(interface = 'any', data)
def run_test(interface, data, prefer_default_port = false)
ret = nil
data[KEY_PORT] = port = find_open_port
data[KEY_PORT] = port = find_open_port(prefer_default_port)
# regenerate ruleset
flush_firewall_rules
gen_firewall_rules
Expand All @@ -149,12 +153,12 @@ def run_test(interface = 'any', data)
ret
end

def run_test_thread(interface = 'any')
def run_test_thread(interface = 'any', prefer_default_port = false)
data = {}
t = Thread.new do
data[KEY_START_TIME] = Time.now
data['interface'] = interface
run_test(interface, data)
run_test(interface, data, prefer_default_port)
end
$instances[t] = data
end
Expand Down Expand Up @@ -190,7 +194,8 @@ def run_test_thread(interface = 'any')
# check if a valid interface was given
interface = intf if intf =~ /^[a-z0-9_-]+$/
end
data = run_test_thread interface
prefer_default_port = command.shift == '1'
data = run_test_thread interface, prefer_default_port
connection.puts '{"status": "queued job"}'
when 'query'
connection.puts $instances.values.to_json
Expand Down