diff --git a/tests/base.py b/tests/base.py index c1139c6314..15b97c66a5 100644 --- a/tests/base.py +++ b/tests/base.py @@ -2425,6 +2425,8 @@ class ZuulTestCase(BaseTestCase): infrastructure should insert dummy keys to save time during startup. Defaults to False. + :cvar int log_console_port: The zuul_stream/zuul_console port. + The following are instance variables that are useful within test methods: @@ -2459,6 +2461,7 @@ class ZuulTestCase(BaseTestCase): create_project_keys = False use_ssl = False git_url_with_auth = False + log_console_port = 19885 def _startMerger(self): self.merge_server = zuul.merger.server.MergeServer(self.config, @@ -2577,7 +2580,8 @@ class ZuulTestCase(BaseTestCase): jobdir_root=self.test_root, _run_ansible=self.run_ansible, _test_root=self.test_root, - keep_jobdir=KEEP_TEMPDIRS) + keep_jobdir=KEEP_TEMPDIRS, + log_console_port=self.log_console_port) self.executor_server.start() self.history = self.executor_server.build_history self.builds = self.executor_server.running_builds diff --git a/tests/fixtures/config/remote-zuul-stream/git/org_project/playbooks/command.yaml b/tests/fixtures/config/remote-zuul-stream/git/org_project/playbooks/command.yaml index c33a9d2edf..ec84cf7841 100644 --- a/tests/fixtures/config/remote-zuul-stream/git/org_project/playbooks/command.yaml +++ b/tests/fixtures/config/remote-zuul-stream/git/org_project/playbooks/command.yaml @@ -18,6 +18,8 @@ - name: Start zuul_console daemon zuul_console: + port: "{{ test_console_port }}" + - name: Create first file copy: content: "command test one\n" diff --git a/tests/remote/test_remote_zuul_stream.py b/tests/remote/test_remote_zuul_stream.py index d3de8aad18..43f89eb493 100644 --- a/tests/remote/test_remote_zuul_stream.py +++ b/tests/remote/test_remote_zuul_stream.py @@ -24,6 +24,7 @@ class TestZuulStream25(AnsibleZuulTestCase): ansible_version = '2.5' def setUp(self): + self.log_console_port = 19000 + int(self.ansible_version.split('.')[1]) super().setUp() self.fake_nodepool.remote_ansible = True @@ -44,6 +45,8 @@ class TestZuulStream25(AnsibleZuulTestCase): name: {job_name} run: playbooks/{job_name}.yaml ansible-version: {version} + vars: + test_console_port: {console_port} roles: - zuul: org/common-config nodeset: @@ -57,7 +60,10 @@ class TestZuulStream25(AnsibleZuulTestCase): check: jobs: - {job_name} - """.format(job_name=job_name, version=self.ansible_version)) + """.format( + job_name=job_name, + version=self.ansible_version, + console_port=self.log_console_port)) file_dict = {'zuul.yaml': conf} A = self.fake_gerrit.addFakeChange('org/project', 'master', 'A', diff --git a/zuul/ansible/base/callback/zuul_stream.py b/zuul/ansible/base/callback/zuul_stream.py index aaf93ce738..fabe972e05 100644 --- a/zuul/ansible/base/callback/zuul_stream.py +++ b/zuul/ansible/base/callback/zuul_stream.py @@ -33,7 +33,7 @@ from zuul.ansible import paths from zuul.ansible import logconfig -LOG_STREAM_PORT = 19885 +LOG_STREAM_PORT = int(os.environ.get("ZUUL_CONSOLE_PORT", 19885)) def zuul_filter_result(result): diff --git a/zuul/ansible/base/library/zuul_console.py b/zuul/ansible/base/library/zuul_console.py old mode 100644 new mode 100755 index d119c52590..6f988e6829 --- a/zuul/ansible/base/library/zuul_console.py +++ b/zuul/ansible/base/library/zuul_console.py @@ -274,7 +274,7 @@ def main(): else: pid = None exceptions = [] - inode = get_inode() + inode = get_inode(port) if not inode: module.fail_json( msg="Could not find inode for port", diff --git a/zuul/executor/server.py b/zuul/executor/server.py index 4ab48e8f65..317950cb0a 100644 --- a/zuul/executor/server.py +++ b/zuul/executor/server.py @@ -53,6 +53,7 @@ BUFFER_LINES_FOR_SYNTAX = 200 COMMANDS = ['stop', 'pause', 'unpause', 'graceful', 'verbose', 'unverbose', 'keep', 'nokeep'] DEFAULT_FINGER_PORT = 7900 +DEFAULT_STREAM_PORT = 19885 BLACKLISTED_ANSIBLE_CONNECTION_TYPES = [ 'network_cli', 'kubectl', 'project', 'namespace'] @@ -1841,6 +1842,9 @@ class AnsibleJob(object): env_copy['ARA_LOG_CONFIG'] = self.jobdir.logging_json env_copy['ZUUL_JOB_LOG_CONFIG'] = self.jobdir.logging_json env_copy['ZUUL_JOBDIR'] = self.jobdir.root + if self.executor_server.log_console_port != DEFAULT_STREAM_PORT: + env_copy['ZUUL_CONSOLE_PORT'] = str( + self.executor_server.log_console_port) env_copy['TMP'] = self.jobdir.local_tmp pythonpath = env_copy.get('PYTHONPATH') if pythonpath: @@ -2207,7 +2211,8 @@ class ExecutorServer(object): _job_class = AnsibleJob def __init__(self, config, connections={}, jobdir_root=None, - keep_jobdir=False, log_streaming_port=DEFAULT_FINGER_PORT): + keep_jobdir=False, log_streaming_port=DEFAULT_FINGER_PORT, + log_console_port=DEFAULT_STREAM_PORT): self.config = config self.keep_jobdir = keep_jobdir self.jobdir_root = jobdir_root @@ -2230,6 +2235,7 @@ class ExecutorServer(object): keep=self.keep, nokeep=self.nokeep, ) + self.log_console_port = log_console_port statsd_extra_keys = {'hostname': self.hostname} self.statsd = get_statsd(config, statsd_extra_keys)