Bug 156438 - [GTK] IndexedDB tests failing with Modern IDB
Summary: [GTK] IndexedDB tests failing with Modern IDB
Status: NEW
Alias: None
Product: WebKit
Classification: Unclassified
Component: WebKitGTK (show other bugs)
Version: Other
Hardware: PC Linux
: P2 Normal
Assignee: Nobody
URL:
Keywords:
Depends on: 149117
Blocks: 165889
  Show dependency treegraph
 
Reported: 2016-04-09 11:07 PDT by Michael Catanzaro
Modified: 2019-02-07 01:59 PST (History)
5 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Michael Catanzaro 2016-04-09 11:07:09 PDT
Since Modern IDB has landed, I unskipped many IndexedDB tests in r199270. Unfortunately four of the tests are failing on the GTK port:

imported/w3c/web-platform-tests/IndexedDB/idbindex-multientry-big.htm
imported/w3c/web-platform-tests/IndexedDB/keyorder.htm
inspector/indexeddb/requestDatabaseNames.html
storage/indexeddb/cursor-key-order.html

All other IndexedDB tests appear to be passing, which is an awesome improvement.


--- /home/slave/webkitgtk/gtk-linux-64-release-tests/build/layout-test-results/imported/w3c/web-platform-tests/IndexedDB/idbindex-multientry-big-expected.txt
+++ /home/slave/webkitgtk/gtk-linux-64-release-tests/build/layout-test-results/imported/w3c/web-platform-tests/IndexedDB/idbindex-multientry-big-actual.txt
@@ -1,4 +1,6 @@
+
+Harness Error (TIMEOUT), message = null
 
 PASS Adding one item with 1000 multiEntry keys 
-PASS Getting the one item by 1000 indeced keys  
+TIMEOUT Getting the one item by 1000 indeced keys  Test timed out


--- /home/slave/webkitgtk/gtk-linux-64-release-tests/build/layout-test-results/imported/w3c/web-platform-tests/IndexedDB/keyorder-expected.txt
+++ /home/slave/webkitgtk/gtk-linux-64-release-tests/build/layout-test-results/imported/w3c/web-platform-tests/IndexedDB/keyorder-actual.txt
@@ -1,3 +1,5 @@
+
+Harness Error (TIMEOUT), message = null
 
 PASS Database readback sort - String < Array 
 PASS IDBKey.cmp sorted - String < Array 
@@ -17,10 +19,10 @@
 PASS IDBKey.cmp sorted - "" < "a" < "ab" < "b" < "ba" 
 PASS Database readback sort - Arrays 
 PASS IDBKey.cmp sorted - Arrays 
-PASS Database readback sort - Array.length: 10,000 < Array.length: 10,001 
+TIMEOUT Database readback sort - Array.length: 10,000 < Array.length: 10,001 Test timed out
 PASS IDBKey.cmp sorted - Array.length: 10,000 < Array.length: 10,001 
-PASS Database readback sort - Infinity inside arrays 
+TIMEOUT Database readback sort - Infinity inside arrays Test timed out
 PASS IDBKey.cmp sorted - Infinity inside arrays 
-PASS Database readback sort - Test different stuff at once 
+TIMEOUT Database readback sort - Test different stuff at once Test timed out
 PASS IDBKey.cmp sorted - Test different stuff at once


--- /home/slave/webkitgtk/gtk-linux-64-release-tests/build/layout-test-results/inspector/indexeddb/requestDatabaseNames-expected.txt
+++ /home/slave/webkitgtk/gtk-linux-64-release-tests/build/layout-test-results/inspector/indexeddb/requestDatabaseNames-actual.txt
@@ -1,11 +1,4 @@
-CONSOLE MESSAGE: line 10: Created Database 'Database1'
-CONSOLE MESSAGE: line 10: Created Database 'Database2'
 
-PASS: No IndexedDB databases should exist initially
-Created Database 'Database1'
-PASS: A single IndexedDB database should exist
-["Database1"]
-Created Database 'Database2'
-PASS: Two IndexedDB databases should exist
-["Database1","Database2"]
+PROTOCOL ERROR: Could not obtain database names.
+ERROR: Uncaught exception in inspector page while dispatching callback for command IndexedDB.requestDatabaseNames PROTOCOL ERROR


--- /home/slave/webkitgtk/gtk-linux-64-release-tests/build/layout-test-results/storage/indexeddb/cursor-key-order-expected.txt
+++ /home/slave/webkitgtk/gtk-linux-64-release-tests/build/layout-test-results/storage/indexeddb/cursor-key-order-actual.txt
@@ -119,156 +119,148 @@
 cursor = curreq.result
 PASS compare(cursor.key, '') is true
 getreq = store.get(cursor.key)
-PASS getreq.result is count++
-cursor = curreq.result
-PASS compare(cursor.key, '\0') is true
-getreq = store.get(cursor.key)
-PASS getreq.result is count++
-cursor = curreq.result
-PASS compare(cursor.key, 'a') is true
-getreq = store.get(cursor.key)
-PASS getreq.result is count++
-cursor = curreq.result
-PASS compare(cursor.key, 'aa') is true
-getreq = store.get(cursor.key)
-PASS getreq.result is count++
-cursor = curreq.result
-PASS compare(cursor.key, 'b') is true
-getreq = store.get(cursor.key)
-PASS getreq.result is count++
-cursor = curreq.result
-PASS compare(cursor.key, 'ba') is true
-getreq = store.get(cursor.key)
-PASS getreq.result is count++
-cursor = curreq.result
-PASS compare(cursor.key, '¢') is true
-getreq = store.get(cursor.key)
-PASS getreq.result is count++
-cursor = curreq.result
-PASS compare(cursor.key, '水') is true
-getreq = store.get(cursor.key)
-PASS getreq.result is count++
-cursor = curreq.result
-PASS compare(cursor.key, '𝄞') is true
-getreq = store.get(cursor.key)
-PASS getreq.result is count++
-cursor = curreq.result
-PASS compare(cursor.key, '�') is true
-getreq = store.get(cursor.key)
-PASS getreq.result is count++
-cursor = curreq.result
-PASS compare(cursor.key, []) is true
-getreq = store.get(cursor.key)
-PASS getreq.result is count++
-cursor = curreq.result
-PASS compare(cursor.key, [-Infinity]) is true
-getreq = store.get(cursor.key)
-PASS getreq.result is count++
-cursor = curreq.result
-PASS compare(cursor.key, [-Number.MAX_VALUE]) is true
-getreq = store.get(cursor.key)
-PASS getreq.result is count++
-cursor = curreq.result
-PASS compare(cursor.key, [-1]) is true
-getreq = store.get(cursor.key)
-PASS getreq.result is count++
-cursor = curreq.result
-PASS compare(cursor.key, [-Number.MIN_VALUE]) is true
-getreq = store.get(cursor.key)
-PASS getreq.result is count++
-cursor = curreq.result
-PASS compare(cursor.key, [0]) is true
-getreq = store.get(cursor.key)
-PASS getreq.result is count++
-cursor = curreq.result
-PASS compare(cursor.key, [Number.MIN_VALUE]) is true
-getreq = store.get(cursor.key)
-PASS getreq.result is count++
-cursor = curreq.result
-PASS compare(cursor.key, [1]) is true
-getreq = store.get(cursor.key)
-PASS getreq.result is count++
-cursor = curreq.result
-PASS compare(cursor.key, [Number.MAX_VALUE]) is true
-getreq = store.get(cursor.key)
-PASS getreq.result is count++
-cursor = curreq.result
-PASS compare(cursor.key, [Infinity]) is true
-getreq = store.get(cursor.key)
-PASS getreq.result is count++
-cursor = curreq.result
-PASS compare(cursor.key, [new Date(0)]) is true
-getreq = store.get(cursor.key)
-PASS getreq.result is count++
-cursor = curreq.result
-PASS compare(cursor.key, [new Date(1000)]) is true
-getreq = store.get(cursor.key)
-PASS getreq.result is count++
-cursor = curreq.result
-PASS compare(cursor.key, [new Date(1317399931023)]) is true
-getreq = store.get(cursor.key)
-PASS getreq.result is count++
-cursor = curreq.result
-PASS compare(cursor.key, ['']) is true
-getreq = store.get(cursor.key)
-PASS getreq.result is count++
-cursor = curreq.result
-PASS compare(cursor.key, ['\0']) is true
-getreq = store.get(cursor.key)
-PASS getreq.result is count++
-cursor = curreq.result
-PASS compare(cursor.key, ['a']) is true
-getreq = store.get(cursor.key)
-PASS getreq.result is count++
-cursor = curreq.result
-PASS compare(cursor.key, ['aa']) is true
-getreq = store.get(cursor.key)
-PASS getreq.result is count++
-cursor = curreq.result
-PASS compare(cursor.key, ['b']) is true
-getreq = store.get(cursor.key)
-PASS getreq.result is count++
-cursor = curreq.result
-PASS compare(cursor.key, ['ba']) is true
-getreq = store.get(cursor.key)
-PASS getreq.result is count++
-cursor = curreq.result
-PASS compare(cursor.key, ['¢']) is true
-getreq = store.get(cursor.key)
-PASS getreq.result is count++
-cursor = curreq.result
-PASS compare(cursor.key, ['水']) is true
-getreq = store.get(cursor.key)
-PASS getreq.result is count++
-cursor = curreq.result
-PASS compare(cursor.key, ['𝄞']) is true
-getreq = store.get(cursor.key)
-PASS getreq.result is count++
-cursor = curreq.result
-PASS compare(cursor.key, ['�']) is true
-getreq = store.get(cursor.key)
-PASS getreq.result is count++
-cursor = curreq.result
-PASS compare(cursor.key, [[]]) is true
-getreq = store.get(cursor.key)
-PASS getreq.result is count++
-cursor = curreq.result
-PASS compare(cursor.key, [[], []]) is true
-getreq = store.get(cursor.key)
-PASS getreq.result is count++
-cursor = curreq.result
-PASS compare(cursor.key, [[], [], []]) is true
-getreq = store.get(cursor.key)
-PASS getreq.result is count++
-cursor = curreq.result
-PASS compare(cursor.key, [[[]]]) is true
-getreq = store.get(cursor.key)
-PASS getreq.result is count++
-cursor = curreq.result
-PASS compare(cursor.key, [[[[]]]]) is true
-getreq = store.get(cursor.key)
-PASS getreq.result is count++
-PASS count is keys.length
+FAIL getreq.result should be 12. Was 13.
+cursor = curreq.result
+FAIL compare(cursor.key, '\0') should be true. Was false.
+getreq = store.get(cursor.key)
+FAIL getreq.result should be 13. Was 14.
+cursor = curreq.result
+FAIL compare(cursor.key, 'a') should be true. Was false.
+getreq = store.get(cursor.key)
+FAIL getreq.result should be 14. Was 15.
+cursor = curreq.result
+FAIL compare(cursor.key, 'aa') should be true. Was false.
+getreq = store.get(cursor.key)
+FAIL getreq.result should be 15. Was 16.
+cursor = curreq.result
+FAIL compare(cursor.key, 'b') should be true. Was false.
+getreq = store.get(cursor.key)
+FAIL getreq.result should be 16. Was 17.
+cursor = curreq.result
+FAIL compare(cursor.key, 'ba') should be true. Was false.
+getreq = store.get(cursor.key)
+FAIL getreq.result should be 17. Was 18.
+cursor = curreq.result
+FAIL compare(cursor.key, '¢') should be true. Was false.
+getreq = store.get(cursor.key)
+FAIL getreq.result should be 18. Was 19.
+cursor = curreq.result
+FAIL compare(cursor.key, '水') should be true. Was false.
+getreq = store.get(cursor.key)
+FAIL getreq.result should be 19. Was 20.
+cursor = curreq.result
+FAIL compare(cursor.key, '𝄞') should be true. Was false.
+getreq = store.get(cursor.key)
+FAIL getreq.result should be 20. Was 21.
+cursor = curreq.result
+FAIL compare(cursor.key, '�') should be true. Was false.
+getreq = store.get(cursor.key)
+FAIL getreq.result should be 21. Was 22.
+cursor = curreq.result
+FAIL compare(cursor.key, []) should be true. Was false.
+getreq = store.get(cursor.key)
+FAIL getreq.result should be 22. Was 23.
+cursor = curreq.result
+FAIL compare(cursor.key, [-Infinity]) should be true. Was false.
+getreq = store.get(cursor.key)
+FAIL getreq.result should be 23. Was 24.
+cursor = curreq.result
+FAIL compare(cursor.key, [-Number.MAX_VALUE]) should be true. Was false.
+getreq = store.get(cursor.key)
+FAIL getreq.result should be 24. Was 25.
+cursor = curreq.result
+FAIL compare(cursor.key, [-1]) should be true. Was false.
+getreq = store.get(cursor.key)
+FAIL getreq.result should be 25. Was 26.
+cursor = curreq.result
+FAIL compare(cursor.key, [-Number.MIN_VALUE]) should be true. Was false.
+getreq = store.get(cursor.key)
+FAIL getreq.result should be 26. Was 27.
+cursor = curreq.result
+FAIL compare(cursor.key, [0]) should be true. Was false.
+getreq = store.get(cursor.key)
+FAIL getreq.result should be 27. Was 28.
+cursor = curreq.result
+FAIL compare(cursor.key, [Number.MIN_VALUE]) should be true. Was false.
+getreq = store.get(cursor.key)
+FAIL getreq.result should be 28. Was 29.
+cursor = curreq.result
+FAIL compare(cursor.key, [1]) should be true. Was false.
+getreq = store.get(cursor.key)
+FAIL getreq.result should be 29. Was 30.
+cursor = curreq.result
+FAIL compare(cursor.key, [Number.MAX_VALUE]) should be true. Was false.
+getreq = store.get(cursor.key)
+FAIL getreq.result should be 30. Was 31.
+cursor = curreq.result
+FAIL compare(cursor.key, [Infinity]) should be true. Was false.
+getreq = store.get(cursor.key)
+FAIL getreq.result should be 31. Was 32.
+cursor = curreq.result
+FAIL compare(cursor.key, [new Date(0)]) should be true. Was false.
+getreq = store.get(cursor.key)
+FAIL getreq.result should be 32. Was 33.
+cursor = curreq.result
+FAIL compare(cursor.key, [new Date(1000)]) should be true. Was false.
+getreq = store.get(cursor.key)
+FAIL getreq.result should be 33. Was 34.
+cursor = curreq.result
+FAIL compare(cursor.key, [new Date(1317399931023)]) should be true. Was false.
+getreq = store.get(cursor.key)
+FAIL getreq.result should be 34. Was 36.
+cursor = curreq.result
+FAIL compare(cursor.key, ['']) should be true. Was false.
+getreq = store.get(cursor.key)
+FAIL getreq.result should be 35. Was 37.
+cursor = curreq.result
+FAIL compare(cursor.key, ['\0']) should be true. Was false.
+getreq = store.get(cursor.key)
+FAIL getreq.result should be 36. Was 38.
+cursor = curreq.result
+FAIL compare(cursor.key, ['a']) should be true. Was false.
+getreq = store.get(cursor.key)
+FAIL getreq.result should be 37. Was 39.
+cursor = curreq.result
+FAIL compare(cursor.key, ['aa']) should be true. Was false.
+getreq = store.get(cursor.key)
+FAIL getreq.result should be 38. Was 40.
+cursor = curreq.result
+FAIL compare(cursor.key, ['b']) should be true. Was false.
+getreq = store.get(cursor.key)
+FAIL getreq.result should be 39. Was 41.
+cursor = curreq.result
+FAIL compare(cursor.key, ['ba']) should be true. Was false.
+getreq = store.get(cursor.key)
+FAIL getreq.result should be 40. Was 42.
+cursor = curreq.result
+FAIL compare(cursor.key, ['¢']) should be true. Was false.
+getreq = store.get(cursor.key)
+FAIL getreq.result should be 41. Was 43.
+cursor = curreq.result
+FAIL compare(cursor.key, ['水']) should be true. Was false.
+getreq = store.get(cursor.key)
+FAIL getreq.result should be 42. Was 44.
+cursor = curreq.result
+FAIL compare(cursor.key, ['𝄞']) should be true. Was false.
+getreq = store.get(cursor.key)
+FAIL getreq.result should be 43. Was 45.
+cursor = curreq.result
+FAIL compare(cursor.key, ['�']) should be true. Was false.
+getreq = store.get(cursor.key)
+FAIL getreq.result should be 44. Was 46.
+cursor = curreq.result
+FAIL compare(cursor.key, [[]]) should be true. Was false.
+getreq = store.get(cursor.key)
+FAIL getreq.result should be 45. Was 47.
+cursor = curreq.result
+FAIL compare(cursor.key, [[], []]) should be true. Was false.
+getreq = store.get(cursor.key)
+FAIL getreq.result should be 46. Was 48.
+cursor = curreq.result
+FAIL compare(cursor.key, [[], [], []]) should be true. Was false.
+getreq = store.get(cursor.key)
+FAIL getreq.result should be 47. Was 49.
+FAIL count should be 50. Was 48.
 
 validate compare function
 PASS compare(undefined, undefined) is true
Comment 1 Michael Catanzaro 2016-04-09 11:12:03 PDT
Updated expectations in r199272.
Comment 2 Charlie Turner 2017-07-25 08:53:57 PDT
imported/w3c/web-platform-tests/IndexedDB/idbindex-multientry-big.htm appears to have been fixed by r209824.
Comment 3 Brady Eidson 2017-07-25 09:55:09 PDT
(In reply to Charlie Turner from comment #2)
> imported/w3c/web-platform-tests/IndexedDB/idbindex-multientry-big.htm
> appears to have been fixed by r209824.

It's *much* better now, especially in release. I think it still occasionally times out in debug builds.
Comment 4 Miguel Gomez 2019-02-07 01:59:04 PST
inspector/indexeddb/requestDatabaseNames.html is passing since r240969