[arquillian-issues] [JBoss JIRA] (ARQ-2153) Enable @Deployment @ShouldThrowException(DefinitionException.class) in WebSphere Liberty Managed Container

Gordon Hutchison (JIRA) issues at jboss.org
Thu Nov 16 11:47:00 EST 2017


Gordon Hutchison created ARQ-2153:
-------------------------------------

             Summary: Enable @Deployment @ShouldThrowException(DefinitionException.class) in WebSphere Liberty Managed Container
                 Key: ARQ-2153
                 URL: https://issues.jboss.org/browse/ARQ-2153
             Project: Arquillian
          Issue Type: Feature Request
          Components: WebSphere Containers
    Affects Versions: 1.0.0.Final
         Environment: 
MicroProfile FaultTolerance TCK testing with arquillian-wlp-managed-8.5  container.
For example testing
https://github.com/eclipse/microprofile-fault-tolerance/blob/master/tck/src/main/java/org/eclipse/microprofile/fault/tolerance/tck/invalidParameters/InvalidCircuitBreakerDelayTest.java
with open Liberty or any other Arquillian test testing for DefinitionExceptions that cause
Deployment Exceptions.
            Reporter: Gordon Hutchison
            Assignee: Gerhard Poul
            Priority: Minor


When running the MicroProfile Fault Tolerance TCK there are numerous tests'
deploy methods that have:


{code:java}
    @Deployment
    @ShouldThrowException(DefinitionException.class)
    public static WebArchive deploy() {...
{code}


The current wlp-managed-8.5 container return these as Deployment
Exceptions to the test client which makes the TCK tests fail even if the server
has raised a definition exception. 

I have a code patch from an IBM colleague Nathan Mittlestat (whose permission I have to
make this 'issue' and a pull request from on his behalf ) along the lines of:

{code:java}

   private void checkForDefinitionExceptions(String applicationName)
   {
      String messagesFile = containerConfiguration.getWlpHome() + "/usr/servers/" + containerConfiguration.getServerName() + "/logs/messages.log";
      BufferedReader br = null;

      try {
         br = new BufferedReader(new InputStreamReader(new FileInputStream(messagesFile)));
         String line;
         while ((line = br.readLine()) != null) {
            if (line.contains("CWWKZ0002E: An exception occurred while starting the application " + applicationName + ".")
                  && (line.contains("org.jboss.weld.exceptions.DefinitionException") || line.contains("javax.enterprise.inject.spi.DefinitionException"))) {
               System.out.println("############DEBUG found CWWKZ0002E for application: " + applicationName);
               System.out.println(line);
               throw new DefinitionException(line);
            }
         }
      } catch (IOException e) {
         System.err.println("Exception while reading messages.log" + e.toString());
         e.printStackTrace();
         //    } catch (FileNotFoundException e) {
         //        System.err.println("Exception while reading messages.log" + e.toString());
         //        e.printStackTrace();
      } finally {
         try {
            if (br != null)
               br.close();
         } catch (Exception e) {
            System.err.println("Exception while closing bufferedreader " + e.toString());
            e.printStackTrace();
         }
      }
   }

{code}

This method is called in waitForApplicationTargetState if a wrapping Deployment exception
is observed:

 
{code:java}
     } catch (Exception e) {
         checkForDefinitionExceptions(applicationName);
         throw new DeploymentException("Exception while checking application state.", e);
      }
{code}

I will do a PR shortly.












 





--
This message was sent by Atlassian JIRA
(v7.5.0#75005)


More information about the arquillian-issues mailing list