CesiumGS / cesium

An open-source JavaScript library for world-class 3D globes and maps :earth_americas:
https://cesium.com/cesiumjs/
Apache License 2.0
12.74k stars 3.45k forks source link

PolylineCollection Test Failure #7892

Open hpinkos opened 5 years ago

hpinkos commented 5 years ago

http://localhost:8080/Specs/SpecRunner.html?spec=Scene%2FPolylineCollection%20renders%20more%20than%2064K%20vertices%20of%20different%20polylines

Scene/PolylineCollection renders more than 64K vertices of different polylines
Expected not to render [0,0,0,255], but actually rendered [0,0,0,255].
Error: Expected not to render [0,0,0,255], but actually rendered [0,0,0,255].
    at stack (http://localhost:8080/ThirdParty/jasmine-2.2.0/jasmine.js:1475:17)
    at buildExpectationResult (http://localhost:8080/ThirdParty/jasmine-2.2.0/jasmine.js:1445:14)
    at Spec.expectationResultFactory (http://localhost:8080/ThirdParty/jasmine-2.2.0/jasmine.js:584:18)
    at Spec.addExpectationResult (http://localhost:8080/ThirdParty/jasmine-2.2.0/jasmine.js:332:34)
    at Expectation.addExpectationResult (http://localhost:8080/ThirdParty/jasmine-2.2.0/jasmine.js:528:21)
    at Expectation.notToRender (http://localhost:8080/ThirdParty/jasmine-2.2.0/jasmine.js:1399:12)
    at http://localhost:8080/Specs/Scene/PolylineCollectionSpec.js:813:23
    at Object.<anonymous> (http://localhost:8080/Specs/spec-main.js:142:30)
    at attemptAsync (http://localhost:8080/ThirdParty/jasmine-2.2.0/jasmine.js:1793:24)
    at QueueRunner.run (http://localhost:8080/ThirdParty/jasmine-2.2.0/jasmine.js:1746:26)
hpinkos commented 5 years ago

@lilleyse are you seeing this test failure? I'm seeing it in both Chrome and Firefox. I haven't checked the other browsers yet.

lilleyse commented 5 years ago

The test fails at this commit between 1.37 and 1.38. Not sure why it's suddenly failing now.

https://github.com/AnalyticalGraphicsInc/cesium/commit/809fa27f91fd8f387884cdc74b619cc802449325

I might have to pass this off to someone else more familiar with the polyline collection.

hpinkos commented 5 years ago

Doesn't that change fix what the test is supposed to be testing for?

lilleyse commented 5 years ago

Maybe? It doesn't seem like the test should fail though. If you change CesiumMath.SIXTY_FOUR_KILOBYTES to 1 in the test it passes leading me to think there's a bug.

hpinkos commented 5 years ago

Well, if it's failing in previous releases, it doesn't have to hold up this release. Something must have changed outside of our code base, like a browser issue. It definitely didn't fail when I released 1.55, but I just checked out that tag and it fails now.

hpinkos commented 5 years ago

I'm going to label this next release so we can look at it before the July release

tfili commented 5 years ago

@hpinkos @lilleyse Is this going to get looked at before Monday?

lilleyse commented 5 years ago

Probably not by either of us. Ok to push.

hpinkos commented 5 years ago

I changed the priority to priority - high It appears to be something that changed at the browser level, not in our code, so we haven't introduced a breaking change that needs addressing by next release However, obviously we don't want test failures in master so this should be looked at soon

OmarShehata commented 5 years ago

Ran into this while doing the 1.61 release. It passes fine in Chrome, but errors in Edge and Firefox.

thw0rted commented 4 years ago

I'm seeing this failure in master (afff7a4d) right now on Chrome, Windows. Is it still inconsistent for other people?

These tests fail in Chrome for me:

The first one also fails in Firefox for me, but the other two are fine there. I can't get the Jasmine page to render in Edge at all, it just gives a totally useless SCRIPT5022: SCRIPT5022: Syntax error

kring commented 4 years ago

I'm seeing this failure in Firefox only while doing the 1.73 release. My Firefox is using my Intel GPU while Chrome is using the NVidia one, so that could be the cause rather than the browser. In any case, I'm not going to let this hold up the release.

kring commented 4 years ago

Sorry it's not Scene/PolylineCollection renders more than 64K vertices of different polylines that is failing in Firefox, but rather Scene/PolylineCollection renders with model matrix. The other two mentioned by @thw0rted pass for me in both browsers. Also, when I switch Firefox to use my NVidia GPU, the test passes.

Long story short, in Firefox on my system at least, Scene/PolylineCollection renders with model matrix fails when run with my Intel UHD Graphics 630 but passes with my NVidia GTX 1650.

thw0rted commented 4 years ago

That's interesting, Tim, because my situation is exactly backwards: Firefox on NVidia, Chrome on Intel. So maybe the last two bullets in my previous post are particular to Intel GPUs?

hpinkos commented 3 years ago

Still failing

ebogo1 commented 2 years ago

I don't think this has come up during releases for the past while and I can't reproduce on an Intel mac in Chrome or Firefox. I'll close this for now.

thw0rted commented 2 years ago

@ebogo1 I finally got a chance to test again and I still get this error. Full output of npm run test:

1) applies show style to a tileset with glTF content
     Scene/Cesium3DTileset
     Error: Expected not to render [0,0,0,255], but actually rendered [0,0,0,255].
    at <Jasmine>
    at Specs/Scene/Cesium3DTilesetSpec.js:2705:25
    at Promise.then (Source/ThirdParty/when.js:196:34)
    at Source/ThirdParty/when.js:297:13

2) applies show style to a tileset with glb content
     Scene/Cesium3DTileset
     Error: Expected not to render [0,0,0,255], but actually rendered [0,0,0,255].
    at <Jasmine>
    at Specs/Scene/Cesium3DTilesetSpec.js:2720:25
    at Promise.then (Source/ThirdParty/when.js:196:34)
    at Source/ThirdParty/when.js:297:13

3) applies color style to tileset with glTF content
     Scene/Cesium3DTileset
     Error: Expected 0 to be greater than 0.
    at <Jasmine>
    at Specs/Scene/Cesium3DTilesetSpec.js:2735:25
    at compare (Specs/addDefaultMatchers.js:292:13)
    at <Jasmine>
     Error: Expected 0 to be greater than 0.
    at <Jasmine>
    at Specs/Scene/Cesium3DTilesetSpec.js:2746:25
    at compare (Specs/addDefaultMatchers.js:292:13)
    at <Jasmine>
     Error: Expected 0 to be greater than 0.
    at <Jasmine>
    at Specs/Scene/Cesium3DTilesetSpec.js:2747:25
    at compare (Specs/addDefaultMatchers.js:292:13)
    at <Jasmine>

4) applies color style to tileset with glb content
     Scene/Cesium3DTileset
     Error: Expected 0 to be greater than 0.
    at <Jasmine>
    at Specs/Scene/Cesium3DTilesetSpec.js:2735:25
    at compare (Specs/addDefaultMatchers.js:292:13)
    at <Jasmine>
     Error: Expected 0 to be greater than 0.
    at <Jasmine>
    at Specs/Scene/Cesium3DTilesetSpec.js:2746:25
    at compare (Specs/addDefaultMatchers.js:292:13)
    at <Jasmine>
     Error: Expected 0 to be greater than 0.
    at <Jasmine>
    at Specs/Scene/Cesium3DTilesetSpec.js:2747:25
    at compare (Specs/addDefaultMatchers.js:292:13)
    at <Jasmine>

5) renders with model matrix
     Scene/PolylineCollection
     Error: Expected to render [0,0,0,255], but actually rendered [255,255,255,255].
    at <Jasmine>
    at Specs/Scene/PolylineCollectionSpec.js:1592:21
    at UserContext.<anonymous> (Specs/customizeJasmine.js:40:24)
    at <Jasmine>

6) stops the render loop when render throws
     Widgets/CesiumWidget/CesiumWidget
     Error: Timeout - Async function did not complete within 30000ms (set by jasmine.DEFAULT_TIMEOUT_INTERVAL)
    at <Jasmine>

7) shows the error panel when render throws
     Widgets/CesiumWidget/CesiumWidget
     Error: Timeout - Async function did not complete within 30000ms (set by jasmine.DEFAULT_TIMEOUT_INTERVAL)
    at <Jasmine>

8) does not show the error panel if disabled
     Widgets/CesiumWidget/CesiumWidget
     Error: Timeout - Async function did not complete within 30000ms (set by jasmine.DEFAULT_TIMEOUT_INTERVAL)
    at <Jasmine>

9) stops the render loop when render throws
     Widgets/Viewer/Viewer
     Error: Timeout - Async function did not complete within 30000ms (set by jasmine.DEFAULT_TIMEOUT_INTERVAL)
    at <Jasmine>

10) shows the error panel when render throws
     Widgets/Viewer/Viewer
     Error: Timeout - Async function did not complete within 30000ms (set by jasmine.DEFAULT_TIMEOUT_INTERVAL)
    at <Jasmine>

11) does not show the error panel if disabled
     Widgets/Viewer/Viewer
     Error: Timeout - Async function did not complete within 30000ms (set by jasmine.DEFAULT_TIMEOUT_INTERVAL)
    at <Jasmine>

That's Chrome latest, Win10, on Intel HD 630 (iGPU). I ran again in Firefox latest, on NVidia 1060 (dGPU):

1) draws with a cube map while allowing color profiles
     Renderer/CubeMap
     Expected context to render 0,59,0,255, but rendered: 0,58,2,255
<Jasmine>
expectCubeMapFaces@Specs/Renderer/CubeMapSpec.js:63:12
@Specs/Renderer/CubeMapSpec.js:340:25
customizeJasmine/window.it/<@Specs/customizeJasmine.js:40:24
<Jasmine>
     Expected context to render 193,0,0,255, but rendered: 192,2,1,255
<Jasmine>
expectCubeMapFaces@Specs/Renderer/CubeMapSpec.js:63:12
@Specs/Renderer/CubeMapSpec.js:340:25
customizeJasmine/window.it/<@Specs/customizeJasmine.js:40:24
<Jasmine>
     Expected context to render 0,59,0,255, but rendered: 0,58,2,255
<Jasmine>
expectCubeMapFaces@Specs/Renderer/CubeMapSpec.js:63:12
@Specs/Renderer/CubeMapSpec.js:340:25
customizeJasmine/window.it/<@Specs/customizeJasmine.js:40:24
<Jasmine>
     Expected context to render 193,0,0,255, but rendered: 192,2,1,255
<Jasmine>
expectCubeMapFaces@Specs/Renderer/CubeMapSpec.js:63:12
@Specs/Renderer/CubeMapSpec.js:340:25
customizeJasmine/window.it/<@Specs/customizeJasmine.js:40:24
<Jasmine>
     Expected context to render 0,59,0,255, but rendered: 0,58,2,255
<Jasmine>
expectCubeMapFaces@Specs/Renderer/CubeMapSpec.js:63:12
@Specs/Renderer/CubeMapSpec.js:340:25
customizeJasmine/window.it/<@Specs/customizeJasmine.js:40:24
<Jasmine>
     Expected context to render 193,0,0,255, but rendered: 192,2,1,255
<Jasmine>
expectCubeMapFaces@Specs/Renderer/CubeMapSpec.js:63:12
@Specs/Renderer/CubeMapSpec.js:340:25
customizeJasmine/window.it/<@Specs/customizeJasmine.js:40:24
<Jasmine>

2) applies show style to a tileset with glTF content
     Scene/Cesium3DTileset
     Expected not to render [0,0,0,255], but actually rendered [0,0,0,255].
<Jasmine>
@Specs/Scene/Cesium3DTilesetSpec.js:2705:25
when</</fulfilled/p<@Source/ThirdParty/when.js:196:34
when</</defer/_then/<@Source/ThirdParty/when.js:297:13
processQueue@Source/ThirdParty/when.js:647:11
_resolve@Source/ThirdParty/when.js:333:16
promiseResolve@Source/ThirdParty/when.js:359:11
when</</fulfilled/p<@Source/ThirdParty/when.js:196:34
when</</defer/_then/<@Source/ThirdParty/when.js:298:7
processQueue@Source/ThirdParty/when.js:647:11
_resolve@Source/ThirdParty/when.js:333:16
promiseResolve@Source/ThirdParty/when.js:359:11
poller@Specs/pollToPromise.js:26:16

3) applies show style to a tileset with glb content
     Scene/Cesium3DTileset
     Expected not to render [0,0,0,255], but actually rendered [0,0,0,255].
<Jasmine>
@Specs/Scene/Cesium3DTilesetSpec.js:2720:25
when</</fulfilled/p<@Source/ThirdParty/when.js:196:34
when</</defer/_then/<@Source/ThirdParty/when.js:297:13
processQueue@Source/ThirdParty/when.js:647:11
_resolve@Source/ThirdParty/when.js:333:16
promiseResolve@Source/ThirdParty/when.js:359:11
when</</fulfilled/p<@Source/ThirdParty/when.js:196:34
when</</defer/_then/<@Source/ThirdParty/when.js:298:7
processQueue@Source/ThirdParty/when.js:647:11
_resolve@Source/ThirdParty/when.js:333:16
promiseResolve@Source/ThirdParty/when.js:359:11
poller@Specs/pollToPromise.js:26:16

4) applies color style to tileset with glTF content
     Scene/Cesium3DTileset
     Expected 0 to be greater than 0.
<Jasmine>
expectColorStyle/<@Specs/Scene/Cesium3DTilesetSpec.js:2735:25
compare@Specs/addDefaultMatchers.js:292:21
<Jasmine>
expectColorStyle@Specs/Scene/Cesium3DTilesetSpec.js:2732:21
@Specs/Scene/Cesium3DTilesetSpec.js:2793:27
when</</fulfilled/p<@Source/ThirdParty/when.js:196:34
when</</defer/_then/<@Source/ThirdParty/when.js:297:13
processQueue@Source/ThirdParty/when.js:647:11
_resolve@Source/ThirdParty/when.js:333:16
promiseResolve@Source/ThirdParty/when.js:359:11
when</</fulfilled/p<@Source/ThirdParty/when.js:196:34
when</</defer/_then/<@Source/ThirdParty/when.js:298:7
processQueue@Source/ThirdParty/when.js:647:11
_resolve@Source/ThirdParty/when.js:333:16
promiseResolve@Source/ThirdParty/when.js:359:11
poller@Specs/pollToPromise.js:26:16
     Expected 0 to be greater than 0.
<Jasmine>
expectColorStyle/<@Specs/Scene/Cesium3DTilesetSpec.js:2746:25
compare@Specs/addDefaultMatchers.js:292:21
<Jasmine>
expectColorStyle@Specs/Scene/Cesium3DTilesetSpec.js:2744:21
@Specs/Scene/Cesium3DTilesetSpec.js:2793:27
when</</fulfilled/p<@Source/ThirdParty/when.js:196:34
when</</defer/_then/<@Source/ThirdParty/when.js:297:13
processQueue@Source/ThirdParty/when.js:647:11
_resolve@Source/ThirdParty/when.js:333:16
promiseResolve@Source/ThirdParty/when.js:359:11
when</</fulfilled/p<@Source/ThirdParty/when.js:196:34
when</</defer/_then/<@Source/ThirdParty/when.js:298:7
processQueue@Source/ThirdParty/when.js:647:11
_resolve@Source/ThirdParty/when.js:333:16
promiseResolve@Source/ThirdParty/when.js:359:11
poller@Specs/pollToPromise.js:26:16
     Expected 0 to be greater than 0.
<Jasmine>
expectColorStyle/<@Specs/Scene/Cesium3DTilesetSpec.js:2747:25
compare@Specs/addDefaultMatchers.js:292:21
<Jasmine>
expectColorStyle@Specs/Scene/Cesium3DTilesetSpec.js:2744:21
@Specs/Scene/Cesium3DTilesetSpec.js:2793:27
when</</fulfilled/p<@Source/ThirdParty/when.js:196:34
when</</defer/_then/<@Source/ThirdParty/when.js:297:13
processQueue@Source/ThirdParty/when.js:647:11
_resolve@Source/ThirdParty/when.js:333:16
promiseResolve@Source/ThirdParty/when.js:359:11
when</</fulfilled/p<@Source/ThirdParty/when.js:196:34
when</</defer/_then/<@Source/ThirdParty/when.js:298:7
processQueue@Source/ThirdParty/when.js:647:11
_resolve@Source/ThirdParty/when.js:333:16
promiseResolve@Source/ThirdParty/when.js:359:11
poller@Specs/pollToPromise.js:26:16

5) applies color style to tileset with glb content
     Scene/Cesium3DTileset
     Expected 0 to be greater than 0.
<Jasmine>
expectColorStyle/<@Specs/Scene/Cesium3DTilesetSpec.js:2735:25
compare@Specs/addDefaultMatchers.js:292:21
<Jasmine>
expectColorStyle@Specs/Scene/Cesium3DTilesetSpec.js:2732:21
@Specs/Scene/Cesium3DTilesetSpec.js:2802:27
when</</fulfilled/p<@Source/ThirdParty/when.js:196:34
when</</defer/_then/<@Source/ThirdParty/when.js:297:13
processQueue@Source/ThirdParty/when.js:647:11
_resolve@Source/ThirdParty/when.js:333:16
promiseResolve@Source/ThirdParty/when.js:359:11
when</</fulfilled/p<@Source/ThirdParty/when.js:196:34
when</</defer/_then/<@Source/ThirdParty/when.js:298:7
processQueue@Source/ThirdParty/when.js:647:11
_resolve@Source/ThirdParty/when.js:333:16
promiseResolve@Source/ThirdParty/when.js:359:11
poller@Specs/pollToPromise.js:26:16
     Expected 0 to be greater than 0.
<Jasmine>
expectColorStyle/<@Specs/Scene/Cesium3DTilesetSpec.js:2746:25
compare@Specs/addDefaultMatchers.js:292:21
<Jasmine>
expectColorStyle@Specs/Scene/Cesium3DTilesetSpec.js:2744:21
@Specs/Scene/Cesium3DTilesetSpec.js:2802:27
when</</fulfilled/p<@Source/ThirdParty/when.js:196:34
when</</defer/_then/<@Source/ThirdParty/when.js:297:13
processQueue@Source/ThirdParty/when.js:647:11
_resolve@Source/ThirdParty/when.js:333:16
promiseResolve@Source/ThirdParty/when.js:359:11
when</</fulfilled/p<@Source/ThirdParty/when.js:196:34
when</</defer/_then/<@Source/ThirdParty/when.js:298:7
processQueue@Source/ThirdParty/when.js:647:11
_resolve@Source/ThirdParty/when.js:333:16
promiseResolve@Source/ThirdParty/when.js:359:11
poller@Specs/pollToPromise.js:26:16
     Expected 0 to be greater than 0.
<Jasmine>
expectColorStyle/<@Specs/Scene/Cesium3DTilesetSpec.js:2747:25
compare@Specs/addDefaultMatchers.js:292:21
<Jasmine>
expectColorStyle@Specs/Scene/Cesium3DTilesetSpec.js:2744:21
@Specs/Scene/Cesium3DTilesetSpec.js:2802:27
when</</fulfilled/p<@Source/ThirdParty/when.js:196:34
when</</defer/_then/<@Source/ThirdParty/when.js:297:13
processQueue@Source/ThirdParty/when.js:647:11
_resolve@Source/ThirdParty/when.js:333:16
promiseResolve@Source/ThirdParty/when.js:359:11
when</</fulfilled/p<@Source/ThirdParty/when.js:196:34
when</</defer/_then/<@Source/ThirdParty/when.js:298:7
processQueue@Source/ThirdParty/when.js:647:11
_resolve@Source/ThirdParty/when.js:333:16
promiseResolve@Source/ThirdParty/when.js:359:11
poller@Specs/pollToPromise.js:26:16

TOTAL: 5 FAILED, 13006 SUCCESS

(Sorry about the formatting, the Firefox webdriver doesn't seem to be as well supported as the Chrome one.)

As stated in previous comments, it looks like the subject failures only happen on Windows, when using an Intel GPU. Please re-open and test on a Windows machine.

Also: the "render loop" test failures wouldn't be caught by Travis because it runs with --webgl-stub (full CLI is npm --silent run test -- --browsers ChromeCI --failTaskOnError --webgl-stub --release --suppressPassed); maybe that's another ticket though?

thw0rted commented 2 years ago

In case it helps: I spent at least 15 minutes faffing around with the "--include" CLI option trying to get it to work before I remembered I can just change the spec I'm interested in to use fdescribe, it cut my test run from 5+ minutes per browser to 1 minute on both browsers forCesium3DTileset, or 30 seconds for PolylineCollection.

TL;DR: change describe to fdescribe in Specs/Scene/PolylineCollectionSpec.js and save yourself a lot of test time.