Esempio n. 1
0
    def test_malformed_experiment(self):
        fs = FileStore(self.test_root)
        exp_0 = fs.get_experiment(FileStore.DEFAULT_EXPERIMENT_ID)
        assert exp_0.experiment_id == FileStore.DEFAULT_EXPERIMENT_ID

        experiments = len(fs.list_experiments(ViewType.ALL))

        # delete metadata file.
        path = os.path.join(self.test_root, str(exp_0.experiment_id), "meta.yaml")
        os.remove(path)
        with pytest.raises(MissingConfigException) as e:
            fs.get_experiment(FileStore.DEFAULT_EXPERIMENT_ID)
            assert e.message.contains("does not exist")

        assert len(fs.list_experiments(ViewType.ALL)) == experiments - 1
Esempio n. 2
0
 def test_list_experiments_paginated(self):
     fs = FileStore(self.test_root)
     for _ in range(10):
         fs.create_experiment(random_str(12))
     exps1 = fs.list_experiments(max_results=4, page_token=None)
     self.assertEqual(len(exps1), 4)
     self.assertIsNotNone(exps1.token)
     exps2 = fs.list_experiments(max_results=4, page_token=None)
     self.assertEqual(len(exps2), 4)
     self.assertIsNotNone(exps2.token)
     self.assertNotEqual(exps1, exps2)
     exps3 = fs.list_experiments(max_results=500, page_token=exps2.token)
     self.assertLessEqual(len(exps3), 500)
     if len(exps3) < 500:
         self.assertIsNone(exps3.token)
Esempio n. 3
0
 def test_list_experiments(self):
     fs = FileStore(self.test_root)
     for exp in fs.list_experiments():
         exp_id = exp.experiment_id
         self.assertTrue(exp_id in self.experiments)
         self.assertEqual(exp.name, self.exp_data[exp_id]["name"])
         self.assertEqual(exp.artifact_location, self.exp_data[exp_id]["artifact_location"])
Esempio n. 4
0
 def test_create_first_experiment(self):
     fs = FileStore(self.test_root)
     fs.list_experiments = mock.Mock(return_value=[])
     fs._create_experiment_with_id = mock.Mock()
     fs.create_experiment(random_str(1))
     fs._create_experiment_with_id.assert_called_once()
     experiment_id = fs._create_experiment_with_id.call_args[0][1]
     self.assertEqual(experiment_id, FileStore.DEFAULT_EXPERIMENT_ID)
Esempio n. 5
0
    def test_mismatching_experiment_id(self):
        fs = FileStore(self.test_root)
        exp_0 = fs.get_experiment(FileStore.DEFAULT_EXPERIMENT_ID)
        assert exp_0.experiment_id == FileStore.DEFAULT_EXPERIMENT_ID

        experiments = len(fs.list_experiments(ViewType.ALL))

        # mv experiment folder
        target = "1"
        path_orig = os.path.join(self.test_root, str(exp_0.experiment_id))
        path_new = os.path.join(self.test_root, str(target))
        os.rename(path_orig, path_new)

        with pytest.raises(MlflowException) as e:
            fs.get_experiment(FileStore.DEFAULT_EXPERIMENT_ID)
            assert e.message.contains("Could not find experiment with ID")

        with pytest.raises(MlflowException) as e:
            fs.get_experiment(target)
            assert e.message.contains("does not exist")
        assert len(fs.list_experiments(ViewType.ALL)) == experiments - 1
Esempio n. 6
0
    def test_delete_restore_experiment(self):
        fs = FileStore(self.test_root)
        exp_id = self.experiments[random_int(0, len(self.experiments) - 1)]
        exp_name = self.exp_data[exp_id]["name"]

        # delete it
        fs.delete_experiment(exp_id)
        self.assertTrue(exp_id not in self._extract_ids(
            fs.list_experiments(ViewType.ACTIVE_ONLY)))
        self.assertTrue(exp_id in self._extract_ids(
            fs.list_experiments(ViewType.DELETED_ONLY)))
        self.assertTrue(
            exp_id in self._extract_ids(fs.list_experiments(ViewType.ALL)))
        self.assertEqual(
            fs.get_experiment(exp_id).lifecycle_stage, LifecycleStage.DELETED)

        # restore it
        fs.restore_experiment(exp_id)
        restored_1 = fs.get_experiment(exp_id)
        self.assertEqual(restored_1.experiment_id, exp_id)
        self.assertEqual(restored_1.name, exp_name)
        restored_2 = fs.get_experiment_by_name(exp_name)
        self.assertEqual(restored_2.experiment_id, exp_id)
        self.assertEqual(restored_2.name, exp_name)
        self.assertTrue(exp_id in self._extract_ids(
            fs.list_experiments(ViewType.ACTIVE_ONLY)))
        self.assertTrue(exp_id not in self._extract_ids(
            fs.list_experiments(ViewType.DELETED_ONLY)))
        self.assertTrue(
            exp_id in self._extract_ids(fs.list_experiments(ViewType.ALL)))
        self.assertEqual(
            fs.get_experiment(exp_id).lifecycle_stage, LifecycleStage.ACTIVE)