[tor-commits] [nyx/master] Test _draw_line_details()

atagar at torproject.org atagar at torproject.org
Sun Jul 10 19:51:05 UTC 2016


commit c41a065251d54d3fb059429361712657829002d3
Author: Damian Johnson <atagar at torproject.org>
Date:   Sun Jul 10 10:58:57 2016 -0700

    Test _draw_line_details()
---
 nyx/panel/connection.py  | 45 +++++++++++++++++++++++----------------------
 test/panel/connection.py | 18 +++++++++++++++++-
 2 files changed, 40 insertions(+), 23 deletions(-)

diff --git a/nyx/panel/connection.py b/nyx/panel/connection.py
index c189362..33ef505 100644
--- a/nyx/panel/connection.py
+++ b/nyx/panel/connection.py
@@ -456,7 +456,7 @@ class ConnectionPanel(nyx.panel.DaemonPanel):
       x += 1  # offset from edge
 
     self._draw_address_column(subwindow, x, y, line, attr)
-    self._draw_line_details(subwindow, 57, y, line, width - 57 - 20, attr)
+    _draw_line_details(subwindow, 57, y, line, width - 57 - 20, attr)
     _draw_right_column(subwindow, width - 18, y, line, current_time, attr)
 
   def _draw_address_column(self, subwindow, x, y, line, attr):
@@ -485,27 +485,6 @@ class ConnectionPanel(nyx.panel.DaemonPanel):
     else:
       subwindow.addstr(x, y, '%-21s  -->  %-26s' % (src, dst), *attr)
 
-  def _draw_line_details(self, subwindow, x, y, line, width, attr):
-    if line.line_type == LineType.CIRCUIT_HEADER:
-      comp = ['Purpose: %s' % line.circuit.purpose.capitalize(), ', Circuit ID: %s' % line.circuit.id]
-    elif line.entry.get_type() in (Category.SOCKS, Category.HIDDEN, Category.CONTROL):
-      try:
-        port = line.connection.local_port if line.entry.get_type() == Category.HIDDEN else line.connection.remote_port
-        process = nyx.tracker.get_port_usage_tracker().fetch(port)
-        comp = ['%s (%s)' % (process.name, process.pid) if process.pid else process.name]
-      except nyx.tracker.UnresolvedResult:
-        comp = ['resolving...']
-      except nyx.tracker.UnknownApplication:
-        comp = ['UNKNOWN']
-    else:
-      comp = ['%-40s' % (line.fingerprint if line.fingerprint else 'UNKNOWN'), '  ' + (line.nickname if line.nickname else 'UNKNOWN')]
-
-    for entry in comp:
-      if width >= x + len(entry):
-        x = subwindow.addstr(x, y, entry, *attr)
-      else:
-        return
-
   def _update(self):
     """
     Fetches the newest resolved connections.
@@ -636,6 +615,28 @@ def _draw_details(subwindow, selected):
   subwindow.box(0, 0, subwindow.width, DETAILS_HEIGHT + 2)
 
 
+def _draw_line_details(subwindow, x, y, line, width, attr):
+  if line.line_type == LineType.CIRCUIT_HEADER:
+    comp = ['Purpose: %s' % line.circuit.purpose.capitalize(), ', Circuit ID: %s' % line.circuit.id]
+  elif line.entry.get_type() in (Category.SOCKS, Category.HIDDEN, Category.CONTROL):
+    try:
+      port = line.connection.local_port if line.entry.get_type() == Category.HIDDEN else line.connection.remote_port
+      process = nyx.tracker.get_port_usage_tracker().fetch(port)
+      comp = ['%s (%s)' % (process.name, process.pid) if process.pid else process.name]
+    except nyx.tracker.UnresolvedResult:
+      comp = ['resolving...']
+    except nyx.tracker.UnknownApplication:
+      comp = ['UNKNOWN']
+  else:
+    comp = ['%-40s' % (line.fingerprint if line.fingerprint else 'UNKNOWN'), '  ' + (line.nickname if line.nickname else 'UNKNOWN')]
+
+  for entry in comp:
+    if width >= x + len(entry):
+      x = subwindow.addstr(x, y, entry, *attr)
+    else:
+      return
+
+
 def _draw_right_column(subwindow, x, y, line, current_time, attr):
   if line.line_type == LineType.CIRCUIT:
     circ_path = [fp for fp, _ in line.circuit.path]
diff --git a/test/panel/connection.py b/test/panel/connection.py
index d7f9d1c..ac9d404 100644
--- a/test/panel/connection.py
+++ b/test/panel/connection.py
@@ -96,8 +96,10 @@ class MockEntry(Entry):
 
 
 class MockCircuit(object):
-  def __init__(self, status = 'BUILT', path = None):
+  def __init__(self, circ_id = 7, status = 'BUILT', purpose = 'GENERAL', path = None):
+    self.id = circ_id
     self.status = status
+    self.purpose = purpose
 
     if path:
       self.path = path
@@ -180,6 +182,20 @@ class TestConnectionPanel(unittest.TestCase):
     self.assertEqual(DETAILS_FOR_MULTIPLE_MATCHES, test.render(nyx.panel.connection._draw_details, line()).content)
 
   @require_curses
+  @patch('nyx.tracker.get_port_usage_tracker')
+  def test_draw_line_details(self, port_usage_tracker_mock):
+    process = Mock()
+    process.name = 'firefox'
+    process.pid = 722
+
+    port_usage_tracker_mock().fetch.return_value = process
+
+    self.assertEqual('1F43EE37A0670301AD9CB555D94AFEC2C89FDE86  Unnamed', test.render(nyx.panel.connection._draw_line_details, 0, 0, line(), 80, ()).content)
+    self.assertEqual('1F43EE37A0670301AD9CB555D94AFEC2C89FDE86', test.render(nyx.panel.connection._draw_line_details, 0, 0, line(), 45, ()).content)
+    self.assertEqual('Purpose: General, Circuit ID: 7', test.render(nyx.panel.connection._draw_line_details, 0, 0, line(line_type = LineType.CIRCUIT_HEADER), 45, ()).content)
+    self.assertEqual('firefox (722)', test.render(nyx.panel.connection._draw_line_details, 0, 0, line(entry = MockEntry(entry_type = Category.CONTROL)), 80, ()).content)
+
+  @require_curses
   def test_draw_right_column(self):
     self.assertEqual('  1.0m (INBOUND)', test.render(nyx.panel.connection._draw_right_column, 0, 0, line(), TIMESTAMP + 62, ()).content)
 





More information about the tor-commits mailing list