############################################################################## # # Copyright (c) 2015 Vifib SARL and Contributors. All Rights Reserved. # # WARNING: This program as such is intended to be used by professional # programmers who take the whole responsibility of assessing all potential # consequences resulting from its eventual inadequacies and bugs # End users who are looking for a ready-to-use solution with commercial # guarantees and support are strongly adviced to contract a Free Software # Service Company # # 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 3 # 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # ############################################################################## import unittest import os.path from slapos.agent.agent import AutoSTemp, TestMap from collections import OrderedDict TESTMAP_DICT = OrderedDict([ ("test-apache-frontend-software-release", { "url": "https://lab.nexedi.com/nexedi/slapos/raw/1.0/software/apache-frontend/software.cfg", "supply_computer": "COMP-1", "group": "COMP-1", "title": "test-apache-frontend-software-release"}), ("test-slapos-master-software-release", { "url": "https://lab.nexedi.com/nexedi/slapos/raw/1.0/software/slapos-master/software.cfg", "supply_computer": "COMP-1", "group": "COMP-1", "title": "test-slapos-master-software-release"}), ("test-erp5testnode-software-release", { "url": "https://lab.nexedi.com/nexedi/slapos/raw/1.0/software/erp5testnode/software.cfg", "supply_computer": "COMP-1", "group": "COMP-1", "title": "test-erp5testnode-software-release"}), ("test-webrunner-software-release", { "url": "https://lab.nexedi.com/nexedi/slapos/raw/1.0/software/slaprunner/software.cfg", "supply_computer": "COMP-1", "group": "COMP-1", "title": "test-webrunner-software-release"}), ("test-agent-software-release", { "url": "https://lab.nexedi.com/nexedi/slapos/raw/1.0/software/agent/software.cfg", "supply_computer": "COMP-2", "group": "COMP-2", "title": "test-agent-software-release"}), ("test-powerdns-software-release", { "url": "https://lab.nexedi.com/nexedi/slapos/raw/1.0/software/powerdns/software.cfg", "supply_computer": "COMP-2", "group": "COMP-2", "title": "test-powerdns-software-release"}), ("test-nayuos-software-release", { "url": "https://lab.nexedi.com/nexedi/slapos/raw/1.0/software/nayuos/software.cfg", "supply_computer": "COMP-1", "group": "COMP-1", "title": "test-nayuos-software-release"}), ("test-wendelin-software-release", { "url": "https://lab.nexedi.com/nexedi/slapos/raw/1.0/software/wendelin/software.cfg", "supply_computer": "COMP-2", "group": "COMP-2", "title": "test-wendelin-software-release"}), ("test-monitor-software-release", { "url": "https://lab.nexedi.com/nexedi/slapos/raw/1.0/software/monitor/software.cfg", "supply_computer": "COMP-2", "group": "COMP-2", "title": "test-monitor-software-release"}), ("test-re6stnetmaster-software-release", { "url": "https://lab.nexedi.com/nexedi/slapos/raw/1.0/software/re6stnet/software.cfg", "supply_computer": "COMP-2", "group": "COMP-2", "title": "test-re6stnetmaster-software-release"}), ]) class TestTestMap(unittest.TestCase): def setUp(self): self.test_map = TestMap(TESTMAP_DICT) def test_group(self): """ Check available group of tests """ self.assertEqual(self.test_map.getGroupList(), ["COMP-1", "COMP-2"]) def test_getnextgroup(self): """ Get Next Group """ self.assertEqual(self.test_map.getNextGroup([]), "COMP-1") self.assertEqual( self.test_map.getNextGroup(ignore_list=["COMP-1"]), "COMP-2") def test_getexcludelist(self): """ Check available group of tests """ self.assertEqual(self.test_map.getExcludeList("COMP-1"), set(['test-agent-software-release', 'test-wendelin-software-release', 'test-monitor-software-release', 'test-re6stnetmaster-software-release', 'test-powerdns-software-release'])) self.assertEqual( self.test_map.getExcludeList("COMP-2"), set(['test-apache-frontend-software-release', 'test-slapos-master-software-release', 'test-webrunner-software-release', 'test-erp5testnode-software-release', 'test-apache-frontend-software-release', 'test-nayuos-software-release'])) self.test_map.addRanTest('test-agent-software-release') self.assertEqual( self.test_map.getExcludeList("COMP-2"), set(['test-apache-frontend-software-release', 'test-slapos-master-software-release', 'test-webrunner-software-release', 'test-erp5testnode-software-release', 'test-apache-frontend-software-release', 'test-nayuos-software-release', 'test-agent-software-release'])) def test_dropgroup(self): """ Check available group of tests """ test_map_copy = TestMap(TESTMAP_DICT) self.assertEqual(test_map_copy.getGroupList(), ["COMP-1", "COMP-2"]) test_map_copy.dropGroup("COMP-1") self.assertEqual(test_map_copy.getGroupList(), ["COMP-2"]) def test_cleanup_empty_group(self): """ Check available group of tests """ test_map_copy = TestMap(TESTMAP_DICT) test_map_copy.test_map_dict["NEWGROUP"] = {} self.assertEqual(test_map_copy.getGroupList(), ["COMP-1", "COMP-2", "NEWGROUP"]) test_map_copy.cleanEmptyGroup() self.assertEqual(test_map_copy.getGroupList(), ["COMP-1", "COMP-2"]) class TestAutoSTemp(unittest.TestCase): def test_autostemp(self): """ Test AutoSTemp creates the file with content and removes it when deleted. """ f = AutoSTemp("foo") with open(f.name, "r") as f_: self.assertEqual(f_.read(), "foo") fname = f.name self.assertTrue(os.path.isfile(fname)) del f self.assertFalse(os.path.isfile(fname)) if __name__ == '__main__': unittest.main()