On Fri, Jun 26, 2015 at 10:38 PM, 'Lisa Velden' via ganeti-devel <
[email protected]> wrote:

> Test if OpPrereqError is raised only for redacted values.
>
> Signed-off-by: Lisa Velden <[email protected]>
> ---
>  test/py/ganeti.mcpu_unittest.py | 33 +++++++++++++++++++++++++++++++++
>  1 file changed, 33 insertions(+)
>
> diff --git a/test/py/ganeti.mcpu_unittest.py b/test/py/
> ganeti.mcpu_unittest.py
> index 18fabd8..15a2505 100755
> --- a/test/py/ganeti.mcpu_unittest.py
> +++ b/test/py/ganeti.mcpu_unittest.py
> @@ -35,10 +35,12 @@ import unittest
>  import itertools
>
>  from ganeti import compat
> +from ganeti import errors
>  from ganeti import mcpu
>  from ganeti import opcodes
>  from ganeti import cmdlib
>  from ganeti import locking
> +from ganeti import serializer
>  from ganeti import constants
>  from ganeti.constants import \
>      LOCK_ATTEMPTS_TIMEOUT, \
> @@ -176,5 +178,36 @@ class TestProcessResult(unittest.TestCase):
>      self.assertEqual(op2.debug_level, 3)
>
>
> +class TestSecretParams(unittest.TestCase):
> +  def testSecretParamsCheckNoError(self):
> +    src = opcodes.OpTestDummy()
>

This test could be improved a lot if you were to additionally test with an
opcode with secret parameters which are not redacted.


> +
> +    try:
> +      mcpu._CheckSecretParameters(src)
> +    except errors.OpPrereqError:
> +      self.fail("OpPrereqError raised unexpectedly in
> _CheckSecretParameters")
> +
>

As an error is going to be reported whenever an exception is raised and the
test is small enough that you can pinpoint the error easily, you do not
have to feel obliged to have scaffolding like this.
Now that it is here, it can stay in place.



> +  def testSecretParamsCheckWithError(self):
> +    op = opcodes.OpInstanceCreate(
> +      instance_name="plain.example.com",
> +      pnode="master.example.com",
> +      disk_template=constants.DT_PLAIN,
> +      mode=constants.INSTANCE_CREATE,
> +      nics=[{}],
> +      disks=[{
> +        constants.IDISK_SIZE: 1024
> +      }],
> +      osparams_secret= serializer.PrivateDict({"foo":"bar",
> +
> "secret_param":"<redacted>"}),
> +      os_type="debian-image")
> +
> +    try:
> +      mcpu._CheckSecretParameters(op)
> +    except errors.OpPrereqError:
> +      pass
> +    else:
> +      self.fail
>

Please use assertRaises here.

You should also always ensure that your tests can fail - self.fail is a
function, not a function invocation, and Python will neither complain nor
mark the test as failed with this code.


> +
> +
>  if __name__ == "__main__":
>    testutils.GanetiTestProgram()
> --
> 2.4.3.573.g4eafbef
>
>
Hrvoje Ribicic
Ganeti Engineering
Google Germany GmbH
Dienerstr. 12, 80331, München

Geschäftsführer: Graham Law, Christine Elizabeth Flores
Registergericht und -nummer: Hamburg, HRB 86891
Sitz der Gesellschaft: Hamburg

Reply via email to