コード例 #1
0
ファイル: test_process.py プロジェクト: lefootballroi/honcho
 def test_process_printer_receives_started_with_pid(self):
     pm = ProcessManager(process=FakeProcess, printer=FakePrinter)
     proc = pm.add_process('foo', 'ruby server.rb')
     proc.pid = 345
     proc.stdout = FakeOutput(attached_process=proc)
     pm.loop()
     self.assertEqual("started with pid 345\n", proc.printer.data[0])
コード例 #2
0
ファイル: test_process.py プロジェクト: lefootballroi/honcho
 def test_processmanager_returncode_set_by_exiting_process(self):
     pm = ProcessManager(process=FakeProcess, printer=FakePrinter)
     proc = pm.add_process('foo', 'ruby server.rb')
     proc.stdout = FakeOutput(attached_process=proc)
     proc.returncode = 123
     pm.loop()
     self.assertEqual(123, pm.returncode)
コード例 #3
0
ファイル: test_process.py プロジェクト: lefootballroi/honcho
 def test_process_printer_doesnt_print_quiet_processes(self):
     pm = ProcessManager(process=FakeProcess, printer=FakePrinter)
     proc = pm.add_process('foo', 'ruby server.rb', quiet=True)
     proc.stdout = FakeOutput(attached_process=proc)
     proc.stdout.lines = [b'hello\n', b'world\n']
     pm.loop()
     self.assertNotIn("hello\n", proc.printer.data)
     self.assertNotIn("world\n", proc.printer.data)
コード例 #4
0
ファイル: test_process.py プロジェクト: lefootballroi/honcho
 def test_process_printer_appends_missing_newlines(self):
     pm = ProcessManager(process=FakeProcess, printer=FakePrinter)
     proc = pm.add_process('foo', 'ruby server.rb')
     proc.stdout = FakeOutput(attached_process=proc)
     proc.stdout.lines = [b'hello', b'world']
     pm.loop()
     self.assertIn("hello\n", proc.printer.data)
     self.assertIn("world\n", proc.printer.data)
コード例 #5
0
ファイル: test_process.py プロジェクト: lefootballroi/honcho
 def test_process_printer_receives_output_lines(self):
     pm = ProcessManager(process=FakeProcess, printer=FakePrinter)
     proc = pm.add_process('foo', 'ruby server.rb')
     proc.pid = 345
     proc.stdout = FakeOutput(attached_process=proc)
     proc.stdout.lines = [b'hello\n', b'world\n']
     pm.loop()
     self.assertIn("hello\n", proc.printer.data)
     self.assertIn("world\n", proc.printer.data)
コード例 #6
0
ファイル: test_process.py プロジェクト: lefootballroi/honcho
 def test_process_printer_handles_bad_utf8(self):
     pm = ProcessManager(process=FakeProcess, printer=FakePrinter)
     proc = pm.add_process('foo', 'ruby server.rb')
     proc.stdout = FakeOutput(attached_process=proc)
     proc.stdout.lines = [b'hello\n', b'\xfe\xff', b'world\n']
     pm.loop()
     self.assertIn("hello\n", proc.printer.data)
     self.assertIn("world\n", proc.printer.data)
     self.assertIn(
         "UnicodeDecodeError while decoding line from process foo\n",
         pm.system_printer.data)
コード例 #7
0
ファイル: test_process.py プロジェクト: lefootballroi/honcho
    def test_processmanager_terminate_terminates_processes(self):
        pm = ProcessManager(process=FakeProcess, printer=FakePrinter)
        proc = pm.add_process('foo', 'ruby server.rb')
        proc.stdout = FakeBlockingOutput()

        def _terminate(manager):
            manager.terminate(kill_fallback=False)

        t = Thread(target=_terminate, args=(pm,))
        t.start()

        pm.loop()

        t.join()
        self.assertTrue(proc._terminated)
コード例 #8
0
ファイル: test_process.py プロジェクト: yoloseem/honcho
    def test_add_processes(self, process_mock):
        pm = ProcessManager()
        pm.add_process('foo', 'ruby server.rb')
        pm.add_process('bar', 'python worker.py')

        expected = [call('ruby server.rb', name='foo'), call('python worker.py', name='bar')]

        assert_equal(process_mock.mock_calls, expected)
コード例 #9
0
ファイル: test_process.py プロジェクト: lefootballroi/honcho
 def test_process_stdout_is_closed(self):
     pm = ProcessManager(process=FakeProcess, printer=FakePrinter)
     proc = pm.add_process('foo', 'ruby server.rb')
     proc.stdout = FakeOutput(attached_process=proc)
     pm.loop()
     self.assertTrue(proc.stdout.closed)
コード例 #10
0
ファイル: test_process.py プロジェクト: lefootballroi/honcho
 def test_process_printer_receives_process_terminated(self):
     pm = ProcessManager(process=FakeProcess, printer=FakePrinter)
     proc = pm.add_process('foo', 'ruby server.rb')
     proc.stdout = FakeOutput(attached_process=proc)
     pm.loop()
     self.assertEqual("process terminated\n", proc.printer.data[1])
コード例 #11
0
ファイル: test_process.py プロジェクト: lefootballroi/honcho
 def test_add_process_creates_process(self):
     pm = ProcessManager(process=FakeProcess)
     proc = pm.add_process('foo', 'ruby server.rb')
     self.assertEqual('foo', proc.name)
     self.assertEqual('ruby server.rb', proc.command)
     self.assertFalse(proc.quiet)
コード例 #12
0
ファイル: shove.py プロジェクト: Osmose/shove
import logging
import os
import sys
import time

import pika
from honcho.process import Process, ProcessManager

logging.basicConfig(format='%(levelname)s: %(message)s', level=logging.INFO)
log = logging.getLogger(__name__)

process_manager = ProcessManager()


def blocking_queue():
    """Create up a queue connection and returns a generator of blocking reads.
    """
    params = pika.ConnectionParameters(
        host=os.environ.get("RABBITMQ_HOST"),
        port=int(os.environ.get("RABBITMQ_PORT")),
        virtual_host=os.environ.get("RABBITMQ_VHOST"),
        credentials=pika.credentials.PlainCredentials(
            os.environ.get("RABBITMQ_USER"), os.environ.get("RABBITMQ_PASS")))
    queue = os.environ.get("CAP_SHOVE_QUEUE", "default")
    channel = pika.BlockingConnection(params).channel()
    while (True):
        _, _, body = channel.basic_get(queue=queue, no_ack=True)
        if not body:
            print "Nothing yet, having a quick nap."
            time.sleep(5)
            continue