mirror of https://github.com/apache/superset.git
fix(cache): remove unused webserver config & handle trailing slashes (#22849)
This commit is contained in:
parent
4c5176eea8
commit
56069b05f9
|
@ -154,10 +154,6 @@ FILTER_SELECT_ROW_LIMIT = 10000
|
||||||
# values may be "Last day", "Last week", "<ISO date> : now", etc.
|
# values may be "Last day", "Last week", "<ISO date> : now", etc.
|
||||||
DEFAULT_TIME_FILTER = NO_TIME_RANGE
|
DEFAULT_TIME_FILTER = NO_TIME_RANGE
|
||||||
|
|
||||||
SUPERSET_WEBSERVER_PROTOCOL = "http"
|
|
||||||
SUPERSET_WEBSERVER_ADDRESS = "0.0.0.0"
|
|
||||||
SUPERSET_WEBSERVER_PORT = 8088
|
|
||||||
|
|
||||||
# This is an important setting, and should be lower than your
|
# This is an important setting, and should be lower than your
|
||||||
# [load balancer / proxy / envoy / kong / ...] timeout settings.
|
# [load balancer / proxy / envoy / kong / ...] timeout settings.
|
||||||
# You should also make sure to configure your WSGI server
|
# You should also make sure to configure your WSGI server
|
||||||
|
|
|
@ -32,6 +32,7 @@ from superset.models.slice import Slice
|
||||||
from superset.tags.models import Tag, TaggedObject
|
from superset.tags.models import Tag, TaggedObject
|
||||||
from superset.utils.date_parser import parse_human_datetime
|
from superset.utils.date_parser import parse_human_datetime
|
||||||
from superset.utils.machine_auth import MachineAuthProvider
|
from superset.utils.machine_auth import MachineAuthProvider
|
||||||
|
from superset.utils.urls import get_url_path
|
||||||
|
|
||||||
logger = get_task_logger(__name__)
|
logger = get_task_logger(__name__)
|
||||||
logger.setLevel(logging.INFO)
|
logger.setLevel(logging.INFO)
|
||||||
|
@ -218,8 +219,7 @@ def fetch_url(data: str, headers: dict[str, str]) -> dict[str, str]:
|
||||||
"""
|
"""
|
||||||
result = {}
|
result = {}
|
||||||
try:
|
try:
|
||||||
baseurl = app.config["WEBDRIVER_BASEURL"]
|
url = get_url_path("Superset.warm_up_cache")
|
||||||
url = f"{baseurl}api/v1/chart/warm_up_cache"
|
|
||||||
logger.info("Fetching %s with payload %s", url, data)
|
logger.info("Fetching %s with payload %s", url, data)
|
||||||
req = request.Request(
|
req = request.Request(
|
||||||
url, data=bytes(data, "utf-8"), headers=headers, method="PUT"
|
url, data=bytes(data, "utf-8"), headers=headers, method="PUT"
|
||||||
|
|
|
@ -37,7 +37,6 @@ SQLALCHEMY_DATABASE_URI = "sqlite:///" + os.path.join(
|
||||||
DATA_DIR, "unittests.integration_tests.db"
|
DATA_DIR, "unittests.integration_tests.db"
|
||||||
)
|
)
|
||||||
DEBUG = False
|
DEBUG = False
|
||||||
SUPERSET_WEBSERVER_PORT = 8081
|
|
||||||
SILENCE_FAB = False
|
SILENCE_FAB = False
|
||||||
# Allowing SQLALCHEMY_DATABASE_URI and SQLALCHEMY_EXAMPLES_URI to be defined as an env vars for
|
# Allowing SQLALCHEMY_DATABASE_URI and SQLALCHEMY_EXAMPLES_URI to be defined as an env vars for
|
||||||
# continuous integration
|
# continuous integration
|
||||||
|
|
|
@ -25,7 +25,6 @@ SQLALCHEMY_DATABASE_URI = "sqlite:///" + os.path.join(
|
||||||
DATA_DIR, "unittests.integration_tests.db"
|
DATA_DIR, "unittests.integration_tests.db"
|
||||||
)
|
)
|
||||||
DEBUG = True
|
DEBUG = True
|
||||||
SUPERSET_WEBSERVER_PORT = 8081
|
|
||||||
|
|
||||||
# Allowing SQLALCHEMY_DATABASE_URI to be defined as an env var for
|
# Allowing SQLALCHEMY_DATABASE_URI to be defined as an env var for
|
||||||
# continuous integration
|
# continuous integration
|
||||||
|
|
|
@ -0,0 +1,58 @@
|
||||||
|
# Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
# or more contributor license agreements. See the NOTICE file
|
||||||
|
# distributed with this work for additional information
|
||||||
|
# regarding copyright ownership. The ASF licenses this file
|
||||||
|
# to you under the Apache License, Version 2.0 (the
|
||||||
|
# "License"); you may not use this file except in compliance
|
||||||
|
# with the License. You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing,
|
||||||
|
# software distributed under the License is distributed on an
|
||||||
|
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
# KIND, either express or implied. See the License for the
|
||||||
|
# specific language governing permissions and limitations
|
||||||
|
# under the License.
|
||||||
|
from unittest import mock
|
||||||
|
|
||||||
|
import pytest
|
||||||
|
|
||||||
|
from tests.integration_tests.test_app import app
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.parametrize(
|
||||||
|
"base_url",
|
||||||
|
[
|
||||||
|
"http://base-url",
|
||||||
|
"http://base-url/",
|
||||||
|
],
|
||||||
|
ids=["Without trailing slash", "With trailing slash"],
|
||||||
|
)
|
||||||
|
@mock.patch("superset.tasks.cache.request.Request")
|
||||||
|
@mock.patch("superset.tasks.cache.request.urlopen")
|
||||||
|
def test_fetch_url(mock_urlopen, mock_request_cls, base_url):
|
||||||
|
from superset.tasks.cache import fetch_url
|
||||||
|
|
||||||
|
mock_request = mock.MagicMock()
|
||||||
|
mock_request_cls.return_value = mock_request
|
||||||
|
|
||||||
|
mock_urlopen.return_value = mock.MagicMock()
|
||||||
|
mock_urlopen.return_value.code = 200
|
||||||
|
|
||||||
|
app.config["WEBDRIVER_BASEURL"] = base_url
|
||||||
|
headers = {"key": "value"}
|
||||||
|
data = "data"
|
||||||
|
data_encoded = b"data"
|
||||||
|
|
||||||
|
result = fetch_url(data, headers)
|
||||||
|
|
||||||
|
assert data == result["success"]
|
||||||
|
mock_request_cls.assert_called_once_with(
|
||||||
|
"http://base-url/superset/warm_up_cache/",
|
||||||
|
data=data_encoded,
|
||||||
|
headers=headers,
|
||||||
|
method="PUT",
|
||||||
|
)
|
||||||
|
# assert the same Request object is used
|
||||||
|
mock_urlopen.assert_called_once_with(mock_request, timeout=mock.ANY)
|
Loading…
Reference in New Issue