summaryrefslogtreecommitdiff
path: root/test/lib
diff options
context:
space:
mode:
authorHeiko Schlittermann (HS12-RIPE) <hs@schlittermann.de>2016-11-03 09:37:02 +0100
committerHeiko Schlittermann (HS12-RIPE) <hs@schlittermann.de>2016-11-03 09:37:02 +0100
commitb369d47038a075706f6dfe57ab2e1ebeea0e5bdf (patch)
treec2b4912cf1934397b814e4d8fd6ea6f8dd569c10 /test/lib
parentb16852e23e1c477797bd7ce578a0f96bf341341c (diff)
downloadexim4-b369d47038a075706f6dfe57ab2e1ebeea0e5bdf.tar.gz
Testsuite: move dynamic_socket to Exim::Runtest
Diffstat (limited to 'test/lib')
-rw-r--r--test/lib/Exim/Runtest.pm17
1 files changed, 15 insertions, 2 deletions
diff --git a/test/lib/Exim/Runtest.pm b/test/lib/Exim/Runtest.pm
index 2ac9a61ee..1df2ea1a9 100644
--- a/test/lib/Exim/Runtest.pm
+++ b/test/lib/Exim/Runtest.pm
@@ -1,6 +1,7 @@
package Exim::Runtest;
use strict;
use warnings;
+use IO::Socket::INET;
use Carp;
use List::Util qw'shuffle';
@@ -22,7 +23,19 @@ sub mailgroup {
push @groups, $_ while defined($_ = getgrent);
endgrent;
return (shuffle @groups)[0];
-};
-
+}
+
+sub dynamic_socket {
+ my $socket;
+ for (my $port = 1024; $port < 65000; $port++) {
+ $socket = IO::Socket::INET->new(
+ LocalHost => '127.0.0.1',
+ LocalPort => $port,
+ Listen => 10,
+ ReuseAddr => 1,
+ ) and return $socket;
+ }
+ croak 'Can not allocate a free port.';
+}
1;