Migrate lib/cli.py from constants to pathutils
[ganeti-local] / test / ganeti.masterd.instance_unittest.py
index 066da7d..4dda147 100755 (executable)
@@ -31,7 +31,7 @@ from ganeti import utils
 from ganeti import masterd
 
 from ganeti.masterd.instance import \
-  ImportExportTimeouts, _TimeoutExpired, _DiskImportExportBase, \
+  ImportExportTimeouts, _DiskImportExportBase, \
   ComputeRemoteExportHandshake, CheckRemoteExportHandshake, \
   ComputeRemoteImportDiskInfo, CheckRemoteExportDiskInfo, \
   FormatProgress
@@ -60,10 +60,10 @@ class TestMisc(unittest.TestCase):
     self.assertEqual(tmo.progress, 5)
 
   def testTimeoutExpired(self):
-    self.assert_(_TimeoutExpired(100, 300, _time_fn=lambda: 500))
-    self.assertFalse(_TimeoutExpired(100, 300, _time_fn=lambda: 0))
-    self.assertFalse(_TimeoutExpired(100, 300, _time_fn=lambda: 100))
-    self.assertFalse(_TimeoutExpired(100, 300, _time_fn=lambda: 400))
+    self.assert_(utils.TimeoutExpired(100, 300, _time_fn=lambda: 500))
+    self.assertFalse(utils.TimeoutExpired(100, 300, _time_fn=lambda: 0))
+    self.assertFalse(utils.TimeoutExpired(100, 300, _time_fn=lambda: 100))
+    self.assertFalse(utils.TimeoutExpired(100, 300, _time_fn=lambda: 400))
 
   def testDiskImportExportBaseDirect(self):
     self.assertRaises(AssertionError, _DiskImportExportBase,
@@ -102,15 +102,29 @@ class TestRieDiskInfo(unittest.TestCase):
   def test(self):
     cds = "bbf46ea9a"
     salt = "ee5ad9"
-    di = ComputeRemoteImportDiskInfo(cds, salt, 0, "node1", 1234)
+    di = ComputeRemoteImportDiskInfo(cds, salt, 0, "node1", 1234, "mag111")
     self.assertEqual(CheckRemoteExportDiskInfo(cds, 0, di),
-                     ("node1", 1234))
+                     ("node1", 1234, "mag111"))
 
     for i in range(1, 100):
       # Wrong disk index
       self.assertRaises(errors.GenericError, CheckRemoteExportDiskInfo,
                         cds, i, di)
 
+  def testInvalidHostPort(self):
+    cds = "3ZoJY8KtGJ"
+    salt = "drK5oYiHWD"
+
+    for host in [",", "...", "Hello World", "`", "!", "#", "\\"]:
+      di = ComputeRemoteImportDiskInfo(cds, salt, 0, host, 1234, "magic")
+      self.assertRaises(errors.OpPrereqError,
+                        CheckRemoteExportDiskInfo, cds, 0, di)
+
+    for port in [-1, 792825908, "HelloWorld!", "`#", "\\\"", "_?_"]:
+      di = ComputeRemoteImportDiskInfo(cds, salt, 0, "localhost", port, "magic")
+      self.assertRaises(errors.OpPrereqError,
+                        CheckRemoteExportDiskInfo, cds, 0, di)
+
   def testCheckErrors(self):
     cds = "0776450535a"
     self.assertRaises(errors.GenericError, CheckRemoteExportDiskInfo,
@@ -122,11 +136,15 @@ class TestRieDiskInfo(unittest.TestCase):
 
     # No host/port
     self.assertRaises(errors.GenericError, CheckRemoteExportDiskInfo,
-                      cds, 0, ("", 0, "", ""))
+                      cds, 0, ("", 1234, "magic", "", ""))
+    self.assertRaises(errors.GenericError, CheckRemoteExportDiskInfo,
+                      cds, 0, ("host", 0, "magic", "", ""))
+    self.assertRaises(errors.GenericError, CheckRemoteExportDiskInfo,
+                      cds, 0, ("host", 1234, "", "", ""))
 
     # Wrong hash
     self.assertRaises(errors.GenericError, CheckRemoteExportDiskInfo,
-                      cds, 0, ("nodeX", 123, "fakehash", "xyz"))
+                      cds, 0, ("nodeX", 123, "magic", "fakehash", "xyz"))
 
 
 class TestFormatProgress(unittest.TestCase):