piranha: Piranha fails to pass all OmniFaces tests - needs fixing

Piranha currently does not pass all the OmniFaces tests.

The results are as of now:

Failures: 
  FacesConverterIT.test:68 ResourceDependency is injected in facesConverterITManagedConverter expected:<[facesConverterITManagedConverterResourceDependency]> but was:<[]>
  InputFileIT.uploadSingleAccept:126 expected:<[uploadSingle: 6, file-16088362504427706317.gif]> but was:<[label: file-16088362504427706317.gif is not image/*]>
  FacesViewsIT.testNonExistingPage:129->verify404:156 expected:<404> but was:<null>
  MultiViewsIT.testNonExistingPage:118->verify200:164 expected:<...ewsITNonExistingPage[]> but was:<...ewsITNonExistingPage[/MultiViewsIT]>
  MultiViewsIT.testWelcomeFile:67->verify200:164 expected:</MultiViewsIT/foo/42[]> but was:</MultiViewsIT/foo/42[/MultiViewsIT]>
  CDNResourceHandlerIT.cdnResources:44 expected:<http[s://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css]> but was:<http[://localhost:8080/CDNResourceHandlerIT/RES_NOT_FOUND]>

Errors: 
  FullAjaxExceptionHandlerIT.throwDuringRenderResponse:74 » NoSuchElement Unable...
  FullAjaxExceptionHandlerIT.throwNonAjaxDuringInvokeApplication:79 » IllegalState
  FullAjaxExceptionHandlerIT.throwNonAjaxDuringRenderResponse:100 » NoSuchElement
  FullAjaxExceptionHandlerIT.throwNonAjaxDuringUpdateModelValues:85 » IllegalState
  SocketIT.org.omnifaces.test.push.socket.SocketIT » IllegalState 
  CombinedResourceHandlerIT.ajax:99->verifyElements:128 » NoSuchElement Unable t...
  CombinedResourceHandlerIT.mixed:108->verifyElements:128 » NoSuchElement Unable...
  CombinedResourceHandlerIT.nonAjax:90->verifyElements:128 » NoSuchElement Unabl...

Tests run: 93, Failures: 6, Errors: 8, Skipped: 0

OmniFaces tests can be executed from the root of the Piranha project using:

mvn -amd -B -P external -pl external/omnifaces verify

Debugging can be done by e.g. cd’ing into the external/omnifaces/target/omnifaces-4.x folder and executing:

mvn clean verify -Dmaven.javadoc.skip=true -Dit.test=InputFileIT -P piranha -fae -Dmaven.failsafe.debug

If needed, timeouts can be disabled in OmniFacesIT#init by adding:

browser.manage().timeouts().implicitlyWait(10000, SECONDS);
browser.manage().timeouts().pageLoadTimeout(-1, SECONDS);
	    
System.setProperty(
    "sun.net.client.defaultConnectTimeout", 
    String.valueOf(1000000));// (Unit: ms)
System.setProperty(
    "sun.net.client.defaultReadTimeout",
    String.valueOf(10000000)); // (Unit: ms)

About this issue

  • Original URL
  • State: closed
  • Created 3 years ago
  • Comments: 15 (1 by maintainers)

Most upvoted comments

@BalusC thank for analyzing some many of these. @Thihup feel free to pick these off one at a time.

I guess the change should be in Omnifaces, to include the tyrus-container-servlet, but I’m not sure.

Ahh, I see, Piranha didn’t ship with any WS container itself, it had to be installed via deployment. I’ve fixed the test dependency now, but it still fails, this time with

Apr 17, 2021 12:58:46 PM cloud.piranha.webapp.impl.DefaultWebApplication initializeInitializers
WARNING: Initializer org.glassfish.tyrus.servlet.TyrusServletContainerInitializer failing onStartup
java.lang.UnsupportedOperationException
	at java.base/java.util.ImmutableCollections.uoe(ImmutableCollections.java:142)
	at java.base/java.util.ImmutableCollections$AbstractImmutableCollection.removeAll(ImmutableCollections.java:151)
	at org.glassfish.tyrus.servlet.TyrusServletContainerInitializer.onStartup(TyrusServletContainerInitializer.java:71)
	at cloud.piranha.webapp.impl.DefaultWebApplication.initializeInitializers(DefaultWebApplication.java:1399)
	at cloud.piranha.webapp.impl.DefaultWebApplication.initialize(DefaultWebApplication.java:1323)
	at cloud.piranha.micro.core.MicroInnerDeployer.start(MicroInnerDeployer.java:233)

This issue suggests that Piranha is passing an immutable set of classes as 1st argument of onStartup() method. Tyrus was apparently expecting it to be mutable. And frankly I don’t see in ServletContainerInitializer#onStartup() Javadoc either that it must be immutable.

This one

FacesConverterIT.test:68 ResourceDependency is injected in facesConverterITManagedConverter expected:<[facesConverterITManagedConverterResourceDependency]> but was:<[]>

is Mojarra specific bug: https://github.com/eclipse-ee4j/mojarra/issues/4913

I’ve already bypassed it for piranha for now: https://github.com/omnifaces/omnifaces/commit/a0ae2472178b94c2214f231fdb07ab9520c15655