Ejemplo n.º 1
0
  def test_sample_by_process_from_history(self, mock_get_active_processes):

    fake_process_name_1 = 'fake-process-name-1'
    fake_process_name_2 = 'fake-process-name-2'
    task_path = '.'
    task_monitor = TaskMonitor(task_path, 'fake-task-id')
    fake_process_status_1 = ProcessStatus(process=fake_process_name_1)
    fake_process_status_2 = ProcessStatus(process=fake_process_name_2)
    mock_get_active_processes.return_value = [(fake_process_status_1, 1),
                                              (fake_process_status_2, 2)]

    fake_history = ResourceHistory(2)
    fake_history.add(time(), ResourceMonitorBase.FullResourceResult(
        {fake_process_status_1: ResourceMonitorBase.ProcResourceResult(ProcessSample.empty(), 1),
         fake_process_status_2: ResourceMonitorBase.ProcResourceResult(ProcessSample.empty(), 2),
         }, 10))

    task_resource_monitor = TaskResourceMonitor('fake-task-id', task_monitor,
        history_provider=self.FakeResourceHistoryProvider(fake_history))

    assert task_resource_monitor.name == 'TaskResourceMonitor[fake-task-id]'
    assert task_resource_monitor.sample_by_process(fake_process_name_1) == ProcessSample.empty()
    assert task_resource_monitor.sample_by_process(fake_process_name_2) == ProcessSample.empty()

    _, sample = task_resource_monitor.sample()
    assert sample.num_procs == 3  # 1 pid in fake_process_status_1 and 2 in fake_process_status_2
    assert sample.process_sample == ProcessSample.empty()
    assert sample.disk_usage == 10
    assert mock_get_active_processes.mock_calls == [mock.call(task_monitor),
        mock.call(task_monitor)]
Ejemplo n.º 2
0
def test_process_tree_collector(mock_process_iter):
  collector = ProcessTreeCollector(None)
  mock_process_iter.side_effect = psutil.Error
  collector.sample()
  assert collector.value == ProcessSample.empty()
  mock_process_iter.side_effect = IOError
  collector.sample()
  assert collector.value == ProcessSample.empty()
Ejemplo n.º 3
0
def test_process_tree_collector(mock_process_iter):
    collector = ProcessTreeCollector(None)
    mock_process_iter.side_effect = psutil.Error
    collector.sample()
    assert collector.value == ProcessSample.empty()
    mock_process_iter.side_effect = IOError
    collector.sample()
    assert collector.value == ProcessSample.empty()
Ejemplo n.º 4
0
    def test_null_sample(self):
        monitor = NullTaskResourceMonitor()
        monitor.start()

        null_aggregate = (0, ProcessSample.empty(), 0)

        assert monitor.sample()[1] == null_aggregate
        assert monitor.sample_at(time())[1] == null_aggregate
        assert monitor.sample_by_process(
            "any_process") == ProcessSample.empty()

        monitor.kill()
Ejemplo n.º 5
0
 def _get_process_resource_consumption(self, task_id, process_name):
   if task_id not in self.active_tasks:
     log.debug("Task %s not found in active tasks" % task_id)
     return ProcessSample.empty().to_dict()
   sample = self.active_tasks[task_id].resource_monitor.sample_by_process(process_name).to_dict()
   log.debug('Resource consumption (%s, %s) => %s' % (task_id, process_name, sample))
   return sample
Ejemplo n.º 6
0
def _mock_resource_monitor(num_procs=0, process_sample=ProcessSample.empty(), disk_usage=0):
  mock_resource_monitor = mock.Mock(spec=ResourceMonitorBase)
  mock_resource_monitor.sample.return_value = (
      12345,  # timestamp
      ResourceMonitorBase.AggregateResourceResult(num_procs, process_sample, disk_usage))

  return mock_resource_monitor
 def _get_process_resource_consumption(self, task_id, process_name):
   if task_id not in self.active_tasks:
     log.debug("Task %s not found in active tasks" % task_id)
     return ProcessSample.empty().to_dict()
   sample = self.active_tasks[task_id].resource_monitor.sample_by_process(process_name).to_dict()
   log.debug('Resource consumption (%s, %s) => %s' % (task_id, process_name, sample))
   return sample
Ejemplo n.º 8
0
 def _sample(self, task_id):
   if task_id not in self.active_tasks:
     sample = ProcessSample.empty().to_dict()
     sample['disk'] = 0
   else:
     resource_sample = self.active_tasks[task_id].resource_monitor.sample()[1]
     sample = resource_sample.process_sample.to_dict()
     sample['disk'] = resource_sample.disk_usage
     log.debug("Got sample for task %s: %s" % (task_id, sample))
   return sample
Ejemplo n.º 9
0
  def test_sample_by_process(self, mock_get_active_processes, mock_sample):
    fake_process_name = 'fake-process-name'
    task_path = '.'
    task_monitor = TaskMonitor(task_path, 'fake-task-id')
    fake_process_status = ProcessStatus(process=fake_process_name)
    mock_get_active_processes.return_value = [(fake_process_status, 1)]
    fake_process_sample = ProcessSample.empty()
    mock_sample.return_value = fake_process_sample

    task_resource_monitor = TaskResourceMonitor('fake-task-id', task_monitor)

    assert fake_process_sample == task_resource_monitor.sample_by_process(fake_process_name)
    assert mock_get_active_processes.mock_calls == [mock.call(task_monitor)]
    assert mock_sample.mock_calls == [mock.call(
        task_resource_monitor._process_collectors[fake_process_status])]