コード例 #1
0
def test_wait_for_completion(mocker):
    workflow_status_mock = MagicMock()
    workflow_status_mock.phase = 'Succeeded'
    get_workflow_mock = mocker.patch('platform_resources.workflow.ArgoWorkflow.get', return_value=workflow_status_mock)

    test_workflow = ArgoWorkflow()
    test_workflow.wait_for_completion()

    assert get_workflow_mock.call_count == 1
コード例 #2
0
def test_wait_for_completion_failure(mocker):
    workflow_status_mock = MagicMock()
    workflow_status_mock.phase = 'Failed'
    get_workflow_mock = mocker.patch('platform_resources.workflow.ArgoWorkflow.get', return_value=workflow_status_mock)

    test_workflow = ArgoWorkflow()
    with pytest.raises(RuntimeError):
        test_workflow.wait_for_completion()

    assert get_workflow_mock.call_count == 1
コード例 #3
0
ファイル: test_workflow.py プロジェクト: hzjai0624/nauta
def test_set_parameters_error():
    test_workflow = ArgoWorkflow()
    test_workflow.body = {
        'spec': {
            'arguments': {
                'parameters': [{
                    'name': 'test-param-1',
                    'value': 'test-value-1'
                }, {
                    'name': 'test-param-2'
                }]
            }
        }
    }

    with pytest.raises(KeyError):
        test_workflow.parameters = {'test-param-1': 'new-value'}
コード例 #4
0
ファイル: test_workflow.py プロジェクト: hzjai0624/nauta
def test_parameters():
    test_workflow = ArgoWorkflow()
    test_workflow.body = {
        'spec': {
            'arguments': {
                'parameters': [{
                    'name': 'test-param-1',
                    'value': 'test-value-1'
                }, {
                    'name': 'test-param-2',
                    'value': 'test-value-2'
                }]
            }
        }
    }

    assert test_workflow.parameters == {
        'test-param-1': 'test-value-1',
        'test-param-2': 'test-value-2'
    }
コード例 #5
0
ファイル: test_export.py プロジェクト: pnijhara/nauta
from cli_text_consts import ModelExportCmdTexts as Texts
from commands.model.common import workflow_description
from commands.model.export import export
from platform_resources.workflow import ArgoWorkflow, QUEUED_PHASE

FEM_NAME = "EXPORT_1"
SEM_NAME = "EXPORT_2"
FEM_PARAMETERS = "PARAMS_1"
SEM_PARAMETERS = "PARAMS_2"

FEM_START_DATE = '2000-01-01'
FEM_NAMESPACE = 'test-namespace'

TEST_AGROWORKFLOW = ArgoWorkflow(name=FEM_NAME,
                                 started_at=FEM_START_DATE,
                                 finished_at=None,
                                 namespace=FEM_NAMESPACE,
                                 phase=None)

TWO_MODEL_OUTPUT = [
    workflow_description(name=FEM_NAME, parameters=FEM_PARAMETERS),
    workflow_description(name=SEM_NAME, parameters=SEM_PARAMETERS)
]


def setup_mocks(mocker):
    mocker.patch('commands.model.export.get_kubectl_current_context_namespace',
                 return_value='fake-namespace')
    mocker.patch('platform_resources.workflow.ArgoWorkflow.from_yaml',
                 return_value=mocker.MagicMock())
    mocker.patch('platform_resources.workflow.ArgoWorkflow.get',
コード例 #6
0
# limitations under the License.
#

from unittest.mock import MagicMock

import pytest
from click.testing import CliRunner
from kubernetes.client import CustomObjectsApi

from commands.workflow.logs import logs
from cli_text_consts import WorkflowLogsTexts as Texts
from logs_aggregator.k8s_log_entry import LogEntry
from platform_resources.workflow import ArgoWorkflow

FAKE_WORKFLOW = ArgoWorkflow(
    name='fake-workflow',
    namespace='fake-namespace',
    k8s_custom_object_api=MagicMock(spec=CustomObjectsApi))

FAKE_LOGS = [
    LogEntry(date='2018-04-17T09:28:39+00:00',
             content='Warning: Unable to load '
             '/usr/share/zoneinfo/right/Factory as time zone. Skipping it.\n',
             pod_name='understood-gnat-mysql-868b556f8f-lwdr9',
             namespace='default'),
    LogEntry(date='2018-04-17T09:28:49+00:00',
             content='MySQL init process done. Ready for start up.\n',
             pod_name='understood-gnat-mysql-868b556f8f-lwdr9',
             namespace='default')
]

コード例 #7
0
# limitations under the License.
#

from unittest.mock import MagicMock

import pytest
from click.testing import CliRunner
from kubernetes.client import CustomObjectsApi

from commands.workflow.view import view
from cli_text_consts import WorkflowViewTexts as Texts
from platform_resources.workflow import ArgoWorkflow

FAKE_WORKFLOW = ArgoWorkflow(
    name='fake-workflow',
    namespace='fake-namespace',
    k8s_custom_object_api=MagicMock(spec=CustomObjectsApi),
    status={'phase': 'Succeeded'})

FAKE_WORKFLOW_PATH = '/bla/workflow.yaml'


class WorkflowViewMocks:
    def __init__(self, mocker):
        self.get_namespace = mocker.patch(
            'commands.workflow.view.get_kubectl_current_context_namespace',
            return_value='fake-namespace')
        self.get_workflow = mocker.patch(
            'commands.workflow.view.ArgoWorkflow.get',
            return_value=FAKE_WORKFLOW)
コード例 #8
0
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

import pytest
from unittest.mock import MagicMock, mock_open, patch
from typing import List

from platform_resources.workflow import ArgoWorkflow

workflow_w_two_param = ArgoWorkflow()
workflow_w_two_param.body = {'spec': {'arguments': {'parameters': [{'name': 'test-param-1', 'value': 'test-value-1'},
                                                                   {'name': 'test-param-2', 'value': 'test-value-2'}]}}}

workflow_wo_value = ArgoWorkflow()
workflow_wo_value.body = {'spec': {'arguments': {'parameters': [{'name': 'test-param-1', 'value': 'test-value-1'},
                                                                {'name': 'test-param-2'}]}}}

process_template = '''
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
  generateName: process-template-
spec:
  entrypoint: process-template
  templates:
コード例 #9
0
ファイル: test_status.py プロジェクト: pnijhara/nauta
import pytest
from click.testing import CliRunner
from kubernetes.client import CustomObjectsApi

from commands.model.status import status
from cli_text_consts import ModelStatusCmdTexts as Texts
from platform_resources.workflow import ArgoWorkflow, ArgoWorkflowStep

MODEL_STEPS = [
    ArgoWorkflowStep(name="model1", phase="Running"),
    ArgoWorkflowStep(name="model2", phase="Failed")
]

MODEL = ArgoWorkflow(name='fake-workflow',
                     namespace='fake-namespace',
                     k8s_custom_object_api=MagicMock(spec=CustomObjectsApi),
                     phase='Succeeded',
                     steps=MODEL_STEPS)

BUILD_MODEL = ArgoWorkflow(
    name='fake-workflow',
    namespace='fake-namespace',
    k8s_custom_object_api=MagicMock(spec=CustomObjectsApi),
    phase='Succeeded',
    steps=MODEL_STEPS,
    body={'spec': {
        'meta-data': [{
            'labels': {
                'type': ['buildctl']
            }
        }]
コード例 #10
0
ファイル: test_status.py プロジェクト: IntuitionMachine/nauta
import pytest
from click.testing import CliRunner
from kubernetes.client import CustomObjectsApi

from commands.model.status import status
from cli_text_consts import ModelStatusCmdTexts as Texts
from platform_resources.workflow import ArgoWorkflow, ArgoWorkflowStep

MODEL_STEPS = [
    ArgoWorkflowStep(name="model1", phase="Running"),
    ArgoWorkflowStep(name="model2", phase="Failed")
]

MODEL = ArgoWorkflow(name='fake-workflow',
                     namespace='fake-namespace',
                     k8s_custom_object_api=MagicMock(spec=CustomObjectsApi),
                     phase='Succeeded',
                     steps=MODEL_STEPS)


class ModelStatusMocks:
    def __init__(self, mocker):
        self.get_namespace = mocker.patch(
            'commands.model.status.get_kubectl_current_context_namespace',
            return_value='fake-namespace')
        self.get_workflow = mocker.patch(
            'commands.model.status.ArgoWorkflow.get', return_value=MODEL)


@pytest.fixture()
def status_mocks(mocker) -> ModelStatusMocks:
コード例 #11
0
from commands.model.status import status
from cli_text_consts import ModelStatusCmdTexts as Texts
from platform_resources.workflow import ArgoWorkflow, ArgoWorkflowStep

MODEL_STEPS = [
    ArgoWorkflowStep(name="model1", phase="Running"),
    ArgoWorkflowStep(name="model2", phase="Failed")
]

MODEL = ArgoWorkflow(name='fake-workflow',
                     namespace='fake-namespace',
                     k8s_custom_object_api=MagicMock(spec=CustomObjectsApi),
                     phase='Succeeded',
                     steps=MODEL_STEPS,
                     body={
                         'spec': {
                             'templates': [{
                                 'container': {
                                     'command': ['other command']
                                 }
                             }]
                         }
                     })

BUILD_MODEL = ArgoWorkflow(
    name='fake-workflow',
    namespace='fake-namespace',
    k8s_custom_object_api=MagicMock(spec=CustomObjectsApi),
    phase='Succeeded',
    steps=MODEL_STEPS,
    body={'spec': {
        'templates': [{