Exemple #1
0
    def test_create_task_by_dictionary(self):

        task = self.dal.task.create(Task(self.task_input_dict))

        assert task.id
        assert task.command == self.task_input_dict['command']
        assert isinstance(task.start_time, datetime)
        assert isinstance(task.end_time, datetime)
        assert isinstance(task.duration, float)
        assert isinstance(task.created_at, datetime)
        assert isinstance(task.updated_at, datetime)

        # Create a new Task and test if None values work and not same as first
        test_task_input_dict = self.task_input_dict.copy()
        test_task_input_dict['start_time'] = None
        test_task_input_dict['end_time'] = None
        test_task_input_dict['duration'] = None

        task_2 = self.dal.task.create(Task(test_task_input_dict))

        assert task_2.id != task.id
        assert not task_2.start_time
        assert not task_2.end_time
        assert not task_2.duration

        test_task_input_dict_1 = self.task_input_dict.copy()
        test_task_input_dict_1['id'] = "task_id"
        task_3 = self.dal.task.create(Task(test_task_input_dict_1))

        assert task_3.id == test_task_input_dict_1['id']
Exemple #2
0
    def test_query_tasks(self):
        task = self.dal.task.create(Task(self.task_input_dict))

        assert len(self.dal.task.query({"id": task.id})) == 1
        _ = self.dal.task.create(Task(self.task_input_dict))
        assert len(
            self.dal.task.query({"command":
                                 self.task_input_dict['command']})) == 2
Exemple #3
0
    def test_sort_tasks(self):
        task_1 = self.dal.task.create(Task(self.task_input_dict))
        task_2 = self.dal.task.create(Task(self.task_input_dict))

        # Sorting of snapshot in descending
        items = self.dal.task.query(
            {"model_id": self.task_input_dict["model_id"]},
            sort_key="created_at",
            sort_order="descending")
        assert items[0].created_at == task_2.created_at

        # Sorting of snapshot in ascending
        items = self.dal.task.query(
            {"model_id": self.task_input_dict["model_id"]},
            sort_key="created_at",
            sort_order="ascending")
        assert items[0].created_at == task_1.created_at

        # Wrong order being passed in
        failed = False
        try:
            _ = self.dal.task.query(
                {"model_id": self.task_input_dict["model_id"]},
                sort_key="created_at",
                sort_order="wrong_order")
        except InvalidArgumentType:
            failed = True
        assert failed

        # Wrong key and order being passed in
        failed = False
        try:
            _ = self.dal.task.query(
                {"model_id": self.task_input_dict["model_id"]},
                sort_key="wrong_key",
                sort_order="wrong_order")
        except InvalidArgumentType:
            failed = True
        assert failed

        # wrong key and right order being passed in
        expected_items = self.dal.task.query(
            {"model_id": self.task_input_dict["model_id"]},
            sort_key="created_at",
            sort_order="ascending")
        items = self.dal.task.query(
            {"model_id": self.task_input_dict["model_id"]},
            sort_key="wrong_key",
            sort_order="ascending")
        expected_ids = [item.id for item in expected_items]
        ids = [item.id for item in items]
        assert set(expected_ids) == set(ids)
Exemple #4
0
 def test_query_tasks_range_query(self):
     _ = self.dal.task.create(Task(self.task_input_dict))
     _ = self.dal.task.create(Task(self.task_input_dict))
     _ = self.dal.task.create(Task(self.task_input_dict))
     tasks = self.dal.task.query({},
                                 sort_key="created_at",
                                 sort_order="descending")
     result = self.dal.task.query({
         "created_at": {
             "$lt": tasks[1].created_at.strftime('%Y-%m-%dT%H:%M:%S.%fZ')
         }
     })
     assert len(tasks) == 3
     assert len(result) == 1
Exemple #5
0
 def test_str(self):
     task_entity = Task(self.input_dict)
     for k, v in self.input_dict.items():
         if k not in [
                 "model_id", "data_file_path_map", "data_directory_path_map"
         ]:
             assert str(v) in str(task_entity)
Exemple #6
0
    def create(self, dictionary):
        """Create Task object

        Parameters
        ----------
        dictionary : dict
            command : str
                full command used

        Returns
        -------
        Task
            object entity for Task (datmo.core.entity.task.Task)
        """

        # Validate Inputs

        create_dict = {
            "model_id": self.model.id,
            "session_id": self.current_session.id
        }

        ## Required args
        required_args = ["command"]
        for required_arg in required_args:
            # Add in any values that are
            if required_arg in dictionary and dictionary[
                    required_arg] is not None:
                create_dict[required_arg] = dictionary[required_arg]
            else:
                raise RequiredArgumentMissing(
                    __("error", "controller.task.create.arg", required_arg))

        # Create Task
        return self.dal.task.create(Task(create_dict))
Exemple #7
0
 def test_get_by_shortened_id_task(self):
     task = self.dal.task.create(Task(self.task_input_dict))
     result = self.dal.task.get_by_shortened_id(task.id[:10])
     assert task.id == result.id
     assert task.model_id == result.model_id
     assert task.command == result.command
     assert task.start_time == result.start_time
     assert task.end_time == result.end_time
     assert task.duration == result.duration
Exemple #8
0
    def test_delete_task(self):
        task = self.dal.task.create(Task(self.task_input_dict))

        self.dal.task.delete(task.id)
        deleted = False
        try:
            self.dal.task.get_by_id(task.id)
        except EntityNotFound:
            deleted = True
        assert deleted
Exemple #9
0
    def test_get_by_id_task_new_driver_instance(self):
        task = self.dal.task.create(Task(self.task_input_dict))

        # create new dal with new driver instance (success)
        new_driver_instance = BlitzDBDALDriver("file", self.temp_dir)
        new_dal_instance = LocalDAL(new_driver_instance)
        new_task_1 = new_dal_instance.task.get_by_id(task.id)
        assert new_task_1.id == task.id
        # create new dal instance with same driver (success)
        new_dal_instance = LocalDAL(self.datadriver)
        new_task_2 = new_dal_instance.task.get_by_id(task.id)
        assert new_task_2.id == task.id
Exemple #10
0
    def test_update_task(self):
        task = self.dal.task.create(Task(self.task_input_dict))

        # Update required and optional parameters
        updated_task_input_dict = self.task_input_dict.copy()
        updated_task_input_dict['id'] = task.id
        updated_task_input_dict['command'] = "task_new"
        updated_task_input_dict['ports'] = ["9000:9000"]
        updated_task = self.dal.task.update(updated_task_input_dict)

        assert task.id == updated_task.id
        assert task.updated_at < updated_task.updated_at
        assert updated_task.command == updated_task_input_dict['command']
        assert updated_task.ports == updated_task_input_dict['ports']
Exemple #11
0
    def create(self):
        """Create Task object

        Returns
        -------
        Task
            object entity for Task (datmo.core.entity.task.Task)
        """

        # Validate Inputs
        create_dict = {
            "model_id": self.model.id,
            "session_id": self.current_session.id
        }

        # Create Task
        return self.dal.task.create(Task(create_dict))
Exemple #12
0
    def create(self):
        """Create Task object

        Returns
        -------
        Task
            object entity for Task (datmo.core.entity.task.Task)
        """

        # Validate Inputs
        create_dict = {
            "model_id": self.model.id,
        }

        try:
            # Create Task
            self.spinner.start()
            task_obj = self.dal.task.create(Task(create_dict))
        finally:
            self.spinner.stop()
        return task_obj
Exemple #13
0
    def test_init_with_id(self):
        self.input_dict['id'] = "test"
        task_entity = Task(self.input_dict)

        for k, v in self.input_dict.items():
            assert getattr(task_entity, k) == v
        assert task_entity.before_snapshot_id == None
        assert task_entity.ports == None
        assert task_entity.interactive == False
        assert task_entity.detach == False
        assert task_entity.task_dirpath == None
        assert task_entity.log_filepath == None
        assert task_entity.start_time == None

        # Post-Execution
        assert task_entity.after_snapshot_id == None
        assert task_entity.run_id == None
        assert task_entity.logs == None
        assert task_entity.status == None
        assert task_entity.results == None
        assert task_entity.end_time == None
        assert task_entity.duration == None
        assert task_entity.created_at
        assert task_entity.updated_at
Exemple #14
0
    def test_to_dictionary(self):
        task_entity = Task(self.input_dict)
        output_dict = task_entity.to_dictionary()

        for k, v in output_dict.items():
            assert v == getattr(task_entity, k)
Exemple #15
0
    def test_eq(self):
        task_entity_1 = Task(self.input_dict)
        task_entity_2 = Task(self.input_dict)

        assert task_entity_1 == task_entity_2
Exemple #16
0
 def test_str(self):
     task_entity = Task(self.input_dict)
     for k, v in self.input_dict.items():
         if k != "model_id":
             assert str(v) in str(task_entity)