commit d76a16c4d5d72d9014c55d6fcc5977310f939e3c
parent 93d3649f57964ab08e41fcd9c1b2c8700614381d
Author: Daniel Gultsch <daniel@gultsch.de>
Date: Sun, 20 Nov 2016 11:10:40 +0100
automatically retry after policy violation
Diffstat:
1 file changed, 18 insertions(+), 2 deletions(-)
diff --git a/src/main/java/eu/siacs/ComplianceTester.java b/src/main/java/eu/siacs/ComplianceTester.java
@@ -5,6 +5,8 @@ import eu.siacs.compliance.TestSuiteFactory;
import rocks.xmpp.addr.Jid;
import rocks.xmpp.core.XmppException;
import rocks.xmpp.core.sasl.AuthenticationException;
+import rocks.xmpp.core.stream.StreamErrorException;
+import rocks.xmpp.core.stream.model.errors.Condition;
import java.util.Arrays;
import java.util.List;
@@ -56,6 +58,10 @@ public class ComplianceTester {
}
private static void runTestSuite(Class <? extends AbstractTestSuite> clazz, Jid jid, String password) {
+ runTestSuite(clazz, jid, password, false);
+ }
+
+ private static void runTestSuite(Class <? extends AbstractTestSuite> clazz, Jid jid, String password, boolean rerun) {
try {
try {
AbstractTestSuite testSuite = TestSuiteFactory.create(clazz, jid, password);
@@ -67,8 +73,18 @@ public class ComplianceTester {
System.out.println("Test suite creation failed");
}
} catch(AuthenticationException e) {
- System.err.println("username or password wrong");
- System.exit(1);
+ System.err.println("username or password wrong");
+ System.exit(1);
+ } catch (StreamErrorException e) {
+ if (e.getCondition() == Condition.POLICY_VIOLATION && !rerun) {
+ System.err.println("Policy violation. Waiting 61s");
+ runTestSuite(clazz, jid, password, true);
+ try {
+ Thread.sleep(61000);
+ } catch (InterruptedException ie) {
+ System.err.println("interrupted");
+ }
+ }
} catch (XmppException e) {
e.printStackTrace();
}