[autotest] Delete client/tests/kvm and related dead code.

This deletes code related to kernel tests for KVM (N.B. _not_ the
Chrome OS tests that run inside KVM in the builders), as well as
various client-side libraries that become dead after the deletion.

BUG=None
TEST=Run push_to_prod suite on a local instance

Change-Id: I6cb49f7c0eac5da07c27112071e0effda69f2a7a
Reviewed-on: https://chromium-review.googlesource.com/340243
Commit-Ready: Richard Barnette <[email protected]>
Tested-by: Richard Barnette <[email protected]>
Reviewed-by: Kevin Cheng <[email protected]>
Reviewed-by: Dan Shi <[email protected]>
diff --git a/client/common_lib/error.py b/client/common_lib/error.py
index 848c7d6..8c90bdf 100644
--- a/client/common_lib/error.py
+++ b/client/common_lib/error.py
@@ -4,14 +4,13 @@
 Internal global error types
 """
 
-import sys, traceback, threading
+import sys, traceback
 from traceback import format_exception
 
 # Add names you want to be imported by 'from errors import *' to this list.
 # This must be list not a tuple as we modify it to include all of our
 # the Exception classes we define below at the end of this file.
-__all__ = ['format_error', 'context_aware', 'context', 'get_context',
-           'exception_context']
+__all__ = ['format_error']
 
 
 def format_error():
@@ -24,142 +23,6 @@
     return ''.join(trace)
 
 
-# Exception context information:
-# ------------------------------
-# Every function can have some context string associated with it.
-# The context string can be changed by calling context(str) and cleared by
-# calling context() with no parameters.
-# get_context() joins the current context strings of all functions in the
-# provided traceback.  The result is a brief description of what the test was
-# doing in the provided traceback (which should be the traceback of a caught
-# exception).
-#
-# For example: assume a() calls b() and b() calls c().
-#
-# @error.context_aware
-# def a():
-#     error.context("hello")
-#     b()
-#     error.context("world")
-#     error.get_context() ----> 'world'
-#
-# @error.context_aware
-# def b():
-#     error.context("foo")
-#     c()
-#
-# @error.context_aware
-# def c():
-#     error.context("bar")
-#     error.get_context() ----> 'hello --> foo --> bar'
-#
-# The current context is automatically inserted into exceptions raised in
-# context_aware functions, so usually test code doesn't need to call
-# error.get_context().
-
-ctx = threading.local()
-
-
-def _new_context(s=""):
-    if not hasattr(ctx, "contexts"):
-        ctx.contexts = []
-    ctx.contexts.append(s)
-
-
-def _pop_context():
-    ctx.contexts.pop()
-
-
-def context(s="", log=None):
-    """
-    Set the context for the currently executing function and optionally log it.
-
-    @param s: A string.  If not provided, the context for the current function
-            will be cleared.
-    @param log: A logging function to pass the context message to.  If None, no
-            function will be called.
-    """
-    ctx.contexts[-1] = s
-    if s and log:
-        log("Context: %s" % get_context())
-
-
-def base_context(s="", log=None):
-    """
-    Set the base context for the currently executing function and optionally
-    log it.  The base context is just another context level that is hidden by
-    default.  Functions that require a single context level should not use
-    base_context().
-
-    @param s: A string.  If not provided, the base context for the current
-            function will be cleared.
-    @param log: A logging function to pass the context message to.  If None, no
-            function will be called.
-    """
-    ctx.contexts[-1] = ""
-    ctx.contexts[-2] = s
-    if s and log:
-        log("Context: %s" % get_context())
-
-
-def get_context():
-    """Return the current context (or None if none is defined)."""
-    if hasattr(ctx, "contexts"):
-        return " --> ".join([s for s in ctx.contexts if s])
-
-
-def exception_context(e):
-    """Return the context of a given exception (or None if none is defined)."""
-    if hasattr(e, "_context"):
-        return e._context  # pylint: disable=W0212
-
-
-def set_exception_context(e, s):
-    """Set the context of a given exception."""
-    e._context = s
-
-
-def join_contexts(s1, s2):
-    """Join two context strings."""
-    if s1:
-        if s2:
-            return "%s --> %s" % (s1, s2)
-        else:
-            return s1
-    else:
-        return s2
-
-
-def context_aware(fn):
-    """A decorator that must be applied to functions that call context()."""
-    def new_fn(*args, **kwargs):
-        _new_context()
-        _new_context("(%s)" % fn.__name__)
-        try:
-            try:
-                return fn(*args, **kwargs)
-            except Exception, e:
-                if not exception_context(e):
-                    set_exception_context(e, get_context())
-                raise
-        finally:
-            _pop_context()
-            _pop_context()
-    new_fn.__name__ = fn.__name__
-    new_fn.__doc__ = fn.__doc__
-    new_fn.__dict__.update(fn.__dict__)
-    return new_fn
-
-
-def _context_message(e):
-    s = exception_context(e)
-    if s:
-        return "    [context: %s]" % s
-    else:
-        return ""
-
-
-
 class TimeoutException(Exception):
     """
     Generic exception raised on retry timeouts.
@@ -180,7 +43,7 @@
 class AutotestError(Exception):
     """The parent of all errors deliberatly thrown within the client code."""
     def __str__(self):
-        return Exception.__str__(self) + _context_message(self)
+        return Exception.__str__(self)
 
 
 class JobError(AutotestError):
@@ -199,8 +62,6 @@
             msg = "Unhandled %s: %s"
             msg %= (unhandled_exception.__class__.__name__,
                     unhandled_exception)
-            if not isinstance(unhandled_exception, AutotestError):
-                msg += _context_message(unhandled_exception)
             msg += "\n" + traceback.format_exc()
             JobError.__init__(self, msg)
 
@@ -250,8 +111,6 @@
             msg = "Unhandled %s: %s"
             msg %= (unhandled_exception.__class__.__name__,
                     unhandled_exception)
-            if not isinstance(unhandled_exception, AutotestError):
-                msg += _context_message(unhandled_exception)
             msg += "\n" + traceback.format_exc()
             TestError.__init__(self, msg)
 
@@ -267,8 +126,6 @@
             msg = "Unhandled %s: %s"
             msg %= (unhandled_exception.__class__.__name__,
                     unhandled_exception)
-            if not isinstance(unhandled_exception, AutotestError):
-                msg += _context_message(unhandled_exception)
             msg += "\n" + traceback.format_exc()
             TestFail.__init__(self, msg)
 
@@ -291,7 +148,6 @@
 
         if self.additional_text:
             msg += ", " + self.additional_text
-        msg += _context_message(self)
         msg += '\n' + repr(self.result_obj)
         return msg