def test_execute_a_workflow_from_loaded_workflowState(self): workflowState = workflowRunner.executeAsync(self.workflow) result_old = workflowState.findPortState( self.multiplyStep1.outputPorts['product']).getValue() resID = workflowState.save() bam = caeml.common.states.WorkflowState.load(resID) workflowStateNew = workflowRunner.executeAsync(bam.workflow) result = workflowStateNew.stepStates['finalMulti'].outputPortStates[ 'product'].getValue() self.assertEqual( result, self.exp, "Error! Wrong Result expected {:.2f} got {:.2f}".format( self.exp, result))
def test_geo_to_msh_py_2(self): step_file_path = os.path.join(os.path.dirname(__file__), 'test_data', 'baseketball_part_colored_partly.step') workflow = workflowBuilder.createWorkflow('MeshingTestWorkflow') stepStep = workflowBuilder.createStep(name='stepAnalyze', parent=workflow, process=StepAnalyzer()) meshGeoStep = workflowBuilder.createStep(name='geoStep', parent=workflow, process=SurfaceGroupsToGeo()) meshStep = workflowBuilder.createStep(name='meshStep', parent=workflow, process=MeshGeoGmsh()) stepStep.inputPorts['input_step'].fixed_value = step_file_path meshStep.inputPorts['mergedFile'].fixed_value = step_file_path meshStep.inputPorts['clscale'].fixed_value = 1. workflowBuilder.connectPorts(stepStep.outputPorts['step'], meshGeoStep.inputPorts['geom_desc']) workflowBuilder.connectPorts(meshGeoStep.outputPorts['geo_file'], meshStep.inputPorts['geo']) aWorkflowState = workflowRunner.executeAsync(workflow) vertsCount = aWorkflowState.findPortState( meshStep.outputPorts['vertCount']).getValue() elemCount = aWorkflowState.findPortState( meshStep.outputPorts['elemCount']).getValue() self.assertGreater(vertsCount, 0, "No Vertices after meshing") self.assertGreater(elemCount, 0, "No Elements after meshing")
def test2_WorkflowPythonTool(self): # new workflow aWorkflow = caeml.common.workflow.Workflow() # add new workflow steps # aCmdAddTool = caeml.tools.generated_tools.add() aStatsTool = caeml.tools.statsFilePython.statsFileTool() aStats = workflowBuilder.createStep(name='step1', process=aStatsTool, parent=aWorkflow) aSum = workflowBuilder.createToolStep('add', aWorkflow) # set values aStats.inputPorts['data'].fixed_value = [1, 2, 3, 4, 5, 6, 7] # connect workflowBuilder.connectPorts(aStats.outputPorts['max'], aSum.inputPorts['addend1']) workflowBuilder.connectPorts(aStats.outputPorts['min'], aSum.inputPorts['addend2']) # print(yaml.dump(aWorkflow)) state = workflowRunner.executeAsync(aWorkflow) x = state.findPortState(aSum.outputPorts['sum']).getEvaluation() self.assertEqual(x, 8)
def test_execute_a_recently_built_workflow(self): workflowState = workflowRunner.executeAsync(self.workflow) result = workflowState.findPortState( self.multiplyStep1.outputPorts['product']).getValue() self.assertEqual( result, self.exp, "Error! Wrong Result expected {:.2f} got {:.2f}".format( self.exp, result))
def test_execute_a_recently_built_workflow(self): workflowState = workflowRunner.executeAsync(self.workflow) assert (isinstance(workflowState, caeml.common.states.WorkflowState)) result = float(workflowState.stepStates['step3']. outputPortStates['product'].getValue()) self.assertEqual( result, self.exp, "Error! Wrong Result expected {:.2f} got {:.2f}".format( self.exp, result))
def test_execute_a_workflow_from_db(self): id = self.workflow.save() bam = caeml.common.workflow.Workflow.load(id) workflowState = workflowRunner.executeAsync(bam) result = float(workflowState.stepStates['step3']. outputPortStates['product'].getValue()) self.assertEqual( result, self.exp, "Error! Wrong Result expected {:.2f} got {:.2f}".format( self.exp, result))
def test_execute_a_loaded_workflow(self): id = self.workflow.save() bam = caeml.common.workflow.Workflow.load(id) workflowState = workflowRunner.executeAsync(bam) multiplyStep1Loaded = bam.steps[ self.multiplyStep1.name].outputPorts['product'] result = workflowState.findPortState(multiplyStep1Loaded).getValue() self.assertEqual( result, self.exp, "Error! Wrong Result expected {:.2f} got {:.2f}".format( self.exp, result))
def test_execute_a_workflow_from_loaded_workflowState(self): workflowState = workflowRunner.executeAsync(self.workflow) assert (isinstance(workflowState, caeml.common.states.WorkflowState)) result = float(workflowState.stepStates['step3']. outputPortStates['product'].getValue()) self.assertEqual( result, result, "Error! Wrong Result expected {:.2f} got {:.2f}".format( self.exp, result)) # error: this writes workflow steps with processes as dicts resID = workflowState.save() bam = caeml.common.states.WorkflowState.load(resID) workflowStateNew = workflowRunner.executeAsync(bam.workflow) result = float(workflowStateNew.stepStates['step3']. outputPortStates['product'].getValue()) self.assertEqual( result, self.exp, "Error! Wrong Result expected {:.2f} got {:.2f}".format( self.exp, result))
def test_workflow_in_workflow(self): """Test workflow: add(1, 2) => (( add(x, 3) => multi(x, 4) => )) add(x, 5) 3 => add(3,3)=6 => multi(6,4)=24 => add(24,5)=29""" # create nested workflow with one input and one output parameter aWorkflowABC = workflowBuilder.createWorkflow( 'ArtificialDemoTestCase-aWorkflowABC') sumStepA = workflowBuilder.createToolStep(toolId='caeml.tools.add.add', parent=aWorkflowABC) sumStepA.inputPorts['addend1'].fixed_value = 3 sumStepA.inputPorts['addend2'].exposed_as = 'IN' multiStepB = workflowBuilder.createToolStep(toolId='multiply', parent=aWorkflowABC) multiStepB.inputPorts['factor2'].fixed_value = 4 workflowBuilder.connectPorts(sumStepA.outputPorts['sum'], multiStepB.inputPorts['factor1']) workflowBuilder.connectPorts(sumStepA.outputPorts['sum'], multiStepB.inputPorts['factor1']) multiStepB.outputPorts['product'].exposed_as = 'OUT' # add basic workflow steps, assign values and connect parameters aWorkflow = workflowBuilder.createWorkflow( 'ArtificialDemoTestCase-aWorkflow') sumStep1 = workflowBuilder.createToolStep(toolId='add', parent=aWorkflow) sumStep3 = workflowBuilder.createToolStep(toolId='add', parent=aWorkflow) aWorkflowABCStep = workflowBuilder.createStep(process=aWorkflowABC, parent=aWorkflow, name='aWorkflowABCStep') # assign input values sumStep1.inputPorts['addend1'].fixed_value = 1 sumStep1.inputPorts['addend2'].fixed_value = 2 sumStep3.inputPorts['addend1'].fixed_value = 5 # plug workflowABC into aWorkflow inPorts = aWorkflowABCStep.inputPorts workflowBuilder.connectPorts(sumStep1.outputPorts['sum'], inPorts['IN']) exPorts = aWorkflowABCStep.outputPorts workflowBuilder.connectPorts(exPorts['OUT'], sumStep3.inputPorts['addend2']) res = workflowRunner.executeAsync(aWorkflow) result = res.findPortState(sumStep3.outputPorts['sum']).getValue() exp = float(29) self.assertEqual( result, exp, "Error! Wrong Result expected {:.2f} got {:.2f}".format( exp, result))
def test_load_colored_step_2(self): step_file_path = os.path.join(os.path.dirname(__file__), 'test_data', 'bar2.step') self.stepStep.inputPorts['input_step'].fixed_value = step_file_path aWorkflowState = workflowRunner.executeAsync(self.workflow) x = aWorkflowState.findPortState( self.stepStep.outputPorts['step']).getValue() assert isinstance(x, StepGeometry) self.assertEqual( len(x.surfaceGroups), 3, "Error! Number of surface Groups is not correct got {:d} but expected{:d}" .format(len(x.surfaceGroups), 3)) self.assertEqual( len(x.surfaces), 6, "Error! Number of surfaces is not correct got {:d} but expected{:d}" .format(len(x.surfaces), 6))
def test1_FileBasedWorkflowTest_test1(self): # new workflow aWorkflow = workflowBuilder.createWorkflow( 'test1_FileBasedWorkflowTest_test1') # add new workflow steps # aCmdAddTool = caeml.tools.generated_tools.add() aStats = workflowBuilder.createToolStep('stats', aWorkflow) aSum = workflowBuilder.createToolStep('addFiles', aWorkflow) # set values aStats.inputPorts['data'].fixed_value = [1, 2, 3, 4, 5, 6, 7] # connect workflowBuilder.connectPorts(aStats.outputPorts['max'], aSum.inputPorts['addend1']) workflowBuilder.connectPorts(aStats.outputPorts['min'], aSum.inputPorts['addend2']) # print(yaml.dump(aWorkflow)) state = workflowRunner.executeAsync(aWorkflow) x = state.findPortState(aSum.outputPorts['sum']).getEvaluation() self.assertEqual(x, 8)