| 177 | |
| 178 | |
| 179 | def run_sqlancer( |
| 180 | c: Composition, |
| 181 | parser: WorkflowArgumentParser, |
| 182 | *, |
| 183 | service_name: str, |
| 184 | default_oracle: str, |
| 185 | build_run_args: Callable[[argparse.Namespace, int], list[str]], |
| 186 | docker_logs_path: str, |
| 187 | log_prefix: str, |
| 188 | ) -> None: |
| 189 | parser.add_argument("--runtime", default=600, type=int) |
| 190 | parser.add_argument("--num-tries", default=100000, type=int) |
| 191 | parser.add_argument("--num-threads", default=16, type=int) |
| 192 | parser.add_argument("--seed", default=None, type=int) |
| 193 | parser.add_argument("--qpg", default=True, action=argparse.BooleanOptionalAction) |
| 194 | parser.add_argument("--oracle", default=default_oracle, type=str) |
| 195 | args = parser.parse_args() |
| 196 | |
| 197 | c.up("materialized") |
| 198 | |
| 199 | c.sql( |
| 200 | "ALTER SYSTEM SET max_databases TO 1000", |
| 201 | user="mz_system", |
| 202 | port=6877, |
| 203 | ) |
| 204 | c.sql( |
| 205 | "ALTER SYSTEM SET max_tables TO 1000", |
| 206 | user="mz_system", |
| 207 | port=6877, |
| 208 | ) |
| 209 | c.sql( |
| 210 | "ALTER SYSTEM SET max_materialized_views TO 1000", |
| 211 | user="mz_system", |
| 212 | port=6877, |
| 213 | ) |
| 214 | |
| 215 | seed = args.seed or random.randint(0, 2**31) |
| 216 | |
| 217 | run_args = build_run_args(args, seed) |
| 218 | |
| 219 | print("--- Run in progress") |
| 220 | result = c.run( |
| 221 | service_name, |
| 222 | *run_args, |
| 223 | check=False, |
| 224 | detach=True, |
| 225 | capture=True, |
| 226 | ) |
| 227 | container_id = result.stdout.strip() |
| 228 | |
| 229 | # Print logs in a background thread so that we get immediate output in CI, |
| 230 | # and also when running SQLancer locally |
| 231 | thread = Thread(target=_print_logs, args=(container_id,)) |
| 232 | thread.start() |
| 233 | # At the same time capture the logs to analyze for finding new issues |
| 234 | stdout = spawn.capture( |
| 235 | ["docker", "logs", "-f", container_id], stderr=subprocess.STDOUT |
| 236 | ) |