IMPALA-5262: test_analytic_order_by_random fails with assert

This was a poorly written test that relies on assumptions about
the behavior of 'rand' and the order that rows get processed in
a table that Impala doesn't actually guarantee.

The new version is still sensitive to the precise behavior of
'rand()', but shouldn't be flaky unless that behavior is changed.

Change-Id: If1ba8154c2b6a8d508916d85391b95885ef915a9
Reviewed-on: http://gerrit.cloudera.org:8080/6775
Reviewed-by: Alex Behm <[email protected]>
Tested-by: Impala Public Jenkins


Project: http://git-wip-us.apache.org/repos/asf/incubator-impala/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-impala/commit/698f4a34
Tree: http://git-wip-us.apache.org/repos/asf/incubator-impala/tree/698f4a34
Diff: http://git-wip-us.apache.org/repos/asf/incubator-impala/diff/698f4a34

Branch: refs/heads/master
Commit: 698f4a34c612985df9ffcf9a9a666ee6c38c5679
Parents: 5803a0b
Author: Thomas Tauber-Marshall <[email protected]>
Authored: Mon May 1 16:13:40 2017 -0700
Committer: Impala Public Jenkins <[email protected]>
Committed: Wed May 3 01:19:58 2017 +0000

----------------------------------------------------------------------
 tests/query_test/test_sort.py | 12 +++++-------
 1 file changed, 5 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/698f4a34/tests/query_test/test_sort.py
----------------------------------------------------------------------
diff --git a/tests/query_test/test_sort.py b/tests/query_test/test_sort.py
index 1b77b6f..b048c9f 100644
--- a/tests/query_test/test_sort.py
+++ b/tests/query_test/test_sort.py
@@ -188,10 +188,8 @@ class TestRandomSort(ImpalaTestSuite):
 
   def test_analytic_order_by_random(self):
     """Tests that a window function over 'order by random()' works as 
expected."""
-    # Since we use the same random seed and a very small table, the following 
queries
-    # should be equivalent.
-    results = transpose_results(self.execute_query("select id from "
-        "functional.alltypestiny order by random(2)").data)
-    analytic_results = transpose_results(self.execute_query("select 
last_value(id) over "
-        "(order by random(2)) from functional.alltypestiny").data)
-    assert results == analytic_results
+    # Since we use the same random seed, the results should be returned in 
order.
+    query = """select last_value(rand(2)) over (order by rand(2)) from
+      functional.alltypestiny"""
+    results = transpose_results(self.execute_query(query).data, lambda x: 
float(x))
+    assert (results == sorted(results))

Reply via email to