Merge "Mandatory Zookeeper connection for ZuulWeb in tests"

This commit is contained in:
Zuul 2021-02-15 17:51:12 +00:00 committed by Gerrit Code Review
commit 45e2c7cb58
8 changed files with 31 additions and 24 deletions

View File

@ -3702,7 +3702,8 @@ class ZuulWebFixture(fixtures.Fixture):
additional_event_queues, upstream_root: str,
rpcclient: RPCClient, poller_events, git_url_with_auth: bool,
add_cleanup: Callable[[Callable[[], None]], None],
test_root, info=None, zk_hosts=None, fake_sql=True):
test_root: str, zk_hosts: str, fake_sql: bool = True,
info: Optional[zuul.model.WebInfo] = None):
super(ZuulWebFixture, self).__init__()
self.gearman_server_port = gearman_server_port
self.connections = TestConnectionRegistry(

View File

@ -1616,7 +1616,7 @@ class TestGithubWebhook(ZuulTestCase):
self.additional_event_queues, self.upstream_root,
self.rpcclient, self.poller_events,
self.git_url_with_auth, self.addCleanup,
self.test_root))
self.test_root, self.zk_config))
host = '127.0.0.1'
# Wait until web server is started

View File

@ -38,7 +38,7 @@ class TestGitlabWebhook(ZuulTestCase):
self.additional_event_queues, self.upstream_root,
self.rpcclient, self.poller_events,
self.git_url_with_auth, self.addCleanup,
self.test_root))
self.test_root, self.zk_config))
host = '127.0.0.1'
# Wait until web server is started

View File

@ -1048,7 +1048,7 @@ class TestPagureWebhook(ZuulTestCase):
self.additional_event_queues, self.upstream_root,
self.rpcclient, self.poller_events,
self.git_url_with_auth, self.addCleanup,
self.test_root))
self.test_root, self.zk_config))
host = '127.0.0.1'
# Wait until web server is started
@ -1096,7 +1096,7 @@ class TestPagureWebhookWhitelist(ZuulTestCase):
self.additional_event_queues, self.upstream_root,
self.rpcclient, self.poller_events,
self.git_url_with_auth, self.addCleanup,
self.test_root))
self.test_root, self.zk_config))
host = '127.0.0.1'
# Wait until web server is started

View File

@ -254,7 +254,7 @@ class TestStreaming(tests.base.AnsibleZuulTestCase):
self.additional_event_queues, self.upstream_root,
self.rpcclient, self.poller_events,
self.git_url_with_auth, self.addCleanup,
self.test_root))
self.test_root, self.zk_config))
# Start the finger streamer daemon
streamer = zuul.lib.log_streamer.LogStreamer(
@ -333,7 +333,7 @@ class TestStreaming(tests.base.AnsibleZuulTestCase):
self.additional_event_queues, self.upstream_root,
self.rpcclient, self.poller_events,
self.git_url_with_auth, self.addCleanup,
self.test_root))
self.test_root, self.zk_config))
# Start the finger streamer daemon
streamer = zuul.lib.log_streamer.LogStreamer(
@ -409,7 +409,7 @@ class TestStreaming(tests.base.AnsibleZuulTestCase):
self.additional_event_queues, self.upstream_root,
self.rpcclient, self.poller_events,
self.git_url_with_auth, self.addCleanup,
self.test_root))
self.test_root, self.zk_config))
# Start the finger streamer daemon
streamer = zuul.lib.log_streamer.LogStreamer(

View File

@ -58,10 +58,9 @@ class BaseTestWeb(ZuulTestCase):
self.additional_event_queues, self.upstream_root,
self.rpcclient, self.poller_events,
self.git_url_with_auth, self.addCleanup,
self.test_root,
self.test_root, self.zk_config,
info=zuul.model.WebInfo.fromConfig(
self.zuul_ini_config),
zk_hosts=self.zk_config,
fake_sql=self.fake_sql))
self.executor_server.hold_jobs_in_build = True

View File

@ -31,7 +31,7 @@ class TestWebURLs(ZuulTestCase):
self.additional_event_queues, self.upstream_root,
self.rpcclient, self.poller_events,
self.git_url_with_auth, self.addCleanup,
self.test_root))
self.test_root, self.zk_config))
def _get(self, port, uri):
url = "http://localhost:{}{}".format(port, uri)

View File

@ -20,6 +20,7 @@ from ws4py.server.cherrypyserver import WebSocketPlugin, WebSocketTool
from ws4py.websocket import WebSocket
import codecs
import copy
from typing import Optional
from datetime import datetime
import json
import logging
@ -36,6 +37,7 @@ import zuul.model
import zuul.rpcclient
from zuul.zk import ZooKeeperClient
from zuul.zk.nodepool import ZooKeeperNodepool
from zuul.lib.auth import AuthenticatorRegistry
STATIC_DIR = os.path.join(os.path.dirname(__file__), 'static')
cherrypy.tools.websocket = WebSocketTool()
@ -1203,18 +1205,24 @@ class StreamManager(object):
class ZuulWeb(object):
log = logging.getLogger("zuul.web.ZuulWeb")
def __init__(self, listen_address, listen_port, gear_server,
gear_port, ssl_key=None, ssl_cert=None, ssl_ca=None,
static_cache_expiry=3600, connections=None,
info=None, static_path=None, zk_hosts=None,
zk_timeout=None, zk_tls_cert=None, zk_tls_key=None,
zk_tls_ca=None, authenticators=None,
command_socket=None):
# There is an import loop with ConnectionRegistry
def __init__(self,
listen_address: str, listen_port: int,
gear_server: str, gear_port: int,
connections, # ConnectionRegistry,
authenticators: AuthenticatorRegistry,
zk_hosts: str, zk_timeout: float = 10.0,
zk_tls_cert: Optional[str] = None,
zk_tls_key: Optional[str] = None,
zk_tls_ca: Optional[str] = None,
ssl_key: str = None, ssl_cert: str = None, ssl_ca: str = None,
static_cache_expiry: int = 3600,
info: Optional[zuul.model.WebInfo] = None,
static_path: Optional[str] = None,
command_socket: Optional[str] = None):
self.start_time = time.time()
self.listen_address = listen_address
self.listen_port = listen_port
self.event_loop = None
self.term = None
self.server = None
self.static_cache_expiry = static_cache_expiry
self.info = info
@ -1224,10 +1232,9 @@ class ZuulWeb(object):
ssl_key, ssl_cert, ssl_ca,
client_id='Zuul Web Server')
self.zk_client = ZooKeeperClient()
if zk_hosts:
self.zk_client.connect(hosts=zk_hosts, read_only=True,
timeout=zk_timeout, tls_cert=zk_tls_cert,
tls_key=zk_tls_key, tls_ca=zk_tls_ca)
self.zk_client.connect(hosts=zk_hosts, read_only=True,
timeout=zk_timeout, tls_cert=zk_tls_cert,
tls_key=zk_tls_key, tls_ca=zk_tls_ca)
self.connections = connections
self.authenticators = authenticators