예제 #1
0
    def test_serialization(self):
        with tempfile.TemporaryDirectory() as tmp_dir:
            path = Path(tmp_dir, "request")
            request = Request(path,
                              "foo",
                              mo.get_global_settings(),
                              save_on_creation=False,
                              enable_logging=False)

            request.default_run.charge = 1
            request.default_run.fluence = 2
            request.default_target.description = "foo"

            request.to_file()

            request_from_file = Request.from_file(request.request_file,
                                                  mo.get_global_settings())

            self.assertEqual(request.default_run.get_settings(),
                             request_from_file.default_run.get_settings())

            self.assertEqual(request.default_target.description,
                             request_from_file.default_target.description)

            utils.disable_logging()
예제 #2
0
    def test_folder_structure_when_logging_is_enabled(self):
        """Tests the folder structure when request is created"""
        with tempfile.TemporaryDirectory() as tmp_dir:
            path = Path(tmp_dir, self.folder_name)
            request = Request(path,
                              "bar",
                              mo.get_global_settings(),
                              save_on_creation=True,
                              enable_logging=True)

            folder_structure = {
                "request.log": None,
                **self.folder_structure,
            }
            utils.assert_folder_structure_equal(folder_structure, path)
            request.close_log_files()
예제 #3
0
    def test_folder_structure_when_logging_is_not_enabled(self):
        with tempfile.TemporaryDirectory() as tmp_dir:
            path = Path(tmp_dir, self.folder_name)
            Request(path,
                    "bar",
                    mo.get_global_settings(),
                    save_on_creation=True,
                    enable_logging=False)

            utils.assert_folder_structure_equal(self.folder_structure, path)
예제 #4
0
    def test_no_folders_are_created_if_save_on_creation_is_false(self):
        """Tests the folder structure when request is created"""
        with tempfile.TemporaryDirectory() as tmp_dir:
            path = Path(tmp_dir, self.folder_name)
            Request(path,
                    "bar",
                    mo.get_global_settings(),
                    save_on_creation=False,
                    enable_logging=False)

            self.assertEqual([], os.listdir(tmp_dir))
예제 #5
0
def get_request() -> Request:
    """Returns a MockRequest object.

    This is done to avoid lengthy file writing operations when a real
    Request is initialized
    """
    return Request(_TEMP_DIR,
                   "request",
                   get_global_settings(),
                   save_on_creation=False,
                   enable_logging=False)
예제 #6
0
    def test_folder_structure(self):
        """Tests the folder structure when request is created"""
        with tempfile.TemporaryDirectory() as tmp_dir:
            path = Path(tmp_dir, self.folder_name)
            Request(path,
                    "bar",
                    mo.get_global_settings(),
                    save_on_creation=False,
                    enable_logging=False)

            self.assertEqual([], os.listdir(tmp_dir))

            request = Request(path,
                              "bar",
                              mo.get_global_settings(),
                              save_on_creation=True,
                              enable_logging=False)

            utils.assert_folder_structure_equal(self.folder_structure, path)

            request.to_file()
            utils.assert_folder_structure_equal(self.folder_structure, path)

            utils.disable_logging()
예제 #7
0
    def test_default_values_are_same(self):
        with tempfile.TemporaryDirectory() as tmp_dir:
            path = Path(tmp_dir, "request")
            request = Request(path,
                              "foo",
                              mo.get_global_settings(),
                              save_on_creation=True,
                              enable_logging=False)
            self.assert_request_values_are_same(request)

            request_from_file = Request.from_file(request.request_file,
                                                  mo.get_global_settings())
            self.assert_request_values_are_same(request_from_file)

            self.assertEqual(request.request_file,
                             request_from_file.request_file)
            self.assertEqual(request.directory, request_from_file.directory)

            self.assertIsNot(request, request_from_file)
            self.assertIsNot(request.default_measurement,
                             request_from_file.default_measurement)
            self.assertIsNot(request.default_simulation,
                             request_from_file.default_simulation)
            utils.disable_logging()
예제 #8
0
    def test_element_simulation_settings(self):
        """This tests that ElementSimulation is run with the correct settings
        depending on how 'use_default_settings' and 'use_request_settings'
        have been set.
        """
        with tempfile.TemporaryDirectory() as tmp_dir:
            # File paths
            tmp_dir = Path(tmp_dir).resolve()
            req_dir = tmp_dir / "req"
            sim_dir = req_dir / "Sample_01-foo" / \
                f"{Simulation.DIRECTORY_PREFIX}01-bar"
            simu_file = sim_dir / "bar.simulation"

            # Request
            request = Request(
                req_dir, "test_req", GlobalSettings(config_dir=tmp_dir), {},
                enable_logging=False)

            self.assertEqual(req_dir, request.directory)
            self.assertEqual("test_req", request.request_name)

            # Sample
            sample = request.samples.add_sample(name="foo")
            self.assertIs(sample, request.samples.samples[0])
            self.assertIsInstance(sample, Sample)
            self.assertEqual("foo", sample.name)
            self.assertEqual(request, sample.request)
            self.assertEqual("Sample_01-foo", sample.directory)

            # Simulation
            sim = sample.simulations.add_simulation_file(
                sample, simu_file, 0)
            # Disable logging so the logging file handlers do not cause
            # an exception when the tmp dir is removed
            sim.close_log_files()

            self.assertIs(sim, sample.simulations.get_key_value(0))
            self.assertIsInstance(sim.detector, Detector)
            self.assertIsInstance(sim.run, Run)
            self.assertEqual("bar", sim.name)
            self.assertEqual(request, sim.request)
            self.assertEqual(sample, sim.sample)

            # ElementSimulation
            rec_elem = RecoilElement(
                Element.from_string("Fe"), [Point((1, 1))], name="recoil_name")
            elem_sim = sim.add_element_simulation(rec_elem)
            self.assertIs(elem_sim, sim.element_simulations[0])
            elem_sim.number_of_preions = 2
            elem_sim.number_of_ions = 3
            self.assertEqual(request, elem_sim.request)
            self.assertEqual("Fe-Default", elem_sim.get_full_name())

            # Some pre-simulation checks
            self.assertIsNot(sim.target, request.default_target)
            self.assertIsNot(elem_sim, request.default_element_simulation)
            self.assertIsNot(sim.detector, request.default_detector)
            self.assertIsNot(sim.run, request.default_run)
            self.assertIsNot(sim.run.beam, request.default_run.beam)
            self.assertNotEqual(
                elem_sim.number_of_ions,
                request.default_element_simulation.number_of_ions)

            self.assert_expected_settings(elem_sim, request, sim)
예제 #9
0
 def get(url, params=None):
     if params is None:
         params = {}
     params['apiKey'] = NewsAPI.API_KEY
     return Request.get(url, params)
예제 #10
0
 def get(url, params=None):
     if params is None:
         params = {}
     params['token'] = Tiingo.TOKEN
     return Request.get(url, params)