[tor-commits] [stem/master] Drop sockstat connection resolution

atagar at torproject.org atagar at torproject.org
Mon Feb 10 03:14:50 UTC 2020


commit f53715ebe6e36327d0bca1c8c9ffe800ffd8c4d5
Author: Damian Johnson <atagar at torproject.org>
Date:   Sat Feb 1 15:03:53 2020 -0800

    Drop sockstat connection resolution
    
    We disabled sockstat tests a while ago due to unreliability...
    
      https://github.com/torproject/stem/issues/42
    
    We have plently of better resolvers so simply dropping this one.
---
 stem/util/connection.py       | 15 +--------------
 test/integ/util/connection.py |  1 -
 test/unit/util/connection.py  | 34 ++--------------------------------
 3 files changed, 3 insertions(+), 47 deletions(-)

diff --git a/stem/util/connection.py b/stem/util/connection.py
index 5480f95a..eaeafec4 100644
--- a/stem/util/connection.py
+++ b/stem/util/connection.py
@@ -36,10 +36,6 @@ Connection and networking based utility functions.
   .. versionchanged:: 1.6.0
      Added **BSD_FSTAT**.
 
-  .. deprecated:: 1.6.0
-     The SOCKSTAT connection resolver is proving to be unreliable
-     (:trac:`23057`), and will be dropped in the 2.0.0 release unless fixed.
-
   ====================  ===========
   Resolver              Description
   ====================  ===========
@@ -48,7 +44,6 @@ Connection and networking based utility functions.
   **NETSTAT_WINDOWS**   netstat command under Windows
   **SS**                ss command
   **LSOF**              lsof command
-  **SOCKSTAT**          sockstat command under \\*nix
   **BSD_SOCKSTAT**      sockstat command under FreeBSD
   **BSD_PROCSTAT**      procstat command under FreeBSD
   **BSD_FSTAT**         fstat command under OpenBSD
@@ -84,7 +79,6 @@ Resolver = enum.Enum(
   ('NETSTAT_WINDOWS', 'netstat (windows)'),
   ('SS', 'ss'),
   ('LSOF', 'lsof'),
-  ('SOCKSTAT', 'sockstat'),
   ('BSD_SOCKSTAT', 'sockstat (bsd)'),
   ('BSD_PROCSTAT', 'procstat (bsd)'),
   ('BSD_FSTAT', 'fstat (bsd)')
@@ -111,8 +105,6 @@ RESOLVER_COMMAND = {
   # (lsof provides a '-p <pid>' but oddly in practice it seems to be ~11-28% slower)
   Resolver.LSOF: 'lsof -wnPi',
 
-  Resolver.SOCKSTAT: 'sockstat',
-
   # -4 = IPv4, -c = connected sockets
   Resolver.BSD_SOCKSTAT: 'sockstat -4c',
 
@@ -138,9 +130,6 @@ RESOLVER_FILTER = {
   # tor  3873  atagar  45u  IPv4  40994  0t0  TCP 10.243.55.20:45724->194.154.227.109:9001 (ESTABLISHED)
   Resolver.LSOF: '^{name}\\s+{pid}\\s+.*\\s+{protocol}\\s+{local}->{remote} \\(ESTABLISHED\\)$',
 
-  # atagar   tor                  15843    tcp4   192.168.0.20:44092        68.169.35.102:443         ESTABLISHED
-  Resolver.SOCKSTAT: '^\\S+\\s+{name}\\s+{pid}\\s+{protocol}4\\s+{local}\\s+{remote}\\s+ESTABLISHED$',
-
   # _tor     tor        4397  12 tcp4   172.27.72.202:54011   127.0.0.1:9001
   Resolver.BSD_SOCKSTAT: '^\\S+\\s+{name}\\s+{pid}\\s+\\S+\\s+{protocol}4\\s+{local}\\s+{remote}$',
 
@@ -380,9 +369,7 @@ def system_resolvers(system = None):
 
     resolvers = [Resolver.BSD_SOCKSTAT, Resolver.BSD_PROCSTAT, Resolver.LSOF]
   else:
-    # Sockstat isn't available by default on ubuntu.
-
-    resolvers = [Resolver.NETSTAT, Resolver.SOCKSTAT, Resolver.LSOF, Resolver.SS]
+    resolvers = [Resolver.NETSTAT, Resolver.LSOF, Resolver.SS]
 
   # remove any that aren't in the user's PATH
 
diff --git a/test/integ/util/connection.py b/test/integ/util/connection.py
index 861b8ba9..f1745ec0 100644
--- a/test/integ/util/connection.py
+++ b/test/integ/util/connection.py
@@ -92,7 +92,6 @@ class TestConnection(unittest.TestCase):
       Resolver.NETSTAT_WINDOWS,
       Resolver.SS,
       Resolver.LSOF,
-      Resolver.SOCKSTAT,
       Resolver.BSD_SOCKSTAT,
       Resolver.BSD_PROCSTAT,
       Resolver.BSD_FSTAT,
diff --git a/test/unit/util/connection.py b/test/unit/util/connection.py
index d848c40b..6f8d8ab8 100644
--- a/test/unit/util/connection.py
+++ b/test/unit/util/connection.py
@@ -108,17 +108,6 @@ tor       129 atagar   22u  IPv4 0xffffff35c9125500      0t0  TCP 192.168.1.20:9
 tor       129 atagar   23u  IPv4 0xffffff3236168160      0t0  TCP 192.168.1.20:9090->62.135.16.134:14456 (ESTABLISHED)
 """
 
-SOCKSTAT_OUTPUT = """\
-USER     PROCESS              PID      PROTO  SOURCE ADDRESS            FOREIGN ADDRESS           STATE
-atagar   ubuntu-geoip-pr      2164     tcp4   192.168.0.1:55395         141.18.34.33:80           CLOSE_WAIT
-atagar   tor                  15843    tcp4   127.0.0.1:9050            *:*                       LISTEN
-atagar   tor                  15843    tcp4   127.0.0.1:9051            *:*                       LISTEN
-atagar   tor                  15843    tcp4   192.168.0.1:44415         38.229.79.2:443           ESTABLISHED
-atagar   tor                  15843    tcp4   192.168.0.1:44092         68.169.35.102:443         ESTABLISHED
-atagar   firefox              20586    tcp4   192.168.0.1:47486         213.24.100.160:443        ESTABLISHED
-atagar   firefox              20586    tcp4   192.168.0.1:43762         32.188.221.72:443         CLOSE_WAIT
-"""
-
 # I don't have actual sockstat and procstat output for FreeBSD. Rather, these
 # are snippets of output from email threads.
 
@@ -216,10 +205,10 @@ class TestConnection(unittest.TestCase):
     self.assertEqual([Resolver.LSOF], stem.util.connection.system_resolvers('Darwin'))
     self.assertEqual([Resolver.BSD_FSTAT], stem.util.connection.system_resolvers('OpenBSD'))
     self.assertEqual([Resolver.BSD_SOCKSTAT, Resolver.BSD_PROCSTAT, Resolver.LSOF], stem.util.connection.system_resolvers('FreeBSD'))
-    self.assertEqual([Resolver.NETSTAT, Resolver.SOCKSTAT, Resolver.LSOF, Resolver.SS], stem.util.connection.system_resolvers('Linux'))
+    self.assertEqual([Resolver.NETSTAT, Resolver.LSOF, Resolver.SS], stem.util.connection.system_resolvers('Linux'))
 
     proc_mock.return_value = True
-    self.assertEqual([Resolver.PROC, Resolver.NETSTAT, Resolver.SOCKSTAT, Resolver.LSOF, Resolver.SS], stem.util.connection.system_resolvers('Linux'))
+    self.assertEqual([Resolver.PROC, Resolver.NETSTAT, Resolver.LSOF, Resolver.SS], stem.util.connection.system_resolvers('Linux'))
 
     # check that calling without an argument is equivalent to calling for this
     # platform
@@ -389,25 +378,6 @@ class TestConnection(unittest.TestCase):
     self.assertEqual(expected, stem.util.connection.get_connections(Resolver.LSOF, process_pid = 129, process_name = 'tor'))
 
   @patch('stem.util.system.call')
-  def test_get_connections_by_sockstat(self, call_mock):
-    """
-    Checks the get_connections function with the sockstat resolver.
-    """
-
-    call_mock.return_value = SOCKSTAT_OUTPUT.split('\n')
-    expected = [
-      Connection('192.168.0.1', 44415, '38.229.79.2', 443, 'tcp', False),
-      Connection('192.168.0.1', 44092, '68.169.35.102', 443, 'tcp', False),
-    ]
-    self.assertEqual(expected, stem.util.connection.get_connections(Resolver.SOCKSTAT, process_pid = 15843, process_name = 'tor'))
-
-    self.assertRaises(IOError, stem.util.connection.get_connections, Resolver.SOCKSTAT, process_pid = 15843, process_name = 'stuff')
-    self.assertRaises(IOError, stem.util.connection.get_connections, Resolver.SOCKSTAT, process_pid = 1111, process_name = 'tor')
-
-    call_mock.side_effect = OSError('Unable to call sockstat')
-    self.assertRaises(IOError, stem.util.connection.get_connections, Resolver.SOCKSTAT, process_pid = 1111)
-
-  @patch('stem.util.system.call')
   def test_get_connections_by_sockstat_for_bsd(self, call_mock):
     """
     Checks the get_connections function with the bsd variant of the sockstat





More information about the tor-commits mailing list