blob: 5aece99cc7bb6703c89527a16254775011f10e9d [file] [log] [blame]
# Copyright 2017 The Cobalt Authors. All Rights Reserved.
#
# Licensed 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.
"""Base cobalt configuration for GYP."""
import os
import _env # pylint: disable=unused-import
from cobalt.tools import paths
import cobalt.tools.webdriver_benchmark_config as wb_config
from starboard.build import application_configuration
from starboard.tools.config import Config
# The canonical Cobalt application name.
APPLICATION_NAME = 'cobalt'
class CobaltConfiguration(application_configuration.ApplicationConfiguration):
"""Base Cobalt configuration class.
Cobalt per-platform configurations, if defined, must subclass from this class.
"""
def __init__(self, platform_configuration, application_name,
application_directory):
super(CobaltConfiguration,
self).__init__(platform_configuration, application_name,
application_directory)
def GetVariables(self, config_name):
# Use env var to optimize build speed on CI
try:
# Force to int, so it's easy to pass in an override.
use_fastbuild = int(os.environ.get('IS_CI', 0))
except (ValueError, TypeError):
use_fastbuild = 0
try:
build_in_docker = int(os.environ.get('IS_DOCKER', 0))
except (ValueError, TypeError):
build_in_docker = 0
variables = {
# This is used to omit large debuginfo in files on CI environment
'cobalt_fastbuild': use_fastbuild,
'cobalt_docker_build': build_in_docker,
# This is here rather than cobalt_configuration.gypi so that it's
# available for browser_bindings_gen.gyp.
'enable_debugger': 0 if config_name == Config.GOLD else 1,
# Cobalt uses OpenSSL on all platforms.
'use_openssl': 1,
}
return variables
def GetPostIncludes(self):
# Insert cobalt_configuration.gypi into the post includes list.
includes = super(CobaltConfiguration, self).GetPostIncludes()
includes[:0] = [os.path.join(paths.BUILD_ROOT, 'cobalt_configuration.gypi')]
return includes
def GetWebPlatformTestFilters(self):
"""Gets all tests to be excluded from a black box test run."""
# Skipped tests on all platforms due to HTTP proxy bugs.
# Tests pass with a direct SSH tunnel.
# Proxy sends out response lines as soon as it gets it without waiting
# for the entire response. It is possible that this causes issues or that
# the proxy has problems sending and terminating a single complete
# response. It may end up sending multiple empty responses.
filters = [
# Late listeners: Preflight.
# Disabled because of: Flaky. Buildbot only failure.
'cors/WebPlatformTest.Run/cors_late_upload_events_htm',
# getResponseHeader: Combined testing of cors response headers.
# Disabled because of: Timeout.
'cors/WebPlatformTest.Run/cors_response_headers_htm',
# Status on GET 400, HEAD 401, POST 404, PUT 200.
# Disabled because of: Response status returning 0.
'cors/WebPlatformTest.Run/cors_status_async_htm',
# CORS - status after preflight on POST 401, POST 404, PUT 699.
# Disabled because of: Response status returning 0 or timeout.
'cors/WebPlatformTest.Run/cors_status_preflight_htm',
# Response reader closed promise should reject after a network error
# happening after resolving fetch promise.
# Disabled because of: Timeout.
'fetch/WebPlatformTest.Run/fetch_api_basic_error_after_response_html',
# RequestCache "no-store" mode does not store the response in the
# cache with Last-Modified and fresh response.
# Disabled because of: Timeout. Buildbot only failure.
('fetch/WebPlatformTest.Run/'
'fetch_api_request_request_cache_no_store_html'),
# Check response clone use structureClone for teed ReadableStreams
# (DataViewchunk).
# Disabled because of: Timeout.
'fetch/WebPlatformTest.Run/fetch_api_response_response_clone_html',
# XMLHttpRequest: send() - Basic authenticated CORS request using
# setRequestHeader().
# Disabled because of: Timeout. Buildbot only failure.
('xhr/WebPlatformTest.Run/'
'XMLHttpRequest_cobalt_trunk_send_authentication_cors_basic_'
'setrequestheader_htm'),
# XMLHttpRequest: send() - CORS request with setRequestHeader auth to
# URL accepting Authorization header.
# Disabled because of: False user and password. Buildbot only failure.
('xhr/WebPlatformTest.Run/'
'XMLHttpRequest_cobalt_trunk_send_authentication_cors_'
'setrequestheader_no_cred_htm'),
# XMLHttpRequest: send() - Redirects (basics) (307).
# Disabled because of: Flaky.
'xhr/WebPlatformTest.Run/XMLHttpRequest_send_redirect_htm',
# Disabled because of: Flaky on buildbot across multiple buildconfigs.
# Non-reproducible with local runs.
('xhr/WebPlatformTest.Run/'
'XMLHttpRequest_send_entity_body_get_head_async_htm'),
'xhr/WebPlatformTest.Run/XMLHttpRequest_status_error_htm',
'xhr/WebPlatformTest.Run/XMLHttpRequest_response_json_htm',
'xhr/WebPlatformTest.Run/XMLHttpRequest_send_redirect_to_non_cors_htm',
]
return filters
def GetTestTargets(self):
return [
'audio_test',
'base_test',
'base_unittests',
'bindings_test',
'browser_test',
'crypto_unittests',
'csp_test',
'css_parser_test',
'cssom_test',
'dom_parser_test',
'dom_test',
'extension_test',
'graphics_system_test',
'layout_test',
'layout_tests',
'cwrappers_test',
'loader_test',
'math_test',
'media_capture_test',
'media_session_test',
'media_stream_test',
'memory_store_test',
'nb_test',
'net_unittests',
'network_test',
'poem_unittests',
'render_tree_test',
'renderer_test',
'sql_unittests',
'storage_test',
'storage_upgrade_test',
'text_encoding_test',
'web_animations_test',
'webdriver_test',
'websocket_test',
'xhr_test',
'zip_unittests',
]
def GetDefaultTargetBuildFile(self):
return os.path.join(paths.BUILD_ROOT, 'all.gyp')
def WebdriverBenchmarksEnabled(self):
"""Determines if webdriver benchmarks are enabled or not.
Returns:
True if webdriver benchmarks can run on this platform, False if not.
"""
return False
def GetDefaultSampleSize(self):
return wb_config.STANDARD_SIZE
def GetWebdriverBenchmarksTargetParams(self):
"""Gets command line params to pass to the Cobalt executable."""
return []
def GetWebdriverBenchmarksParams(self):
"""Gets command line params to pass to the webdriver benchmark script."""
return []