tests: find_available_port start search from next port
i.e. don't start the search from scratch hitting the used ones again. this will also reduce the likelihood of collisions (if there are any left) by increasing the time until we re-use a port we did use in the past.
This commit is contained in:
parent
a2ae463520
commit
1aee695e52
@ -344,22 +344,27 @@ proc roundFloat f {
|
||||
format "%.10g" $f
|
||||
}
|
||||
|
||||
set ::last_port_attempted 0
|
||||
proc find_available_port {start count} {
|
||||
for {set j $start} {$j < $start+$count} {incr j} {
|
||||
if {[catch {set fd1 [socket 127.0.0.1 $j]}] &&
|
||||
[catch {set fd2 [socket 127.0.0.1 [expr $j+10000]]}]} {
|
||||
return $j
|
||||
set port [expr $::last_port_attempted + 1]
|
||||
for {set attempts 0} {$attempts < $count} {incr attempts} {
|
||||
if {$port < $start || $port >= $start+$count} {
|
||||
set port $start
|
||||
}
|
||||
if {[catch {set fd1 [socket 127.0.0.1 $port]}] &&
|
||||
[catch {set fd2 [socket 127.0.0.1 [expr $port+10000]]}]} {
|
||||
set ::last_port_attempted $port
|
||||
return $port
|
||||
} else {
|
||||
catch {
|
||||
close $fd1
|
||||
close $fd2
|
||||
}
|
||||
}
|
||||
incr port
|
||||
}
|
||||
if {$j == $start+$count} {
|
||||
error "Can't find a non busy port in the $start-[expr {$start+$count-1}] range."
|
||||
}
|
||||
}
|
||||
|
||||
# Test if TERM looks like to support colors
|
||||
proc color_term {} {
|
||||
|
Loading…
x
Reference in New Issue
Block a user