def test_basic(): emitted = [] m = Manager() m.start() def cb(ev, msg): emitted.append((ev, msg['name'])) # subscribe to all events chan = m.subscribe("EVENTS") chan.bind('.', cb) testfile, cmd, args, wdir = dummy_cmd() config = ProcessConfig("dummy", cmd, args=args, cwd=wdir, numprocesses=4) m.load(config) m.scale("dummy", 1) m.unload("dummy") time.sleep(0.2) m.stop() m.run() assert ('load', 'default.dummy') in emitted assert ('start', 'default.dummy') in emitted assert ('update', 'default.dummy') in emitted assert ('stop', 'default.dummy') in emitted assert ('unload', 'default.dummy') in emitted
def test_scalein(): m = Manager() m.start() testfile, cmd, args, wdir = dummy_cmd() config = ProcessConfig("dummy", cmd, args=args, cwd=wdir, numprocesses=1) m.load(config) state = m._get_locked_state("dummy") assert len(state.running) == 1 ret = m.scale("dummy", 1) assert ret == 2 time.sleep(0.2) assert len(state.running) == 2 ret = m.scale("dummy", 1) assert ret == 3 time.sleep(0.2) assert len(state.running) == 3 ret = m.scale("dummy", 3) assert ret == 6 time.sleep(0.2) assert len(state.running) == 6 m.stop() m.run()
def test_manager_hooks(): hooks = create_hooks(['load', 'unload', 'start', 'update', 'stop', 'job.default.dummy.start', 'job.default.dummy.spawn', 'job.default.dummy.stop', 'job.default.dummy.exit']) emitted = [] loop = pyuv.Loop.default_loop() s = get_server(loop, emitted) s.start() m = Manager(loop=loop) m.start(apps=[WebHooks(hooks)]) testfile, cmd, args, wdir = dummy_cmd() config = ProcessConfig("dummy", cmd, args=args, cwd=wdir, numprocesses=1) m.load(config) m.manage("dummy") m.scale("dummy", 1) m.unload("dummy") t = pyuv.Timer(loop) def on_stop(manager): t.start(lambda h: s.stop(), 0.4, 0.0) m.stop(on_stop) m.run() assert ('load', 'default.dummy') in emitted assert ('start', 'default.dummy') in emitted assert ('update', 'default.dummy') in emitted assert ('stop', 'default.dummy') in emitted assert ('unload', 'default.dummy') in emitted assert ('job.default.dummy.start', 'default.dummy') in emitted assert ('job.default.dummy.spawn', 'default.dummy') in emitted assert ('job.default.dummy.stop', 'default.dummy') in emitted assert ('job.default.dummy.exit', 'default.dummy') in emitted
def test_manager_hooks(): hooks = create_hooks([ 'load', 'unload', 'start', 'update', 'stop', 'job.default.dummy.start', 'job.default.dummy.spawn', 'job.default.dummy.stop', 'job.default.dummy.exit' ]) emitted = [] loop = pyuv.Loop.default_loop() s = get_server(loop, emitted) s.start() m = Manager(loop=loop) m.start(apps=[WebHooks(hooks)]) testfile, cmd, args, wdir = dummy_cmd() config = ProcessConfig("dummy", cmd, args=args, cwd=wdir, numprocesses=1) m.load(config) m.manage("dummy") m.scale("dummy", 1) m.unload("dummy") t = pyuv.Timer(loop) def on_stop(manager): t.start(lambda h: s.stop(), 0.4, 0.0) m.stop(on_stop) m.run() assert ('load', 'default.dummy') in emitted assert ('start', 'default.dummy') in emitted assert ('update', 'default.dummy') in emitted assert ('stop', 'default.dummy') in emitted assert ('unload', 'default.dummy') in emitted assert ('job.default.dummy.start', 'default.dummy') in emitted assert ('job.default.dummy.spawn', 'default.dummy') in emitted assert ('job.default.dummy.stop', 'default.dummy') in emitted assert ('job.default.dummy.exit', 'default.dummy') in emitted