Salome HOME
25b3d2c5358fc930c5dc58edb8bc090f9422deff
[modules/kernel.git] / src / LifeCycleCORBA_SWIG / Test / testresourcemanager.py
1 #  -*- coding: iso-8859-1 -*-
2 # Copyright (C) 2007-2023  CEA, EDF, 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     If a resource  doesn't have any module or component defined in the catalog,
65     it means that it has every module and component and it fits for any request.
66     """
67     params=LifeCycleCORBA.ResourceParameters(componentList=["add"])
68     machineList=rm.GetFittingResources(params)
69     self.assertEqual(machineList, ['claui2c6', 'localhost', 'm1', 'm2'])
70
71   def test3(self):
72     """component tutu required"""
73     params=LifeCycleCORBA.ResourceParameters(componentList=["tutu"])
74     machineList=rm.GetFittingResources(params)
75     self.assertEqual(machineList, ['localhost', 'm1', 'm2', 'm3'])
76
77   def test4(self):
78     """component tata required"""
79     params=LifeCycleCORBA.ResourceParameters(componentList=["tata"])
80     machineList=rm.GetFittingResources(params)
81     self.assertEqual(machineList, ['localhost', 'm1', 'm2'])
82
83   def test5(self):
84     """component titi required"""
85     params=LifeCycleCORBA.ResourceParameters(componentList=["titi"])
86     machineList=rm.GetFittingResources(params)
87     self.assertEqual(machineList, ['localhost', 'm1', 'm2'])
88
89   def test6(self):
90     """component toto required"""
91     params=LifeCycleCORBA.ResourceParameters(componentList=["toto"])
92     machineList=rm.GetFittingResources(params)
93     self.assertEqual(machineList, ['claui2c6', 'localhost', 'm1', 'm2'])
94
95   def test7(self):
96     """components add and toto required"""
97     params=LifeCycleCORBA.ResourceParameters(componentList=["add","toto"])
98     machineList=rm.GetFittingResources(params)
99     self.assertEqual(machineList, ['claui2c6', 'localhost', 'm1', 'm2'])
100
101   def test8(self):
102     """components add and toto required"""
103     machineDef=rm.GetResourceDefinition('claui2c6')
104     self.assertEqual(machineDef.componentList, ['toto', 'add'])
105
106   def test10(self):
107     """policy altcycl"""
108     params=LifeCycleCORBA.ResourceParameters(componentList=["add","toto"])
109     machineList=rm.GetFittingResources(params)
110     self.assertEqual(rm.Find('altcycl',machineList), "claui2c6")
111     self.assertEqual(rm.Find('altcycl',machineList), "localhost")
112     self.assertEqual(rm.Find('altcycl',machineList), "m1")
113     self.assertEqual(rm.Find('altcycl',machineList), "m2")
114     self.assertEqual(rm.Find('altcycl',machineList), "claui2c6")
115     self.assertEqual(rm.Find('altcycl',machineList), "localhost")
116     self.assertEqual(rm.Find('altcycl',machineList), "m1")
117     self.assertEqual(rm.Find('altcycl',machineList), "m2")
118
119   def test11(self):
120     """policy cycl"""
121     params=LifeCycleCORBA.ResourceParameters(componentList=["add","toto"])
122     machineList=rm.GetFittingResources(params)
123     self.assertEqual(rm.Find('cycl',machineList), "claui2c6")
124     self.assertEqual(rm.Find('cycl',machineList), "localhost")
125     self.assertEqual(rm.Find('cycl',machineList), "m1")
126     self.assertEqual(rm.Find('cycl',machineList), "m2")
127     self.assertEqual(rm.Find('cycl',machineList), "claui2c6")
128     self.assertEqual(rm.Find('cycl',machineList), "localhost")
129     self.assertEqual(rm.Find('cycl',machineList), "m1")
130     self.assertEqual(rm.Find('cycl',machineList), "m2")
131
132   def test12(self):
133     """policy first"""
134     params=LifeCycleCORBA.ResourceParameters(componentList=["add","toto"])
135     machineList=rm.GetFittingResources(params)
136     self.assertEqual(rm.Find('first',machineList), "claui2c6")
137     self.assertEqual(rm.Find('first',machineList), "claui2c6")
138
139   def test13(self):
140     """policy best"""
141     params=LifeCycleCORBA.ResourceParameters(componentList=["add","toto"])
142     machineList=rm.GetFittingResources(params)
143     self.assertEqual(rm.Find('best',machineList), "claui2c6")
144     self.assertEqual(rm.Find('best',machineList), "localhost")
145     self.assertEqual(rm.Find('best',machineList), "m1")
146     self.assertEqual(rm.Find('best',machineList), "m2")
147     self.assertEqual(rm.Find('best',machineList), "claui2c6")
148     self.assertEqual(rm.Find('best',machineList), "localhost")
149     self.assertEqual(rm.Find('best',machineList), "m1")
150     self.assertEqual(rm.Find('best',machineList), "m2")
151
152 if __name__ == '__main__':
153   #suite = unittest.TestLoader().loadTestsFromTestCase(TestResourceManager)
154   #unittest.TextTestRunner().run(suite)
155   unittest.main()