QPID-8349: Use jvm system properties to set external broker admin attributes
diff --git a/systests/systests-utils/src/main/java/org/apache/qpid/tests/utils/ExternalQpidBrokerAdminImpl.java b/systests/systests-utils/src/main/java/org/apache/qpid/tests/utils/ExternalQpidBrokerAdminImpl.java
index 5c3e1cc..a54df16 100644
--- a/systests/systests-utils/src/main/java/org/apache/qpid/tests/utils/ExternalQpidBrokerAdminImpl.java
+++ b/systests/systests-utils/src/main/java/org/apache/qpid/tests/utils/ExternalQpidBrokerAdminImpl.java
@@ -22,6 +22,7 @@
 
 import java.lang.reflect.Method;
 import java.net.InetSocketAddress;
+import java.util.Arrays;
 
 import com.google.common.util.concurrent.ListenableFuture;
 import org.slf4j.Logger;
@@ -34,6 +35,8 @@
 public class ExternalQpidBrokerAdminImpl implements BrokerAdmin
 {
     private static final Logger LOGGER = LoggerFactory.getLogger(ExternalQpidBrokerAdminImpl.class);
+    private static final String EXTERNAL_BROKER = "EXTERNAL_BROKER";
+    private static final String KIND_BROKER_UNKNOWN = "unknown";
 
     @Override
     public void beforeTestClass(final Class testClass)
@@ -71,10 +74,13 @@
             case ANONYMOUS_AMQP:
                 port = Integer.getInteger("qpid.tests.protocol.broker.external.port.anonymous");
                 break;
+            case ANONYMOUS_AMQPWS:
+                port = Integer.getInteger("qpid.tests.protocol.broker.external.port.websocket.anonymous");
+                break;
             default:
                 throw new IllegalArgumentException(String.format("Unknown port type '%s'", portType));
         }
-        return new InetSocketAddress(port);
+        return new InetSocketAddress( "127.0.0.1", port);
     }
 
     @Override
@@ -116,13 +122,13 @@
     @Override
     public boolean isSASLSupported()
     {
-        return true;
+        return Boolean.parseBoolean(System.getProperty("qpid.tests.protocol.broker.external.saslSupported", "true"));
     }
 
     @Override
     public boolean isWebSocketSupported()
     {
-        return true;
+        return Boolean.parseBoolean(System.getProperty("qpid.tests.protocol.broker.external.webSocketSupported", "false"));
     }
 
     @Override
@@ -134,36 +140,37 @@
     @Override
     public boolean isManagementSupported()
     {
-        return false;
+        return Boolean.parseBoolean(System.getProperty("qpid.tests.protocol.broker.external.managementSupported", "false"));
     }
 
     @Override
     public boolean isSASLMechanismSupported(final String mechanismName)
     {
-        return true;
+        String supportedSaslMechanisms = System.getProperty("qpid.tests.protocol.broker.external.supportedSaslMechanisms","PLAIN,CRAM-MD5");
+        return Arrays.asList(supportedSaslMechanisms.split(",")).contains(mechanismName);
     }
 
     @Override
     public String getValidUsername()
     {
-        return "guest";
+        return System.getProperty("qpid.tests.protocol.broker.external.username");
     }
 
     @Override
     public String getValidPassword()
     {
-        return "guest";
+        return System.getProperty("qpid.tests.protocol.broker.external.password");
     }
 
     @Override
     public String getKind()
     {
-        return KIND_BROKER_J;
+        return  System.getProperty("qpid.tests.protocol.broker.external.kind", KIND_BROKER_UNKNOWN);
     }
 
     @Override
     public String getType()
     {
-        return "EXTERNAL_BROKER";
+        return EXTERNAL_BROKER;
     }
 }