summaryrefslogtreecommitdiffstats
path: root/tests/utils
diff options
context:
space:
mode:
authorHarshavardhana <harsha@harshavardhana.net>2014-08-19 16:14:03 -0700
committerHarshavardhana <harsha@harshavardhana.net>2014-08-26 15:27:29 -0700
commit74cf4e1920db1edae6728cfe632e4ca7aea5be59 (patch)
tree33f116ca794e57979ceccd340f8151995e51569a /tests/utils
parent77ce88681c15e711e87d23b891a488b2fd825eb0 (diff)
porting: `pidof` portability for OSX/FreeBSD
- Provide a portable `pidof` just to be used specifically with glusterfs regression tests on OSX and FreeBSD. This was written after countless hrs of effort to get a sane `pidof` working on either of the environments. `pidof` comes at the wake of lack of proper procfs support and also incompatible way of handling process names since glusterd/glusterfs are symbolic links to 'glusterfsd' - tests/utils/* directory should be part of 'PATH' to avoid abspath calculation using $(dirname) - cleanup() - rpcinfo command prints error on FreeBSD/OSX fix it Change-Id: I35f86273624cb279da1c8fae056ca27669e251d8 BUG: 1131713 Signed-off-by: Harshavardhana <harsha@harshavardhana.net> Reviewed-on: http://review.gluster.org/8499 Reviewed-by: Jeff Darcy <jdarcy@redhat.com> Tested-by: Gluster Build System <jenkins@build.gluster.com>
Diffstat (limited to 'tests/utils')
-rwxr-xr-xtests/utils/create-files.py2
-rwxr-xr-xtests/utils/gfid-access.py1
-rwxr-xr-xtests/utils/pidof.py45
3 files changed, 47 insertions, 1 deletions
diff --git a/tests/utils/create-files.py b/tests/utils/create-files.py
index 0d937eff978..05cf1279999 100755
--- a/tests/utils/create-files.py
+++ b/tests/utils/create-files.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/env python2
# This script was developed by Vijaykumar Koppad (vkoppad@redhat.com)
# The latest version of this script can found at
diff --git a/tests/utils/gfid-access.py b/tests/utils/gfid-access.py
index 25fe35bf50b..4fd4b6dfa8d 100755
--- a/tests/utils/gfid-access.py
+++ b/tests/utils/gfid-access.py
@@ -1,3 +1,4 @@
+#!/usr/bin/env python2
#
# Copyright (c) 2011-2014 Red Hat, Inc. <http://www.redhat.com>
# This file is part of GlusterFS.
diff --git a/tests/utils/pidof.py b/tests/utils/pidof.py
new file mode 100755
index 00000000000..575b899b6cc
--- /dev/null
+++ b/tests/utils/pidof.py
@@ -0,0 +1,45 @@
+#!/usr/bin/env python
+
+import sys
+
+try:
+ import psutil
+except ImportError:
+ print("Please install psutil --> pip install psutil")
+ sys.exit(1)
+
+def pmap_find(p, name):
+ for m in p.memory_maps(grouped=True):
+ if m.path.endswith("%s.so" % name):
+ return True
+ continue
+ return False
+
+def pidof(processname):
+ for p in psutil.process_iter():
+ if p.pid == 0:
+ continue
+ if "gluster" in processname:
+ if processname == "glusterd" and pmap_find(p, "glusterd"):
+ print (p.pid)
+ if processname == "glusterfs" and pmap_find(p, "client"):
+ print (p.pid)
+ if processname == "glusterfsd" and pmap_find(p, "posix-acl"):
+ print (p.pid)
+ continue
+ if processname.strip() == p.name():
+ print (p.pid)
+
+def main(argv):
+ if len(argv) < 2:
+ sys.stderr.write("Usage: %s <processname>\n" % (argv[0],))
+ return 1
+ try:
+ pidof(argv[1])
+ except Exception as err:
+ print err
+ sys.stderr.write("Please be root - %s\n" % err);
+ sys.exit(1)
+
+if __name__ == "__main__":
+ main(sys.argv)