Salome HOME
c3f12ea43341800e5edec33b3ded6929f6a4245f
[modules/kernel.git] / src / LifeCycleCORBA_SWIG / Test / testresourcemanager.py
1 #  -*- coding: iso-8859-1 -*-
2 # Copyright (C) 2007-2014  CEA/DEN, EDF R&D, OPEN CASCADE
3 #
4 # This library is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU Lesser General Public
6 # License as published by the Free Software Foundation; either
7 # version 2.1 of the License, or (at your option) any later version.
8 #
9 # This library is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12 # Lesser General Public License for more details.
13 #
14 # You should have received a copy of the GNU Lesser General Public
15 # License along with this library; if not, write to the Free Software
16 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
17 #
18 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
19 #
20
21 import unittest
22 import salome
23 import LifeCycleCORBA
24 import SALOME
25 salome.salome_init()
26 cm= salome.lcc.getContainerManager()
27 rm= salome.lcc.getResourcesManager()
28
29 class TestResourceManager(unittest.TestCase):
30   """
31 Test with CatalogResources.xml:
32 <!DOCTYPE ResourcesCatalog>
33 <resources>
34    <machine hostname="m1" />
35    <machine hostname="m2" />
36    <machine hostname="m3" >
37      <modules moduleName="tutu" />
38    </machine>
39    <machine hostname="m4" >
40      <component name="sub" moduleName="tata" />
41    </machine>
42    <machine hostname="claui2c6" >
43      <modules moduleName="toto" />
44      <component name="add" moduleName="titi" />
45    </machine>
46 </resources>
47 """
48   def setUp(self):
49     pass
50
51   def test0(self):
52     """host required"""
53     params=LifeCycleCORBA.ResourceParameters(hostname="m3")
54     machineList=rm.GetFittingResources(params)
55     self.assertEqual(machineList, ["m3"])
56
57   def test1(self):
58     """OS required"""
59     params=LifeCycleCORBA.ResourceParameters(OS="Linux")
60     self.assertRaises(SALOME.SALOME_Exception,rm.GetFittingResources,params)
61
62   def test2(self):
63     """component add required"""
64     params=LifeCycleCORBA.ResourceParameters(componentList=["add"])
65     machineList=rm.GetFittingResources(params)
66     self.assertEqual(machineList, ['claui2c6', 'm1', 'm2'])
67
68   def test3(self):
69     """component tutu required"""
70     params=LifeCycleCORBA.ResourceParameters(componentList=["tutu"])
71     machineList=rm.GetFittingResources(params)
72     self.assertEqual(machineList, ['m1', 'm2', 'm3'])
73
74   def test4(self):
75     """component tata required"""
76     params=LifeCycleCORBA.ResourceParameters(componentList=["tata"])
77     machineList=rm.GetFittingResources(params)
78     self.assertEqual(machineList, ['m1', 'm2'])
79
80   def test5(self):
81     """component titi required"""
82     params=LifeCycleCORBA.ResourceParameters(componentList=["titi"])
83     machineList=rm.GetFittingResources(params)
84     self.assertEqual(machineList, ['m1', 'm2'])
85
86   def test6(self):
87     """component toto required"""
88     params=LifeCycleCORBA.ResourceParameters(componentList=["toto"])
89     machineList=rm.GetFittingResources(params)
90     self.assertEqual(machineList, ['claui2c6', 'm1', 'm2'])
91
92   def test7(self):
93     """components add and toto required"""
94     params=LifeCycleCORBA.ResourceParameters(componentList=["add","toto"])
95     machineList=rm.GetFittingResources(params)
96     self.assertEqual(machineList, ['claui2c6', 'm1', 'm2'])
97
98   def test8(self):
99     """components add and toto required"""
100     machineDef=rm.GetResourceDefinition('claui2c6')
101     self.assertEqual(machineDef.componentList, ['toto', 'add'])
102
103   def test10(self):
104     """policy altcycl"""
105     params=LifeCycleCORBA.ResourceParameters(componentList=["add","toto"])
106     machineList=rm.GetFittingResources(params)
107     self.assertEqual(rm.Find('altcycl',machineList), "claui2c6")
108     self.assertEqual(rm.Find('altcycl',machineList), "m1")
109     self.assertEqual(rm.Find('altcycl',machineList), "m2")
110     self.assertEqual(rm.Find('altcycl',machineList), "claui2c6")
111     self.assertEqual(rm.Find('altcycl',machineList), "m1")
112     self.assertEqual(rm.Find('altcycl',machineList), "m2")
113
114   def test11(self):
115     """policy cycl"""
116     params=LifeCycleCORBA.ResourceParameters(componentList=["add","toto"])
117     machineList=rm.GetFittingResources(params)
118     self.assertEqual(rm.Find('cycl',machineList), "claui2c6")
119     self.assertEqual(rm.Find('cycl',machineList), "m1")
120     self.assertEqual(rm.Find('cycl',machineList), "m2")
121     self.assertEqual(rm.Find('cycl',machineList), "claui2c6")
122     self.assertEqual(rm.Find('cycl',machineList), "m1")
123     self.assertEqual(rm.Find('cycl',machineList), "m2")
124
125   def test12(self):
126     """policy first"""
127     params=LifeCycleCORBA.ResourceParameters(componentList=["add","toto"])
128     machineList=rm.GetFittingResources(params)
129     self.assertEqual(rm.Find('first',machineList), "claui2c6")
130     self.assertEqual(rm.Find('first',machineList), "claui2c6")
131
132   def test13(self):
133     """policy best"""
134     params=LifeCycleCORBA.ResourceParameters(componentList=["add","toto"])
135     machineList=rm.GetFittingResources(params)
136     self.assertEqual(rm.Find('best',machineList), "claui2c6")
137     self.assertEqual(rm.Find('best',machineList), "m1")
138     self.assertEqual(rm.Find('best',machineList), "m2")
139     self.assertEqual(rm.Find('best',machineList), "claui2c6")
140     self.assertEqual(rm.Find('best',machineList), "m1")
141     self.assertEqual(rm.Find('best',machineList), "m2")
142
143 if __name__ == '__main__':
144   suite = unittest.TestLoader().loadTestsFromTestCase(TestResourceManager)
145   unittest.TextTestRunner().run(suite)
146