def submission_protocol(self, subm_id): subm = self._submission_descr(subm_id) if subm == None: return [] try: subm = subm['judgement']['results'] except KeyError: return [] return [ bjtypes.test_t(self._convert_verdict(i['verdict__str']), self._convert_stats(i)) for i in subm ]
def submission_protocol(self, id): data = self._request_json("/py/protocol/get/%d"%int(id)).get('tests', {}) ans = [] status_codes = dict( OK='OK', RT='Run-time error', TL='Time-limit exceeded', PE='Presentation error', WA='Wrong answer', CF='Check failed', ML='Memory limit exceeded', SE='Security violation', SV='Style violation', WT='Wall time limit exceeded', SK='Skipped' ) return [bjtypes.test_t(status_codes[data[str(k)]['status']], {'time_usage': data[str(k)]['time']/1000, 'memory_usage': int(data[str(k)]['max_memory_used'])}) for k in sorted(map(int, data))]
def submission_protocol(self, id): code, headers, data = self._cache_get(self.urls['protocol'].format(run_id=id)) if b'<input type="submit" name="action_35" value="Change!" />' in data: raise BruteError("Password change is required.") if code != 200: raise BruteError("Failed to fetch testing protocol.") w = data.count(b'<th ') if w == 0: return [] splitted = data.decode('utf-8').split('<td class="b1">')[1:] data = [x.split("</td>")[0] for x in splitted] statuses = [i[:-7].split('>')[-1] for i in data[1::w]] tls = [] for i in map(html.unescape, data[2::w]): if i.startswith('>'): i = i[1:] tls.append(float(i)) assert len(statuses) == len(tls) return [bjtypes.test_t(i, {'time_usage': j}) for i, j in zip(statuses, tls)]
def submission_protocol(self, subm_id): data = self._get_submission(subm_id, self._get_submissions()[1]) ntests = int(data.get('testCount', 0)) ans = [] for i in range(ntests): stats = {} try: stats['time_usage'] = float( data['timeConsumed#' + str(i + 1)]) / 1000 except KeyError: pass try: stats['memory_usage'] = int(data['memoryConsumed#' + str(i + 1)]) except KeyError: pass try: ans.append( bjtypes.test_t( self._format_status(data['verdict#' + str(i + 1)]), stats)) except KeyError: pass return ans
def submission_protocol(self, run_id): data = self._submission_descr(run_id) try: data = data['testing_report']['tests'] except KeyError: return [], [] return [bjtypes.test_t(STATUS_NAMES[i['status']], {'time_usage': i['time_ms'] / 1000}) for i in data]
def submission_protocol(self, id): code, headers, data = self._cache_get('/runs/%s/protocol?compile_log=true&resource_usage=true'%self._get_uuid(int(id))) if code != 200: return [] return [bjtypes.test_t(self._format_status(i['status']['code']), {'time_usage': i['time_usage']/1000000000, 'memory_usage': i['memory_usage']}) for i in data['tests']]