Example #1
0
async def test_update_contact_no_contact_data(data_store_mgr: DataStoreMgr):
    """Updating contact with no contact data results in default values
    for the workflow in the data store, like the API version set to zero."""
    w_id = 'user|workflow_id'
    api_version = 0
    await data_store_mgr.register_workflow(w_id=w_id)
    data_store_mgr.update_contact(w_id=w_id, contact_data=None)
    assert api_version == data_store_mgr.data[w_id]['workflow'].api_version
Example #2
0
async def test_update_contact_with_contact_data(data_store_mgr: DataStoreMgr):
    """Updating contact with contact data sets the values int he data store
    for the workflow."""
    w_id = 'user|workflow_id'
    api_version = 1
    await data_store_mgr.register_workflow(w_id=w_id)
    contact_data = {
        'name': 'workflow_id',
        'owner': 'cylc',
        CFF.HOST: 'localhost',
        CFF.PORT: 40000,
        CFF.API: api_version
    }
    data_store_mgr.update_contact(w_id=w_id, contact_data=contact_data)
    assert api_version == data_store_mgr.data[w_id]['workflow'].api_version
async def test_update_contact_no_workflow(
    data_store_mgr: DataStoreMgr
):
    """Ensure _update_contact doesn't error if the workflow is missing.

    This can happen if the workflow is removed.
    """
    assert not data_store_mgr._update_contact(w_id='elephant')
Example #4
0
async def test_stop_workflow(data_store_mgr: DataStoreMgr):
    """Telling a data store to stop a workflow, is the same as updating
    contact with no contact data."""
    w_id = 'user|workflow_id'
    api_version = 1
    await data_store_mgr.register_workflow(w_id=w_id)
    contact_data = {
        'name': 'workflow_id',
        'owner': 'cylc',
        CFF.HOST: 'localhost',
        CFF.PORT: 40000,
        CFF.API: api_version
    }
    data_store_mgr.update_contact(w_id=w_id, contact_data=contact_data)
    assert api_version == data_store_mgr.data[w_id]['workflow'].api_version

    data_store_mgr.stop_workflow(w_id=w_id)
    assert data_store_mgr.data[w_id]['workflow'].api_version == 0
Example #5
0
 def __init__(self, *args, **kwargs):
     super().__init__(*args, **kwargs)
     self.workflows_mgr = WorkflowsManager(self, log=self.log)
     self.data_store_mgr = DataStoreMgr(self.workflows_mgr, self.log)
     self.resolvers = Resolvers(
         self.data_store_mgr,
         log=self.log,
         workflows_mgr=self.workflows_mgr,
     )
Example #6
0
 def __init__(self, *args, **kwargs):
     super().__init__(*args, **kwargs)
     self.executor = ProcessPoolExecutor(max_workers=self.max_workers)
     self.workflows_mgr = WorkflowsManager(self, log=self.log)
     self.data_store_mgr = DataStoreMgr(self.workflows_mgr, self.log)
     self.resolvers = Resolvers(
         self.data_store_mgr,
         log=self.log,
         executor=self.executor,
         workflows_mgr=self.workflows_mgr,
     )
Example #7
0
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.workflows_mgr = WorkflowsManager(self, log=self.log)
        self.data_store_mgr = DataStoreMgr(self.workflows_mgr, self.log)
        self.resolvers = Resolvers(
            self.data_store_mgr,
            log=self.log,
            workflows_mgr=self.workflows_mgr,
        )
        self.subscription_server = TornadoSubscriptionServer(
            schema,
            backend=CylcGraphQLBackend(),
            middleware=[IgnoreFieldMiddleware],
        )

        ioloop.IOLoop.current().add_callback(self.workflows_mgr.update)
Example #8
0
def data_store_mgr(workflows_manager: WorkflowsManager) -> DataStoreMgr:
    return DataStoreMgr(workflows_mgr=workflows_manager)