2 from unittest
import TestCase, main
14 class DeriviedCalculationProcess(CalculationProcess):
16 def __init__(self, result_queue, log_file_name, parameters, some_variable, other_variable):
17 CalculationProcess.__init__(self, result_queue, log_file_name, parameters)
19 self.some_variable = some_variable
20 self.other_variable = other_variable
22 def start_process(self):
26 class DerivedCalculation(Calculation):
29 Calculation.__init__(self)
30 self._calculation_process_type = DeriviedCalculationProcess
33 class DerivedIPythonHandler(IPythonHandler):
36 IPythonHandler.__init__(self)
38 self._calculation_type = DerivedCalculation
43 def test_default(self):
44 handler = IPythonHandler()
46 self.assertEqual(handler.log_files, [])
47 self.assertEqual(handler._calculation_type, Calculation)
48 self.assertIsInstance(handler.information, EnvironmentInformation)
50 def test_create_queue(self):
51 queue = DerivedIPythonHandler.create_queue()
53 self.assertIsInstance(queue, CalculationQueue)
55 self.assertEqual(queue.get_keys(), [])
56 self.assertEqual(queue.results, {})
58 def test_next_log_file(self):
60 handler = DerivedIPythonHandler()
62 self.assertEqual(handler.log_files, [])
64 next_log_file = handler.next_log_file_name()
67 self.assertEqual(len(handler.log_files), 1)
68 self.assertEqual(handler.log_files[0][1], next_log_file)
71 os.unlink(next_log_file)
73 def test_many_next_log_files(self):
74 handler = DerivedIPythonHandler()
76 self.assertEqual(handler.log_files, [])
78 next_log_files = [handler.next_log_file_name()
for _
in range(200)]
81 self.assertEqual(len(handler.log_files), 20)
83 names = [log_file[1]
for log_file
in handler.log_files]
84 self.assertEqual(names, next_log_files[-20:])
86 for closed_log_file
in next_log_files[:-20]:
87 self.assertFalse(os.path.exists(closed_log_file))
90 for log_file_name
in next_log_files:
91 if os.path.exists(log_file_name):
92 os.unlink(log_file_name)
94 def test_many_log_files_closed(self):
95 handler = DerivedIPythonHandler()
97 self.assertEqual(handler.log_files, [])
99 next_log_files = [handler.next_log_file_name()
for _
in range(100)]
101 for log_file_name
in next_log_files:
102 if os.path.exists(log_file_name):
103 os.unlink(log_file_name)
105 next_log_files = [handler.next_log_file_name()
for _
in range(100)]
108 self.assertEqual(len(handler.log_files), 20)
110 names = [log_file[1]
for log_file
in handler.log_files]
111 self.assertEqual(names, next_log_files[-20:])
113 for closed_log_file
in next_log_files[:-20]:
114 self.assertFalse(os.path.exists(closed_log_file))
117 for log_file_name
in next_log_files:
118 if os.path.exists(log_file_name):
119 os.unlink(log_file_name)
121 def test_process_result_queue(self):
122 handler = DerivedIPythonHandler()
124 queue = CalculationQueue()
125 queue.queue = MockQueue()
127 queue.put(
"TestItem",
"TestValue")
129 calculation = handler.process(queue, some_variable=42, other_variable=21)
131 self.assertEqual(len(calculation.process_list), 1)
133 added_calculation = calculation.process_list[0]
135 self.assertEqual(added_calculation.log_file_name, handler.log_files[0][1])
136 self.assertEqual(added_calculation.result_queue, queue)
137 self.assertEqual(added_calculation.result_queue.get_keys(), [
"TestItem"])
138 self.assertEqual(added_calculation.result_queue.get(
"TestItem"),
"TestValue")
139 self.assertEqual(added_calculation.parameters,
None)
140 self.assertEqual(added_calculation.some_variable, 42)
141 self.assertEqual(added_calculation.other_variable, 21)
143 self.assertEqual(calculation.get_keys(), [
"TestItem"])
144 self.assertEqual(calculation.get(
"TestItem"),
"TestValue")
145 self.assertEqual(calculation.get_parameters(),
None)
147 def test_process_no_result_queue(self):
148 handler = DerivedIPythonHandler()
150 calculation = handler.process(some_variable=42, other_variable=21)
152 self.assertEqual(len(calculation.process_list), 1)
154 added_calculation = calculation.process_list[0]
156 result_queue = added_calculation.result_queue
158 self.assertIsInstance(result_queue, CalculationQueue)
160 def test_parameter_space_no_queue(self):
161 handler = DerivedIPythonHandler()
163 def creator_function(some_variable, other_variable):
164 return dict(some_variable=some_variable + 1, other_variable=other_variable +
"c")
166 calculations = handler.process_parameter_space(creator_function,
167 some_variable=[1, 2], other_variable=[
"a",
"b"])
169 self.assertEqual(len(calculations.process_list), 4)
171 parameters = calculations.get_parameters()
173 self.assertIn({
"some_variable": 1,
"other_variable":
"a"}, parameters)
174 self.assertIn({
"some_variable": 1,
"other_variable":
"b"}, parameters)
175 self.assertIn({
"some_variable": 2,
"other_variable":
"a"}, parameters)
176 self.assertIn({
"some_variable": 2,
"other_variable":
"b"}, parameters)
178 def assert_is_in_processes(some_variable, other_variable):
179 for process
in calculations.process_list:
180 if process.some_variable == some_variable
and process.other_variable == other_variable:
185 assert_is_in_processes(2,
"ac")
186 assert_is_in_processes(3,
"ac")
187 assert_is_in_processes(2,
"bc")
188 assert_is_in_processes(3,
"bc")
190 if __name__ ==
"__main__":