pmsco-public/tests/test_dispatch.py

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)