示例#1
0
 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])
示例#2
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
示例#3
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
示例#4
0
 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])
示例#5
0
 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
示例#6
0
 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
示例#7
0
 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
示例#8
0
 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
示例#9
0
 def test_group_empty(self):
     request = GroupRequest()
     transaction = GroupTransaction()
     # Make sure that prepare and commit do not throw an exception.
     transaction.prepare(request)
     transaction.commit(self._trie, self._get_blessed_version(),
                        self._store)
示例#10
0
 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
示例#11
0
    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)
示例#12
0
 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
示例#13
0
    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)
示例#14
0
    def test_empty(self):
        Options = collections.namedtuple('args', 'recursive command_args')
        options = Options(recursive=False, command_args=['/some_path'])
        command = Ls()
        command.prepare(options)
        client = mock.Mock()
        response = GroupResponse()
        client.group.return_value = response

        output = command.execute(client, None)

        request = GroupRequest(namePrefix='/some_path', groupSuffix='/')
        client.group.assert_called_once_with(request)
        self.assertEqual('total 0\n', output)
示例#15
0
 def execute(self, client, store):
     output = ''
     if self._recursive:
         suffix = None
     else:
         suffix = Name.DELIMITER
     request = GroupRequest(namePrefix=self._prefix, groupSuffix=suffix)
     response = client.group(request)
     if not response.counts:
         output += 'total 0\n'
     else:
         output += 'total %d\n' % len(response.counts)
         for group in sorted(response.counts.keys()):
             output += '%s [%d token(s)]\n' % (group,
                                               response.counts[group])
     return output
示例#16
0
 def _verify_token_names(self, names):
     request = GroupRequest(namePrefix='/workflow/')
     response = self._client.group(request)
     names = sorted(names)
     counts = sorted(response.counts.keys())
     self.assertEqual(names, counts)