[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[gnurl] 163/264: tests: fix conflict between Cygwin/msys and Windows PID
From: |
gnunet |
Subject: |
[gnurl] 163/264: tests: fix conflict between Cygwin/msys and Windows PIDs |
Date: |
Thu, 30 Apr 2020 16:07:46 +0200 |
This is an automated email from the git hooks/post-receive script.
nikita pushed a commit to branch master
in repository gnurl.
commit 3f60a9e995c851a1dff2439cb16407d86cde7754
Author: Marc Hoersken <address@hidden>
AuthorDate: Sun Apr 5 19:18:09 2020 +0200
tests: fix conflict between Cygwin/msys and Windows PIDs
Add 65536 to Windows PIDs to allow Windows specific treatment
by having disjunct ranges for Cygwin/msys and Windows PIDs.
See also:
- https://cygwin.com/git/?p=newlib-cygwin.git;a=commit; ↵
h=b5e1003722cb14235c4f166be72c09acdffc62ea
- https://cygwin.com/git/?p=newlib-cygwin.git;a=commit; ↵
h=448cf5aa4b429d5a9cebf92a0da4ab4b5b6d23fe
Replaces #5178
Closes #5188
---
tests/dictserver.py | 11 ++++++--
tests/ftp.pm | 72 +++++++++++++++++++++++++++++-------------------
tests/negtelnetserver.py | 9 +++++-
tests/server/util.c | 9 ++++++
tests/smbserver.py | 11 ++++++--
5 files changed, 79 insertions(+), 33 deletions(-)
diff --git a/tests/dictserver.py b/tests/dictserver.py
index 3211318c5..5641692d9 100755
--- a/tests/dictserver.py
+++ b/tests/dictserver.py
@@ -51,8 +51,11 @@ def dictserver(options):
"""
if options.pidfile:
pid = os.getpid()
+ # see tests/server/util.c function write_pidfile
+ if os.name == "nt":
+ pid += 65536
with open(options.pidfile, "w") as f:
- f.write("{0}".format(pid))
+ f.write(str(pid))
local_bind = (options.host, options.port)
log.info("[DICT] Listening on %s", local_bind)
@@ -85,7 +88,11 @@ class DictHandler(socketserver.BaseRequestHandler):
if VERIFIED_REQ in data:
log.debug("[DICT] Received verification request from test "
"framework")
- response_data = VERIFIED_RSP.format(pid=os.getpid())
+ pid = os.getpid()
+ # see tests/server/util.c function write_pidfile
+ if os.name == "nt":
+ pid += 65536
+ response_data = VERIFIED_RSP.format(pid=pid)
else:
log.debug("[DICT] Received normal request")
response_data = "No matches"
diff --git a/tests/ftp.pm b/tests/ftp.pm
index 5e92ce7f9..a29fad14f 100644
--- a/tests/ftp.pm
+++ b/tests/ftp.pm
@@ -42,6 +42,10 @@ use serverhelp qw(
datasockf_pidfilename
);
+use pathhelp qw(
+ os_is_win
+ );
+
#######################################################################
# portable_sleep uses Time::HiRes::sleep if available and falls back
# to the classic approach of using select(undef, undef, undef, ...).
@@ -55,7 +59,7 @@ sub portable_sleep {
if($Time::HiRes::VERSION) {
Time::HiRes::sleep($seconds);
}
- elsif ($^O eq 'MSWin32' || $^O eq 'cygwin' || $^O eq 'msys') {
+ elsif (os_is_win()) {
Win32::Sleep($seconds*1000);
}
else {
@@ -91,19 +95,23 @@ sub pidexists {
my $pid = $_[0];
if($pid > 0) {
+ # verify if currently existing Windows process
+ if ($pid > 65536 && os_is_win()) {
+ $pid -= 65536;
+ if($^O ne 'MSWin32') {
+ my $filter = "PID eq $pid";
+ my $result = `tasklist -fi \"$filter\" 2>nul`;
+ if(index($result, "$pid") != -1) {
+ return -$pid;
+ }
+ return 0;
+ }
+ }
+
# verify if currently existing and alive
if(kill(0, $pid)) {
return $pid;
}
-
- # verify if currently existing Windows process
- if($^O eq "msys") {
- my $filter = "PID eq $pid";
- my $result = `tasklist -fi \"$filter\" 2>nul`;
- if(index($result, "$pid") != -1) {
- return -$pid;
- }
- }
}
return 0;
@@ -116,17 +124,21 @@ sub pidterm {
my $pid = $_[0];
if($pid > 0) {
- # signal the process to terminate
- kill("TERM", $pid);
-
# request the process to quit
- if($^O eq "msys") {
- my $filter = "PID eq $pid";
- my $result = `tasklist -fi \"$filter\" 2>nul`;
- if(index($result, "$pid") != -1) {
- system("taskkill -fi \"$filter\" >nul 2>&1");
+ if ($pid > 65536 && os_is_win()) {
+ $pid -= 65536;
+ if($^O ne 'MSWin32') {
+ my $filter = "PID eq $pid";
+ my $result = `tasklist -fi \"$filter\" 2>nul`;
+ if(index($result, "$pid") != -1) {
+ system("taskkill -fi \"$filter\" >nul 2>&1");
+ }
+ return;
}
}
+
+ # signal the process to terminate
+ kill("TERM", $pid);
}
}
@@ -137,19 +149,23 @@ sub pidkill {
my $pid = $_[0];
if($pid > 0) {
- # signal the process to terminate
- kill("KILL", $pid);
-
# request the process to quit
- if($^O eq "msys") {
- my $filter = "PID eq $pid";
- my $result = `tasklist -fi \"$filter\" 2>nul`;
- if(index($result, "$pid") != -1) {
- system("taskkill -f -fi \"$filter\" >nul 2>&1");
- # Windows XP Home compatibility
- system("tskill $pid >nul 2>&1");
+ if ($pid > 65536 && os_is_win()) {
+ $pid -= 65536;
+ if($^O ne 'MSWin32') {
+ my $filter = "PID eq $pid";
+ my $result = `tasklist -fi \"$filter\" 2>nul`;
+ if(index($result, "$pid") != -1) {
+ system("taskkill -f -fi \"$filter\" >nul 2>&1");
+ # Windows XP Home compatibility
+ system("tskill $pid >nul 2>&1");
+ }
+ return;
}
}
+
+ # signal the process to terminate
+ kill("KILL", $pid);
}
}
diff --git a/tests/negtelnetserver.py b/tests/negtelnetserver.py
index 1efc64b56..7171092af 100755
--- a/tests/negtelnetserver.py
+++ b/tests/negtelnetserver.py
@@ -49,6 +49,9 @@ def telnetserver(options):
"""
if options.pidfile:
pid = os.getpid()
+ # see tests/server/util.c function write_pidfile
+ if os.name == "nt":
+ pid += 65536
with open(options.pidfile, "w") as f:
f.write(str(pid))
@@ -86,7 +89,11 @@ class
NegotiatingTelnetHandler(socketserver.BaseRequestHandler):
if VERIFIED_REQ.encode('utf-8') in data:
log.debug("Received verification request from test framework")
- response = VERIFIED_RSP.format(pid=os.getpid())
+ pid = os.getpid()
+ # see tests/server/util.c function write_pidfile
+ if os.name == "nt":
+ pid += 65536
+ response = VERIFIED_RSP.format(pid=pid)
response_data = response.encode('utf-8')
else:
log.debug("Received normal request - echoing back")
diff --git a/tests/server/util.c b/tests/server/util.c
index 263f0cece..fa3d45118 100644
--- a/tests/server/util.c
+++ b/tests/server/util.c
@@ -269,6 +269,15 @@ int write_pidfile(const char *filename)
logmsg("Couldn't write pid file: %s %s", filename, strerror(errno));
return 0; /* fail */
}
+#if defined(WIN32) || defined(_WIN32)
+ /* store pid + 65536 to avoid conflict with Cygwin/msys PIDs, see also:
+ * - https://cygwin.com/git/?p=newlib-cygwin.git;a=commit; ↵
+ * h=b5e1003722cb14235c4f166be72c09acdffc62ea
+ * - https://cygwin.com/git/?p=newlib-cygwin.git;a=commit; ↵
+ * h=448cf5aa4b429d5a9cebf92a0da4ab4b5b6d23fe
+ */
+ pid += 65536;
+#endif
fprintf(pidfile, "%ld\n", pid);
fclose(pidfile);
logmsg("Wrote pid %ld to %s", pid, filename);
diff --git a/tests/smbserver.py b/tests/smbserver.py
index d320fb21e..30caa04b7 100755
--- a/tests/smbserver.py
+++ b/tests/smbserver.py
@@ -61,8 +61,11 @@ def smbserver(options):
"""
if options.pidfile:
pid = os.getpid()
+ # see tests/server/util.c function write_pidfile
+ if os.name == "nt":
+ pid += 65536
with open(options.pidfile, "w") as f:
- f.write("{0}".format(pid))
+ f.write(str(pid))
# Here we write a mini config for the server
smb_config = configparser.ConfigParser()
@@ -267,7 +270,11 @@ class TestSmbServer(imp_smbserver.SMBSERVER):
if requested_filename == VERIFIED_REQ:
log.debug("[SMB] Verifying server is alive")
- contents = VERIFIED_RSP.format(pid=os.getpid()).encode('utf-8')
+ pid = os.getpid()
+ # see tests/server/util.c function write_pidfile
+ if os.name == "nt":
+ pid += 65536
+ contents = VERIFIED_RSP.format(pid=pid).encode('utf-8')
self.write_to_fid(fid, contents)
return fid, filename
--
To stop receiving notification emails like this one, please contact
address@hidden.
- [gnurl] 123/264: test1566: verify --etag-compare that gets a 304 back, (continued)
- [gnurl] 123/264: test1566: verify --etag-compare that gets a 304 back, gnunet, 2020/04/30
- [gnurl] 158/264: test1148: tolerate progress updates better (again), gnunet, 2020/04/30
- [gnurl] 149/264: github actions: run when pushed to master or */ci + PRs, gnunet, 2020/04/30
- [gnurl] 185/264: tests: add four MQTT tests 1190 - 1193, gnunet, 2020/04/30
- [gnurl] 189/264: scripts/release-notes: fix duplicate output header, gnunet, 2020/04/30
- [gnurl] 121/264: curl: allow both --etag-compare and --etag-save with same file name, gnunet, 2020/04/30
- [gnurl] 146/264: tests: verify split initial HTTP requests with CURL_SMALLREQSEND, gnunet, 2020/04/30
- [gnurl] 212/264: test1245: make it work with dynamic FTP server port, gnunet, 2020/04/30
- [gnurl] 245/264: test1154: set a proper name, gnunet, 2020/04/30
- [gnurl] 147/264: schannel: support .P12 or .PFX client certificates, gnunet, 2020/04/30
- [gnurl] 163/264: tests: fix conflict between Cygwin/msys and Windows PIDs,
gnunet <=
- [gnurl] 155/264: appveyor: ignore failing 'connect to non-listening proxy' tests, gnunet, 2020/04/30
- [gnurl] 160/264: Revert "file: on Windows, refuse paths that start with \\", gnunet, 2020/04/30
- [gnurl] 192/264: test2043: use revoked.badssl.com instead of revoked.grc.com, gnunet, 2020/04/30
- [gnurl] 170/264: tests/server: add hidden window to gracefully handle WM_CLOSE, gnunet, 2020/04/30
- [gnurl] 22/264: TODO: TLS-PSK with OpenSSL, gnunet, 2020/04/30
- [gnurl] 40/264: multi: Improve parameter check for curl_multi_remove_handle, gnunet, 2020/04/30
- [gnurl] 56/264: test2100: fix static port instead of dynamic value being used, gnunet, 2020/04/30
- [gnurl] 68/264: cirrus: move the sanitizer build from freebsd 13 to freebsd 12, gnunet, 2020/04/30
- [gnurl] 72/264: nghttp2: 1.12.0 required, gnunet, 2020/04/30
- [gnurl] 89/264: TODO: Set custom client ip when using haproxy protocol, gnunet, 2020/04/30