summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorJeroen Hoekx <jeroen.hoekx@hamok.be>2012-04-13 20:50:30 +0200
committerJeroen Hoekx <jeroen.hoekx@hamok.be>2012-04-16 09:16:29 +0200
commit195e6d617b67c70043db7812fc2346d7a226c730 (patch)
tree0746a1fd2179eaa6f0b6373e4a36cb6590274d5f /test
parentc5cae87ecadc099800ef38870943a2c242a3498b (diff)
downloadansible-195e6d617b67c70043db7812fc2346d7a226c730.tar.gz
Add tests for Inventory class.
Diffstat (limited to 'test')
-rw-r--r--test/TestInventory.py143
-rw-r--r--test/inventory_api.py39
-rw-r--r--test/simple_hosts12
3 files changed, 194 insertions, 0 deletions
diff --git a/test/TestInventory.py b/test/TestInventory.py
new file mode 100644
index 0000000000..b0e3c62ccf
--- /dev/null
+++ b/test/TestInventory.py
@@ -0,0 +1,143 @@
+import os
+import unittest
+
+from ansible.inventory import Inventory
+
+class TestInventory(unittest.TestCase):
+
+ def setUp(self):
+ self.cwd = os.getcwd()
+ self.test_dir = os.path.join(self.cwd, 'test')
+
+ self.inventory_file = os.path.join(self.test_dir, 'simple_hosts')
+ self.inventory_script = os.path.join(self.test_dir, 'inventory_api.py')
+
+ os.chmod(self.inventory_script, 0755)
+
+ def tearDown(self):
+ os.chmod(self.inventory_script, 0644)
+
+ ### Simple inventory format tests
+
+ def simple_inventory(self):
+ return Inventory( self.inventory_file )
+
+ def script_inventory(self):
+ return Inventory( self.inventory_script )
+
+ def test_simple(self):
+ inventory = self.simple_inventory()
+ hosts = inventory.list_hosts()
+
+ expected_hosts=['jupiter', 'saturn', 'zeus', 'hera', 'poseidon', 'thor', 'odin', 'loki']
+ assert hosts == expected_hosts
+
+ def test_simple_all(self):
+ inventory = self.simple_inventory()
+ hosts = inventory.list_hosts('all')
+
+ expected_hosts=['jupiter', 'saturn', 'zeus', 'hera', 'poseidon', 'thor', 'odin', 'loki']
+ assert hosts == expected_hosts
+
+ def test_simple_norse(self):
+ inventory = self.simple_inventory()
+ hosts = inventory.list_hosts("norse")
+
+ expected_hosts=['thor', 'odin', 'loki']
+ assert hosts == expected_hosts
+
+ def test_simple_combined(self):
+ inventory = self.simple_inventory()
+ hosts = inventory.list_hosts("norse:greek")
+
+ expected_hosts=['zeus', 'hera', 'poseidon', 'thor', 'odin', 'loki']
+ assert hosts == expected_hosts
+
+ def test_simple_restrict(self):
+ inventory = self.simple_inventory()
+
+ restricted_hosts = ['hera', 'poseidon', 'thor']
+ expected_hosts=['zeus', 'hera', 'poseidon', 'thor', 'odin', 'loki']
+
+ inventory.restrict_to(restricted_hosts)
+ hosts = inventory.list_hosts("norse:greek")
+
+ assert hosts == restricted_hosts
+
+ inventory.lift_restriction()
+ hosts = inventory.list_hosts("norse:greek")
+
+ assert hosts == expected_hosts
+
+ def test_simple_vars(self):
+ inventory = self.simple_inventory()
+ vars = inventory.get_variables('thor')
+
+ assert vars == {}
+
+ def test_simple_extra_vars(self):
+ inventory = self.simple_inventory()
+ vars = inventory.get_variables('thor', 'a=5')
+
+ assert vars == {}
+
+ ### Inventory API tests
+
+ def test_script(self):
+ inventory = self.script_inventory()
+ hosts = inventory.list_hosts()
+
+ expected_hosts=['jupiter', 'saturn', 'zeus', 'hera', 'poseidon', 'thor', 'odin', 'loki']
+
+ print "Expected: %s"%(expected_hosts)
+ print "Got : %s"%(hosts)
+ assert sorted(hosts) == sorted(expected_hosts)
+
+ def test_script_all(self):
+ inventory = self.script_inventory()
+ hosts = inventory.list_hosts('all')
+
+ expected_hosts=['jupiter', 'saturn', 'zeus', 'hera', 'poseidon', 'thor', 'odin', 'loki']
+ assert sorted(hosts) == sorted(expected_hosts)
+
+ def test_script_norse(self):
+ inventory = self.script_inventory()
+ hosts = inventory.list_hosts("norse")
+
+ expected_hosts=['thor', 'odin', 'loki']
+ assert sorted(hosts) == sorted(expected_hosts)
+
+ def test_script_combined(self):
+ inventory = self.script_inventory()
+ hosts = inventory.list_hosts("norse:greek")
+
+ expected_hosts=['zeus', 'hera', 'poseidon', 'thor', 'odin', 'loki']
+ assert sorted(hosts) == sorted(expected_hosts)
+
+ def test_script_restrict(self):
+ inventory = self.script_inventory()
+
+ restricted_hosts = ['hera', 'poseidon', 'thor']
+ expected_hosts=['zeus', 'hera', 'poseidon', 'thor', 'odin', 'loki']
+
+ inventory.restrict_to(restricted_hosts)
+ hosts = inventory.list_hosts("norse:greek")
+
+ assert sorted(hosts) == sorted(restricted_hosts)
+
+ inventory.lift_restriction()
+ hosts = inventory.list_hosts("norse:greek")
+
+ assert sorted(hosts) == sorted(expected_hosts)
+
+ def test_script_vars(self):
+ inventory = self.script_inventory()
+ vars = inventory.get_variables('thor')
+
+ assert vars == {"hammer":True}
+
+ def test_script_extra_vars(self):
+ inventory = self.script_inventory()
+ vars = inventory.get_variables('thor', 'simple=yes')
+
+ assert vars == {"hammer":True, "simple": "yes"} \ No newline at end of file
diff --git a/test/inventory_api.py b/test/inventory_api.py
new file mode 100644
index 0000000000..bcde15bd3c
--- /dev/null
+++ b/test/inventory_api.py
@@ -0,0 +1,39 @@
+#!/usr/bin/env python
+
+import json
+import sys
+
+from optparse import OptionParser
+
+parser = OptionParser()
+parser.add_option('-l', '--list', default=False, dest="list_hosts", action="store_true")
+parser.add_option('-H', '--host', default=None, dest="host")
+parser.add_option('-e', '--extra-vars', default=None, dest="extra")
+
+options, args = parser.parse_args()
+
+systems = {
+ "ungouped": [ "jupiter", "saturn" ],
+ "greek": [ "zeus", "hera", "poseidon" ],
+ "norse": [ "thor", "odin", "loki" ]
+}
+
+variables = {
+ "thor": {
+ "hammer": True
+ }
+}
+
+if options.list_hosts == True:
+ print json.dumps(systems)
+ sys.exit(0)
+
+if options.host is not None:
+ if options.extra:
+ k,v = options.extra.split("=")
+ variables[options.host][k] = v
+ print json.dumps(variables[options.host])
+ sys.exit(0)
+
+parser.print_help()
+sys.exit(1) \ No newline at end of file
diff --git a/test/simple_hosts b/test/simple_hosts
new file mode 100644
index 0000000000..14312af92d
--- /dev/null
+++ b/test/simple_hosts
@@ -0,0 +1,12 @@
+jupiter
+saturn
+
+[greek]
+zeus
+hera
+poseidon
+
+[norse]
+thor
+odin
+loki