Statistics
| Branch: | Tag: | Revision:

root / htools / Ganeti / HTools / QC.hs @ 05ac718f

History | View | Annotate | Download (84.9 kB)

# Date Author Comment
05ac718f 09/04/2012 01:59 pm Iustin Pop

Parameterize the Filter type

In preparation for introducing filtering functionality, we convert the
'Filter' type from a '*' kind to a '* -> *' kind.

This allows us to define some general properties for the filter, and
for example introduce later an easy filter compilation, etc....

72295708 09/03/2012 04:52 pm Iustin Pop

Add missing luxi query 'QueryFields'

This was missed; we add the definition and the de-serialisation
support.

Signed-off-by: Iustin Pop <>
Reviewed-by: Agata Murawska <>

adb77e3a 09/03/2012 03:13 pm Iustin Pop

Add a fillDict function

This is similar to the Python version, objects.py:FillDict.

Signed-off-by: Iustin Pop <>
Reviewed-by: Agata Murawska <>

14fec9a8 09/03/2012 03:13 pm Iustin Pop

Fix qualified import of Data.Map in QC.hs

As opposed to all other places in the code, we imported this as
Data.Map, leaving to longer names. Let's make it similar to the rest
of the code (import qualified Data.Map as Map).

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

998b6f8b 08/28/2012 06:32 pm Iustin Pop

Add two confd library tests

These test that we encode requests correctly and decode good messages,
that a message with a too old/new timestamp is never accepted, and
that a message signed with a different key is never accepted.

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

62377cf5 08/28/2012 06:16 pm Iustin Pop

Reduce some more code duplication and split code

The Qlang module defines ResultStatus, but it was already defined in
Ganeti/Luxi.hs; let's remove the duplicate definition from there since
the proper place is in the newer module.

Also, in order to ease testing, we split some confd functions into a...

0384c457 08/28/2012 06:04 pm Iustin Pop

Add test for checking Haskell/Python opcode equivalence

This is a very big hack for testing the equivalence of Python and
Haskell opcode definitions. See the docstring for details; I'm not
very happy with the solution but it does the job.

An alternate option would be to launch the Python code when...

4a1dc2bf 08/28/2012 06:04 pm Iustin Pop

Create a custom type for disk indices

While (again) trying to test Python/Haskell encoding interoperability,
I found another bug: the disk index is declared in Python as
ht.TPositiveInt, but in Haskell just as Int, so it can take negative
values too. Clearly we can do better, so let's add a wrapper type that...

9990c068 08/28/2012 06:04 pm Iustin Pop

Add test case for OpCode list equivalence

For now, we only test that we don't define extra opcodes in the
Haskell code; once we have parity, we can enable the (for now)
commented-out lines that check the reverse.

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

60f7f6a4 08/28/2012 06:04 pm Iustin Pop

Add infrastructure for reading Python command output

This will be used in the future to make tests/assertions for
Python/Haskell codebase equivalence (e.g. checking that the same
opcodes are defined, etc.).

(Side-note: this might not work in VPATH builds; I'll see how it goes)...

2c4eb054 08/28/2012 06:04 pm Iustin Pop

Rename tests for nicer names in test output

With the change to test-framework, where individual tests are listed,
QCHelper tries to remove a "prop_$group_" prefix from the function
names, for shorter names. However, some test groups (LUXI) and test
functions are not uniform, leading to long names, so we should fix...

a03b2e1c 08/28/2012 06:03 pm Iustin Pop

Simplify the Luxi client-server test

Since now we have the recvMsgExt, we can remove the handleEOF
function.

Signed-off-by: Iustin Pop <>
Reviewed-by: Agata Murawska <>

a23643ee 08/28/2012 06:03 pm Iustin Pop

Fix bug in the Luxi client-server test

We didn't close the server correctly, so for test sizes bigger than
the max-open-files ulimit, the tests were failing in accept().

Signed-off-by: Iustin Pop <>
Reviewed-by: Agata Murawska <>

a583ec5d 08/28/2012 06:03 pm Iustin Pop

OpCodes: build and export a list of all opcodes

This can be used for cross-checking with the Python code for
consistency on defined opcodes.

Signed-off-by: Iustin Pop <>
Reviewed-by: Agata Murawska <>

f2374060 08/28/2012 06:02 pm Iustin Pop

Enable tags query over the query socket

This patch adds the tags field to the objects which were missing it
(all except Cluster), implements handling the LuxiCall QueryTags, and
then enables the use of the query socket in cli.ListTags, used by all
commands, and in the RAPI client....

be747966 08/28/2012 06:01 pm Iustin Pop

Change the Luxi tags kind from String to a custom type

This will allow safer code when we implement the tags query.

Signed-off-by: Iustin Pop <>
Reviewed-by: Agata Murawska <>

8a9ee1e9 08/28/2012 06:00 pm Iustin Pop

Remove obsolete QrViaLuxi type

The actual query definitions are now in Qlang.hs, so let's use the
ItemType from there instead of luxi-defined type (which is also
incomplete).

Signed-off-by: Iustin Pop <>
Reviewed-by: Agata Murawska <>

dc6a0f82 08/28/2012 06:00 pm Iustin Pop

Rename Query2.hs to Qlang.hs

While starting to use the new filter types, I realised that what is
currently implemented is the equivalent of `lib/qlang.py', not
`lib/query.py', since we only deal with data types for now and not the
actual query runtime functionality (RPC, config, etc.)....

9a94c848 08/28/2012 06:00 pm Iustin Pop

Switch Luxi Query operation to use a proper filter

Until now, since we didn't have a proper type for the encoded query
filters, we were ignoring the filters and handled them as null values
(JSNull and respectively ()). With the current Query2 implementation,...

e8a25d62 08/28/2012 06:00 pm Iustin Pop

Implement Query2 filter JSON (de)serialisation

This adds support for encoding/decoding Query2 filters to/from JSON,
in (hopefully) the same format as the Python code generates.

It also adds a simple unit-test to check that this conversion is
idempotent. Of note here is that, since the Filter data type is...

2cdaf225 08/28/2012 05:59 pm Iustin Pop

Re-enable standard hlint warnings

Commit 5a1e31b4 (Add infrastructure for, and two extra hlint rules)
was intended to add two extra hlint rules, but I didn't realise at
that time that "--hint" when first used overrides the built-in
lints. As such, since then we were basically running with just those...

7514fe92 08/28/2012 05:59 pm Iustin Pop

Add Objects definitions for the ispec/ipolicy types

Note that since we don't have yet a way to nicely handle two-level
optional parameters, the Filled/Partial types and filling function are
all manually built.

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

a957e150 08/28/2012 05:59 pm Iustin Pop

Improve Objects.hs definitions

This adds a few missing/incomplete definitions. We're still missing
the special parameters (disk params, hvparams, os_hvp).

Signed-off-by: Iustin Pop <>
Reviewed-by: Agata Murawska <>

66f74cae 08/28/2012 12:56 pm Agata Murawska

Simple QC tests for RPC calls

Right now we're only able to test if when a node is offline, the call
fails with an appropriate errror.

Signed-off-by: Agata Murawska <>
Reviewed-by: Iustin Pop <>

d4709cce 08/28/2012 12:56 pm Agata Murawska

Datatypes for haskell RPC calls

We introduce typeclasses for RPC call and result and create a typeclass
that binds the two together. For that we need to use
MultiParamTypeClasses and FunctionalDependencies language pragmas, which
allow us to ensure that RPC result type can be deduced based on the...

13f2321c 08/13/2012 06:58 pm Iustin Pop

Add a server-side Luxi implementation

This is a trivial code change, but it allows us to finally test the
send-receive code on both client and server sides via a simple
in-process server.

The unittest works, but it won't handle timeouts very nicely; it will...

7803e37c 07/19/2012 03:51 pm Iustin Pop

Merge branch 'stable-2.6'

  • stable-2.6: (21 commits)
    Release Ganeti 2.6.0 rc4
    Prepare NEWS for Ganeti 2.6.0rc4
    Add some rudimentary node group ipolicy checks
    Fix setting ipolicy on node groups
    Fix --no-headers for the new list-drbd command
    Add a simple QA test for gnt-node list-drbd...
2fc5653f 07/19/2012 11:00 am Iustin Pop

Reorganise the lookup functions

Currently, the LookupResult, MatchPriority and related functions are
locate in Loader.hs, since (so far) only hbal needs them in the
selection of instances. However, with the new functionality on confd
side, we need these functions there too, but we don't want to import...

112aee5f 07/13/2012 06:00 pm Iustin Pop

Merge branch 'stable-2.6'

  • stable-2.6: (72 commits)
    Make Ganeti 2.6.0 rc3 release
    Allow reinstall even when secondaries are offline
    Prepare NEWS file for Ganeti 2.6.0 rc3
    QA updated to test instance removing when sec. is offline
    Ignore offline node errors when removing disks...
96eccc1f 07/06/2012 04:16 pm Iustin Pop

Fix Haskell coverage results

There are two current issues with the coverage values:

- we don't import all modules, thus leading to incomplete
coverage results (too optimistic);
- we use hpc in its default mode (intersection), which means that even
modules which do have coverage results but are not used in all...

fce98abd 07/06/2012 04:16 pm Iustin Pop

Cleanup the QC.hs file w.r.t. compiler options

Currently, we build the Haskell unittests with custom GHC flags,
because we (I) were quite lazy when initially writing the
unittests. This is not a problem for the tests themselves, but it
creates problem when (for example) one would want to pass all...

232fc505 06/19/2012 11:39 am Iustin Pop

Fix corner case in quick-check generated tests

Thanks to Agata Murawska, a random seed that generates bad test cases
was found ("seed was 1768143307 2118231514, test size 74"). This is
due to the fact that some nodes were generated with tMem=0, fMem=0,
which means that pMem was NaN and thus the node was not comparing...

c5b4a186 06/08/2012 02:02 pm Iustin Pop

Fix prefix bug in Haskell ssconf implementation

This patch fixes a (brown-bag) bug in the ssconf implementation where
the looked-for filenames were not prefixed with the ssconf file
prefix.

Additionally, a test for this is added (which fails without the fix)....

cdd495ae 05/08/2012 01:37 pm Iustin Pop

Add decoding of Luxi calls and unittests for LuxiOp

This patch adds a hand-coded decoder for LuxiCall arguments, as the
data-structure is not uniform enough for automated generation (even
for the serialisation, we had to add hints for some fields,
de-serialisation is even harder)....

5cefb2b2 05/08/2012 01:37 pm Iustin Pop

Some unit tests improvements

In preparation for unit-testing the Luxi definitions, this improves
the auto-generation of OpCodes: currently this uses unbounded plain
Strings for names and fields, and this creates too big test sizes
(e.g. when automatically generating job sets)....

3ad57194 05/08/2012 01:37 pm Iustin Pop

Add a new JSON function

And its associated unittests.

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

ec629280 03/15/2012 04:25 pm René Nussbaumer

htools: Reflect the rename of spindle_usage to spindle_use

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

fafd0773 03/15/2012 04:05 pm Iustin Pop

Add a helper function for mirrorType computations

We most always use `templateMirrorType . diskTemplate`, so let's add a
helper function for this.

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

64946775 03/15/2012 04:05 pm Iustin Pop

Enable all disk templates in unit-tests

After the many patches implementing the shared storage functionality
in iallocator, balances, etc., and after the patches preparing the
unit-tests to do the right thing for shared storage, we can finally
flip the bits that make instances have "random" disk templates as...

53bddadd 03/15/2012 04:04 pm Iustin Pop

Fix Node_addPriFD test for arbitrary disk templates

Currently, this test assumes localStorageTemplates, so let's make sure
we enforce that on the given instance

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

d953a965 03/15/2012 03:53 pm René Nussbaumer

htools: Add the new ipolicy field

Also add the spindle usage to QC

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

52cc1370 03/15/2012 12:29 pm René Nussbaumer

htools: Adapt the Text backend to spindle usage

The old text files remain compatible with this change.

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

981bb5cf 03/15/2012 12:29 pm René Nussbaumer

htools: Adding spindle usage to Instance

For now we just pass in "1" as spindle usage and adapt the backend
later.

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

1cdcf8f3 03/15/2012 12:24 pm Iustin Pop

Rework unit parsing

Due to how conversions were implemented previously, 1TB failed to
parse on 32-bit, as we were overflowing during computation, even
though the final result would fit easily.

This patch moves the parsing of the scaling factor to a separate...

7018af9c 03/07/2012 11:35 pm Iustin Pop

Fix relocation test ClusterAllocRelocate

As for the evacuate tests, we require a mirrored disk template, but
otherwise the test should work for both mirror types.

Additionally, we perform a simplification that was left as TODO.

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

ac1c0a07 03/07/2012 11:31 pm Iustin Pop

Fix up Cluster nodeEvac unittests for shared storage

Currently, these presume that the instance being generated always is
DRBD/relocatable (but won't be in the future), and also presume that
all relocation modes can be used (hint: not ☺).

So we add a couple of helper functions to restrict the used disk...

c6e8fb9c 03/07/2012 11:24 pm Iustin Pop

Fix a few tests that hard-coded the number of nodes

Instead of randomly generating the number of required nodes or
hard-coding it, compute it from the disk template of the
instance. Otherwise tests will fail when the disk template is not
DRBD8 and we ask for allocation on 2 nodes....

90669369 03/07/2012 11:18 pm Iustin Pop

Fix test Node_addSec_idempotent

Another test that only works for DRBD8 instances.

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

e7b4d0e1 03/07/2012 11:17 pm Iustin Pop

Fix the Node_rMem test to specify DRBD8 templates

… since memory reservation only is used for this template.

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

c6b7e804 03/07/2012 11:17 pm Iustin Pop

Split the Node_addOffline test into pri/sec

Currently, this (single) test checks whether we can add an instance as
primary and secondary to a given node. This won't work for instance
templates other than DRBD8, so we split it into:

- an add to primary test, which should work for all disk templates...

a7667ba6 03/07/2012 11:04 pm Iustin Pop

Do not rely on no-secondary for movable tests

Currently, the code in Loader.hs marks as un-movable any instances
which don't have a secondary. This is not valid for any shared storage
templates, so let's remove that check completely. The initial state of...

5c52dae6 02/29/2012 04:19 pm Iustin Pop

Fixup a Node unittest

This fixes the prop_Node_rMem test, which cares about memory only;
otherwise we could fail due to other problems (e.g. not enough disk).

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

eae69eee 02/29/2012 04:18 pm Iustin Pop

Add two more unittests for Node add/remove

These just test that add/remove are idempotent. This is not perfect,
as we use unsorted lists for some values (instead of sets), so when
using non-empty nodes this would break (but for empty nodes, a
1-element list is sorted, so it's fine)....

7959cbb9 02/29/2012 04:17 pm Iustin Pop

Shorten some function names

Since we use the functions always module-qualified, let's drop the
`instance` prefix and use a shorter one.

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

8bc34c7b 02/29/2012 04:16 pm Iustin Pop

htools: add spindle-related attribute to nodes

This adds the spindleCount, hiSpindles and instSpindles attributes.

The spindleCount is equivalent to spindle_count on the ganeti side (a
node parameter). hiSpindles is the maximum instance-used spindles, and...

c22d4dd4 02/29/2012 04:15 pm Iustin Pop

Add spindle ratio to htool's IPolicy

Just the usual data/type declarations, read/save in the text backend,
etc. Also does a bit of unit-test cleanup (the way we build
ipolicies).

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

3c1e4af0 01/26/2012 08:45 pm Iustin Pop

Fix integer overflow in Node unittest

When using a really random "extra cpus" variable, this can overflow
(especially on 32 bit) and thus the final value can be < 0, thus the
test will fail to fail.

It doesn't make sense to test with huge values, so let's just generate...

e8fa4ff6 01/26/2012 03:34 pm Iustin Pop

Add vcpu_ratio definition to the IPolicy type

This will be "naturally" read in the JSON-based backends (Luxi/Rapi),
and we add explicit code for handling it in the Text backend.

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

487e1962 01/26/2012 03:34 pm Iustin Pop

Remove Node.mCpu, replaced with the ipol vcpu_ratio

Since the iPolicy contains the vcpu_ratio now, we can remove the
per-node mCpu value (which was the initial way to set this attribute).

Furthermore, we need to re-set the hiCpu value when changing the
policy....

37483aa5 01/26/2012 03:34 pm Iustin Pop

Expand the tiered alloc unittest to check allocation stats

This was missing before, so with the new metric (NCpus), it's a good
time to test this.

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

468b828e 01/16/2012 02:50 pm Iustin Pop

Another small optimisation in test data generation

It seems that QuickCheck will happily generate huge data structures,
if that's what one requests. For this test, where we ask for [[Char]],
it could happen that we get a huge number of chars, so let's limit...

15e3d31c 01/16/2012 02:50 pm Iustin Pop

Generate tags using the helper in Node tests

Otherwise we test very big lists (slow) without any advantage in doing
so.

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

45c4d54d 01/16/2012 02:50 pm Iustin Pop

Combine two Node unittests

These two tests are very similar, so let's run them together instead
of generating the data twice. Also improve the test a bit.

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

a292b4e0 01/16/2012 02:49 pm Iustin Pop

Add unit-tests for --help/--version as common options

After reorganizing the way we process options, we can finally add a
test that all program personalities accept --help and --version and
that they exit early for these two.

This trivial patch has a higher than expected impact on the coverage,...

89298c04 01/16/2012 02:49 pm Iustin Pop

Add some very basic options test

Just tests that passing a string argument returns it correctly. We're
not interested in the flags themselves that much just that the
function itself parses some options at least correctly.

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

a7ea861a 01/16/2012 02:49 pm Iustin Pop

Add test for CLI.parseYesNo

Also fix a tiny typo in the docstring.

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

8b5a517a 01/16/2012 02:49 pm Iustin Pop

Fix bug in CLI.parseISpecString and add test

'zip' finishes on the shortest list, so parseISpecString accepted any
string of 3 values or more, which is not good. Fix this and add test
for both successful and failed parsing.

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

e1dde6ad 01/16/2012 02:49 pm Iustin Pop

Add a unittest for the 'Simu' backend

This only test successful parsing, but for this case it tests
reasonably well the resulting cluster properties, I think (coverage
is >70% for expressions).

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

59ed268d 01/16/2012 02:49 pm Iustin Pop

Further optimise instance test data generation

Following on the lessons from this week (commit 7806125e), this patch
replaces generation of instances `suchThat` they are smaller than on
node with direct generation of instances with upper bounds on
memory/disk/cpu....

7806125e 01/13/2012 04:58 pm Iustin Pop

Fix very slow unit-test data generation in some cases

Learning, learning. It turns out that for objects with even just five
fields, generating them and filtering can be costly, especially when
the filtering is nested (as it was in this case, arbitrary1 →...

746b7aa6 01/13/2012 04:58 pm Iustin Pop

Fix one bad unit-test data generation case

It could happen that the node is generated with 0 disk available, in
which case the operation will fail due to disk issues, not CPU. Fix
this by using the recently-introduced genOnlineNode helper.

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

aa1d552d 01/13/2012 03:24 pm Iustin Pop

Further JSON unit-tests for various Types.hs types

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

96bc2003 01/13/2012 03:24 pm Iustin Pop

Add a unit-test helper function

… instead of always using "printTestCase … False".

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

6a855aaa 01/13/2012 03:24 pm Iustin Pop

Extend node evacuation unittests

Currently they only check for change secondary, via iallocator's
relocate method. We add two separate unittests that checks all the
node evacuate modes (ChangeAll, ChangePrimary) and also the group
change request. All of these are done only for DRBD instances....

a2a0bcd8 01/13/2012 03:24 pm Iustin Pop

Fix a few issues in unittest data generation

This patch fixes two ugly but non-critical issues:

- the getFQDN wrongly generated only the first component as
limited-length name, the rest could be any length, and that makes
the generated name bad for display purposes...

3074ccaf 01/13/2012 03:24 pm Iustin Pop

Fix another data generation issue in tests

Another "good" seed value manages to generate nodes with identical
names, which of course makes the sets be of smaller value than the
lists. Avoid this issue by generating unique node names.

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

d6f9f5bd 01/13/2012 03:24 pm Iustin Pop

Add a help function for generating test nodes

This abstracts the concept of "give an sane, online node" in a single
place, rather than spread around the tests. We also change the
signature for isNodeBig for easier usage.

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

e73c5fe2 01/13/2012 03:24 pm Iustin Pop

Generate clusters with unique node names in tests

Nothing breaks otherwise in the cluster routines, but serialisation
to/from text gets confused otherwise.

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

dce9bbb3 01/13/2012 03:24 pm Iustin Pop

Add a complex allocation/serialisation/load test

This is unfortunately a complex test that checks if:

- starting from a empty cluster
- allocating a few instances on it
- serialising it via the Text backend
- loading it back into internal data structures...

b37f4a76 01/13/2012 03:24 pm Iustin Pop

Implement saving/restoring of policies in Text backend

This adds a new optional (so we're backwards-compat) section to the
cluster data so that we can reliably save/restore the policy data.

Note that different from the other sections, we save all policies...

bcd17bf0 01/13/2012 03:24 pm Iustin Pop

Further unittests for ipolicy/ispec text serialisation

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

00b70680 01/13/2012 03:17 pm Iustin Pop

Unittests for the instance policy checks on allocation

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

d6eec019 01/13/2012 03:17 pm Iustin Pop

Set group policy on nodes

In order to be able to use the group policy during allocation, we have
a few choices:

- pass the group policy as a separate argument to all involved
functions, or
- add the policy as an attribute to nodes, or
- add the group (not only the group index) as an attribute to nodes...

6cff91f5 01/13/2012 03:17 pm Iustin Pop

Add ipolicy attribute to group objects

This is straightforward; as before, so far the text and simu backends
have no way to use a non-default ipolicy.

Furthermore, we do some unit-test preparation for future changes
(these seem a no-op for now, but they are needed for later patches)....

71375ef7 01/13/2012 03:16 pm Iustin Pop

Extend ClusterData with the cluster instance policy

This attribute is always initialised to the default, and is not (yet)
read/saved in the various backends.

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

b69be409 01/13/2012 03:16 pm Iustin Pop

Stop exporting JSON functionality from Utils.hs

This completes the Utils/JSON split started in commit f047f90f. The
import graph should be cleaner now.

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

f3f76ccc 01/13/2012 03:16 pm Iustin Pop

More reshuffling of code

Following the split Types/BasicTypes, we can remove the last
JSON-related stuff from Utils.hs, and do some more cleanup.

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

ba1260ba 12/08/2011 12:03 pm Iustin Pop

Some small test simplifications

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

3603605a 12/08/2011 10:00 am Iustin Pop

Cleanup hlint errors

First, we update the recommended hlint version to what I used to get a
clean output (1.8.15). Most of the changes are:

- remove unneeded parentheses
- some simplifications (intercalate " " → unwords, maybe … id →
fromMaybe, etc.)
- removal of some duplicate code (in previous patches)...

b99d1638 11/17/2011 03:49 pm Iustin Pop

Fix unittest bug related to offline instances

Currently, the code in Node.hs is overly strict: once a node's free
memory reaches 0, it will refuse to add any instances (offline or
not). I think this is a safe safeguard (I don't expect nodes to run
without at least 1MB of free memory), so rather than change this...

d5dfae0a 11/17/2011 03:49 pm Iustin Pop

htools: re-indent QC.hs

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

e1bf27bb 11/16/2011 03:16 pm Agata Murawska

htools: Nicer arbitrary instantiation

Signed-off-by: Agata Murawska <>
Reviewed-by: Iustin Pop <>

61bbbed7 11/16/2011 03:16 pm Agata Murawska

htools: change behaviour for offline instances

Signed-off-by: Agata Murawska <>
Reviewed-by: Iustin Pop <>

8a8ed513 11/16/2011 03:16 pm Agata Murawska

htools: remove 'running' from instance options

Signed-off-by: Agata Murawska <>
Reviewed-by: Iustin Pop <>

7dd14211 11/16/2011 03:15 pm Agata Murawska

htools: change runSt type to InstanceStatus

Signed-off-by: Agata Murawska <>
Reviewed-by: Iustin Pop <>

5f828ce4 10/26/2011 05:35 pm Agata Murawska

Generalize the generation of ADT from raw types

Signed-off-by: Agata Murawska <>
Reviewed-by: Iustin Pop <>

72bb6b4e 10/03/2011 12:17 pm Iustin Pop

A few minor test improvements

This patch adds a few niceties to the test suite:

- allows matching test groups case insensitive and emit warnings when
we give test group names that don't match anything
- add a new operator that is similar to assertEqual in Python: it...

23fe06c2 10/03/2011 12:17 pm Iustin Pop

Use TemplateHaskell to decorate tests with names

This makes error message change from "Test 4 failed …" to "Test
prop_Loader_mergeData failed", which is much more readable. It also
removes the duplication of test suite names in the test.hs file.

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

2c9336a4 10/03/2011 12:17 pm Iustin Pop

Rename some helper functions for consistency

This changes the names for some helper functions so that future
patches are touching less unrelated code. The change replaces
shortened prefixes with the full type name.

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

129734d3 09/29/2011 10:14 am Iustin Pop

Change type of Cluster.AllocSolution

Originally, this data type was used both by instance allocation (1
result), and by instance relocation (many results, one per
instance). As such, the field 'asSolutions' was a list, and the
various code paths checked whether the length of the list matches the...