Pārlūkot izejas kodu

HUE-1371 [core] Encoding error on download logs

Fix oozie tests
Romain Rigaux 12 gadi atpakaļ
vecāks
revīzija
285d7da

+ 4 - 7
apps/beeswax/src/beeswax/tests.py

@@ -15,8 +15,6 @@
 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 # See the License for the specific language governing permissions and
 # limitations under the License.
-from beeswax.server.dbms import QueryServerException
-
 try:
   import json
 except ImportError:
@@ -31,6 +29,8 @@ import socket
 import tempfile
 import threading
 
+import hadoop
+
 from nose.tools import assert_true, assert_equal, assert_false, assert_not_equal
 from nose.plugins.skip import SkipTest
 
@@ -42,8 +42,6 @@ from desktop.lib.django_test_util import make_logged_in_client, assert_equal_mod
 from desktop.lib.django_test_util import assert_similar_pages
 from desktop.lib.test_utils import grant_access
 
-from beeswaxd import ttypes
-
 import beeswax.create_table
 import beeswax.forms
 import beeswax.hive_site
@@ -58,10 +56,9 @@ from beeswax.design import hql_query, _strip_trailing_semicolon
 from beeswax.data_export import download
 from beeswax.models import SavedQuery, QueryHistory, HQL
 from beeswax.server import dbms
-from beeswax.server.hive_server2_lib import HiveServerClient,\
-  HiveServerDataTable
+from beeswax.server.dbms import QueryServerException
+from beeswax.server.hive_server2_lib import HiveServerClient
 from beeswax.test_base import BeeswaxSampleProvider
-import hadoop
 
 
 LOG = logging.getLogger(__name__)

+ 12 - 0
desktop/core/src/desktop/tests.py

@@ -99,6 +99,18 @@ def test_log_view():
   response = c.get(URL)
   assert_equal(200, response.status_code)
 
+def test_download_log_view():
+  c = make_logged_in_client()
+
+  URL = reverse(views.download_log_view)
+
+  LOG = logging.getLogger(__name__)
+  LOG.warn(u'une voix m’a réveillé')
+
+  # UnicodeDecodeError: 'ascii' codec can't decode byte... should not happen
+  response = c.get(URL)
+  assert_equal("application/zip", response.get('Content-Type', ''))
+
 def test_dump_config():
   c = make_logged_in_client()
 

+ 4 - 3
desktop/core/src/desktop/views.py

@@ -34,7 +34,8 @@ import django.views.debug
 
 from desktop.lib import django_mako
 from desktop.lib.conf import GLOBAL_CONFIG
-from desktop.lib.django_util import login_notrequired, render_json, render, render_to_string
+from desktop.lib.django_util import login_notrequired, render_json, render
+from desktop.lib.i18n import smart_str
 from desktop.lib.paths import get_desktop_root
 from desktop.log.access import access_log_level, access_warn
 from desktop.models import UserPreferences, Settings
@@ -87,7 +88,7 @@ def download_log_view(request):
         tmp = tempfile.NamedTemporaryFile()
         log_tmp = tempfile.NamedTemporaryFile("w+t")
         for l in h.buf:
-          log_tmp.write(l + '\n')
+          log_tmp.write(smart_str(l) + '\n')
         # This is not just for show - w/out flush, we often get truncated logs
         log_tmp.flush()
         t = time.time()
@@ -100,7 +101,7 @@ def download_log_view(request):
         # if we don't seek to start of file, no bytes will be written
         tmp.seek(0)
         wrapper = FileWrapper(tmp)
-        response = HttpResponse(wrapper,content_type="application/zip")
+        response = HttpResponse(wrapper, content_type="application/zip")
         response['Content-Disposition'] = 'attachment; filename=hue-logs-%s.zip' % t
         response['Content-Length'] = length
         return response