Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
96 changes: 96 additions & 0 deletions configuration/builders/sequences/helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,102 @@ def get_mtr_normal_steps(
return steps


def get_mtr_cursor_steps(
jobs,
path_to_test_runner: PurePath,
halt_on_failure: bool = True,
step_wrapping_fn=lambda step: step,
additional_mtr_options: list[MTROption] = [],
env_vars: list[tuple] = [],
):
steps = []
steps.append(
step_wrapping_fn(
ShellStep(
MTRTest(
name="cursor",
save_logs_path=MTR_PATH_TO_SAVE_LOGS / "cursor",
workdir=path_to_test_runner,
testcase=MTRGenerator(
flags=[
MTROption(MTR.VERBOSE_RESTART, True),
MTROption(MTR.FORCE, True),
MTROption(MTR.CURSOR_PROTOCOL, True),
MTROption(MTR.MAX_SAVE_CORE, 2),
MTROption(MTR.MAX_SAVE_DATADIR, 1),
MTROption(MTR.MAX_TEST_FAIL, 20),
MTROption(MTR.PARALLEL, jobs * 2),
MTROption(MTR.VARDIR, "/dev/shm/cursor"),
MTROption(
MTR.XML_REPORT, MTR_PATH_TO_SAVE_LOGS / "cursor.xml"
),
]
+ additional_mtr_options,
suite_collection=TestSuiteCollection(
[
SUITE.MAIN,
]
),
),
),
options=StepOptions(
haltOnFailure=halt_on_failure, descriptionDone="MTR cursor"
),
env_vars=env_vars,
)
)
)
return steps


def get_mtr_view_steps(
jobs,
path_to_test_runner: PurePath,
halt_on_failure: bool = True,
step_wrapping_fn=lambda step: step,
additional_mtr_options: list[MTROption] = [],
env_vars: list[tuple] = [],
):
steps = []
steps.append(
step_wrapping_fn(
ShellStep(
MTRTest(
name="view",
save_logs_path=MTR_PATH_TO_SAVE_LOGS / "view",
workdir=path_to_test_runner,
testcase=MTRGenerator(
flags=[
MTROption(MTR.VERBOSE_RESTART, True),
MTROption(MTR.FORCE, True),
MTROption(MTR.VIEW_PROTOCOL, True),
MTROption(MTR.MAX_SAVE_CORE, 2),
MTROption(MTR.MAX_SAVE_DATADIR, 1),
MTROption(MTR.MAX_TEST_FAIL, 20),
MTROption(MTR.PARALLEL, jobs * 2),
MTROption(MTR.VARDIR, "/dev/shm/view"),
MTROption(
MTR.XML_REPORT, MTR_PATH_TO_SAVE_LOGS / "view.xml"
),
]
+ additional_mtr_options,
suite_collection=TestSuiteCollection(
[
SUITE.MAIN,
]
),
),
),
options=StepOptions(
haltOnFailure=halt_on_failure, descriptionDone="MTR view"
),
env_vars=env_vars,
)
)
)
return steps


def get_mtr_rocksdb_steps(
jobs,
path_to_test_runner: PurePath,
Expand Down
56 changes: 42 additions & 14 deletions configuration/builders/sequences/sanitizers.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,11 @@
InContainer,
)
from configuration.builders.sequences.helpers import (
get_mtr_cursor_steps,
get_mtr_normal_steps,
get_mtr_s3_steps,
get_mtr_spider_steps,
get_mtr_view_steps,
mtr_reporter,
save_mtr_logs,
)
Expand All @@ -34,6 +36,7 @@ def asan_ubsan(
config: DockerConfig,
jobs: int,
isDebugBuildType: bool,
isExperimental: bool,
):
sequence = BuildSequence()

Expand Down Expand Up @@ -164,28 +167,33 @@ def asan_ubsan(
docker_environment=config, step=step
),
)
+ [
save_mtr_logs(
step_wrapping_fn=lambda step: InContainer(
docker_environment=config, step=step
),
),
mtr_reporter(
step_wrapping_fn=lambda step: InContainer(
docker_environment=config, step=step
),
),
]
):
sequence.add_step(step)

sequence.add_step(
save_mtr_logs(
step_wrapping_fn=lambda step: InContainer(
docker_environment=config, step=step
),
)
)

sequence.add_step(
mtr_reporter(
step_wrapping_fn=lambda step: InContainer(
docker_environment=config, step=step
),
),
)

return sequence


def msan(
config: DockerConfig,
jobs: int,
isDebugBuildType: bool,
isExperimental: bool,
):
sequence = BuildSequence()

Expand Down Expand Up @@ -214,7 +222,7 @@ def msan(
CMakeOption(WITH.ZLIB, "bundled"),
CMakeOption(WITH.SYSTEMD, "no"),
CMakeOption(PLUGIN.COLUMNSTORE_STORAGE_ENGINE, False),
CMakeOption(PLUGIN.SPIDER_STORAGE_ENGINE, isDebugBuildType),
CMakeOption(PLUGIN.SPIDER_STORAGE_ENGINE, isDebugBuildType or isExperimental),
CMakeOption(PLUGIN.ROCKSDB_STORAGE_ENGINE, False),
CMakeOption(PLUGIN.OQGRAPH_STORAGE_ENGINE, False),
]
Expand Down Expand Up @@ -279,7 +287,7 @@ def msan(
path_to_test_runner=PurePath("bld", "mysql-test"),
step_wrapping_fn=lambda step: InContainer(docker_environment=config, step=step),
)
if isDebugBuildType:
if isDebugBuildType or isExperimental:
steps += get_mtr_spider_steps(
jobs=jobs,
env_vars=env_vars,
Expand All @@ -290,6 +298,26 @@ def msan(
docker_environment=config, step=step
),
)
if isExperimental and not isDebugBuildType:
steps += get_mtr_cursor_steps(
jobs=jobs,
env_vars=env_vars,
halt_on_failure=False,
path_to_test_runner=PurePath("bld", "mysql-test"),
step_wrapping_fn=lambda step: InContainer(
docker_environment=config, step=step
),
)
steps += get_mtr_view_steps(
jobs=jobs,
env_vars=env_vars,
halt_on_failure=False,
path_to_test_runner=PurePath("bld", "mysql-test"),
step_wrapping_fn=lambda step: InContainer(
docker_environment=config, step=step
),
)
# Save results
steps += [
save_mtr_logs(
step_wrapping_fn=lambda step: InContainer(
Expand Down
3 changes: 3 additions & 0 deletions constants.py
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,7 @@
"amd64-fedora-44-valgrind",
"amd64-freebsd-14",
"amd64-msan-clang-20",
"amd64-msan-clang-22",
"amd64-openeuler-2403",
"amd64-openssl3-fips",
"amd64-rhel-7",
Expand Down Expand Up @@ -184,7 +185,9 @@
"amd64-msan-clang-20-debug",
"amd64-rhel-10",
"amd64-ubasan-clang-20",
"amd64-ubasan-clang-22",
"amd64-ubasan-clang-20-debug",
"amd64-ubasan-clang-22-debug",
"amd64-ubuntu-2404",
"ppc64le-centos-stream10",
"ppc64le-rhel-10",
Expand Down
79 changes: 68 additions & 11 deletions master-migration/master.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import yaml
import configuration.builders.definitions.connectors.conc as conc_c_builders
import configuration.builders.definitions.connectors.concpp as conc_cc_builders
import configuration.builders.definitions.connectors.conodbc as conc_odbc_builders
from configuration.builders.base import GenericBuilder
from configuration.builders.base import GenericBuilder, WorkerBase
from configuration.builders.common import (
deb_release_builder,
docker_config,
Expand All @@ -32,6 +32,8 @@ from configuration.schedulers.connectors import (
from configuration.workers import worker
from master_common import IS_CHECKCONFIG, base_master_config

from typing import Iterable

####### VARIABLES
cfg_dir = os.path.abspath(os.path.dirname(__file__))
base_dir = os.path.abspath(f"{cfg_dir}/../")
Expand Down Expand Up @@ -162,7 +164,13 @@ c["builders"].append(
## ------------------------------------------------------------------- ##


def ubasan_builder(name: str, debug: bool) -> GenericBuilder:
def ubasan_builder(
name: str,
image: str,
debug: bool,
experimental: bool,
workers: Iterable[WorkerBase],
) -> GenericBuilder:
tags_ubasan = ("Debian", "clang", "asan", "ubsan", "big")
jobs = 12
if debug:
Expand All @@ -173,22 +181,54 @@ def ubasan_builder(name: str, debug: bool) -> GenericBuilder:
sequences=[
asan_ubsan(
jobs=jobs,
config=docker_config(image="debian12-msan-clang-20", shm_size="24g"),
config=docker_config(image=image, shm_size="24g"),
isDebugBuildType=debug,
isExperimental=experimental,
)
],
).get_config(
workers=DEFAULT_AMD64_WORKER_POOL,
workers=workers,
tags=list(tags_ubasan),
jobs=jobs,
)


for builder in ["amd64-ubasan-clang-20", "amd64-ubasan-clang-20-debug"]:
c["builders"].append(ubasan_builder(name=builder, debug=builder.endswith("debug")))
sg_bbw1 = WORKER_POOL.get_workers_for_arch(arch="amd64", names=["sg-bbw1"])

for builder, image, experimental, workers in [
(
"amd64-ubasan-clang-20",
"debian12-msan-clang-20",
False,
DEFAULT_AMD64_WORKER_POOL,
),
(
"amd64-ubasan-clang-20-debug",
"debian12-msan-clang-20",
False,
DEFAULT_AMD64_WORKER_POOL,
),
("amd64-ubasan-clang-22", "debian13-msan-clang-22", True, sg_bbw1),
("amd64-ubasan-clang-22-debug", "debian13-msan-clang-22", True, sg_bbw1),
]:
c["builders"].append(
ubasan_builder(
name=builder,
image=image,
debug=builder.endswith("debug"),
experimental=experimental,
workers=workers,
)
)

def msan_builder(name: str, debug: bool) -> GenericBuilder:

def msan_builder(
name: str,
image: str,
debug: bool,
experimental: bool,
workers: Iterable[WorkerBase],
) -> GenericBuilder:
tags_msan = ("Debian", "clang", "msan", "big")
jobs = 12
if debug:
Expand All @@ -200,19 +240,36 @@ def msan_builder(name: str, debug: bool) -> GenericBuilder:
sequences=[
msan(
jobs=jobs,
config=docker_config(image="debian12-msan-clang-20", shm_size="24g"),
config=docker_config(image=image, shm_size="24g"),
isDebugBuildType=debug,
isExperimental=experimental,
)
],
).get_config(
workers=DEFAULT_AMD64_WORKER_POOL,
workers=workers,
tags=list(tags_msan),
jobs=jobs,
)


builder = "amd64-msan-clang-20-debug"
c["builders"].append(msan_builder(name=builder, debug=builder.endswith("debug")))
for builder, image, experimental, workers in [
(
"amd64-msan-clang-20-debug",
"debian12-msan-clang-20",
False,
DEFAULT_AMD64_WORKER_POOL,
),
("amd64-msan-clang-22", "debian13-msan-clang-22", True, sg_bbw1),
]:
c["builders"].append(
msan_builder(
name=builder,
image=image,
debug=builder.endswith("debug"),
experimental=experimental,
workers=workers,
)
)

## ------------------------------------------------------------------- ##
## MTR EXTENDED COVERAGE BUILDERS ##
Expand Down