From e32043f58a2450b6a5986dc2a01f64f8b22c3992 Mon Sep 17 00:00:00 2001 From: "Yang (Gabriel) Yu" Date: Tue, 4 Sep 2018 21:02:27 +0800 Subject: Change naming and veriy test-scheduler function Changes: 1. Testing-scheduler -> Test-scheduler 2. lots of windows breaks '\r' and '^M' in files, batch changes to unix breaks '$' 3. Add ui/build Change-Id: I1f2c98ab9348460d4e68bfbfab664dae82b761ba Signed-off-by: Yang (Gabriel) Yu --- test-scheduler/server/conductorclient/__init__.py | 8 +++ .../server/conductorclient/mock_tasks.json | 13 ++++ .../server/conductorclient/mock_workflow.json | 24 ++++++++ .../server/conductorclient/run_new_workflow.py | 71 ++++++++++++++++++++++ 4 files changed, 116 insertions(+) create mode 100644 test-scheduler/server/conductorclient/__init__.py create mode 100644 test-scheduler/server/conductorclient/mock_tasks.json create mode 100644 test-scheduler/server/conductorclient/mock_workflow.json create mode 100644 test-scheduler/server/conductorclient/run_new_workflow.py (limited to 'test-scheduler/server/conductorclient') diff --git a/test-scheduler/server/conductorclient/__init__.py b/test-scheduler/server/conductorclient/__init__.py new file mode 100644 index 00000000..02647edc --- /dev/null +++ b/test-scheduler/server/conductorclient/__init__.py @@ -0,0 +1,8 @@ +############################################################################## +# Copyright (c) 2018 Huawei Technologies Co.,Ltd. and others +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## diff --git a/test-scheduler/server/conductorclient/mock_tasks.json b/test-scheduler/server/conductorclient/mock_tasks.json new file mode 100644 index 00000000..76cbedd9 --- /dev/null +++ b/test-scheduler/server/conductorclient/mock_tasks.json @@ -0,0 +1,13 @@ +{ + "task_group_1":[ + { + "name": "http_yardstick_test", + "retryCount": 3, + "timeOutSeconds": 1200, + "timeOutPolicy": "TIME_OUT_WF", + "retryLogic": "FIXED", + "retryDelaySeconds": 600, + "responseTimeOutSeconds": 3600 + } + ] +} diff --git a/test-scheduler/server/conductorclient/mock_workflow.json b/test-scheduler/server/conductorclient/mock_workflow.json new file mode 100644 index 00000000..f70573f3 --- /dev/null +++ b/test-scheduler/server/conductorclient/mock_workflow.json @@ -0,0 +1,24 @@ +{ + "name": "workflow_demo_05", + "description": "run a workflow of yardstick test service", + "version": 1, + "tasks": [ + { + "name": "http_yardstick_test", + "taskReferenceName": "ping_test", + "inputParameters": { + "http_request": { + "uri": "http://192.168.199.105:8080/greet", + "method": "GET" + } + }, + "type": "HTTP" + } + ], + "outputParameters": { + "header": "${ping_test.output.response.headers}", + "response": "${ping_test.output.response.body}", + "status": "${ping_test.output.response.statusCode}" + }, + "schemaVersion": 2 +} diff --git a/test-scheduler/server/conductorclient/run_new_workflow.py b/test-scheduler/server/conductorclient/run_new_workflow.py new file mode 100644 index 00000000..4d38b4ba --- /dev/null +++ b/test-scheduler/server/conductorclient/run_new_workflow.py @@ -0,0 +1,71 @@ +############################################################################## +# Copyright (c) 2018 Huawei Technologies Co.,Ltd. and others +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## + +from conductor import conductor +import json + + +class WorkflowMgr(object): + def __init__(self, serverAddr): + self._serverAddr = serverAddr + '/api' + self._metaDataClient = conductor.MetadataClient(self._serverAddr) + self._workflowClient = conductor.WorkflowClient(self._serverAddr) + self._tasksDefined = False + self._workflowDefined = False + self._workflowName = "" + + def setTaskDef(self, taskJson): + jsonObj = json.loads(taskJson) + print "define tasks:\n", taskJson + for (k, v) in jsonObj.items(): + self._metaDataClient.registerTaskDefs(v) + self._tasksDefined = True + + def setWorkflowDef(self, workflowJson): + jsonObj = json.loads(workflowJson) + print "define workflow:\n", workflowJson + try: + self._metaDataClient.createWorkflowDef(jsonObj) + except Exception as e: + print e + self._workflowName = jsonObj['name'] + self._workflowDefined = True + + def startWorkflow(self, param={}): + workflowId = '' + if not self._tasksDefined: + print "error: please define the task at first\n" + elif not self._workflowDefined: + print "error: please define the workflow at first\n" + else: + workflowId = self._workflowClient.startWorkflow( + self._workflowName, param) + return workflowId + + def setTaskDefFromFile(self, taskFilePath): + with open(taskFilePath, 'r') as f: + self.setTaskDef(f.read()) + + def setWorkflowFromFile(self, workflowFilePath): + with open(workflowFilePath, 'r') as f: + self.setWorkflowDef(f.read()) + + +# test demo +def main(): + serverAddr = "http://192.168.199.131:8080" + wfMgr = WorkflowMgr(serverAddr) + wfMgr.setTaskDefFromFile('mock_tasks.json') + wfMgr.setWorkflowFromFile('mock_workflow.json') + inputParam = {'input': 'fake'} + wfMgr.startWorkflow(inputParam) + + +if __name__ == "__main__": + main() -- cgit 1.2.3-korg