summaryrefslogtreecommitdiffstats
path: root/tests/test_discovery.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_discovery.py')
-rw-r--r--tests/test_discovery.py82
1 files changed, 82 insertions, 0 deletions
diff --git a/tests/test_discovery.py b/tests/test_discovery.py
new file mode 100644
index 0000000..0443cde
--- /dev/null
+++ b/tests/test_discovery.py
@@ -0,0 +1,82 @@
+#!/usr/bin/python
+# Copyright 2014 Red Hat, Inc.
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+#
+
+import mock
+from plugins import discovery
+from testrunner import PluginsTestCase as TestCaseBase
+
+
+class TestDiscovery(TestCaseBase):
+ def _mockExcecNRPECommand(self, host, command):
+ if command == "discoverlogicalcomponents":
+ return self._getLogicalComponents()
+ elif command == "discoverpeers":
+ return self._getPeers()
+ elif command == "discoverhostparams":
+ return self._getHostParams(host)
+
+ def _getLogicalComponents(self):
+ result = {}
+ result['volumes'] = []
+ result['volumes'].append({"bricks": [{"brickpath": "/bricks/v1-1",
+ "hostUuid": "0000-1111",
+ "hostip": "172.16.53.1"}],
+ "type": "DISTRIBUTE", "name": "V1"})
+ result['volumes'].append({"bricks": [{"brickpath": "/bricks/v2-1",
+ "hostUuid": "0000-1112",
+ "hostip": "172.16.53.2"}],
+ "type": "DISTRIBUTE", "name": "V2"})
+ return result
+
+ def _getPeers(self):
+ result = []
+ result.append({"hostip": "172.16.53.2"})
+ return result
+
+ def _getHostParams(self, hostip):
+ if hostip == "172.16.53.1":
+ return {"hostname": "node-1"}
+ elif hostip == "172.16.53.2":
+ return {"hostname": "node-2"}
+
+ def _verifyClusterData(self, clusterdata, clusterName, host):
+
+ self.assertEqual(clusterdata['hosts'][0]['hostip'],
+ self._getPeers()[0]['hostip'])
+ self.assertEqual(clusterdata['hosts'][1]['hostip'], host)
+ for host in clusterdata['hosts']:
+ hostDetails = self._getHostParams(host['hostip'])
+ self.assertEqual(host['hostname'], hostDetails['hostname'])
+ self.assertEqual(len(host['bricks']), 1)
+ volumes = self._getLogicalComponents()['volumes']
+ self.assertEqual(len(clusterdata['volumes']), len(volumes))
+
+ for i in range(len(volumes)):
+ self._verifyVolume(volumes[i], clusterdata['volumes'][i])
+
+ def _verifyVolume(self, expected, actual):
+ self.assertEqual(expected['name'], actual['name'])
+ self.assertEqual(expected['type'], actual['type'])
+
+ # Method to test the discoverCluster() method
+ def testDiscoverCluster(self):
+ discovery.excecNRPECommand = self._mockExcecNRPECommand
+ clusterName = "test-cluster"
+ host = "172.16.53.1"
+ clusterdata = discovery.discoverCluster(host, clusterName)
+ self._verifyClusterData(clusterdata, clusterName, host)