avocado.core.job_id: Ensure the Job ID is a SHA1

Return the SHA1 of the random data, rather than trusting
that the random number is large enough to fill the 40
character requirement.

This fixes a bug where on occasions the job ID had less
than 40 characters on Travis (later verified to happen
in our machines as well, we just didn't know).

Signed-off-by: Lucas Meneghel Rodrigues <lmr@redhat.com>
Merge pull request #199 from lmr/fix-job-id

avocado.core.job_id: Ensure the Job ID is a SHA1
GDB: introduce external libraries

This instroduces external libraries that are used by the avocado GDB
handling library. The two libraries are:

1) the spark parser, used as part of cPython builds, but not available
   a pip'able package or distro level packages;
2) the GDB MI parser from the pygdb project. Project seems to be be dead
   but the parser is really useful and fits well with avocado's needs.
   Also not pip'able or available from a distro package.

Signed-off-by: Cleber Rosa <crosa@redhat.com>
GDB: add GNU Debugger handling library

This library is supposed to be useful both to test writers and to avocado itself.

Test writers may want to explicitly interact with the GNU debugger, run their
applications both in out outside it, generate core dumps, etc.

Avocado itself uses that library to implement the GDB plugin, that allows test
runners to run binaries inside the debugger transparently.

Signed-off-by: Cleber Rosa <crosa@redhat.com>
gdbtest: introduce new test

This test fires a GDB instance, sends both valid and invalid commands,
runs a couple of binaries, setting breakpoints, catching signals and
generating core dumps.

Signed-off-by: Cleber Rosa <crosa@redhat.com>
avocado/runtime.py: add runtime configuration module

Simple namespace for storing configurations that will affect
the avocado runtime, including the test runner and standard
API behavior.

Signed-off-by: Cleber Rosa <crosa@redhat.com>
GDB plugin: enables GNU Debugger features

Such as the ability to run any number of applications inside the
debugger transparently.

Signed-off-by: Cleber Rosa <crosa@redhat.com>
job runtime: set the currently running test

So that other parts of the framework may act upon it if necessary.

Signed-off-by: Cleber Rosa <crosa@redhat.com>
GDB: add transparent support to avocado/utils/process.py

So that any code using our process API can be run through a debugger.

Signed-off-by: Cleber Rosa <crosa@redhat.com>
GDB: add paused and paused_msg to the test state and job main loop

paused is a boolean that indicates if the test is paused, and paused_msg
may contain a message to give to the user running the test.

Signed-off-by: Cleber Rosa <crosa@redhat.com>
GDB: add documentation about the feature, caveats and workarounds

Signed-off-by: Cleber Rosa <crosa@redhat.com>