Bug 156438 - [GTK] IndexedDB tests failing with Modern IDB
Summary: [GTK] IndexedDB tests failing with Modern IDB
Status: RESOLVED FIXED
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: 2023-01-25 19:34 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
Comment 5 Diego Pino 2023-01-25 19:34:04 PST
There are no references to this bug in any TestExpectations. It's probable this bug was solved at some point but it wasn't marked as closed. I'm closing this bug now. If you think this bug report is still valid, please reopen it and add an entry to TestExpectations.