Browse Source

[hive] Fix create table test to now look at json data for the samples

Romain Rigaux 10 năm trước cách đây
mục cha
commit
c90d0b0

+ 16 - 5
apps/beeswax/src/beeswax/api.py

@@ -663,12 +663,23 @@ def describe_table(request, database, table):
 
 
 def get_sample_data(request, database, table):
+  db = dbms.get(request.user)
+  response = {'status': -1, 'error_message': ''}
+
   try:
-    from metastore.views import get_sample_data
-    return get_sample_data(request, database, table)
-  except Exception, e:
-    LOG.exception('Failed to retrieve sample data for `%s`.`%s`' % (database, table))
-    raise PopupException(_('Problem accessing table metadata'), detail=e)
+    table_obj = db.get_table(database, table)
+    sample_data = db.get_sample(database, table_obj)
+    if sample_data:
+      response['status'] = 0
+      response['headers'] = sample_data.cols()
+      response['rows'] = list(sample_data.rows())
+    else:
+      response['error_message'] = _('Sample data took too long to be generated')
+  except Exception, ex:
+    error_message, logs = dbms.expand_exception(ex, db)
+    response['error_message'] = error_message
+
+  return JsonResponse(response)
 
 
 def get_query_form(request):

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

@@ -1473,8 +1473,11 @@ for x in sys.stdin:
     cols = resp.context['table'].cols
     assert_equal(len(cols), 3)
     assert_equal([ col.name for col in cols ], [ 'col_a', 'col_b', 'col_c' ])
-    assert_true("nada" in resp.content, resp.content)
-    assert_true("sp ace" in resp.content, resp.content)
+    resp = self.client.get(reverse('beeswax:get_sample_data', kwargs={'database': self.db_name, 'table': 'test_create_import'}))
+    rows = json.loads(resp.content)['rows']
+    flat_rows = sum(rows, [])
+    assert_true("nada" in flat_rows, flat_rows)
+    assert_true("sp ace" in flat_rows, flat_rows)
 
     # Test table creation and data loading and removing header
     resp = self.client.post('/beeswax/create/import_wizard/%s' % self.db_name, {
@@ -1528,11 +1531,14 @@ for x in sys.stdin:
     cols = resp.context['table'].cols
     assert_equal(len(cols), 3)
     assert_equal([col.name for col in cols], ['col_a', 'col_b', 'col_c'])
-    assert_equal(resp.context['sample_rows'], [
+
+    resp = self.client.get(reverse('beeswax:get_sample_data', kwargs={'database': self.db_name, 'table': 'test_create_import_with_header'}))
+    rows = json.loads(resp.content)['rows']
+    assert_equal([
       #['a', 'b', 'c'], # Gone as told to be header
       ['"a', 'a"', '"b'], # Hive does not support natively quoted CSV
       ['"a', '""a"', '"b']
-    ] )
+    ], rows)
 
 
   def test_select_invalid_data(self):

+ 0 - 18
apps/metastore/src/metastore/views.py

@@ -211,24 +211,6 @@ def get_table_metadata(request, database, table):
   return JsonResponse(response)
 
 
-def get_sample_data(request, database, table):
-  db = dbms.get(request.user)
-  response = {'status': -1, 'error_message': ''}
-  try:
-    table_obj = db.get_table(database, table)
-    sample_data = db.get_sample(database, table_obj)
-    response = {
-      'status': 0,
-      'headers': sample_data and sample_data.cols(),
-      'rows': sample_data and list(sample_data.rows())
-    }
-  except Exception, ex:
-    error_message, logs = dbms.expand_exception(ex, db)
-    response['error_message'] = error_message
-
-  return JsonResponse(response)
-
-
 def describe_table(request, database, table):
   app_name = get_app_name(request)
   query_server = get_query_server_config(app_name)