def test_get_cmd(self): plugin = ProcfileWatcher("", "", 1) plugin.call = Mock() plugin.call.return_value = {"options": {"cmd": "ble"}} cmd = plugin.get_cmd("name") self.assertEqual("ble", cmd) plugin.call.assert_called_with("get", name="name", keys=["cmd"])
def test_commands(self): plugin = ProcfileWatcher("", "", 1) result = Mock() result.return_value = {"statuses": {}} plugin.call = result procfile = Procfile('web: gunicorn -b 0.0.0.0:8080 abyss.wsgi\n') to_add, to_remove, to_change = plugin.commands(procfile) plugin.call.assert_called_with("status")
def test_commands_dont_remove_tsuru_hooks_watcher(self): plugin = ProcfileWatcher("", "", 1) result = Mock() result.return_value = {"statuses": {"tsuru-hooks": ""}} plugin.call = result procfile = Procfile('web: gunicorn -b 0.0.0.0:8080 abyss.wsgi\n') to_add, to_remove, to_change = plugin.commands(procfile) self.assertNotIn("tsuru-hooks", to_remove)
def test_reload_procfile_remove_old_cmds(self): plugin = ProcfileWatcher("", "", 1) plugin.call = Mock() plugin.call.return_value = {"statuses": {"name": "name", "cmd": "cmd"}} plugin.procfile_path = os.path.join(os.path.dirname(__file__), "testdata/Procfile2") plugin.reload_procfile() plugin.call.assert_called_with("rm", name="name")
def test_add_watcher(self): plugin = ProcfileWatcher("", "", 1) plugin.envs = lambda: {} plugin.circus_client = Mock() name = "name" cmd = "cmd" options = self.build_options(name, cmd) plugin.add_watcher(name=name, cmd=cmd) plugin.circus_client.call.assert_called_with(options)
def test_should_replace_cmds_with_environ_with_braces(self): plugin = ProcfileWatcher("", "", 1) plugin.envs = lambda: {} plugin.circus_client = Mock() name = "name" cmd = "echo ${PORT}" options = self.build_options(name, "echo 8888") plugin.add_watcher(name=name, cmd=cmd) plugin.circus_client.call.assert_called_with(options)
def test_commands_ignore_plugin(self): result = Mock() result.return_value = {"statuses": {"plugin:tsuru-circus-ProcfileWatcher": "ok"}} plugin = ProcfileWatcher("", "", 1) plugin.call = result procfile = Procfile('web: gunicorn -b 0.0.0.0:8080 abyss.wsgi\n') to_add, to_remove, to_change = plugin.commands(procfile) self.assertEqual(set(["web"]), to_add) self.assertEqual(set([]), to_remove) self.assertEqual({}, to_change)
def test_commands_ignore_plugin(self): result = Mock() result.return_value = { "statuses": { "plugin:tsuru-circus-ProcfileWatcher": "ok" } } plugin = ProcfileWatcher("", "", 1) plugin.call = result procfile = Procfile('web: gunicorn -b 0.0.0.0:8080 abyss.wsgi\n') to_add, to_remove, to_change = plugin.commands(procfile) self.assertEqual(set(["web"]), to_add) self.assertEqual(set([]), to_remove) self.assertEqual({}, to_change)
def test_reload_procfile_add_new_cmds(self): plugin = ProcfileWatcher("", "", 1) plugin.procfile_path = os.path.join(os.path.dirname(__file__), "testdata/Procfile1") plugin.circus_client = Mock() plugin.envs = lambda: {} plugin.call = Mock() plugin.call.return_value = {"statuses": {}} plugin.reload_procfile() options = self.build_options("name", "cmd") plugin.circus_client.call.assert_called_with(options)
def test_change_cmd_should_replace_cmds_with_environ(self, load_envs): load_envs.return_value = {"BLE": "bla"} plugin = ProcfileWatcher("", "", 1) plugin.envs = lambda: {} plugin.call = Mock() plugin.port = 8888 name = "name" cmd = "echo ${PORT} ${port} ${BLE}" plugin.change_cmd(name=name, cmd=cmd) plugin.call.assert_called_with('set', options={'cmd': 'echo 8888 8888 bla'}, name=name)
def test_add_watcher(self): plugin = ProcfileWatcher("", "", 1) plugin.circus_client = Mock() name = "name" cmd = "cmd" options = json.dumps({ "command": "add", "properties": { "cmd": cmd, "name": name, "args": [], "options": { "env": {"port": "8888"}, "copy_env": True, "working_dir": "/home/application/current", "stderr_stream": {"class": "tsuru.stream.Stream"}, "stdout_stream": {"class": "tsuru.stream.Stream"}, "uid": "ubuntu", }, "start": True, }}) plugin.add_watcher(name=name, cmd=cmd) plugin.circus_client.call.assert_called_with(options)
def test_reload_procfile_update_cmds(self): plugin = ProcfileWatcher("", "", 1) plugin.call = Mock() plugin.call.return_value = {"statuses": {"name": "name", "cmd": "cmd"}} plugin.get_cmd = Mock() plugin.get_cmd.return_value = "cmd" plugin.procfile_path = os.path.join(os.path.dirname(__file__), "testdata/Procfile3") plugin.reload_procfile() plugin.get_cmd.assert_called_with("name") plugin.call.assert_called_with("set", name="name", options={'cmd': 'cmd2'})
def test_change_cmd_should_replace_cmds_with_environ(self, load_envs): load_envs.return_value = {"BLE": "bla"} plugin = ProcfileWatcher("", "", 1) plugin.envs = lambda: {} plugin.call = Mock() plugin.port = 8888 name = "name" cmd = "echo ${PORT} ${BLE}" plugin.change_cmd(name=name, cmd=cmd) plugin.call.assert_called_with('set', options={'cmd': 'echo 8888 bla'}, name=name)
def test_plugin(self): plugin = ProcfileWatcher("", "", 1) self.assertIsInstance(plugin, ProcfileWatcher)
def test_remove_watcher(self): plugin = ProcfileWatcher("", "", 1) plugin.call = Mock() name = "name" plugin.remove_watcher(name=name) plugin.call.assert_called_with("rm", name=name)