import logging import pytest import mock from mlair.run_modules.experiment_setup import ExperimentSetup from mlair.run_modules.partition_check import PartitionCheck from mlair.run_modules.run_environment import RunEnvironment class TestPartitionCheck: # @pytest.fixture # def obj_super_init(self): # obj = object.__new__(PartitionCheck) # super(PartitionCheck, obj).__init__() # obj.data_store.set("NAME1", 1, "general") # yield obj # RunEnvironment().__del__() @pytest.fixture @mock.patch("socket.gethostname", return_value="juwels") @mock.patch("getpass.getuser", return_value="testUser") @mock.patch("os.path.exists", return_value=False) @mock.patch("os.makedirs", side_effect=None) def obj_with_exp_setup_login(self, mock_host, mock_user, mock_path, mock_check): RunEnvironment().__del__() ExperimentSetup(stations=['DEBW107', 'DEBY081', 'DEBW013', 'DEBW076', 'DEBW087', 'DEBW001'], statistics_per_var={'o3': 'dma8eu', 'temp': 'maximum'}, station_type="background") pre = object.__new__(PartitionCheck) super(PartitionCheck, pre).__init__() yield pre RunEnvironment().__del__() @pytest.fixture @mock.patch("socket.gethostname", return_value="hdfmlc01") @mock.patch("getpass.getuser", return_value="testUser") @mock.patch("os.path.exists", return_value=False) @mock.patch("os.makedirs", side_effect=None) def obj_with_exp_setup_compute(self, mock_host, mock_user, mock_path, mock_check): RunEnvironment().__del__() ExperimentSetup(stations=['DEBW107', 'DEBY081', 'DEBW013', 'DEBW076', 'DEBW087', 'DEBW001'], statistics_per_var={'o3': 'dma8eu', 'temp': 'maximum'}, station_type="background") pre = object.__new__(PartitionCheck) super(PartitionCheck, pre).__init__() yield pre RunEnvironment().__del__() def test_init(self, caplog): ExperimentSetup(stations=['DEBW107', 'DEBY081', 'DEBW013', 'DEBW076', 'DEBW087'], statistics_per_var={'o3': 'dma8eu', 'temp': 'maximum'}) caplog.clear() caplog.set_level(logging.INFO) with PartitionCheck(): assert caplog.record_tuples[0] == ('root', 20, 'PartitionCheck started') RunEnvironment().__del__() @mock.patch("socket.gethostname", return_value="juwels") @mock.patch("getpass.getuser", return_value="testUser") @mock.patch("os.path.exists", return_value=False) @mock.patch("os.makedirs", side_effect=None) def test_run_login(self, mock_host, mock_user, mock_path, mock_check, obj_with_exp_setup_login, caplog): with pytest.raises(OSError) as e: obj_with_exp_setup_login.__next__()._run() assert "You are on a login node to download data. Use compute nodes and run again if you want to train and " \ "validate a model." == \ e.value.args[0] @mock.patch("socket.gethostname", return_value="hdfmlc01") @mock.patch("getpass.getuser", return_value="testUser") @mock.patch("os.path.exists", return_value=False) @mock.patch("os.makedirs", side_effect=None) def test_run_compute(self, mock_host, mock_user, mock_path, mock_check, obj_with_exp_setup_compute, caplog): obj = obj_with_exp_setup_compute.__next__() assert obj._run() is None