def test_find_worker_pid_no_daemon(mock_find_daemon_pid, mock_process_iter, mock_process):
    process_name = 'myprocess'
    dp = DaemonProcess(process_name)

    #set up mock values
    mock_find_daemon_pid.return_value = None
    mock_process.ppid.return_value = 88
    mock_process.pid = 100
    mock_process_iter.return_value = [mock_process]

    #find the worker PIDs
    result = dp.find_worker_pid()

    #check that find_worker_pid called find_daemon_pid with no arguements
    mock_find_daemon_pid.assert_called_with()

    #check list is None
    assert result == None
def test_find_worker_pid(mock_find_daemon_pid, mock_process_iter, mock_process):
    process_name = 'myprocess'
    dp = DaemonProcess(process_name)

    #set up mock values
    mock_find_daemon_pid.return_value = 11
    mock_process.ppid.return_value = 11
    mock_process.pid = 100
    mock_process_iter.return_value = [mock_process]

    #find the worker PIDs
    result = dp.find_worker_pid()

    #check that find_worker_pid called find_daemon_pid with no arguements
    mock_find_daemon_pid.assert_called_with()

    #check worker PID 100 is in list
    assert (100 in result)
import sys
import time
import datetime
import argparse

from daemonprocess import DaemonProcess
import memory_stats
import cpu_stats

parser = argparse.ArgumentParser()
parser.add_argument("process", help="name of worker processes to monitor")
parser.add_argument("frequency", type=int, help="sample frequency in seconds")
args = parser.parse_args()

process_name = args.process
frequency_sec = args.frequency

while True:
    current_time = str(datetime.datetime.now())
    dp = DaemonProcess(process_name)
    list_pids = dp.find_worker_pid()
    if list_pids is None:
        break
    mem =  memory_stats.memory_average(list_pids)
    cpu = cpu_stats.cpu_usage(list_pids)
    print current_time, (process_name, mem, cpu)
    time.sleep(frequency_sec)