def test_group(self): request = GroupRequest() request.namePrefix = '/' handler = MasterHandler(EphemeralStore()) response = handler.group(request) self.assertEqual(1, len(response.counts)) self.assertEqual(1, response.counts.values()[0])
def _get_job_names(self, workflow_name, instance, state): """Return list of job names in a given workflow instance and state. E.g., assume the following tokens are stored in the master: /workflow/some_workflow/12345/waiting/some_waiting_job /workflow/some_workflow/12345/waiting/some_other_waiting_job /workflow/some_workflow/12345/runnable/some_runnable_job the method called with workflow_name=some_workflow, instance=12345, state=waiting will return [some_waiting_job, some_other_waiting_job]. """ request = GroupRequest() name = Name() name.workflow = workflow_name name.instance = instance name.job_state = state request.namePrefix = name.get_job_state_prefix() request.groupSuffix = Name.DELIMITER response = self._client.group(request) job_names = [] if response.counts: for job_name in response.counts.keys(): name = Name.from_job_token_name(job_name) job_names.append(name.job) return job_names
def get_workflow_names(self): """Return list of workflow names.""" request = GroupRequest() request.namePrefix = Name.WORKFLOW_PREFIX request.groupSuffix = Name.DELIMITER response = self._client.group(request) workflow_names = [] if response.counts: for prefix in response.counts.keys(): name = Name.from_workflow_prefix(prefix) if name.workflow: workflow_names.append(name.workflow) return workflow_names
def get_workflow_instances(self, workflow_name): """Return list of instances of a given workflow.""" request = GroupRequest() name = Name() name.workflow = workflow_name request.namePrefix = name.get_workflow_prefix() request.groupSuffix = Name.DELIMITER response = self._client.group(request) instance_names = [] if response.counts: for prefix in response.counts.keys(): name = Name.from_instance_prefix(prefix) if name.instance: instance_names.append(name.instance) return instance_names
def get_event_names(self, workflow_name, instance, job, input_name): """Return names of events under a workflow instance, job, and input.""" request = GroupRequest() name = Name() name.workflow = workflow_name name.instance = instance name.job = job name.input = input_name request.namePrefix = name.get_input_prefix() request.groupSuffix = Name.DELIMITER response = self._client.group(request) events = [] if response.counts: for event in response.counts.keys(): name = Name.from_event_token_name(event) events.append(name.event) return events
def test_group(self): request = GroupRequest() request.namePrefix = '/some_dir/' request.groupSuffix = '/' transaction = GroupTransaction() transaction.prepare(request) response = transaction.commit(self._trie, self._get_blessed_version(), self._store) expected_groups = set() for i in range(0, 10): expected_groups.add('/some_dir/some_token_%d' % i) groups = set() for group, count in response.counts.iteritems(): groups.add(group) self.assertEqual(11, count) self.assertEqual(expected_groups, groups)