new test, new bugs found...
authorChristian Herdtweck <christian.herdtweck@intra2net.com>
Thu, 14 Jan 2016 14:01:39 +0000 (15:01 +0100)
committerChristian Herdtweck <christian.herdtweck@intra2net.com>
Thu, 14 Jan 2016 14:01:39 +0000 (15:01 +0100)
test_helpers.py

index 7d7072f..69a0982 100644 (file)
@@ -8,12 +8,10 @@ tests
 
 from __future__ import print_function
 
-import contextlib
+from contextlib import contextmanager
 from threading import Thread
 from time import sleep
-from file_helpers import get_filesystem_fill_states, FilesystemFillState
 from datetime import datetime as dt
-from buffers import LogarithmicBuffer
 from itertools import tee
 from warnings import warn
 from sys import stderr, exit as sys_exit
@@ -27,10 +25,14 @@ except ImportError:
     # only added in python 3.2
     WARN_BASE_CLASS = UserWarning
 
+from buffers import LogarithmicBuffer
+from file_helpers import get_filesystem_fill_states, FilesystemFillState
+from iter_helpers import pairwise
+
 
 #: filesystems shown by df that usually do not correspond to something on disc
 #: (except maybe swap)
-NOT_REAL_FILESYSTEMS = 'none', 'shmfs', 'procfs', 'tmpfs'
+NOT_REAL_FILESYSTEMS = 'none', 'shmfs', 'procfs', 'tmpfs', 'ramfs'
 
 
 class DiscFullPreventionError(Exception):
@@ -127,9 +129,9 @@ class DiscFillChecker:
 
             # call user-defined function to decide
             min_time = None
-            if any(time > 0 for time in times_until_empty):
+            if any(time != None and time > 0 for time in times_until_empty):
                 min_time = min(time for time in times_until_empty
-                               if time>0)
+                               if time != None and time>0)
             avg_time = calc_time_until_zero(fill_states[0],
                                              fill_states[-1])
             self.decision_function(fs_state,
@@ -226,12 +228,6 @@ def default_disc_full_decision_function(curr_state,
                        Values should be one like :py:data:`KILL_EXCEPTION`
     """
 
-    if curr_state.name == '/dev/mapper/ssd2-local':
-        print('checking ssd2: free is {0:.1f}MB, warn at {1:.1f}MB, err at {2:.1f}MB'
-              .format(float(curr_state.available) / MEGABYTE,
-                      float(size_warn) / MEGABYTE,
-                      float(size_err) / MEGABYTE))
-
     # err?
     raise_err = False
     if curr_state.available < size_err:
@@ -295,21 +291,11 @@ def calc_time_until_zero(old_state, new_state):
     return (new_date - dt.now()).total_seconds() - time_diff
 
 
-def pairwise(iterable):
-    """ s -> (s0,s1), (s1,s2), (s2, s3), ...
-
-    taken from itertool recipes in python api doc of itertools
-    """
-    a, b = tee(iterable)
-    next(b, None)
-    return zip(a, b)
-
-
 METHOD_THREAD = 'thread'
 METHOD_ALARM = 'alarm'
 
 
-@contextlib.contextmanager
+@contextmanager
 def disc_fill_checked(method=METHOD_THREAD, *args, **kwargs):
     """ run test function while watching disc space