Example #1
0
 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
     ]
Example #2
0
 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))]
Example #3
0
 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)]
Example #4
0
 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
Example #5
0
 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]
Example #6
0
 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']]