118 lines
3.9 KiB
Python
118 lines
3.9 KiB
Python
"""
|
|
@package tests.test_dispatch
|
|
unit tests for pmsco.dispatch
|
|
|
|
the purpose of these tests is to mainly to check the syntax, and correct data types,
|
|
i.e. anything that could cause a run-time error.
|
|
|
|
to run the tests, change to the directory which contains the tests directory, and execute =nosetests=.
|
|
|
|
@author Matthias Muntwiler, matthias.muntwiler@psi.ch
|
|
|
|
@copyright (c) 2018 by Paul Scherrer Institut @n
|
|
Licensed under the Apache License, Version 2.0 (the "License"); @n
|
|
you may not use this file except in compliance with the License.
|
|
You may obtain a copy of the License at
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
"""
|
|
|
|
from __future__ import absolute_import
|
|
from __future__ import division
|
|
from __future__ import print_function
|
|
import six
|
|
|
|
import copy
|
|
import unittest
|
|
import pmsco.dispatch as dispatch
|
|
|
|
|
|
class TestCalcID(unittest.TestCase):
|
|
def setUp(self):
|
|
# before each test method
|
|
pass
|
|
|
|
def tearDown(self):
|
|
# after each test method
|
|
pass
|
|
|
|
def test_levels(self):
|
|
cid = dispatch.CalcID(1, 2, 3, -1, -1)
|
|
result = cid.levels
|
|
expected = dispatch.CALC_LEVELS
|
|
self.assertIsInstance(cid, tuple)
|
|
self.assertEqual(result, expected)
|
|
|
|
def test_level(self):
|
|
cid = dispatch.CalcID(1, 2, 3, -1, -1)
|
|
result = cid.level
|
|
expected = dispatch.CALC_LEVELS[2]
|
|
self.assertEqual(result, expected)
|
|
cid = dispatch.CalcID(-1, -1, -1, -1, -1)
|
|
result = cid.level
|
|
expected = ''
|
|
self.assertEqual(result, expected)
|
|
|
|
def test_numeric_level(self):
|
|
cid = dispatch.CalcID(1, 2, 3, -1, -1)
|
|
result = cid.numeric_level
|
|
expected = 2
|
|
self.assertEqual(result, expected)
|
|
cid = dispatch.CalcID(-1, -1, -1, -1, -1)
|
|
result = cid.numeric_level
|
|
expected = -1
|
|
self.assertEqual(result, expected)
|
|
|
|
def test_collapse_levels(self):
|
|
cid = dispatch.CalcID(1, 2, 3, 4, 5)
|
|
result = cid.collapse_levels(dispatch.CALC_LEVELS[2])
|
|
expected = dispatch.CalcID(1, 2, 3, -1, -1)
|
|
self.assertEqual(result, expected)
|
|
result = cid.collapse_levels(-1)
|
|
expected = dispatch.CalcID(-1, -1, -1, -1, -1)
|
|
self.assertEqual(result, expected)
|
|
|
|
|
|
class TestCalculationTask(unittest.TestCase):
|
|
def setUp(self):
|
|
self.sample = dispatch.CalculationTask()
|
|
self.sample.id = dispatch.CalcID(11, 12, 13, 14, 15)
|
|
self.sample.parent_id = dispatch.CalcID(21, 22, 23, 24, 25)
|
|
self.sample.model = {'A': 31, 'B': 32}
|
|
self.sample.file_root = "testfile"
|
|
self.sample.file_ext = ".ext"
|
|
self.sample.result_filename = "resultfile"
|
|
self.sample.modf_filename = "modffile"
|
|
self.sample.result_valid = True
|
|
# self.sample.time = datetime.timedelta()
|
|
# self.sample.files = {}
|
|
# self.sample.region = {}
|
|
self.sample.rfac = 0.123456
|
|
|
|
def tearDown(self):
|
|
pass
|
|
|
|
def test_change_id(self):
|
|
result = copy.deepcopy(self.sample)
|
|
self.sample.id = dispatch.CalcID(11, 92, 13, 14, 15)
|
|
result.change_id(scan=92)
|
|
self.assertEqual(result, self.sample)
|
|
|
|
def test_get_mpi_message(self):
|
|
result = self.sample.get_mpi_message()
|
|
expected = {'model': 11, 'scan': 12, 'domain': 13, 'emit': 14, 'region': 15}
|
|
self.assertEqual(result['id'], expected)
|
|
self.assertEqual(result['model'], self.sample.model)
|
|
self.assertEqual(result['result_filename'], self.sample.result_filename)
|
|
self.assertEqual(result['result_valid'], self.sample.result_valid)
|
|
|
|
def test_set_mpi_message(self):
|
|
result = dispatch.CalculationTask()
|
|
msg = self.sample.get_mpi_message()
|
|
result.set_mpi_message(msg)
|
|
self.assertEqual(result, self.sample)
|
|
|
|
def test_format_filename(self):
|
|
result = self.sample.format_filename(emit=94)
|
|
expected = "testfile_11_12_13_94_15.ext"
|
|
self.assertEqual(result, expected)
|