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

atagar at torproject.org atagar at torproject.org
Mon Apr 18 20:23:16 UTC 2016


commit 3e3443b3f995dc44a7c3886d5d5c2a8da11f5a7f
Author: Damian Johnson <atagar at torproject.org>
Date:   Sat Apr 9 23:47:10 2016 -0700

    Test _draw_resource_usage()
---
 nyx/panel/header.py  | 70 +++++++++++++++++++++++++++-------------------------
 test/panel/header.py | 28 +++++++++++++++++++++
 2 files changed, 64 insertions(+), 34 deletions(-)

diff --git a/nyx/panel/header.py b/nyx/panel/header.py
index 922b907..9e8e57d 100644
--- a/nyx/panel/header.py
+++ b/nyx/panel/header.py
@@ -180,6 +180,7 @@ class HeaderPanel(nyx.panel.Panel, threading.Thread):
 
     left_width = max(subwindow.width / 2, 77) if is_wide else subwindow.width
     right_width = subwindow.width - left_width
+    pause_time = self.get_pause_time() if self.is_paused() else None
 
     _draw_platform_section(subwindow, 0, 0, left_width, vals)
 
@@ -189,7 +190,7 @@ class HeaderPanel(nyx.panel.Panel, threading.Thread):
       _draw_disconnected(subwindow, 0, 1, vals.last_heartbeat)
 
     if is_wide:
-      self._draw_resource_usage(subwindow, left_width, 0, right_width, vals)
+      _draw_resource_usage(subwindow, left_width, 0, right_width, vals, pause_time)
 
       if vals.is_relay:
         self._draw_fingerprint_and_fd_usage(subwindow, left_width, 1, right_width, vals)
@@ -198,7 +199,7 @@ class HeaderPanel(nyx.panel.Panel, threading.Thread):
       elif vals.is_connected:
         self._draw_newnym_option(subwindow, left_width, 1, right_width, vals)
     else:
-      self._draw_resource_usage(subwindow, 0, 2, left_width, vals)
+      _draw_resource_usage(subwindow, 0, 2, left_width, vals, pause_time)
 
       if vals.is_relay:
         self._draw_fingerprint_and_fd_usage(subwindow, 0, 3, left_width, vals)
@@ -212,38 +213,6 @@ class HeaderPanel(nyx.panel.Panel, threading.Thread):
     else:
       subwindow.addstr(0, subwindow.height - 1, 'Paused', HIGHLIGHT)
 
-  def _draw_resource_usage(self, subwindow, x, y, width, vals):
-    """
-    System resource usage of the tor process...
-
-      cpu: 0.0% tor, 1.0% nyx    mem: 0 (0.0%)       pid: 16329  uptime: 12-20:42:07
-    """
-
-    if vals.start_time:
-      if not vals.is_connected:
-        now = vals.connection_time
-      elif self.is_paused():
-        now = self.get_pause_time()
-      else:
-        now = time.time()
-
-      uptime = str_tools.short_time_label(now - vals.start_time)
-    else:
-      uptime = ''
-
-    sys_fields = (
-      (0, vals.format('cpu: {tor_cpu}% tor, {nyx_cpu}% nyx')),
-      (27, vals.format('mem: {memory} ({memory_percent}%)')),
-      (47, vals.format('pid: {pid}')),
-      (59, 'uptime: %s' % uptime),
-    )
-
-    for (start, label) in sys_fields:
-      if width >= start + len(label):
-        subwindow.addstr(x + start, y, label)
-      else:
-        break
-
   def _draw_fingerprint_and_fd_usage(self, subwindow, x, y, width, vals):
     """
     Presents our fingerprint, and our file descriptor usage if we're running
@@ -559,3 +528,36 @@ def _draw_disconnected(subwindow, x, y, last_heartbeat):
   x = subwindow.addstr(x, y, 'Tor Disconnected', RED, BOLD)
   last_heartbeat_str = time.strftime('%H:%M %m/%d/%Y', time.localtime(last_heartbeat))
   subwindow.addstr(x, y, ' (%s, press r to reconnect)' % last_heartbeat_str)
+
+
+def _draw_resource_usage(subwindow, x, y, width, vals, pause_time):
+  """
+  System resource usage of the tor process...
+
+    cpu: 0.0% tor, 1.0% nyx    mem: 0 (0.0%)       pid: 16329  uptime: 12-20:42:07
+  """
+
+  if vals.start_time:
+    if not vals.is_connected:
+      now = vals.connection_time
+    elif pause_time:
+      now = pause_time
+    else:
+      now = time.time()
+
+    uptime = str_tools.short_time_label(now - vals.start_time)
+  else:
+    uptime = ''
+
+  sys_fields = (
+    (0, vals.format('cpu: {tor_cpu}% tor, {nyx_cpu}% nyx')),
+    (27, vals.format('mem: {memory} ({memory_percent}%)')),
+    (47, vals.format('pid: {pid}')),
+    (59, 'uptime: %s' % uptime),
+  )
+
+  for (start, label) in sys_fields:
+    if width >= start + len(label):
+      subwindow.addstr(x + start, y, label)
+    else:
+      break
diff --git a/test/panel/header.py b/test/panel/header.py
index 603d213..3828804 100644
--- a/test/panel/header.py
+++ b/test/panel/header.py
@@ -84,3 +84,31 @@ class TestHeader(unittest.TestCase):
   def test_draw_disconnected(self, localtime_mock):
     localtime_mock.return_value = time.strptime('22:43 04/09/2016', '%H:%M %m/%d/%Y')
     self.assertEqual('Tor Disconnected (22:43 04/09/2016, press r to reconnect)', test.render(nyx.panel.header._draw_disconnected, 0, 0, 1460267022.231895).content)
+
+  @require_curses
+  def test_draw_resource_usage(self):
+    vals = nyx.panel.header._sampling(
+      start_time = 1460166022.231895,
+      connection_time = 1460267022.231895,
+      is_connected = False,
+      tor_cpu = '2.1',
+      nyx_cpu = '5.4',
+      memory = '118 MB',
+      memory_percent = '3.0',
+      pid = '22439',
+    )
+
+    test_input = {
+      80: 'cpu: 2.1% tor, 5.4% nyx    mem: 118 MB (3.0%)  pid: 22439  uptime: 1-04:03:20',
+      70: 'cpu: 2.1% tor, 5.4% nyx    mem: 118 MB (3.0%)  pid: 22439',
+      60: 'cpu: 2.1% tor, 5.4% nyx    mem: 118 MB (3.0%)  pid: 22439',
+      50: 'cpu: 2.1% tor, 5.4% nyx    mem: 118 MB (3.0%)',
+      40: 'cpu: 2.1% tor, 5.4% nyx',
+      30: 'cpu: 2.1% tor, 5.4% nyx',
+      20: '',
+      10: '',
+      0: '',
+    }
+
+    for width, expected in test_input.items():
+      self.assertEqual(expected, test.render(nyx.panel.header._draw_resource_usage, 0, 0, width, vals, None).content)





More information about the tor-commits mailing list