Statistics
| Branch: | Tag: | Revision:

root / qa / qa_utils.py @ a07ae57f

History | View | Annotate | Download (26.2 kB)

# Date Author Comment
ffafdcf6 03/05/2014 11:21 am Hrvoje Ribicic

Add option to turn off command logging to GetCommandOutput

The command logging performed by GetCommandOutput can be distracting
and unwelcome. This patch adds a switch allowing the command output to
be muted as needed.

Signed-off-by: Hrvoje Ribicic <>...

1de1cd0c 03/05/2014 11:21 am Hrvoje Ribicic

Add an option for disabling the SSH multiplexer in QA

The SSH multiplexer is used by default in every connection made, and
when multiple threads are used, this causes strange issues when running
the QA locally. This patch allows the multiplexer to be bypassed,...

93029a5b 02/19/2014 10:39 am Jose A. Lopes

Extend 'AssertIn' with an optional error message

Extend 'AssertIn' with an optional error message, thus making it
easier to find the cause of an error when errors occur during the QA.

Signed-off-by: Jose A. Lopes <>
Reviewed-by: Hrvoje Ribicic <>

f985ecbd 02/13/2014 02:34 pm Jose A. Lopes

Instance communication mechanism QA (for cluster only)

Extend QA with tests for the instance communication mechanism. These
tests cover only the cluster creating the instance communication
network and connecting it to the existing node group, and also if new...

d3737aca 01/07/2014 02:48 pm Petr Pudlak

Catch exceptions when calling curses.setupterm() in QA

If it's running on a non-standard terminal, such as
rxvt-unicode-256color, the call fails with an exception. Instead, catch
the exception and proceed without coloring warnings/errors.

Signed-off-by: Petr Pudlak <>...

a02dbfca 11/20/2013 05:05 pm Petr Pudlak

Add an IPv6 check for the QA test of custom SSH ports

If any of the nodes involved would be reached through IPv6, the test is
skipped. This is because the required testing setup using "iptables" is
suiteble only for IPv4 and doesn't work for IPv6 connections....

d5a9b556 11/04/2013 12:57 pm Petr Pudlak

Add visual/color marks to the QA script

  • Use different visual marks at the beginning of lines (such as "<<<<" for
    starting a test and ">>>>" for finishing it)
  • Show more specifically if a test fails/passes.
  • If stdout is a terminal, use colors to distinguish different messages...
fa0a1365 09/25/2013 10:52 am Michele Tartara

Fix an improperly escaped string

Mark a string representing a "sed" command including a regular expression as a
raw string, so that the entire escaping is performed by "sed" itself.

Signed-off-by: Michele Tartara <>
Reviewed-by: Klaus Aehlig <>

d352b796 07/02/2013 05:54 pm Helga Velroyen

Revert "QA: Make Query tests test for '?' values"

This reverts commit
bfbef99b9f056638411aa894e300aa095132e931. The problem is that
in some cases it makes sense for '?' to be displayed. This
is the case for storage reporting on clusters that have only
the 'diskless' disk template enabled. It would be nicer,...

bfbef99b 07/02/2013 01:54 pm Helga Velroyen

QA: Make Query tests test for '?' values

When something goes wrong in the Haskell implementation of
queries, the 'gnt-* list' command does not actually fail,
but it just displays '?' as a sign of failure. We so far
do not test for that, which makes errors in the haskell...

f90a2d0c 06/26/2013 03:34 pm Thomas Thrainer

Replace tempfile by mktemp in QA code

The tempfile command only exists in Debian. In order to run the VCluster
QA also on Fedora, replace its use by mktemp.

Signed-off-by: Thomas Thrainer <>
Reviewed-by: Klaus Aehlig <>

7c8ae421 04/29/2013 06:54 pm Bernardo Dal Seno

QA: Handle multiple instance specs

Existing tests are updated to cope with the new instance specs format.

Signed-off-by: Bernardo Dal Seno <>
Reviewed-by: Helga Velroyen <>

ec996117 04/29/2013 06:53 pm Bernardo Dal Seno

QA: Transpose instance specs

The format used to store instance specs in QA is changed to better handle
multiple instance specs, a feature contained in the following patches.

Signed-off-by: Bernardo Dal Seno <>
Reviewed-by: Helga Velroyen <>

63e08b25 04/24/2013 01:05 pm Bernardo Dal Seno

QA: Split function to set and parse instance policies

The main parts, moved to qa_util, will be used for node groups too.

Signed-off-by: Bernardo Dal Seno <>
Reviewed-by: Helga Velroyen <>

5f6d1b42 04/04/2013 12:28 pm Bernardo Dal Seno

gnt-node info uses a revised format

The code is more modular, and the output is YAML-compliant. QA has been
updated to reflect the new format.

Signed-off-by: Bernardo Dal Seno <>
Reviewed-by: Helga Velroyen <>

2cbcf95d 03/26/2013 01:57 pm Bernardo Dal Seno

gnt-instance info uses a revised format

The code is more modular and the output is YAML-compliant. QA updated to
take advantage of it.

Signed-off-by: Bernardo Dal Seno <>
Reviewed-by: Helga Velroyen <>

0e79564a 03/26/2013 01:57 pm Bernardo Dal Seno

gnt-cluster info uses a revised format

The code is more modular and the output is YAML-compliant.

Added function in QA that uses PyYAML to parse the command output, and QA
is updated to take advantage of it (instead of using lots of complicated
REs).

Signed-off-by: Bernardo Dal Seno <>...

7160f14a 02/27/2013 03:58 pm Michael Hanselmann

qa_utils: Support virtual cluster for backup files

“qa_utils.BackupFile” is always called with the path for a normal node.
In virtual clusters the node prefix path must be added.

Signed-off-by: Michael Hanselmann <>
Reviewed-by: Bernardo Dal Seno <>

50eaa5da 02/27/2013 03:58 pm Michael Hanselmann

qa_utils: Virtual cluster support for SSH commands

In virtual clusters, all “gnt-*” and “ganeti-*” commands require
environment variables to be set for the virtual cluster root directory
and node name. The “cmd” script generated by “vcluster-setup” is a
wrapper setting those variables....

3c296f56 02/12/2013 03:25 pm Michael Hanselmann

Merge branch 'devel-2.7'

  • devel-2.7: (23 commits)
    QA: Support additional arguments for initialization
    qa_utils: Fix order of arguments passed to _AssertRetCode
    Improve reporting on errors.AddressPoolError exceptions
    Add note about lv-tags rename...
3b0db9e3 02/12/2013 02:02 pm Michael Hanselmann

qa_utils: Fix order of arguments passed to _AssertRetCode

Signed-off-by: Michael Hanselmann <>
Reviewed-by: Guido Trotter <>

6998aefe 02/11/2013 04:58 pm Michael Hanselmann

QA: Drop dictionary support from qa_utils._GetName

This is no longer needed now that instance/node objects in QA have
attributes. Use a helper function instead to retrieve an entity's
identifying attribute.

Signed-off-by: Michael Hanselmann <>...

aecba21e 02/11/2013 04:58 pm Michael Hanselmann

QA: Convert nodes from items to attributes

The new objects support attributes, which are cleaner than
dictionary-style access. Item access (like a dictionary) is going away
in a couple of patches. Also, pylint is better at checking attributes
than dictionary entries....

2029fe3f 02/08/2013 03:35 pm Michael Hanselmann

QA: Support entity objects in qa_utils._GetName

This is a temporary solution until nodes and instances are converted to
objects with attributes.

Signed-off-by: Michael Hanselmann <>
Reviewed-by: Helga Velroyen <>

83251115 02/05/2013 06:55 pm Michael Hanselmann

Merge branch 'devel-2.7'

  • devel-2.7:
    Redirect output for gnt-* list/list-fields commands
    Add function to execute QA commands with redirected output
    Implement option to skip logging of QA commands
    Fix typo in a comment
    Add some more Haskell/Python equivalence tests...
93146c8c 02/05/2013 06:15 pm Iustin Pop

Redirect output for gnt-* list/list-fields commands

This enabled the redirection; QA output after this patch should become
much much smaller (on a 'quick' QA, we are left with ~0.5MB output on
stdout and 64MB redirected output).

Signed-off-by: Iustin Pop <>...

afd5ca04 02/05/2013 06:15 pm Iustin Pop

Add function to execute QA commands with redirected output

Some QA commands generate non-trivial output: for a full QA, the gnt-*
list commands generate more than 300MB of data. To make the QA logs
more parseable by humans, we need support for redirecting output of...

56b9f2db 02/05/2013 06:15 pm Iustin Pop

Implement option to skip logging of QA commands

This patch adds an optional kwarg that allows skipping the "Command:
…" line in QA output. This is helpful if we only need to run some
maintenance actions, that are QA-related and not Ganeti-related.

Signed-off-by: Iustin Pop <>...

35e18c38 02/01/2013 06:21 pm Michael Hanselmann

Merge branch 'devel-2.7'

  • devel-2.7: (24 commits)
    Fix typo in ganeti-noded man page
    QA: Run instance tests with different cluster configurations
    QA: Run cluster-verify after instance tests
    QA: Refactored launching of the various instance tests
    QA: Use lists of nodes as argument to instance tests...
587f8ff6 02/01/2013 01:32 am Bernardo Dal Seno

QA: Added function to check cluster-verify result

Now it's possible to check that cluster-verify reports all the expected
errors, instead of simply checking that it fails.

Signed-off-by: Bernardo Dal Seno <>
Reviewed-by: Michael Hanselmann <>

ea7693c1 01/24/2013 10:46 am Helga Velroyen

Network QA

This adds a script for the QA of 'gnt-network'. So far it
covers adding/removing and connecting/disconnecting networks.

Signed-off-by: Helga Velroyen <>
Reviewed-by: Michael Hanselmann <>

b4d2d2cb 01/11/2013 05:37 pm Michael Hanselmann

QA: Factorize retrieving non-existent groups from config

Also add a check to make sure there are enough groups defined.

Signed-off-by: Michael Hanselmann <>
Reviewed-by: Guido Trotter <>

45317e3a 12/19/2012 03:45 pm Iustin Pop

Remove some unused Python code

This patch removes code which is no longer used due to refactoring:

- http.InitSsl, last usage removed in commit 33231500 (“Convert RPC
client to PycURL”)
- rapi.baserlib.MakeParamsDict, last usage remove in commit 4e5a68f8...

05325a35 12/18/2012 04:09 pm Bernardo Dal Seno

Fixes and improvements to comments

Some fixes, added more information in a few points, removed a stale (5+
year old) TODO comment.

Signed-off-by: Bernardo Dal Seno <>
Reviewed-by: Guido Trotter <>

48967eb0 10/11/2012 12:56 pm Michael Hanselmann

qa_utils: Stop hardcoding path to /etc/hosts

- Simplified shell command for adding hosts, too
- The exception handling is also improved by re-raising any exceptions
instead of swallowing qa_error.Error

Signed-off-by: Michael Hanselmann <>...

710bc88c 06/05/2012 06:58 pm Iustin Pop

QA: stop logging SSH arguments for each invocation

Currently, this is how the QA log looks like:

Command: ssh -oEscapeChar=none -oBatchMode=yes -l root -t -oStrictHostKeyChecking=yes -oClearAllForwardings=yes -oForwardAgent=yes -oControlPath=/tmp/ganeti-qa-multiplexer.DMzkuH -oControlMaster=no node14 exit...

f14a8b15 06/05/2012 04:42 pm Iustin Pop

Switch QA to tty-less mode

This makes ssh generate much less noise when QA is run itself without
a tty, as otherwise we get thousands of lines of:

Pseudo-terminal will not be allocated because stdin is not a terminal.

in the QA logs (which are already big enough)....

889bed16 05/15/2012 02:19 pm Michael Hanselmann

qa_utils: Factorize code for getting entity name

This reduces code duplication and provides better error messages if
something is incorrect while getting a node or instance name.

Signed-off-by: Michael Hanselmann <>
Reviewed-by: Iustin Pop <>

2ac35588 05/14/2012 08:32 pm Michael Hanselmann

qa_utils: Accept string as instance for check

Some tests don't have access to an instance dictionary.

Signed-off-by: Michael Hanselmann <>
Reviewed-by: Iustin Pop <>

c9e05005 05/10/2012 02:02 pm Michael Hanselmann

QA: Infrastructure for hook script to check instance status

This script can be used to check if an instance is running or stopped at
various points during a QA run. Environment variables are used to pass
the most essential information.

Signed-off-by: Michael Hanselmann <>...

0fdf247d 04/19/2012 09:04 pm Michael Hanselmann

Convert listing exports to query2

This solves one case where locks are acquired during LUXI queries.
Pretty late into the transition I noticed that OpBackupQuery had a
“use_locking” parameter for a long time, but didn't use it. Since
most of the other changes were already and this allows exports to...

6d1e4845 04/13/2012 10:16 pm Michael Hanselmann

Fix QA failures with "gnt-job list"

Jobs have no “name” field.

Signed-off-by: Michael Hanselmann <>
Reviewed-by: Iustin Pop <>

58ea8d17 01/19/2012 02:42 pm Michael Hanselmann

Fix wrong option names in QA and cluster-merge

Signed-off-by: Michael Hanselmann <>
Reviewed-by: Iustin Pop <>

b459a848 08/30/2011 11:24 am Andrea Spadaccini

DeprecationWarning fixes for pylint

In version 0.21, pylint unified all the disable-* (and enable-*)
directives to disable (resp. enable). This leads to a lot of
DeprecationWarning being emitted even if one uses the recommended
version of pylint (0.21.1, as stated in devnotes.rst)....

d0c8c01d 07/25/2011 04:55 pm Iustin Pop

Most boring patch ever

s/'/"/ in (hopefully) the right places.

Signed-off-by: Iustin Pop <>
Reviewed-by: Michael Hanselmann <>

79eac09b 03/08/2011 12:55 pm Michael Hanselmann

QA: Add utility to ensure item is not in sequence

Signed-off-by: Michael Hanselmann <>
Reviewed-by: Iustin Pop <>

31fe5102 03/03/2011 05:45 pm René Nussbaumer

LUInstanceRename: Fail if renamed hostname mismatch

There's a problem if you run gnt-instance rename with a non FQDN and the
renamed LU tries to resolve the hostname to make it FQDN. It could be
that this resolved hostname was just a CNAME to another name which leads...

50265802 02/03/2011 11:42 am René Nussbaumer

Make it possible to disable tty in qa_utils.GetCommandOutput

The tty can have strange side effect as it seems to replace \n with
\r\n. In case of simply catting a file and compare it's output this
will break. This patch adds the possibility to disable tty if needed....

3582eef6 01/12/2011 12:41 pm Iustin Pop

Run pylint over QA code too

Right now, the QA code is not covered by pylint, and this shows at
least one low-impact bug.

This patch does the necessary changes to make QA pylint-clean, and the
changes the makefile to run pylint for it.

Notable changes:
...

f7e6f3c8 01/12/2011 11:18 am Iustin Pop

QA: use a persistent SSH connection to the master

The recent additions to QA (many more tests) make QA slow if the
machine on which the QA runs is not very close to the tested nodes —
or in general, when the SSH handhaske is costly.

We discussed before about using a persistent connection, and here is...

0a05f959 01/10/2011 06:32 pm Adeodato Simo

Fix docstring for "cmd" in qa_utils.GetSSHCommand

Docstring indicated "cmd" should be a list, when it's expected that
it'll be a string.

Also, converted docstring to current epydoc-style list of function
arguments.

Signed-off-by: Adeodato Simo <>...

c694367b 12/21/2010 08:14 pm Michael Hanselmann

Fix QA for “list-fields” commands

The list of fields is not only sorted, but sorted in a nice way.

Signed-off-by: Michael Hanselmann <>
Reviewed-by: Iustin Pop <>

b9955569 12/16/2010 09:57 am René Nussbaumer

QA: Allow upload of string data

Signed-off-by: René Nussbaumer <>
Reviewed-by: Michael Hanselmann <>

2214cf14 12/14/2010 03:23 pm Michael Hanselmann

QA: Extend unittests for query operations, add tests for list-fields

Signed-off-by: Michael Hanselmann <>
Reviewed-by: René Nussbaumer <>

288d6440 12/10/2010 06:26 pm Michael Hanselmann

QA: Improve tests for instance/node list

- Query all known fields
- Random combinations (using a PRNG with a fixed seed) of fields
- Order of result names

Signed-off-by: Michael Hanselmann <>
Reviewed-by: Iustin Pop <>

2f4b4f78 11/29/2010 03:37 pm Iustin Pop

Simplify QA commands

Currently, 95% of the QA commands are executed in the same way: on the
master, based on a command list and with expectancies for succes:

AssertEqual(StartSSH(master['primary'],
utils.ShellQuoteArgs(cmd)).wait(), 0)...
46f9a948 11/01/2010 05:02 pm Michael Hanselmann

Change qa_utils.ResolveInstanceName to take name

… instead of an object. Allows it to be used in places where
only the name is available.

Signed-off-by: Michael Hanselmann <>
Reviewed-by: René Nussbaumer <>

5d831182 06/14/2010 07:57 pm Michael Hanselmann

qa_rapi: Test inter-cluster instance move script

This test moves an instance on the same cluster and, if successful,
moves it back. While not testing a real move between two clusters,
this is certainly better than nothing.

Signed-off-by: Michael Hanselmann <>...

49d50e52 05/11/2010 06:04 pm Michael Hanselmann

QA: Add function create temporary backup file

Signed-off-by: Michael Hanselmann <>
Reviewed-by: Iustin Pop <>

e6ce18ac 03/26/2010 03:56 pm René Nussbaumer

Adding QA RAPI tests for activate-disks and deactivate-disks calls

  • This also adds support for authenticated RAPI calls
  • Other HTTP methods than GET/POST

Signed-off-by: René Nussbaumer <>
Reviewed-by: Guido Trotter <>

26a61f87 09/05/2008 03:19 pm Michael Hanselmann

QA: Remove dry run mode

It didn't work as planned because some commands depend on the return
value or output of some operations.

Reviewed-by: iustinp

305cb9bb 08/26/2008 06:53 pm Michael Hanselmann

QA: Use pseudo-tty via SSH

This gives continous output instead it being buffered.

Reviewed-by: ultrotter

eaef8a05 08/18/2008 12:58 pm Michael Hanselmann

Copy qa_utils.AssertIn from 1.2 branch

Apparently it was forgotten when import the remote API QA tests.

Reviewed-by: schreiberal

ed54b47e 08/15/2008 11:43 am Michael Hanselmann

Remove QA hook functionality

To my knowledge they're used nowhere and it's at least slightly
confusing to people adding new QA checks.

Reviewed-by: ultrotter

c68d1f43 02/14/2008 05:39 pm Michael Hanselmann

Code style updates for QA code.

Reviewed-by: iustinp

abe3db55 12/03/2007 03:54 pm Michael Hanselmann

Add comment about PEP 318 to qa_utils.py.

Reviewed-by: iustinp

f9fe750a 11/22/2007 02:17 pm Michael Hanselmann

List loading hooks in QA.

Reviewed-by: schreiberal

1672a0d1 11/08/2007 01:50 pm Michael Hanselmann

Implement hooks infrastructure.

Reviewed-by: schreiberal

dfe11bad 11/01/2007 04:31 pm Michael Hanselmann

Cleanup colouring functions.

Make the code somewhat smaller. Disable disk failure test for master for now.

Reviewed-by: schreiberal

e8ae0c20 10/18/2007 04:02 pm Michael Hanselmann

Implement disk failure QA test.

Testing failure on the primary node is currently disabled due to drbd problems.

Reviewed-by: iustinp

90ab92e3 10/15/2007 03:08 pm Michael Hanselmann

Don't take unused parameter in qa_utils.py:Print{Info,Error}.

Reviewed-by: iustinp

4b62db14 10/12/2007 05:33 pm Michael Hanselmann

Test “gnt-node evacuate” and “gnt-node failover” in QA.

Reviewed-by: schreiberal

23269c5b 10/10/2007 06:51 pm Michael Hanselmann

Colours and warnings.

- Implement colours in qa_utils.
- Print warning for cron script.

Reviewed-by: iustinp

5d640672 09/26/2007 09:27 pm Michael Hanselmann

Enhance QA.

- Test “gnt-backup export” and “gnt-backup import”.
- Move “ResolveInstanceName” to qa_utils.py.
- Fix tests for “ganeti-watcher”.
- Make instance shutdown and startup configurable.

Reviewed-by: schreiberal

cec9845c 09/13/2007 03:46 pm Michael Hanselmann

Split QA script into different modules.

Reviewed-by: iustinp