Skip to content
Snippets Groups Projects

Resolve "release branch / CI on gpu"

Merged Ghost User requested to merge release_v0.9.0 into master
1 file
+ 172
1
Compare changes
  • Side-by-side
  • Inline
+ 172
1
@@ -7,6 +7,8 @@ import mock
@@ -7,6 +7,8 @@ import mock
import numpy as np
import numpy as np
import pytest
import pytest
 
import re
 
from src.helpers import *
from src.helpers import *
@@ -128,7 +130,8 @@ class TestTimeTracking:
@@ -128,7 +130,8 @@ class TestTimeTracking:
class TestPrepareHost:
class TestPrepareHost:
@mock.patch("socket.gethostname", side_effect=["linux-aa9b", "ZAM144", "zam347", "jrtest", "jwtest"])
@mock.patch("socket.gethostname", side_effect=["linux-aa9b", "ZAM144", "zam347", "jrtest", "jwtest",
 
"runner-6HmDp9Qd-project-2411-concurrent"])
@mock.patch("os.getlogin", return_value="testUser")
@mock.patch("os.getlogin", return_value="testUser")
@mock.patch("os.path.exists", return_value=True)
@mock.patch("os.path.exists", return_value=True)
def test_prepare_host(self, mock_host, mock_user, mock_path):
def test_prepare_host(self, mock_host, mock_user, mock_path):
@@ -142,6 +145,8 @@ class TestPrepareHost:
@@ -142,6 +145,8 @@ class TestPrepareHost:
assert path == "/p/project/cjjsc42/testUser/DATA/toar_daily/"
assert path == "/p/project/cjjsc42/testUser/DATA/toar_daily/"
path = prepare_host()
path = prepare_host()
assert path == "/p/home/jusers/testUser/juwels/intelliaq/DATA/toar_daily/"
assert path == "/p/home/jusers/testUser/juwels/intelliaq/DATA/toar_daily/"
 
path = prepare_host()
 
assert path == '/home/testUser/machinelearningtools/data/toar_daily/'
@mock.patch("socket.gethostname", return_value="NotExistingHostName")
@mock.patch("socket.gethostname", return_value="NotExistingHostName")
@mock.patch("os.getlogin", return_value="zombie21")
@mock.patch("os.getlogin", return_value="zombie21")
@@ -154,6 +159,35 @@ class TestPrepareHost:
@@ -154,6 +159,35 @@ class TestPrepareHost:
with pytest.raises(NotADirectoryError) as e:
with pytest.raises(NotADirectoryError) as e:
prepare_host()
prepare_host()
assert "does not exist for host 'linux-aa9b'" in e.value.args[0]
assert "does not exist for host 'linux-aa9b'" in e.value.args[0]
 
with pytest.raises(NotADirectoryError) as e:
 
prepare_host(False)
 
assert "does not exist for host 'linux-aa9b'" in e.value.args[0]
 
 
@mock.patch("socket.gethostname", side_effect=["linux-aa9b", "ZAM144", "zam347", "jrtest", "jwtest",
 
"runner-6HmDp9Qd-project-2411-concurrent"])
 
@mock.patch("os.getlogin", side_effect=OSError)
 
@mock.patch("os.path.exists", return_value=True)
 
def test_os_error(self, mock_host, mock_user, mock_path):
 
path = prepare_host()
 
assert path == "/home/default/machinelearningtools/data/toar_daily/"
 
path = prepare_host()
 
assert path == "/home/default/Data/toar_daily/"
 
path = prepare_host()
 
assert path == "/home/default/Data/toar_daily/"
 
path = prepare_host()
 
assert path == "/p/project/cjjsc42/default/DATA/toar_daily/"
 
path = prepare_host()
 
assert path == "/p/home/jusers/default/juwels/intelliaq/DATA/toar_daily/"
 
path = prepare_host()
 
assert path == '/home/default/machinelearningtools/data/toar_daily/'
 
 
@mock.patch("socket.gethostname", side_effect=["linux-aa9b"])
 
@mock.patch("os.getlogin", return_value="testUser")
 
@mock.patch("os.path.exists", return_value=False)
 
@mock.patch("os.makedirs", side_effect=None)
 
def test_os_path_exists(self, mock_host, mock_user, mock_path, mock_check):
 
path = prepare_host()
 
assert path == "/home/testUser/machinelearningtools/data/toar_daily/"
class TestSetExperimentName:
class TestSetExperimentName:
@@ -170,6 +204,23 @@ class TestSetExperimentName:
@@ -170,6 +204,23 @@ class TestSetExperimentName:
exp_name, _ = set_experiment_name(experiment_date="2019-11-14")
exp_name, _ = set_experiment_name(experiment_date="2019-11-14")
assert exp_name == "2019-11-14_network"
assert exp_name == "2019-11-14_network"
 
def test_set_expperiment_hourly(self):
 
exp_name, exp_path = set_experiment_name(sampling="hourly")
 
assert exp_name == "TestExperiment_hourly"
 
assert exp_path == os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "TestExperiment_hourly"))
 
 
 
class TestSetBootstrapPath:
 
 
def test_bootstrap_path_is_none(self):
 
bootstrap_path = set_bootstrap_path(None, 'TestDataPath/', 'daily')
 
assert bootstrap_path == 'TestDataPath/../bootstrap_daily'
 
 
@mock.patch("os.makedirs", side_effect=None)
 
def test_bootstap_path_is_given(self, mock_makedir):
 
bootstrap_path = set_bootstrap_path('Test/path/to/boots', None, None)
 
assert bootstrap_path == 'Test/path/to/boots'
 
class TestPytestRegex:
class TestPytestRegex:
@@ -221,3 +272,123 @@ class TestFloatRound:
@@ -221,3 +272,123 @@ class TestFloatRound:
assert float_round(-34.9221, 0, math.floor) == -35.
assert float_round(-34.9221, 0, math.floor) == -35.
assert float_round(-34.9221, 2) == -34.92
assert float_round(-34.9221, 2) == -34.92
assert float_round(-34.9221, 0) == -34.
assert float_round(-34.9221, 0) == -34.
 
 
 
class TestDictPop:
 
 
@pytest.fixture
 
def custom_dict(self):
 
return {'a': 1, 'b': 2, 2: 'ab'}
 
 
def test_dict_pop_single(self, custom_dict):
 
# one out as list
 
d_pop = dict_pop(custom_dict, [4])
 
assert d_pop == custom_dict
 
# one out as str
 
d_pop = dict_pop(custom_dict, '4')
 
assert d_pop == custom_dict
 
# one in as str
 
d_pop = dict_pop(custom_dict, 'b')
 
assert d_pop == {'a': 1, 2: 'ab'}
 
# one in as list
 
d_pop = dict_pop(custom_dict, ['b'])
 
assert d_pop == {'a': 1, 2: 'ab'}
 
 
def test_dict_pop_multiple(self, custom_dict):
 
# all out (list)
 
d_pop = dict_pop(custom_dict, [4, 'mykey'])
 
assert d_pop == custom_dict
 
# all in (list)
 
d_pop = dict_pop(custom_dict, ['a', 2])
 
assert d_pop == {'b': 2}
 
# one in one out (list)
 
d_pop = dict_pop(custom_dict, [2, '10'])
 
assert d_pop == {'a': 1, 'b': 2}
 
 
def test_dict_pop_missing_argument(self, custom_dict):
 
with pytest.raises(TypeError) as e:
 
dict_pop()
 
assert "dict_pop() missing 2 required positional arguments: 'dict_orig' and 'pop_keys'" in e.value.args[0]
 
with pytest.raises(TypeError) as e:
 
dict_pop(custom_dict)
 
assert "dict_pop() missing 1 required positional argument: 'pop_keys'" in e.value.args[0]
 
 
 
class TestListPop:
 
 
@pytest.fixture
 
def custom_list(self):
 
return [1, 2, 3, 'a', 'bc']
 
 
def test_list_pop_single(self, custom_list):
 
l_pop = list_pop(custom_list, 1)
 
assert l_pop == [2, 3, 'a', 'bc']
 
l_pop = list_pop(custom_list, 'bc')
 
assert l_pop == [1, 2, 3, 'a']
 
l_pop = list_pop(custom_list, 5)
 
assert l_pop == custom_list
 
 
def test_list_pop_multiple(self, custom_list):
 
# all in list
 
l_pop = list_pop(custom_list, [2, 'a'])
 
assert l_pop == [1, 3, 'bc']
 
# one in one out
 
l_pop = list_pop(custom_list, ['bc', 10])
 
assert l_pop == [1, 2, 3, 'a']
 
# all out
 
l_pop = list_pop(custom_list, [10, 'aa'])
 
assert l_pop == custom_list
 
 
def test_list_pop_missing_argument(self, custom_list):
 
with pytest.raises(TypeError) as e:
 
list_pop()
 
assert "list_pop() missing 2 required positional arguments: 'list_full' and 'pop_items'" in e.value.args[0]
 
with pytest.raises(TypeError) as e:
 
list_pop(custom_list)
 
assert "list_pop() missing 1 required positional argument: 'pop_items'" in e.value.args[0]
 
 
 
class TestLogger:
 
 
@pytest.fixture
 
def logger(self):
 
return Logger()
 
 
def test_init_default(self):
 
log = Logger()
 
assert log.formatter == "%(asctime)s - %(levelname)s: %(message)s [%(filename)s:%(funcName)s:%(lineno)s]"
 
assert log.log_file == Logger.setup_logging_path()
 
# assert PyTestRegex(
 
# ".*machinelearningtools/src/\.{2}/logging/logging_\d{4}-\d{2}-\d{2}_\d{2}-\d{2}-\d{2}\.log") == log.log_file
 
 
def test_setup_logging_path_none(self):
 
log_file = Logger.setup_logging_path(None)
 
assert PyTestRegex(
 
".*machinelearningtools/src/\.{2}/logging/logging_\d{4}-\d{2}-\d{2}_\d{2}-\d{2}-\d{2}\.log") == log_file
 
 
@mock.patch("os.makedirs", side_effect=None)
 
def test_setup_logging_path_given(self, mock_makedirs):
 
path = "my/test/path"
 
log_path = Logger.setup_logging_path(path)
 
assert PyTestRegex("my/test/path/logging_\d{4}-\d{2}-\d{2}_\d{2}-\d{2}-\d{2}\.log") == log_path
 
 
def test_logger_console_level0(self, logger):
 
consol = logger.logger_console(0)
 
assert isinstance(consol, logging.StreamHandler)
 
assert consol.level == 0
 
formatter = logging.Formatter(logger.formatter)
 
assert isinstance(formatter, logging.Formatter)
 
 
def test_logger_console_level1(self, logger):
 
consol = logger.logger_console(1)
 
assert isinstance(consol, logging.StreamHandler)
 
assert consol.level == 1
 
formatter = logging.Formatter(logger.formatter)
 
assert isinstance(formatter, logging.Formatter)
 
 
def test_logger_console_level_wrong_type(self, logger):
 
with pytest.raises(TypeError) as e:
 
logger.logger_console(1.5)
 
assert "Level not an integer or a valid string: 1.5" == e.value.args[0]
 
 
Loading