Statistics
| Branch: | Tag: | Revision:

root @ 96a12113

# Date Author Comment
96a12113 07/18/2011 06:33 pm Iustin Pop

htools: run IAllocator input through checkData

As the IAllocator backend is using a different data path than the
others, it doesn't get the full functionality that loadExternalData
does. This results in the current situation where checkData is not run
on the input cluster state, which means the node memory properties are...

8cd36391 07/18/2011 06:28 pm Iustin Pop

htools: abstract a function for displaying warnings

This will make it possible to reuse this in IAllocator too.

Signed-off-by: Iustin Pop <>
Reviewed-by: Guido Trotter <>

15329af5 07/18/2011 06:28 pm Iustin Pop

htools: use maybePrintNodes in hail.hs

This eliminates duplication of codes (and was forgotten back when
maybePrintNodes was added).

Signed-off-by: Iustin Pop <>
Reviewed-by: Guido Trotter <>

4162995d 07/18/2011 06:27 pm Iustin Pop

htools: add cluster state saving support to hail

This add support for saving the cluster state (both pre- and
post-iallocator run) to a text file such that it can be fed back into
any of the htools commands.

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

f9283686 07/18/2011 06:27 pm Iustin Pop

htools: return the final instance map in ialloc

Similar to the previous patch, this returns the final instance map
from the iallocator run, which will allow saving the cluster state for
further examination/post-processing.

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

ce6a0b53 07/18/2011 10:30 am Iustin Pop

htools: implement post-alloc cluster status display

This patch changes the IAllocator result formatting workflow to return
the final node list, which can be then used to display the final node
status too—currently only the initial status can be shown, which is...

fda24caf 07/15/2011 08:13 pm Michael Hanselmann

Update node group iallocator design to use job dependencies

While working on a function to submit jobsets, I realized that we
actually don't need them anymore. With the new job dependencies, the
iallocator plugin can just generate the right dependencies and gets the...

45df0793 07/15/2011 08:13 pm Michael Hanselmann

Fix assertion error on unclean master shutdown

Commit 66bd7445 added an assertion to ensure a finalized job has its
“end_timestamp” attribute set. Unfortunately it didn't cover a case when
the queue is recovering from an unclean master shutdown.

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

fdfe88b1 07/15/2011 08:12 pm Michael Hanselmann

Make SharedLock._is_owned public

This will be useful for assertions. GanetiLockManager._is_owned is
exported, too.

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

4036f63a 07/15/2011 06:56 pm Iustin Pop

htools: return new state from new IAllocator modes

The old modes already return the node list (as part of AllocSolution),
this patch makes the new modes provide this new information.

Signed-off-by: Iustin Pop <>
Reviewed-by: Guido Trotter <>

5440c877 07/15/2011 06:56 pm Iustin Pop

htools: update the node-evac/change-group result

… per the new design changes. This also requires changes to
updateEvacSolution, as passing in the original instance is not
helpful; we just pass the instance index now and look up the actual
instance in the modified instance map....

d254d6ce 07/15/2011 04:29 pm Iustin Pop

htools: add function for getting all nodes of an instance

Signed-off-by: Iustin Pop <>
Reviewed-by: Guido Trotter <>

20b376ff 07/15/2011 04:25 pm Iustin Pop

htools: add change-group IAllocator mode

This builds a lot upon the node-evacuation mode, and its
implementation is therefore quite easy (once node-evac was added).

Signed-off-by: Iustin Pop <>
Reviewed-by: Guido Trotter <>

d72ff6c3 07/15/2011 04:24 pm Iustin Pop

htools: add group restrictions to findBestAllocGroup

While a normal multi-group allocation doesn't need to restrict the
list of target groups beyond the unallocable status of some groups,
when we relocate instances from one group to the other we need to
limit the subset of searched groups....

c9a9b853 07/15/2011 04:13 pm Iustin Pop

htools: generalise and rename availableLocalNodes

Currently this function works in the context of an instance, computing
its local group nodes. We can use generalise it to take a group index
argument, so that it's not bound to an instance, and we rename it...

57f07ff2 07/15/2011 04:12 pm Iustin Pop

htools: add ChangeGroup to IAllocator types/loader

This patch updates the types and functions in IAllocator.hs and
Loader.hs to the new design changes (elimination of multi-relocate
mode and replacement with change-group).

It also removes an extra re-export of EvacMode from Loader.hs....

8fd09137 07/15/2011 04:10 pm Iustin Pop

htools: split tryMGAlloc in two

Currently, this function does both identify the best group for an
instance, and format the results (partially). The former functionality
is useful in other contexts too, so let's split the function in two.

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

d52d41de 07/15/2011 04:10 pm Iustin Pop

htools: add node-evacuation of DRBD all nodes

This is much more complicated than either change primary (which is
trivial) and change secondary (which is also simple).

The main strategy is:

- choose a new secondary (that will become the final primary) and...

b4bae394 07/15/2011 04:00 pm Iustin Pop

htools: small optimisation in Cluster.collapseFailures

This makes fewer temporary data structures, and thus brings a bit of
improvement in total runtime.

Signed-off-by: Iustin Pop <>
Reviewed-by: Guido Trotter <>

8f48f67d 07/15/2011 03:59 pm Iustin Pop

htools: add optional limit to allocation count

Currently, the tieredAlloc/iterateAlloc functions will not return
until the allocation fails; this means unit-testing their
functionality (e.g. that an instance can be allocated) is slow, since
they will allocate all possible instances....

db56cfc4 07/15/2011 03:33 pm Iustin Pop

htools: add node-evacuation of DRBD secondaries

Signed-off-by: Iustin Pop <>
Reviewed-by: Guido Trotter <>

9bb5721c 07/15/2011 03:32 pm Iustin Pop

htools: rework compCV so that we can use [Node] too

In some cases, we have a [Node.Node] list, instead of a Node.List
structure. Instead of converting [Node.Node] to the latter, let's
rework compCV and add a compCVNodes such that we skip this
(potentially expensive) step....

2f4c951e 07/15/2011 12:27 pm Stephen Shirley

Adding a wrapper around connecting to kvm console

The wrapper will connect to the console, and check in the background if
the instance is paused, unpausing it as necessary.

Signed-off-by: Stephen Shirley <>
Reviewed-by: Michael Hanselmann <>

61631293 07/15/2011 12:27 pm Stephen Shirley

Adding a wrapper around "xm console"

The wrapper will connect to the console, and check in the background if
the instance is paused, unpausing it as necessary.

Signed-off-by: Stephen Shirley <>
Reviewed-by: Michael Hanselmann <>

3aa8ed2b 07/14/2011 10:52 pm Michael Hanselmann

Add opcode attribute for chained jobs

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

6c3d18e0 07/14/2011 10:51 pm Michael Hanselmann

Design for chained jobs

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

f815aa89 07/14/2011 03:32 pm Iustin Pop

htools: fix a doc bug in the hbal man page

Similar to the previous hspace fix.

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

b7448942 07/14/2011 02:48 pm Iustin Pop

Mark htools/README as obsolete

And point to the main INSTALL file for up-to-date information.

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

3158250d 07/14/2011 01:14 pm Iustin Pop

Fix htool unittest failure due to invalid prereqs

Currently, the test prop_Node_rMem does some reserved memory checks on
nodes, and for the test to work correctly (can add more instances) we
require that the node free memory is greater than zero via a
prerequisite....

bef83fd1 07/14/2011 12:05 pm Iustin Pop

htools: add node-evacuate of DRBD8 primaries

Signed-off-by: Iustin Pop <>
Reviewed-by: Guido Trotter <>

47eed3f4 07/14/2011 12:05 pm Iustin Pop

htools: add more IAlloc data types and functions

These move the 'not supported' message deeper into the workflow;
assuming that the workflow as added by this patch is correct, all that
remains is:

- for disk template DRBD8, plug in the currently existing mechanisms...

a30b473c 07/14/2011 12:05 pm Iustin Pop

htools: add two monad-conversion utility functions

For monadic operations, these function will make it easier to convert
other monads (or monad-like structure) to our 'Result' type.

Signed-off-by: Iustin Pop <>
Reviewed-by: Guido Trotter <>

63a78055 07/14/2011 12:05 pm Iustin Pop

htools: add a function for computing evacuated nodes

The new IAllocator interface is based on instances, not nodes, so we
need to backtrack and compute on which nodes we can't allocate
instances during the current operation. This patch adds a function for...

97936d51 07/14/2011 12:05 pm Iustin Pop

htools: rename an internal constant

'emptySolution' is fine while we have only one Solution type
(AllocSolution), but in the future we'll introduce another one and
thus we should rename it.

Signed-off-by: Iustin Pop <>
Reviewed-by: Guido Trotter <>

1f4ae205 07/14/2011 12:05 pm Iustin Pop

htools: abstract and simplify a multigroup function

In the future, this 'split/associated instance idx list' functionality
will be used by other code, so let's move it to its own code.

The new method of computing the split also requires exporting one more...

8dda364e 07/14/2011 12:05 pm Iustin Pop

hspace: also display the starting tiered specs

These are useful for checking what instance specifications we start
with (as they are not necessarily the first entry in the TSPEC map).

Signed-off-by: Iustin Pop <>
Reviewed-by: Guido Trotter <>

247f77b7 07/14/2011 12:05 pm Iustin Pop

hspace: add support for units in the options

This patch converts hspace to allow units in all disk and memory
specifications, and updates the man page accordingly. It also correct
a mistake in the man page for the --max-cpu option.

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

1cb92fac 07/14/2011 12:05 pm Iustin Pop

htools: add parseUnit function

This is similar, but not identical, to Utils.ParseUnit. The biggest
difference is that we don't round up/down; as we only use integral
types, the result will always be rounded down.

Moreover, since (real-world) disk sizes come in SI units, the function...

22fac87d 07/13/2011 07:45 pm Guido Trotter

htools: simplify select tests

Rather than running all possible tests in one go, split them out in
three cases: "normal", undefined default value, undefined list values
(both of which require a valid response before them).

Signed-off-by: Guido Trotter <>...

82bc21e2 07/13/2011 07:07 pm Stephen Shirley

Set startup_paused to False when restarting

This fixes the lint error:

E1120:1220:InstanceReboot: No value passed for parameter
'startup_paused' in function call

Signed-off-by: Stephen Shirley <>
Reviewed-by: Michael Hanselmann <>

424ec11d 07/13/2011 05:09 pm Guido Trotter

htools: lookup instance names in select/exclude

Currently we just match the passed name with fqdns. With this change we
do a proper search for either the fqdn or the initial name component, as
in Ganeti itself.

Signed-off-by: Guido Trotter <>...

efe98965 07/13/2011 04:52 pm Guido Trotter

htools: infrastructure for looking up names

Signed-off-by: Guido Trotter <>
Reviewed-by: Iustin Pop <>

bfe6c954 07/13/2011 04:52 pm Guido Trotter

htools: Add if' and select as functions

if' is just a functional version of the if-then-else construct. Using it
we can manipulate ifs as functions, and also build other functionality.

select allows to choose a result depending on truth value of statements,...

043a3929 07/13/2011 01:46 pm Iustin Pop

htools: remove obsolete option INodes

hspace no longer uses it, hence it can be removed.

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

1cc97b7f 07/13/2011 01:45 pm Iustin Pop

hspace: also report the disk template

Signed-off-by: Iustin Pop <>
Reviewed-by: Guido Trotter <>

9ef605a6 07/13/2011 01:45 pm Iustin Pop

hspace: ask for the disk_template not number of nodes

This makes more sense, as the disk template is more meaningful than
the number of nodes.

Signed-off-by: Iustin Pop <>
Reviewed-by: Guido Trotter <>

a10a476a 07/13/2011 01:45 pm Iustin Pop

htools: add an utility function for disk templates

In the future we'll use this instead of requiring the number of nodes
from the user.

Signed-off-by: Iustin Pop <>
Reviewed-by: Guido Trotter <>

c4bb977b 07/13/2011 01:44 pm Iustin Pop

htools: define the --disk-template option

Also sorts the export list correctly.

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

6429e8d8 07/13/2011 01:40 pm Iustin Pop

htools: read/save the disk template in Text backend

This requires that we change the signature of loadInst in order to
properly annotate the error messages, which in turn requires more
unittest changes.

Also, this invalidates yet again saved data files…...

b3c5e8de 07/13/2011 01:38 pm Iustin Pop

htools: read the disk_template in the Luxi backend

We need to request the disk template in the Luxi query and then use it
when parsing the response.

Signed-off-by: Iustin Pop <>
Reviewed-by: Guido Trotter <>

5a4a3b7f 07/13/2011 01:37 pm Iustin Pop

htools: read the disk template in Luxi and Rapi

Both these backends already have the data, we just need to use it.

Signed-off-by: Iustin Pop <>
Reviewed-by: Guido Trotter <>

d25643d1 07/13/2011 01:37 pm Iustin Pop

htools: add DiskTemplate to instance definition

Currently always fixed to DRBD8, as that is what we assume already.

Signed-off-by: Iustin Pop <>
Reviewed-by: Guido Trotter <>

3c002a13 07/13/2011 01:37 pm Iustin Pop

htools: add some unittests for Types.hs

Signed-off-by: Iustin Pop <>
Reviewed-by: Guido Trotter <>

cc25e437 07/13/2011 01:36 pm Iustin Pop

htools: add a DiskTemplate type

This will be used later in the Instance type.

Signed-off-by: Iustin Pop <>
Reviewed-by: Guido Trotter <>

ca848e2a 07/13/2011 01:15 pm Iustin Pop

htools: small simplification to parseUtilisation

We eliminate the local variable as it's used only once.

Signed-off-by: Iustin Pop <>
Reviewed-by: Guido Trotter <>

0e09422b 07/13/2011 01:14 pm Iustin Pop

htools: rename Instance.auto_balance

… to autoBalance, per the recommended style.

Signed-off-by: Iustin Pop <>
Reviewed-by: Guido Trotter <>

34c5a24a 07/13/2011 01:13 pm Iustin Pop

htools: simplify some JSON-related code

Instead of manually encoding the JSValue(s), we can use showJSON as
long as we use data types that can be auto-converted.

Signed-off-by: Iustin Pop <>
Reviewed-by: Guido Trotter <>

7c14b50a 07/13/2011 01:13 pm Iustin Pop

htools: allow different result types

This patch extends the previous patch changes to allow that each
Cluster function returns a different result type, as long as we have
an auxiliary function that processes that into the standard
IAllocResult type.

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

d6cf394e 07/13/2011 01:09 pm Iustin Pop

htools: start reorganising the IAllocator workflow

Currently, all IAllocator requests return the same result type: a list
of strings (usually nodes, but can also be instance:nodes). This won't
be true in the future, with the new request types that will return...

00152519 07/13/2011 01:08 pm Iustin Pop

htools: split more code from hail/main

The logic of request processing is not separated into its own
function, and (beside CLI interaction, e.g. verbosity handling) all
logic is now in IAllocator.hs.

Signed-off-by: Iustin Pop <>
Reviewed-by: Guido Trotter <>

cabce2f4 07/13/2011 01:05 pm Iustin Pop

htools: move code from hail.hs to IAllocator.hs

This will make it easier to unittest the code, and keeps all login in a
single module.

Signed-off-by: Iustin Pop <>
Reviewed-by: Guido Trotter <>

4e84ca27 07/13/2011 01:03 pm Iustin Pop

htools: add parsing of input node-evac messages

This is a lot of duplication with modeMreloc, which will get sorted
out once we convert mreloc to change-group.

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

3667467d 07/13/2011 01:03 pm Iustin Pop

htools: remove pre-2.4 compatibility from RAPI

This was potentially hiding issues in the group query, so let's remove
it since we're now bound to the current Ganeti version.

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

1fe412bb 07/13/2011 01:02 pm Iustin Pop

htools: introduce new data type for node-evac

The evac-mode goes into the Types.hs module since it needs to be
available to Cluster.hs too.

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

525bfb36 07/13/2011 01:01 pm Iustin Pop

htools: docstring fixes and improvements

No code changes (except one definition being moved around in QC.hs)
are contained in this patch.

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

606e71d3 07/13/2011 01:00 pm Iustin Pop

Fix some issues in htools apidoc generation

First, auto-generated files were not processed if HsColour thus the
'source' link in Haddock documentation was dangling.

Second, we document the original Python constant name in the
Ganeti.Constants source, so that it's easily retrievable (as opposed...

48f12e73 07/13/2011 01:00 pm Iustin Pop

Replace an mkdir -p with mkdir_p in Makefile.am

Oops, this shouldn't have gone in in the first place…

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

98b33d0e 07/13/2011 01:00 pm Iustin Pop

Exclude auto-generated Haskell code from coverage

Especially for Ganeti.Constants, which has many declarations, it
doesn't make sense to check for coverage.

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

0b71067a 07/12/2011 07:17 pm Iustin Pop

Update multi-reloc design doc with enhanced results

In order to increase the amount of information returned from the
IAllocator plugin, we enhance the return values from the node-evac and
change-group operations.

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

b6e88032 07/12/2011 06:23 pm Michael Hanselmann

gnt-cluster {command|copyfile}: Support per-group operations

This patch allows commands to be run on and files to be copied to all
nodes within a specific group.

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

05484a24 07/12/2011 06:23 pm Michael Hanselmann

cli.GetOnlineNodes: Support node group filter, use query2

This patc changes cli.GetOnlineNodes to use query2, which does the
filtering in the master daemon, and adds a new parameter to filter by
node group.

Unittests were added for the old implementation and then adopted to...

172679c9 07/12/2011 06:23 pm Michael Hanselmann

Remove references to multi-relocate from iallocator doc

For some reason these were still in tere.

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

7fc548e9 07/12/2011 06:22 pm Michael Hanselmann

ht.WithDesc: Work around pylint warning

Explicitely defining “__call__” silences a pylint warning when wrapped
type check functions are used directly. I had no idea pylint is this
intelligent.

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

b795a775 07/11/2011 05:53 pm Michael Hanselmann

Merge branch 'devel-2.4'

  • devel-2.4:
    ht: Add new check for numbers
    Fix off-by-one bug in job serial generation
    Shorten some unbreakable lines in man pages
    Correct some spelling mistakes
    Fix bug in recreate-disks for DRBD instances
    Fix a lint warning...
697f49d5 07/11/2011 05:28 pm Michael Hanselmann

ht: Add new check for numbers

Places which receive floats can usually also deal with integers, e.g.
OpTestDelay. Tests are added and the new check function is used for the
aforementioned opcode and verifying query results.

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

3c88bf36 07/11/2011 05:28 pm Michael Hanselmann

Fix off-by-one bug in job serial generation

Commit 009e73d0 (September 2009) changed the job queue to generate
multiple job serials at once. Ever since it would return one more than
requested.

The “serial” file in the job queue directory is defined to contain the...

7238edb5 07/11/2011 05:16 pm Iustin Pop

Reverts the patch series about console wrappers

This reverts commits 030a9cb8022b83bf43ec14dfbafd943299bc01c4 and
ae082df0000a785b693b2f4aa434650a81a94bdf.

There are two problems:

- Makefile.am breakage, which is trivial to revert
- unittest breakage, which honestly I'm not sure how to fix and how...

323f9095 07/08/2011 03:15 pm Stephen Shirley

Add gnt-instance start --pause

Creates the instance, but pauses execution before booting. This combined
with 'gnt-instance console' unpausing instances means that the entire
boot process can be viewed and monitored.

Signed-off-by: Stephen Shirley <>...

ae082df0 07/08/2011 03:15 pm Stephen Shirley

Adding a wrapper around connecting to kvm console

The wrapper will connect to the console, and check in the background if
the instance is paused, unpausing it as necessary.

Signed-off-by: Stephen Shirley <>
Reviewed-by: Michael Hanselmann <>

030a9cb8 07/08/2011 03:15 pm Stephen Shirley

Adding a wrapper around "xm console"

The wrapper will connect to the console, and check in the background if
the instance is paused, unpausing it as necessary.

Signed-off-by: Stephen Shirley <>
Reviewed-by: Michael Hanselmann <>

a5566394 07/06/2011 05:37 pm Michael Hanselmann

Fix lint error

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

b4fcee5b 07/06/2011 12:31 am Michael Hanselmann

RAPI: Document all feature strings

- Use constants and an assertion
- Update documentation for node migration

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

21d70642 07/06/2011 12:31 am Michael Hanselmann

Remove old node evacuation opcode

LUNodeEvacStrategy has been replaced with LUNodeEvacuate.

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

de40437a 07/06/2011 12:31 am Michael Hanselmann

Change RAPI for new node evacuation opcode

The change is not backwards compatible, see the updated NEWS file.

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

aafee533 07/06/2011 12:31 am Michael Hanselmann

Change “gnt-node evacuate” to use new opcode

By default it'll now evacuate all instances from the node, not
just secondaries.

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

e1f23243 07/06/2011 12:31 am Michael Hanselmann

Add new opcode to evacuate node

This new opcode will replace LUNodeEvacStrategy, which used to return a
list of instances and new secondary nodes. With the new opcode the
iallocator (if available) is tasked to generate the necessary operations
in the form of opcodes. This moves some logic from the client to the...

029fe503 07/05/2011 08:24 pm Guido Trotter

Alias gnt-job show to gnt-job info

Am I the only one to make that mistake 10 times a week?

Signed-off-by: Guido Trotter <>
Reviewed-by: Iustin Pop <>

7034694d 07/01/2011 06:06 pm Iustin Pop

One Haskell and integer sizes fix

Haskell has two main integer types:

- Int, which is a native-type, and is guaranteed to have at least
[-2²⁹, 2²⁹-1] range; on 64-bit platforms, it has much higher range
- Integer, which is a software type (implemented using libgmp), and...

d748d9a7 07/01/2011 05:43 pm Iustin Pop

Fix cluster verify for empty node groups

There were some implicit assertions in the code that all node groups
have nodes, which is not necessarily true.

Additionally, the patch does a wrapping change.

Signed-off-by: Iustin Pop <>
Reviewed-by: René Nussbaumer <>

1e98bac2 07/01/2011 05:20 pm Iustin Pop

Fix a typo and punctuation in iallocator.rst

Beside the 'dscription' typo, also make the punctuation more
consistent.

Signed-off-by: Iustin Pop <>
Reviewed-by: Guido Trotter <>

56a1d5cc 07/01/2011 05:17 pm Iustin Pop

Shorten some unbreakable lines in man pages

In order to make the display right on 80-columns terminals.

Signed-off-by: Iustin Pop <>
Reviewed-by: Guido Trotter <>

f7b769b1 07/01/2011 05:17 pm Iustin Pop

Correct some spelling mistakes

New lintian is even smarter:

- overriden → overridden
- allows to → allows one to

Signed-off-by: Iustin Pop <>
Reviewed-by: Guido Trotter <>

e5f6768c 06/28/2011 07:35 pm Iustin Pop

Fix htools, QuickCheck library detection and tests

Just saw this while testing the migration to QuickCheck v2: while
configure.ac detects that QuickCheck-2.x is not available, the test in
Makefile.am was against WANT_HTOOLS (overall htools compilation), not...

752635d3 06/28/2011 06:37 pm Iustin Pop

htools: fix prop_Node_rMem corner case

This patch fixes a bug in the test specification where we allowed nodes
with zero free memory (hence no instance can be added, at all) and adds
a simple labeling of the way this test can fail.

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

309e7c9a 06/28/2011 06:37 pm Iustin Pop

htools: fix corner case in prop_Text_Load_Instance

This unittest had a corner case where it could fail if the same
primary/secondary node names were generated.

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

509809db 06/28/2011 06:37 pm Iustin Pop

htools: allow unittest to be replayed

This just adds glue to allow replaying of tests using a given RNG state
and test size (both are needed for exact replayability).

Signed-off-by: Iustin Pop <>
Reviewed-by: Guido Trotter <>

a1cd7c1e 06/28/2011 06:37 pm Iustin Pop

htools: improve more unittests

Using new functionality in QuickCheck 2 (the suchThat function), we
generate now better test cases, such that (heh) we have no longer
incomplete tests.

Signed-off-by: Iustin Pop <>
Reviewed-by: Guido Trotter <>

00c75986 06/28/2011 06:37 pm Iustin Pop

htools: more fixes to unsatisfiable tests

Currently the way we generate nodes in some cases is by creating a
totally random node, then restricting the test based on whether the node
'size' (as defined by multiples of base unit) satifies some high/low
rules. This results in hard-to-satisfy conditions, so we change this...

41085bd3 06/28/2011 06:37 pm Iustin Pop

htools: Rework some unittests

The new scaffolding which replaced the batch driver of QuickCheck 1 now
shows how many passes we have for incomplete tests. Some tests show very
low pass counts, so we rework them to have more actually valid test
cases.

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

8e4f6d56 06/28/2011 06:37 pm Iustin Pop

htools: Switch to QuickCheck 2.x

Since current distros don't package anymore QuickCheck 1.x, let's move
to 2.x.

This requires also a few changes to the code:

- Test.QuickCheck.Batch doesn't exist anymore, so we need to write some
scaffolding code to replace it...