Skip to content

Commit

Permalink
test: add tests for orchestrator module
Browse files Browse the repository at this point in the history
Add initial unit tests for orchestrator module functions
and update orchestrator code to reflect latest wes module
refactoring.
  • Loading branch information
jaeddy committed Aug 15, 2018
1 parent 3aa5f99 commit 13c0634
Show file tree
Hide file tree
Showing 2 changed files with 75 additions and 6 deletions.
13 changes: 7 additions & 6 deletions synorchestrator/orchestrator.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,13 @@
import time
import os
import datetime as dt

from requests.exceptions import ConnectionError
from IPython.display import display, clear_output

from synorchestrator.config import wes_config, eval_config, trs_config
from synorchestrator.util import get_json, ctime2datetime, convert_timedelta
from synorchestrator.wes.client import WESClient
from wes_client.util import get_status
from synorchestrator.wes.wrapper import WES
from synorchestrator.eval import create_submission
from synorchestrator.eval import get_submission_bundle
from synorchestrator.eval import get_submissions
Expand Down Expand Up @@ -60,10 +61,10 @@ def run_submission(wes_id, submission_id):
" \n - submission ID: {}"
.format(wes_id, submission_id))

client = WESClient(wes_config()[wes_id])
run_data = client.run_workflow(submission['data']['wf'],
submission['data']['jsonyaml'],
submission['data']['attachments'])
wes_instance = WES(wes_config()[wes_id])
run_data = wes_instance.run_workflow(submission['data']['wf'],
submission['data']['jsonyaml'],
submission['data']['attachments'])
run_data['start_time'] = dt.datetime.now().ctime()
update_submission(wes_id, submission_id, 'run', run_data)
update_submission(wes_id, submission_id, 'status', 'SUBMITTED')
Expand Down
68 changes: 68 additions & 0 deletions tests/test_orchestrator.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
import mock
import pytest

from bravado.requests_client import RequestsClient
from bravado.client import SwaggerClient, ResourceDecorator
from bravado.testing.response_mocks import BravadoResponseMock

from synorchestrator.wes.wrapper import WES
from synorchestrator.orchestrator import run_submission


@pytest.fixture()
def mock_wes_config():
mock_wes_config = {
'mock_wes': {
'auth': 'auth_token',
'auth_type': 'token',
'host': '0.0.0.0:8080',
'proto': 'https'
}
}
yield mock_wes_config

@pytest.fixture()
def mock_submission(request):
mock_submission = {
'mock_sub': {
'status': '',
'data': {'wf': '',
'jsonyaml': '',
'attachments': []},
'wes_id': 'mock_wes',
'run': {}
}
}
yield mock_submission

@pytest.fixture()
def mock_wes(request):
mock_wes = mock.Mock(name='mock WES')
with mock.patch('synorchestrator.wes.wrapper.WES',
autospec=True, spec_set=True):
yield mock_wes


def test_run_submission(mock_submission,
mock_wes,
mock_wes_config,
monkeypatch):
monkeypatch.setattr('synorchestrator.orchestrator.get_submission_bundle',
lambda x,y: mock_submission['mock_sub'])
monkeypatch.setattr('synorchestrator.orchestrator.wes_config',
lambda: mock_wes_config)
monkeypatch.setattr('synorchestrator.orchestrator.WES',
lambda x: mock_wes)
monkeypatch.setattr('synorchestrator.orchestrator.update_submission',
lambda w,x,y,z: None)

mock_request = mock_submission['mock_sub']['data']
mock_wes.run_workflow.return_value = {}

test_run_data = run_submission(wes_id='mock_wes',
submission_id='mock_sub')

mock_wes.run_workflow.assert_called_once_with(mock_request['wf'],
mock_request['jsonyaml'],
mock_request['attachments'])
assert 'start_time' in test_run_data

0 comments on commit 13c0634

Please sign in to comment.