Mercurial > ~astiob > upreckon > hgweb
diff upreckon/win32.py @ 251:d3a5d1929ad2
Wall-clock time limit is now enforced before handling CPU times on Win32 too
author | Oleg Oshmyan <chortos@inbox.lv> |
---|---|
date | Sun, 19 Jan 2014 01:21:22 +0000 |
parents | acd70a60bc17 |
children |
line wrap: on
line diff
--- a/upreckon/win32.py Sun Jan 19 00:50:27 2014 +0000 +++ b/upreckon/win32.py Sun Jan 19 01:21:22 2014 +0000 @@ -537,21 +537,20 @@ try: times = GetProcessTimes(case.process._handle) except WindowsError: - pass + times = None else: - if case.maxcputime or not case.maxwalltime: - cputime = times.kernel + times.user - case.time_stopped = cputime - case.time_started = 0 - case.time_limit_string = case.cpu_time_limit_string - if case.maxcputime and cputime > case.maxcputime: - raise CPUTimeLimitExceeded - else: - case.time_stopped = times.exit - case.time_started = times.creation - walltime = times.exit - times.creation - if case.maxwalltime and walltime > case.maxwalltime: - raise WallTimeLimitExceeded + case.time_stopped = times.exit + case.time_started = times.creation + if (case.maxwalltime and + case.time_stopped - case.time_started > case.maxwalltime): + raise WallTimeLimitExceeded + if times and (case.maxcputime or not case.maxwalltime): + cputime = times.kernel + times.user + case.time_stopped = cputime + case.time_started = 0 + case.time_limit_string = case.cpu_time_limit_string + if case.maxcputime and cputime > case.maxcputime: + raise CPUTimeLimitExceeded if case.maxcputime and case.process.returncode == 1816: raise CPUTimeLimitExceeded if case.maxmemory and GetProcessMemoryInfo: