예제 #1
0
    def __create_complex_workflow(self, workflow_step_list):
        """
        Creates a burst with a complex workflow with a given list of workflow steps.
        @param workflow_step_list: a lsit of workflow steps that will be used in the
            creation of a new workflow for a new burst
        """
        burst_config = TestFactory.store_burst(self.test_project.id)

        stored_dt = datatypes_factory.DatatypesFactory()._store_datatype(
            Datatype1())

        first_step_algorithm = self.flow_service.get_algorithm_by_module_and_class(
            "tvb_test.adapters.testadapter1", "TestAdapterDatatypeInput")[0]
        metadata = {DataTypeMetaData.KEY_BURST: burst_config.id}
        kwargs = {"test_dt_input": stored_dt.gid, 'test_non_dt_input': '0'}
        operations, group = self.operation_service.prepare_operations(
            self.test_user.id, self.test_project.id, first_step_algorithm,
            first_step_algorithm.algo_group.group_category, metadata, **kwargs)

        workflows = self.workflow_service.create_and_store_workflow(
            project_id=self.test_project.id,
            burst_id=burst_config.id,
            simulator_index=0,
            simulator_id=first_step_algorithm.id,
            operations=operations)
        self.operation_service.prepare_operations_for_workflowsteps(
            workflow_step_list, workflows, self.test_user.id, burst_config.id,
            self.test_project.id, group, operations)
        #fire the first op
        if len(operations) > 0:
            self.operation_service.launch_operation(operations[0].id, False)
        return burst_config.id
예제 #2
0
    def test_filter_sql_equivalent(self):
        """
        Test applying a filter on DB.
        """
        data_type = Datatype1()
        data_type.row1 = "value1"
        data_type.row2 = "value2"
        datatypes_factory.DatatypesFactory()._store_datatype(data_type)
        data_type = Datatype1()
        data_type.row1 = "value3"
        data_type.row2 = "value2"
        datatypes_factory.DatatypesFactory()._store_datatype(data_type)
        data_type = Datatype1()
        data_type.row1 = "value1"
        data_type.row2 = "value3"
        datatypes_factory.DatatypesFactory()._store_datatype(data_type)

        test_filter_1 = FilterChain(fields=[FilterChain.datatype + '._row1'],
                                    operations=['=='],
                                    values=['value1'])
        test_filter_2 = FilterChain(fields=[FilterChain.datatype + '._row1'],
                                    operations=['=='],
                                    values=['vaue2'])
        test_filter_3 = FilterChain(fields=[
            FilterChain.datatype + '._row1', FilterChain.datatype + '._row2'
        ],
                                    operations=['==', 'in'],
                                    values=["value1", ['value1', 'value2']])
        test_filter_4 = FilterChain(fields=[
            FilterChain.datatype + '._row1', FilterChain.datatype + '._row2'
        ],
                                    operations=['==', 'in'],
                                    values=["value1", ['value5', 'value6']])

        all_stored_dts = self.get_all_entities(Datatype1)
        self.assertTrue(
            len(all_stored_dts) == 3, "Expected 3 DTs to be stored for "
            "test_filte_sql_equivalent. Got %s instead." %
            (len(all_stored_dts, )))

        self._evaluate_db_filter(test_filter_1, 2)
        self._evaluate_db_filter(test_filter_2, 0)
        self._evaluate_db_filter(test_filter_3, 1)
        self._evaluate_db_filter(test_filter_4, 0)
예제 #3
0
 def test_get_project_structure(self):
     dt_factory = datatypes_factory.DatatypesFactory()
     self._create_datatypes(dt_factory, 3)
     node_json = self.project_service.get_project_structure(
         dt_factory.project, None, 'Data_State', 'Data_Subject', None)
     encoder = JSONEncoder()
     encoder.iterencode(node_json)
     # No exceptions were raised so far.
     project_dts = dao.get_datatypes_for_project(dt_factory.project.id)
     for dt in project_dts:
         self.assertTrue(
             dt.gid in node_json,
             "Should have all datatypes present in resulting json.")
예제 #4
0
 def test_retrieve_project_full(self):
     dt_factory = datatypes_factory.DatatypesFactory()
     self._create_datatypes(dt_factory, 3)
     _, ops_nr, operations, pages_no = self.project_service.retrieve_project_full(
         dt_factory.project.id)
     self.assertEqual(
         ops_nr, 1,
         "DataType Factory should only use one operation to store all it's datatypes."
     )
     self.assertEqual(
         pages_no, 1,
         "DataType Factory should only use one operation to store all it's datatypes."
     )
     resulted_dts = operations[0]['results']
     self.assertEqual(len(resulted_dts), 3,
                      "3 datatypes should be created.")