- 15 Oct, 2012 1 commit
-
-
Iustin Pop authored
Before we reorganised the source tree, the 'Result' type was exported from HTools/Types.hs. This changed during the reorg, but at that time we didn't change the exports; instead, we kept re-exporting it from the old module for compatibility. In light of future changes to the Result type, let's stop this re-export and cleanup the imports of the other modules. One test is slightly rewritten with explicit types declaration (part of the values already needed one, let's make it explicit). Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Michael Hanselmann <hansmi@google.com>
-
- 10 Oct, 2012 1 commit
-
-
Dato Simó authored
Signed-off-by:
Dato Simó <dato@google.com> Reviewed-by:
Iustin Pop <iustin@google.com>
-
- 08 Oct, 2012 2 commits
-
-
Iustin Pop authored
This defines the arguments supported and then modifies the --help-completion output to include them too. Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Michael Hanselmann <hansmi@google.com>
-
Iustin Pop authored
This is, I believe, the last non-htools specific file that still lived in the htools directory; it's already widely used in non-htools code, so let's move it before we add more functionality to this module. All changes are related to the name change, imports fixup, etc.; there are no other changes in this patch. Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Michael Hanselmann <hansmi@google.com>
-
- 26 Sep, 2012 1 commit
-
-
Iustin Pop authored
Currently, we test and require that each individual program (hbal, etc.) defines/supports the generic options (currently --help and --version). Even with the test, this is not optimal, since it requires changes in many places whenever we modify the list of generic options, hence we move these out of the individual programs and into the generic CLI handling code. Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Agata Murawska <agatamurawska@google.com>
-
- 07 Sep, 2012 4 commits
-
-
Iustin Pop authored
This test has a few deficiencies, which this patch addresses: - using arbitrary 1 or 2 node count for allocation is obsolete, nowadays we need to use a number appropriate for the instance's disk template (and we should remove that parameter…) - generating a random node is sub-optimal, since we could generate an offline node, and no instance will fit on a cluster composed of only offline nodes - generating arbitrary instances "such that" they can be allocated is an expensive test; let's rather generate instances smaller than our template node, and add a check that they indeed can be allocated - using boolean return type, instead of nicely annotated properties For the nice annotation and the extra check, we need to change a helper function's signature, so that we can extract a bit more information out of it. Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Guido Trotter <ultrotter@google.com>
-
Iustin Pop authored
Currently, this test is very slow. Upon investigation, this is due to how `tieredAlloc' works: - tries to allocate one instance - if failed, shrink the instance by the "most failed" resource - restart In this algorithm, if the "most failed" resource is e.g. memory, and the maximum available memory is much smaller than the current template, it means we will have to shrink and try to allocate many many times until we finally get with the to-be-allocated instance memory size to a reasonable value. In the real world, this is not the case, but when testing with arbitrary memory/node values, it can be that we execute the shrink hundreds of thousands of times per test. So we "improve" the test by directly generating an instance just slightly bigger than the node, so that we don't have to shrink too many times. This requires a new export from test/…/Instance.hs. Additionally, we allow up to 5 instances to be tiered-allocated, and we cleanup the test checks, making the conditions much, much more readable (IMHO). Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Guido Trotter <ultrotter@google.com>
-
Iustin Pop authored
This test expands the "single-alloc-no-rebalance" by allocating a few instances on a small cluster, and ensuring that after we allocate all of them, either we can't rebalance or if we rebalance the score improvement is very small. The last condition is needed because sometime rounding errors (we're using double-precision floating point) can accumulate and result in what is a no real change in the cluster state, but with an infinitesimal score decrease (e.g. 1e-14). Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Guido Trotter <ultrotter@google.com>
-
Iustin Pop authored
Currently, this just checks that a cluster cannot be rebalanced after a single instance allocation. However, we can also test whether the allocation decision computed a correct new cluster score, by checking that against the one computed from the actual new node list. Also, for nicer display, we convert the test from a Boolean to a Property, with nice annotations. Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Guido Trotter <ultrotter@google.com>
-
- 05 Sep, 2012 7 commits
-
-
Iustin Pop authored
Commit 2cdaf225, “Re-enable standard hlint warnings”, got it almost right. The only problem is that (confusingly) the default set of hints is not in HLint.Default, but in HLint.HLint (it includes Default and some built-ins). After changing the lint file to correctly include the defaults, we had another 128 suggestions: - Error: Eta reduce (2) - Error: Redundant bracket (4) - Error: Redundant do (17) - Error: Redundant lambda (7) - Error: Redundant return (1) - Warning: Avoid lambda (2) - Warning: Redundant $ (42) - Warning: Redundant bracket (35) - Warning: Use : (1) - Warning: Use String (4) - Warning: Use camelCase (10) - Warning: Use section (3) which are fixed by the current patch. Note that the 10 "Use camelCase" were all due to hlint not “knowing” the idiom of ‘case_’ (it does for ‘prop_’), for which I filled http://code.google.com/p/ndmitchell/issues/detail?id=558 . Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
René Nussbaumer <rn@google.com>
-
Iustin Pop authored
While investigating how we could test the Daemon.hs module, I realised that we have a very, erm, sub-optimal situation: - HTools/CLI.hs has a nice IO/pure separation testing in cmdline parsing, which allows some basic functionality to be tested, but uses direct 'read' in many options, which fails at runtime when evaluating the argument, and not when parsing the options - Daemon.hs lacks that, but has a much nicer 'reqWithConversion' helper that can be used for nicer option parsing, and uses that + tryRead instead of plain 'read' Since this situation is very bad, let's clean it up. We introduce yet another module, Common.hs, that holds functionality common to all command line programs (daemons or not). We move the parsing to this module, and introduce a type class to handle option types which support --help/--version. This allows removal of duplicated code from CLI.hs and Daemon.hs. The other part of the patch is cleanup/rework of the tests for this code: we introduce some helpers (checkOpt, passFailOpt, checkEarlyExit) that can be used from the much-slimmer now tests for CLI and Daemon. In the common module, we just test the yes/no helper we have. Many new tests for boolean options and numeric options are added. A side change is the removal of the obsolete `--replay-count', `--test-size' options (unused since commit 95f6c931 , “Switch Haskell test harness to test-framework”). Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
René Nussbaumer <rn@google.com>
-
Iustin Pop authored
This is symmetric to failTest, and allows us to use it in cases where we need to return a property. While replacing 'property True' with it, I saw a case where we can simplify the use and thus reworked that check. Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
René Nussbaumer <rn@google.com>
-
Iustin Pop authored
There are a few more that could be replaces, once we start using appropriate (new)types. Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
René Nussbaumer <rn@google.com>
-
Iustin Pop authored
While adding yet another JSON serialisation test, I realised that this can be trivially abstracted; hence this patch, replacing both simple versions (readJSON . showJSON == id) and the standard version (with different error messages) across the tests with a single function call. Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
René Nussbaumer <rn@google.com>
-
Iustin Pop authored
The names were not in a proper hierarchy, leading to inconsistencies about what they were actually tested. We change this by reproducing in the test names the relative hierarchy within the Ganeti directory, leading to nicer test suite names (in test-framework output). Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
René Nussbaumer <rn@google.com>
-
Iustin Pop authored
Since we now have separate namespaces due to the multi-file split, we don't need to keep the name of the module in the property names, as we don't have so many potential conflicts anymore. We remove the group prefix handling from TestHelper and simply do a sed over all the test files, removing it from the function names. Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
René Nussbaumer <rn@google.com>
-
- 04 Sep, 2012 2 commits
-
-
Iustin Pop authored
These two files are not htools-specific, so let's move them out of the HTools subdirectory/module hierarchy and directly under Ganeti. Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
René Nussbaumer <rn@google.com>
-
Iustin Pop authored
Except for Ganeti.HTools.JSON, which needs rename, we split all the other test suites into separate files. We have to add another common test helper, due to import dependencies (sigh), but otherwise this split is pretty straightforward. Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
René Nussbaumer <rn@google.com>
-