fix: default limit
This commit is contained in:
		
							parent
							
								
									dcebf86408
								
							
						
					
					
						commit
						c3f2b21732
					
				|  | @ -127,9 +127,14 @@ class Stage(BaseModel): | ||||||
|     @classmethod |     @classmethod | ||||||
|     def gather_cases(cls: Type["Stage"], values: Dict[str, Any]) -> Dict[str, Any]: |     def gather_cases(cls: Type["Stage"], values: Dict[str, Any]) -> Dict[str, Any]: | ||||||
|         cases = {k: v for k, v in values.items() if k.startswith("case")} |         cases = {k: v for k, v in values.items() if k.startswith("case")} | ||||||
|         for key in cases: |         limit = values.get("limit", {}) | ||||||
|  |         parsed_cases = {} | ||||||
|  |         for key, case in cases.items(): | ||||||
|  |             case_with_limit = {**limit, **case.get("limit", {})} | ||||||
|  |             case_for_parsing = {**case, "limit": case_with_limit} | ||||||
|  |             parsed_cases[key] = case_for_parsing | ||||||
|             values.pop(key) |             values.pop(key) | ||||||
|         values["cases"] = {k: v for k, v in cases.items()} |         values["cases"] = parsed_cases | ||||||
|         return values |         return values | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -4,9 +4,13 @@ from functools import partial | ||||||
| from pathlib import Path | from pathlib import Path | ||||||
| from typing import Any, Callable, Dict, List, Set, Tuple | from typing import Any, Callable, Dict, List, Set, Tuple | ||||||
| 
 | 
 | ||||||
| from joj3_config_generator.models import const, result, task | from joj3_config_generator.models import result, task | ||||||
| from joj3_config_generator.models.common import Memory, Time | from joj3_config_generator.models.common import Memory, Time | ||||||
| from joj3_config_generator.models.const import JOJ3_CONFIG_ROOT | from joj3_config_generator.models.const import ( | ||||||
|  |     DEFAULT_CLOCK_LIMIT_MULTIPLIER, | ||||||
|  |     DEFAULT_PROC_LIMIT, | ||||||
|  |     JOJ3_CONFIG_ROOT, | ||||||
|  | ) | ||||||
| from joj3_config_generator.models.task import Parser as ParserEnum | from joj3_config_generator.models.task import Parser as ParserEnum | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | @ -194,23 +198,19 @@ def fix_diff( | ||||||
|             ), |             ), | ||||||
|             args=shlex.split(case_stage.command) if case_stage.command else None, |             args=shlex.split(case_stage.command) if case_stage.command else None, | ||||||
|             cpu_limit=case_stage.limit.cpu, |             cpu_limit=case_stage.limit.cpu, | ||||||
|             clock_limit=2 * case_stage.limit.cpu, |             clock_limit=DEFAULT_CLOCK_LIMIT_MULTIPLIER * case_stage.limit.cpu, | ||||||
|             memory_limit=case_stage.limit.mem, |             memory_limit=case_stage.limit.mem, | ||||||
|             proc_limit=50, |             proc_limit=DEFAULT_PROC_LIMIT, | ||||||
|         ) |         ) | ||||||
|         if cmd.args == executor.with_.default.args: |         if cmd.args == executor.with_.default.args: | ||||||
|             cmd.args = None |             cmd.args = None | ||||||
|         # duplicate with the fallback case in executor.with_ |         if cmd.cpu_limit == executor.with_.default.cpu_limit: | ||||||
|         if cmd.cpu_limit == const.DEFAULT_CPU_LIMIT: |  | ||||||
|             cmd.cpu_limit = None |             cmd.cpu_limit = None | ||||||
|         if ( |         if cmd.clock_limit == executor.with_.default.clock_limit: | ||||||
|             cmd.clock_limit |  | ||||||
|             == const.DEFAULT_CLOCK_LIMIT_MULTIPLIER * const.DEFAULT_CPU_LIMIT |  | ||||||
|         ): |  | ||||||
|             cmd.clock_limit = None |             cmd.clock_limit = None | ||||||
|         if cmd.memory_limit == const.DEFAULT_MEMORY_LIMIT: |         if cmd.memory_limit == executor.with_.default.memory_limit: | ||||||
|             cmd.memory_limit = None |             cmd.memory_limit = None | ||||||
|         if cmd.proc_limit == const.DEFAULT_PROC_LIMIT: |         if cmd.proc_limit == executor.with_.default.proc_limit: | ||||||
|             cmd.proc_limit = None |             cmd.proc_limit = None | ||||||
|         stage_cases.append(cmd) |         stage_cases.append(cmd) | ||||||
|         parser_case = result.DiffCasesConfig( |         parser_case = result.DiffCasesConfig( | ||||||
|  |  | ||||||
|  | @ -71,6 +71,8 @@ | ||||||
|                                 "stdin": { |                                 "stdin": { | ||||||
|                                     "src": "/home/tt/.config/joj/diff/case0.in" |                                     "src": "/home/tt/.config/joj/diff/case0.in" | ||||||
|                                 }, |                                 }, | ||||||
|  |                                 "cpuLimit": 1000000000, | ||||||
|  |                                 "clockLimit": 2000000000, | ||||||
|                                 "memoryLimit": 2097152 |                                 "memoryLimit": 2097152 | ||||||
|                             }, |                             }, | ||||||
|                             { |                             { | ||||||
|  |  | ||||||
|  | @ -33,6 +33,7 @@ case1.diff.output.ignore_spaces = true | ||||||
| case1.command = "./h7/build/ex2" | case1.command = "./h7/build/ex2" | ||||||
| 
 | 
 | ||||||
| case9.diff.output.score = 1232131 | case9.diff.output.score = 1232131 | ||||||
|  | case9.limit.mem = "10m" | ||||||
| 
 | 
 | ||||||
| case11.diff.output.score = 92321 | case11.diff.output.score = 92321 | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user