Răsfoiți Sursa

HUE-8737 [jb] Fix job browser tests for py3

Ying Chen 6 ani în urmă
părinte
comite
affe8bb672

+ 2 - 1
apps/jobbrowser/src/jobbrowser/templates/job.mako

@@ -24,6 +24,7 @@
   from desktop.views import commonheader, commonfooter
   from django.template.defaultfilters import urlencode
   from django.utils.translation import ugettext as _
+  from six import iteritems
 %>
 <%def name="task_table(dom_id, tasks)">
     <table id="${ dom_id }" class="taskTable table table-condensed">
@@ -57,7 +58,7 @@
 </%def>
 
 <%def name="rows_for_conf_vars(rows)">
-    %  for k, v in sorted(rows.iteritems()):
+    %  for k, v in sorted(iteritems(rows)):
         <tr>
             <td>${k}</td>
         <%

+ 6 - 6
apps/jobbrowser/src/jobbrowser/tests.py

@@ -428,12 +428,12 @@ class TestMapReduce2NoHadoop(object):
 
   def test_running_job(self):
     response = self.c.get('/jobbrowser/jobs/application_1356251510842_0054')
-    assert_true('job_1356251510842_0054' in response.content, response.content)
-    assert_true('RUNNING' in response.content)
+    assert_true(b'job_1356251510842_0054' in response.content, response.content)
+    assert_true(b'RUNNING' in response.content)
 
     response = self.c.get('/jobbrowser/jobs/job_1356251510842_0054')
-    assert_true('job_1356251510842_0054' in response.content)
-    assert_true('RUNNING' in response.content)
+    assert_true(b'job_1356251510842_0054' in response.content)
+    assert_true(b'RUNNING' in response.content)
 
   def test_application_no_start_time(self):
     response = self.c.get('/jobbrowser/jobs/application_1428442704693_0007?format=json')
@@ -478,7 +478,7 @@ class TestMapReduce2NoHadoop(object):
     assert_false(can_modify_job('test3', response.context[0]['job']))
 
     response2 = self.c3.get('/jobbrowser/jobs/job_1356251510842_0054')
-    assert_true('don&#39;t have permission to access job' in response2.content, response2.content)
+    assert_true(b'don&#39;t have permission to access job' in response2.content, response2.content)
 
   def test_kill_job(self):
     job_id = 'application_1356251510842_0054'
@@ -489,7 +489,7 @@ class TestMapReduce2NoHadoop(object):
       MockResourceManagerApi.APPS[job_id]['state'] = 'RUNNING'
 
     response = self.c2.post('/jobbrowser/jobs/%s/kill?format=json' % job_id)
-    assert_true('Kill operation is forbidden.' in response.content, response.content)
+    assert_true(b'Kill operation is forbidden.' in response.content, response.content)
 
 
 

+ 8 - 2
apps/jobbrowser/src/jobbrowser/views.py

@@ -23,6 +23,7 @@ from builtins import str
 import logging
 import re
 import string
+import sys
 import time
 import urllib.request, urllib.error, urllib.parse
 import urllib.parse
@@ -255,9 +256,14 @@ def single_job(request, job):
     return single_spark_job(request, job)
 
   failed_tasks = job.filter_tasks(task_states=('failed',))
-  failed_tasks.sort(cmp_exec_time)
   recent_tasks = job.filter_tasks(task_states=('running', 'succeeded',))
-  recent_tasks.sort(cmp_exec_time, reverse=True)
+
+  if sys.version_info[0] > 2:
+    failed_tasks.sort(key=lambda task: task.execStartTimeMs)
+    recent_tasks.sort(key=lambda task: task.execStartTimeMs, reverse=True)
+  else:
+    failed_tasks.sort(cmp_exec_time)
+    recent_tasks.sort(cmp_exec_time, reverse=True)
 
   if request.GET.get('format') == 'json':
     json_failed_tasks = [massage_task_for_json(task) for task in failed_tasks]