[
https://issues.jboss.org/browse/ARQ-2153?page=com.atlassian.jira.plugin.s...
]
Gordon Hutchison commented on ARQ-2153:
---------------------------------------
The problem was only surfacing for the Deployment tests.
I think the expected approach is that the outer exception is a standard
Arquillian one (org.jboss.arquillian.container.spi.client.container.DeploymentException)
but that this can wrap a 'cause' exception that is the
domain specific one (i.e. in my case the javax.enterprise.inject.spi.DefinitionException
or javax.enterprise.inject.spi.DeploymentException). I coded up and tested this
approach in
https://github.com/arquillian/arquillian-container-was/pull/33.
The extension of the PR woudl be to take PR33 and a table of all known Liberty
causes for Deployment Exceptions and fully populate the set of 'cause' exceptions
that could then be used in ShouldThrows.
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/s...
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)