On Fri, Jan 9, 2015 at 1:21 PM, 'Aaron Karper' via ganeti-devel
<[email protected]> wrote:
> Currently there is no test for the code path of
> LUInstanceReplaceDisks for the replace_new_secondary option. This is
> problematic, because it is currently being modified.
>
> Signed-off-by: Aaron Karper <[email protected]>
> ---
>  test/py/cmdlib/instance_storage_unittest.py | 31 
> +++++++++++++++++++++++++++--
>  1 file changed, 29 insertions(+), 2 deletions(-)
>
> diff --git a/test/py/cmdlib/instance_storage_unittest.py 
> b/test/py/cmdlib/instance_storage_unittest.py
> index 2296078..d32b8f4 100755
> --- a/test/py/cmdlib/instance_storage_unittest.py
> +++ b/test/py/cmdlib/instance_storage_unittest.py
> @@ -205,7 +205,7 @@ class TestLUInstanceReplaceDisks(CmdlibTestCase):
>      self.node2 = self.cfg.AddNewNode()
>
>    def MakeOpCode(self, disks, early_release=False, ignore_ipolicy=False,
> -                 remote_node=False, mode='replace_auto'):
> +                 remote_node=False, mode='replace_auto', iallocator=None):
>      return opcodes.OpInstanceReplaceDisks(
>          instance_name=self.instance.name,
>          instance_uuid=self.instance.uuid,
> @@ -215,7 +215,7 @@ class TestLUInstanceReplaceDisks(CmdlibTestCase):
>          disks=disks,
>          remote_node=self.node2.name if remote_node else None,
>          remote_node_uuid=self.node2.uuid if remote_node else None,
> -        iallocator=None)
> +        iallocator=iallocator)
>
>    def testInvalidTemplate(self):
>      self.instance = self.cfg.AddNewInstance(admin_state=constants.ADMINST_UP,
> @@ -265,5 +265,32 @@ class TestLUInstanceReplaceDisks(CmdlibTestCase):
>      self.ExecOpCode(opcode)
>      self.rpc.call_blockdev_rename.assert_any_call(self.node2.uuid, [])
>
> +  def testReplaceSecondaryNew(self):
> +    disk = self.cfg.CreateDisk(dev_type=constants.DT_DRBD8,
> +                               primary_node=self.node1,
> +                               secondary_node=self.node2)
> +    self.instance = self.cfg.AddNewInstance(admin_state=constants.ADMINST_UP,
> +                                            disk_template='drbd',
> +                                            disks=[disk],
> +                                            primary_node=self.node1,
> +                                            secondary_node=self.node2)
> +
> +    self.SimulateDiskFailure(self.node2, 0)
> +    node3 = self.cfg.AddNewNode()
> +    self.MockOut(instance_storage.TLReplaceDisks, '_RunAllocator',
> +                 return_value=node3.uuid)
> +    self.rpc.call_drbd_disconnect_net().__getitem__().fail_msg = None
> +    self.rpc.call_blockdev_shutdown().fail_msg = None
> +    self.rpc.call_drbd_attach_net().fail_msg = None
> +
> +    opcode = self.MakeOpCode([], mode='replace_new_secondary',
> +                             iallocator='hail')
> +    self.ExecOpCode(opcode)
> +    self.rpc.call_blockdev_shutdown.assert_any_call(
> +        self.node2.uuid, (disk, self.instance))
> +    self.rpc.call_drbd_attach_net.assert_any_call(
> +        [self.node1.uuid, node3.uuid], ([disk], self.instance),
> +        self.instance.name, False)
> +
>  if __name__ == "__main__":
>    testutils.GanetiTestProgram()
> --
> 2.2.0.rc0.207.ga3a616c
>

LGTM, thanks.

Michele

-- 
Google Germany GmbH
Dienerstr. 12
80331 München

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

Reply via email to