Commit 2a5685d6 authored by Rafael Monnerat's avatar Rafael Monnerat

Add initial test for test_agent code.

parent 24ca5a0a
...@@ -71,19 +71,22 @@ from tester import SoftwareReleaseTester ...@@ -71,19 +71,22 @@ from tester import SoftwareReleaseTester
class TestMap(object): class TestMap(object):
def __init__(self, test_dict): def __init__(self, test_dict):
self.ran_test_set = set()
self.test_map_dict = collections.OrderedDict() self.test_map_dict = collections.OrderedDict()
for key in test_dict: for key in test_dict:
group = test_dict[key].get("group", "default") group = test_dict[key].get("group", "default")
if group not in self.test_map_dict: if group not in self.test_map_dict:
self.test_map_dict[group] = [key] self.test_map_dict[group] = [key]
def addRanTest(self, test):
self.ran_test_set.add(test)
def getExcludeList(self, group): def getExcludeList(self, group):
exclude_list = [] exclude_list = []
for key in self.test_map_dict: for key in self.test_map_dict:
if key != group: if key != group:
exclude_list.extend(self.test_map_dict[key]) exclude_list.extend(self.test_map_dict[key])
return set(exclude_list) return set(exclude_list + list(self.ran_test_set))
def getGroupList(self): def getGroupList(self):
return self.test_map_dict.keys() return self.test_map_dict.keys()
...@@ -328,7 +331,6 @@ def main(): ...@@ -328,7 +331,6 @@ def main():
supply = slap.registerSupply() supply = slap.registerSupply()
order = slap.registerOpenOrder() order = slap.registerOpenOrder()
ran_test_set = set()
running_test_dict = {} running_test_dict = {}
logger.info('Starting Test Agent run %s ' % agent_parameter_dict['node_title']) logger.info('Starting Test Agent run %s ' % agent_parameter_dict['node_title'])
...@@ -346,11 +348,10 @@ def main(): ...@@ -346,11 +348,10 @@ def main():
# Select a test # Select a test
test_line = test_result.start( test_line = test_result.start(
exclude_list= list(ran_test_set) + \ exclude_list=list(test_mapping.getExcludeList(group)))
list(test_mapping.getExcludeList(group)))
logger.info("Test Line: %s " % test_line) logger.info("Test Line: %s " % test_line)
logger.info("Ran Test Set: %s " % ran_test_set) logger.info("Ran Test Set: %s " % test_mapping.ran_test_set)
logger.info("Running test dict: %s " % running_test_dict) logger.info("Running test dict: %s " % running_test_dict)
logger.info("Group: %s " % group) logger.info("Group: %s " % group)
...@@ -382,7 +383,7 @@ def main(): ...@@ -382,7 +383,7 @@ def main():
agent_parameter_dict.get('software_timeout', general_timeout), agent_parameter_dict.get('software_timeout', general_timeout),
agent_parameter_dict.get('instance_timeout', general_timeout) agent_parameter_dict.get('instance_timeout', general_timeout)
) )
ran_test_set.add(test_name) test_mapping.addRanTest(test_name)
running_test_dict[test_name] = (test_line, tester, group) running_test_dict[test_name] = (test_line, tester, group)
if not running_test_dict: if not running_test_dict:
......
##############################################################################
#
# 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
TESTMAP_DICT = {
"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-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-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-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-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-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"},
"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-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-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"}
}
class TestTestMap(unittest.TestCase):
def setUp(self):
self.test_map = TestMap(TESTMAP_DICT)
def test_group(self):
""" Check available group of tests """
self.assertEquals(self.test_map.getGroupList(),
["COMP-1", "COMP-2"])
def test_getnextgroup(self):
""" Get Next Group """
self.assertEquals(self.test_map.getNextGroup([]),
"COMP-1")
self.assertEquals(
self.test_map.getNextGroup(ignore_list=["COMP-1"]),
"COMP-2")
def test_getexcludelist(self):
""" Check available group of tests """
self.assertEquals(self.test_map.getExcludeList("COMP-1"),
set(['test-agent-software-release']))
self.assertEquals(
self.test_map.getExcludeList("COMP-2"),
set(['test-apache-frontend-software-release']))
self.test_map.addRanTest('test-apache-frontend-software-release')
self.assertEquals(
self.test_map.getExcludeList("COMP-2"),
set(['test-apache-frontend-software-release']))
def test_dropgroup(self):
""" Check available group of tests """
test_map_copy = TestMap(TESTMAP_DICT)
self.assertEquals(test_map_copy.getGroupList(),
["COMP-1", "COMP-2"])
test_map_copy.dropGroup("COMP-1")
self.assertEquals(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.assertEquals(test_map_copy.getGroupList(),
["COMP-1", "COMP-2", "NEWGROUP"])
test_map_copy.cleanEmptyGroup()
self.assertEquals(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")
self.assertEquals(open(f.name, "r").read(), "foo")
fname = f.name
self.assertTrue(os.path.isfile(fname))
del f
self.assertFalse(os.path.isfile(fname))
if __name__ == '__main__':
unittest.main()
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment