mirror of
https://github.com/vanitasvitae/Smack.git
synced 2024-11-25 21:42:07 +01:00
sint: Allow use of custom SmackDebugger
Refactors the Smack Integration Test configuration to allow for a classname for a SmackDebugger(Factory) to be provided.
This commit is contained in:
parent
e504bc23cf
commit
92c45e0d29
3 changed files with 32 additions and 31 deletions
|
@ -36,6 +36,7 @@ import javax.net.ssl.SSLContext;
|
|||
|
||||
import org.jivesoftware.smack.ConnectionConfiguration.SecurityMode;
|
||||
import org.jivesoftware.smack.debugger.ConsoleDebugger;
|
||||
import org.jivesoftware.smack.debugger.SmackDebuggerFactory;
|
||||
import org.jivesoftware.smack.util.CollectionUtil;
|
||||
import org.jivesoftware.smack.util.Function;
|
||||
import org.jivesoftware.smack.util.Objects;
|
||||
|
@ -61,12 +62,6 @@ public final class Configuration {
|
|||
serviceAdministration,
|
||||
}
|
||||
|
||||
public enum Debugger {
|
||||
none,
|
||||
console,
|
||||
enhanced,
|
||||
}
|
||||
|
||||
public enum DnsResolver {
|
||||
minidns,
|
||||
javax,
|
||||
|
@ -101,7 +96,7 @@ public final class Configuration {
|
|||
|
||||
public final String accountThreePassword;
|
||||
|
||||
public final Debugger debugger;
|
||||
public final SmackDebuggerFactory debuggerFactory;
|
||||
|
||||
public final Set<String> enabledTests;
|
||||
|
||||
|
@ -148,7 +143,7 @@ public final class Configuration {
|
|||
} else {
|
||||
replyTimeout = 47000;
|
||||
}
|
||||
debugger = builder.debugger;
|
||||
debuggerFactory = builder.debuggerFactory;
|
||||
if (StringUtils.isNotEmpty(builder.adminAccountUsername, builder.adminAccountPassword)) {
|
||||
accountRegistration = AccountRegistration.serviceAdministration;
|
||||
}
|
||||
|
@ -193,16 +188,8 @@ public final class Configuration {
|
|||
b.setSecurityMode(securityMode);
|
||||
b.setXmppDomain(service);
|
||||
|
||||
switch (debugger) {
|
||||
case enhanced:
|
||||
b.setDebuggerFactory(EnhancedDebugger.Factory.INSTANCE);
|
||||
break;
|
||||
case console:
|
||||
b.setDebuggerFactory(ConsoleDebugger.Factory.INSTANCE);
|
||||
break;
|
||||
case none:
|
||||
// Nothing to do :).
|
||||
break;
|
||||
if (debuggerFactory != null) {
|
||||
b.setDebuggerFactory(debuggerFactory);
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -246,7 +233,7 @@ public final class Configuration {
|
|||
|
||||
public String accountThreePassword;
|
||||
|
||||
private Debugger debugger = Debugger.none;
|
||||
private SmackDebuggerFactory debuggerFactory;
|
||||
|
||||
private Set<String> enabledTests;
|
||||
|
||||
|
@ -352,18 +339,23 @@ public final class Configuration {
|
|||
case "false": // For backwards compatibility settings with previous boolean setting.
|
||||
LOGGER.warning("Debug string \"" + debuggerString + "\" is deprecated, please use \"none\" instead");
|
||||
case "none":
|
||||
debugger = Debugger.none;
|
||||
debuggerFactory = null;
|
||||
break;
|
||||
case "true": // For backwards compatibility settings with previous boolean setting.
|
||||
LOGGER.warning("Debug string \"" + debuggerString + "\" is deprecated, please use \"console\" instead");
|
||||
case "console":
|
||||
debugger = Debugger.console;
|
||||
debuggerFactory = ConsoleDebugger.Factory.INSTANCE;
|
||||
break;
|
||||
case "enhanced":
|
||||
debugger = Debugger.enhanced;
|
||||
debuggerFactory = EnhancedDebugger.Factory.INSTANCE;
|
||||
break;
|
||||
default:
|
||||
throw new IllegalArgumentException("Unrecognized debugger string: " + debuggerString);
|
||||
try {
|
||||
final Class<? extends SmackDebuggerFactory> aClass = Class.forName(debuggerString).asSubclass(SmackDebuggerFactory.class);
|
||||
debuggerFactory = aClass.getConstructor().newInstance();
|
||||
} catch (Exception e) {
|
||||
throw new IllegalArgumentException("Unable to construct debugger from value: " + debuggerString, e);
|
||||
}
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
|
|
@ -64,6 +64,7 @@ import org.jivesoftware.smack.util.dns.dnsjava.DNSJavaResolver;
|
|||
import org.jivesoftware.smack.util.dns.javax.JavaxResolver;
|
||||
import org.jivesoftware.smack.util.dns.minidns.MiniDnsResolver;
|
||||
|
||||
import org.jivesoftware.smackx.debugger.EnhancedDebugger;
|
||||
import org.jivesoftware.smackx.debugger.EnhancedDebuggerWindow;
|
||||
import org.jivesoftware.smackx.iqregister.AccountManager;
|
||||
|
||||
|
@ -138,12 +139,8 @@ public class SmackIntegrationTestFramework {
|
|||
exitStatus = 0;
|
||||
}
|
||||
|
||||
switch (config.debugger) {
|
||||
case enhanced:
|
||||
if (config.debuggerFactory instanceof EnhancedDebugger) {
|
||||
EnhancedDebuggerWindow.getInstance().waitUntilClosed();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
System.exit(exitStatus);
|
||||
|
@ -175,7 +172,7 @@ public class SmackIntegrationTestFramework {
|
|||
this.connectionManager = new XmppConnectionManager(this);
|
||||
|
||||
LOGGER.info("SmackIntegrationTestFramework [" + testRunResult.testRunId + ']' + ": Starting\nSmack version: " + Smack.getVersion());
|
||||
if (config.debugger != Configuration.Debugger.none) {
|
||||
if (config.debuggerFactory != null) {
|
||||
// JUL Debugger will not print any information until configured to print log messages of
|
||||
// level FINE
|
||||
// TODO configure JUL for log?
|
||||
|
|
|
@ -125,7 +125,7 @@
|
|||
* </tr>
|
||||
* <tr>
|
||||
* <td>debugger</td>
|
||||
* <td>‘console’ for console debugger, ‘enhanced’ for the enhanced debugger</td>
|
||||
* <td>‘console’ for console debugger, ‘enhanced’ for the enhanced debugger, or the name of a class that implements SmackDebuggerFactory for a custom debugger</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>enabledTests</td>
|
||||
|
@ -284,6 +284,18 @@
|
|||
* Debug Window launching when your tests launch, and you'll get a stanza-by-stanza account of what happened on each
|
||||
* connection, hopefully enough to diagnose what went wrong.
|
||||
* </p>
|
||||
* <p>
|
||||
* Lastly, you can provide a custom debugger, by providing the fully qualified name of a class that implements
|
||||
* {@link org.jivesoftware.smack.debugger.SmackDebuggerFactory}. The provided factory must declare a public constructor
|
||||
* that takes no arguments.
|
||||
* </p>
|
||||
* <p>
|
||||
* Example:
|
||||
* </p>
|
||||
*
|
||||
* <pre>{@code
|
||||
* $ gradle integrationTest -Dsinttest.service=my.xmppservice.org -Dsinttest.debugger="org.example.MyDebugger$Factory"
|
||||
* }</pre>
|
||||
* <h3>Debugging in the IDE</h3>
|
||||
* <p>
|
||||
* If the output isn't enough, you may need to debug and inspect running code within the IDE. Depending on the IDE, in
|
||||
|
@ -302,7 +314,7 @@
|
|||
* </p>
|
||||
*
|
||||
* <pre>{@code
|
||||
* $ gradle integrationTest -Dsinttest.service=my.xmppserivce.org -Dsinttest.testPackages=org.mypackage,org.otherpackage
|
||||
* $ gradle integrationTest -Dsinttest.service=my.xmppservice.org -Dsinttest.testPackages=org.mypackage,org.otherpackage
|
||||
* }</pre>
|
||||
*/
|
||||
package org.igniterealtime.smack.inttest;
|
||||
|
|
Loading…
Reference in a new issue