You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by dr...@apache.org on 2015/06/26 10:19:42 UTC

directory-kerby git commit: Clean up and refactored some test codes

Repository: directory-kerby
Updated Branches:
  refs/heads/master bc2d6771e -> b6c209685


Clean up and refactored some test codes


Project: http://git-wip-us.apache.org/repos/asf/directory-kerby/repo
Commit: http://git-wip-us.apache.org/repos/asf/directory-kerby/commit/b6c20968
Tree: http://git-wip-us.apache.org/repos/asf/directory-kerby/tree/b6c20968
Diff: http://git-wip-us.apache.org/repos/asf/directory-kerby/diff/b6c20968

Branch: refs/heads/master
Commit: b6c209685137feb338ce1fa0e4c9e0a27ede61a7
Parents: bc2d677
Author: Drankye <dr...@gmail.com>
Authored: Fri Jun 26 16:19:29 2015 +0800
Committer: Drankye <dr...@gmail.com>
Committed: Fri Jun 26 16:19:29 2015 +0800

----------------------------------------------------------------------
 .../kerby/kerberos/kdc/GssInteropTestBase.java  |  80 +++++--------
 .../kerby/kerberos/kdc/GssTcpInteropTest.java   |   2 +-
 .../kerby/kerberos/kdc/GssUdpInteropTest.java   |  10 +-
 .../org/apache/kerby/kerberos/kdc/KdcTest.java  |  67 -----------
 .../apache/kerby/kerberos/kdc/KerbyKdcTest.java |  22 +---
 .../kerberos/kdc/WithAccessTokenKdcTest.java    |   2 +-
 .../kerberos/kdc/WithIdentityTokenKdcTest.java  |   2 +-
 .../kerberos/kdc/WithTokenKdcTestBase.java      |   4 +-
 .../kerby/kerberos/kerb/server/KdcTestBase.java |  79 +++++++------
 .../kerberos/kerb/server/TestKdcServer.java     |  29 -----
 .../kerberos/kerb/server/GssInteropTest.java    | 112 ++++++++-----------
 .../kerby/kerberos/kerb/server/KdcTest.java     |  16 +--
 12 files changed, 129 insertions(+), 296 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/b6c20968/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/GssInteropTestBase.java
----------------------------------------------------------------------
diff --git a/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/GssInteropTestBase.java b/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/GssInteropTestBase.java
index 20758ce..f2c0e20 100644
--- a/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/GssInteropTestBase.java
+++ b/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/GssInteropTestBase.java
@@ -19,10 +19,11 @@
  */
 package org.apache.kerby.kerberos.kdc;
 
-import java.io.IOException;
-import java.security.Principal;
-import java.security.PrivilegedExceptionAction;
-import java.util.Set;
+import org.apache.kerby.kerberos.kerb.KrbException;
+import org.apache.kerby.kerberos.kerb.server.KdcTestBase;
+import org.ietf.jgss.*;
+import org.junit.Assert;
+import org.junit.Test;
 
 import javax.security.auth.Subject;
 import javax.security.auth.callback.Callback;
@@ -31,57 +32,33 @@ import javax.security.auth.callback.PasswordCallback;
 import javax.security.auth.callback.UnsupportedCallbackException;
 import javax.security.auth.kerberos.KerberosTicket;
 import javax.security.auth.login.LoginContext;
-
-import org.apache.kerby.kerberos.kerb.KrbException;
-import org.ietf.jgss.GSSContext;
-import org.ietf.jgss.GSSCredential;
-import org.ietf.jgss.GSSException;
-import org.ietf.jgss.GSSManager;
-import org.ietf.jgss.GSSName;
-import org.ietf.jgss.Oid;
-import org.junit.Assert;
-import org.junit.Test;
-import org.apache.kerby.kerberos.kdc.impl.NettyKdcServerImpl;
-import org.apache.kerby.kerberos.kerb.server.KdcConfigKey;
-import org.apache.kerby.kerberos.kerb.server.TestKdcServer;
+import java.io.IOException;
+import java.security.Principal;
+import java.security.PrivilegedExceptionAction;
+import java.util.Set;
 
 /**
  * This is an interop test using the Java GSS APIs against the Kerby KDC
  */
-public abstract class GssInteropTestBase extends KdcTest {
-    private String clientPrincipal;
-    private String serverPrincipal;
-    
-    @Override
-    protected void setUpKdcServer() throws Exception {
-        kdcServer = new TestKdcServer();
-        prepareKdcServer();
-        
-        kdcServer.setInnerKdcImpl(new NettyKdcServerImpl());
-        kdcServer.init();
-        
-        // Must disable pre-auth
-        kdcServer.getSetting().getKdcConfig().setBoolean(KdcConfigKey.PREAUTH_REQUIRED, false);
-        
-        kdcRealm = kdcServer.getKdcRealm();
-        clientPrincipal = "drankye@" + kdcRealm;
-        setClientPrincipal(clientPrincipal);
-        serverPrincipal = "test-service/localhost@" + kdcRealm;
-        setServerPrincipal(serverPrincipal);
-    }
-    
+public abstract class GssInteropTestBase extends KdcTestBase {
+
     @Override
     protected void createPrincipals() throws KrbException {
         kdcServer.createTgsPrincipal();
-        kdcServer.createPrincipal(serverPrincipal, TEST_PASSWORD);
-        kdcServer.createPrincipal(clientPrincipal, TEST_PASSWORD);
+        kdcServer.createPrincipal(getClientPrincipal(), getClientPassword());
+        kdcServer.createPrincipal(getServerPrincipal(), getServerPassword());
     }
-    
+
+    private String getServerPassword() {
+        return getClientPassword(); // Reuse the same password
+    }
+
     @Test
     public void testKdc() throws Exception {
         kdcServer.start();
         
-        LoginContext loginContext = new LoginContext("drankye", new KerberosCallbackHandler());
+        LoginContext loginContext = new LoginContext(getClientPrincipalName(),
+                new KerberosCallbackHandler());
         loginContext.login();
         
         Subject clientSubject = loginContext.getSubject();
@@ -98,7 +75,7 @@ public abstract class GssInteropTestBase extends KdcTest {
         // Get the service ticket
         KerberosClientExceptionAction action =
             new KerberosClientExceptionAction(clientPrincipals.iterator().next(), 
-                                              "test-service/localhost@TEST.COM");
+                                              getServerPrincipal());
         
         byte[] kerberosToken = (byte[]) Subject.doAs(clientSubject, action);
         Assert.assertNotNull(kerberosToken);
@@ -112,7 +89,8 @@ public abstract class GssInteropTestBase extends KdcTest {
     
     private void validateServiceTicket(byte[] ticket) throws Exception {
         // Get the TGT for the service
-        LoginContext loginContext = new LoginContext("test-service", new KerberosCallbackHandler());
+        LoginContext loginContext = new LoginContext(getServerPrincipalName(),
+                new KerberosCallbackHandler());
         loginContext.login();
         
         Subject serviceSubject = loginContext.getSubject();
@@ -121,23 +99,23 @@ public abstract class GssInteropTestBase extends KdcTest {
 
         // Handle the service ticket
         KerberosServiceExceptionAction serviceAction = 
-            new KerberosServiceExceptionAction(ticket, "test-service/localhost@TEST.COM");
+            new KerberosServiceExceptionAction(ticket, getServerPrincipal());
         
         Subject.doAs(serviceSubject, serviceAction);
     }
     
-    private static class KerberosCallbackHandler implements CallbackHandler {
+    private class KerberosCallbackHandler implements CallbackHandler {
 
         public void handle(Callback[] callbacks) throws IOException,
                 UnsupportedCallbackException {
             for (int i = 0; i < callbacks.length; i++) {
                 if (callbacks[i] instanceof PasswordCallback) {
                     PasswordCallback pc = (PasswordCallback) callbacks[i];
-                    if (pc.getPrompt().contains("drankye")) {
-                        pc.setPassword(TEST_PASSWORD.toCharArray());
+                    if (pc.getPrompt().contains(getClientPrincipalName())) {
+                        pc.setPassword(getClientPassword().toCharArray());
                         break;
-                    } else if (pc.getPrompt().contains("test-service")) {
-                        pc.setPassword(TEST_PASSWORD.toCharArray());
+                    } else if (pc.getPrompt().contains(getServerPrincipalName())) {
+                        pc.setPassword(getClientPassword().toCharArray());
                         break;
                     }
                 }

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/b6c20968/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/GssTcpInteropTest.java
----------------------------------------------------------------------
diff --git a/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/GssTcpInteropTest.java b/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/GssTcpInteropTest.java
index 8c51300..dca4f4d 100644
--- a/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/GssTcpInteropTest.java
+++ b/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/GssTcpInteropTest.java
@@ -43,7 +43,7 @@ public class GssTcpInteropTest extends GssInteropTestBase {
         // Read in krb5.conf and substitute in the correct port
         File file2 = new File(this.getClass().getResource("/krb5.conf").getPath());
         String content2 = getFileContent(file2.getPath());
-        content2 = content2.replaceAll("port", "" + tcpPort);
+        content2 = content2.replaceAll("port", "" + getTcpPort());
         String path2 = writeToTestDir(content2, file2.getName());
 
         System.setProperty("java.security.krb5.conf", path2);

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/b6c20968/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/GssUdpInteropTest.java
----------------------------------------------------------------------
diff --git a/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/GssUdpInteropTest.java b/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/GssUdpInteropTest.java
index 011c070..e2ccd31 100644
--- a/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/GssUdpInteropTest.java
+++ b/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/GssUdpInteropTest.java
@@ -19,10 +19,10 @@
  */
 package org.apache.kerby.kerberos.kdc;
 
-import java.io.File;
-
 import org.junit.Before;
 
+import java.io.File;
+
 /**
  * This is an interop test using the Java GSS APIs against the Kerby KDC (using UDP)
  */
@@ -33,7 +33,7 @@ public class GssUdpInteropTest extends GssInteropTestBase {
     public void setUp() throws Exception {
         super.setUp();
 
-        File file1 = new File(this.getClass().getResource("/kerberos.jaas").getPath());
+        File file1 = new File(getClass().getResource("/kerberos.jaas").getPath());
         String content1 = getFileContent(file1.getPath());
         String path1 = writeToTestDir(content1, file1.getName());
 
@@ -41,9 +41,9 @@ public class GssUdpInteropTest extends GssInteropTestBase {
         System.setProperty("java.security.auth.login.config", path1);
 
         // Read in krb5.conf and substitute in the correct port
-        File file2 = new File(this.getClass().getResource("/krb5-udp.conf").getPath());
+        File file2 = new File(getClass().getResource("/krb5-udp.conf").getPath());
         String content2 = getFileContent(file2.getPath());
-        content2 = content2.replaceAll("port", "" + udpPort);
+        content2 = content2.replaceAll("port", "" + getUdpPort());
         String path2 = writeToTestDir(content2, file2.getName());
 
         System.setProperty("java.security.krb5.conf", path2);

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/b6c20968/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/KdcTest.java
----------------------------------------------------------------------
diff --git a/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/KdcTest.java b/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/KdcTest.java
deleted file mode 100644
index 28b63c1..0000000
--- a/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/KdcTest.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/**
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *  
- *    http://www.apache.org/licenses/LICENSE-2.0
- *  
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License. 
- *  
- */
-package org.apache.kerby.kerberos.kdc;
-
-import org.apache.kerby.kerberos.kerb.KrbException;
-import org.apache.kerby.kerberos.kerb.server.KdcTestBase;
-import org.apache.kerby.kerberos.kerb.spec.ticket.ServiceTicket;
-import org.apache.kerby.kerberos.kerb.spec.ticket.TgtTicket;
-import org.junit.Assert;
-
-import java.io.File;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-public abstract class KdcTest extends KdcTestBase {
-    private String clientPrincipal;
-    private String serverPrincipal;
-
-    @Override
-    protected void createPrincipals() throws KrbException {
-        super.createPrincipals();
-        clientPrincipal = getClientPrincipal();
-        kdcServer.createPrincipal(clientPrincipal, TEST_PASSWORD);
-    }
-
-    protected void performKdcTest() throws Exception {
-        kdcServer.start();
-
-        File testDir = new File(System.getProperty("test.dir", "target"));
-        File testConfDir = new File(testDir, "conf");
-        krbClnt.setConfDir(testConfDir);
-        krbClnt.init();
-
-        TgtTicket tgt;
-        ServiceTicket tkt;
-
-        try {
-            tgt = krbClnt.requestTgtWithPassword(clientPrincipal, TEST_PASSWORD);
-            assertThat(tgt).isNotNull();
-
-            serverPrincipal = getServerPrincipal();
-            tkt = krbClnt.requestServiceTicketWithTgt(tgt, serverPrincipal);
-            assertThat(tkt).isNotNull();
-        } catch (Exception e) {
-            System.out.println("Exception occurred with good password");
-            e.printStackTrace();
-            Assert.fail();
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/b6c20968/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/KerbyKdcTest.java
----------------------------------------------------------------------
diff --git a/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/KerbyKdcTest.java b/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/KerbyKdcTest.java
index 54b3ef2..61098f0 100644
--- a/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/KerbyKdcTest.java
+++ b/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/KerbyKdcTest.java
@@ -20,7 +20,6 @@
 package org.apache.kerby.kerberos.kdc;
 
 import org.apache.kerby.kerberos.kdc.impl.NettyKdcServerImpl;
-import org.apache.kerby.kerberos.kerb.KrbException;
 import org.apache.kerby.kerberos.kerb.server.KdcTestBase;
 import org.apache.kerby.kerberos.kerb.spec.ticket.ServiceTicket;
 import org.apache.kerby.kerberos.kerb.spec.ticket.TgtTicket;
@@ -31,8 +30,6 @@ import java.io.File;
 import static org.assertj.core.api.Assertions.assertThat;
 
 public abstract class KerbyKdcTest extends KdcTestBase {
-    private String clientPrincipal;
-    private String serverPrincipal;
 
     @Override
     protected void prepareKdcServer() throws Exception {
@@ -40,13 +37,6 @@ public abstract class KerbyKdcTest extends KdcTestBase {
         kdcServer.setInnerKdcImpl(new NettyKdcServerImpl());
     }
 
-    @Override
-    protected void createPrincipals() throws KrbException {
-        super.createPrincipals();
-        clientPrincipal = getClientPrincipal();
-        kdcServer.createPrincipal(clientPrincipal, TEST_PASSWORD);
-    }
-
     protected void performKdcTest() throws Exception {
         kdcServer.start();
 
@@ -60,11 +50,11 @@ public abstract class KerbyKdcTest extends KdcTestBase {
         ServiceTicket tkt;
 
         try {
-            tgt = krbClnt.requestTgtWithPassword(clientPrincipal, TEST_PASSWORD);
+            tgt = krbClnt.requestTgtWithPassword(getClientPrincipal(),
+                    getClientPassword());
             assertThat(tgt).isNotNull();
 
-            serverPrincipal = getServerPrincipal();
-            tkt = krbClnt.requestServiceTicketWithTgt(tgt, serverPrincipal);
+            tkt = krbClnt.requestServiceTicketWithTgt(tgt, getServerPrincipal());
             assertThat(tkt).isNotNull();
         } catch (Exception e) {
             System.out.println("Exception occurred with good password");
@@ -72,10 +62,4 @@ public abstract class KerbyKdcTest extends KdcTestBase {
             Assert.fail();
         }
     }
-
-    @Override
-    protected void deletePrincipals() throws KrbException {
-        super.deletePrincipals();
-        kdcServer.deletePrincipal(clientPrincipal);
-    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/b6c20968/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/WithAccessTokenKdcTest.java
----------------------------------------------------------------------
diff --git a/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/WithAccessTokenKdcTest.java b/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/WithAccessTokenKdcTest.java
index 34de5de..cb23513 100644
--- a/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/WithAccessTokenKdcTest.java
+++ b/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/WithAccessTokenKdcTest.java
@@ -27,7 +27,7 @@ public class WithAccessTokenKdcTest extends WithTokenKdcTestBase {
     @Test
     public void testRequestServiceTicketWithAccessToken() throws Exception {
         prepareToken(getServerPrincipal());
-        createCredentialCache(getClientPrincipal(), TEST_PASSWORD);
+        createCredentialCache(getClientPrincipal(), getClientPassword());
 
         ServiceTicket serviceTicket = krbClnt.requestServiceTicketWithAccessToken(
             getKrbToken(), getServerPrincipal(), getcCacheFile().getPath());

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/b6c20968/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/WithIdentityTokenKdcTest.java
----------------------------------------------------------------------
diff --git a/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/WithIdentityTokenKdcTest.java b/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/WithIdentityTokenKdcTest.java
index 522419b..2a78f01 100644
--- a/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/WithIdentityTokenKdcTest.java
+++ b/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/WithIdentityTokenKdcTest.java
@@ -32,7 +32,7 @@ public class WithIdentityTokenKdcTest extends WithTokenKdcTestBase {
     public void testKdc() throws Exception {
 
         prepareToken(null);
-        createCredentialCache(getClientPrincipal(), TEST_PASSWORD);
+        createCredentialCache(getClientPrincipal(), getClientPassword());
 
         TgtTicket tgt = null;
         try {

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/b6c20968/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/WithTokenKdcTestBase.java
----------------------------------------------------------------------
diff --git a/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/WithTokenKdcTestBase.java b/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/WithTokenKdcTestBase.java
index 1e44895..052dc92 100644
--- a/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/WithTokenKdcTestBase.java
+++ b/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/WithTokenKdcTestBase.java
@@ -62,7 +62,7 @@ public class WithTokenKdcTestBase extends KdcTestBase {
     @Override
     protected void createPrincipals() throws KrbException {
         super.createPrincipals();
-        kdcServer.createPrincipal(getClientPrincipal(), TEST_PASSWORD);
+        kdcServer.createPrincipal(getClientPrincipal(), clientPassword);
     }
 
     @Override
@@ -141,7 +141,7 @@ public class WithTokenKdcTestBase extends KdcTestBase {
 
     protected void verifyTicket(AbstractServiceTicket ticket) {
         assertThat(ticket).isNotNull();
-        assertThat(ticket.getRealm()).isEqualTo(kdcRealm);
+        assertThat(ticket.getRealm()).isEqualTo(kdcServer.getKdcRealm());
         assertThat(ticket.getTicket()).isNotNull();
         assertThat(ticket.getSessionKey()).isNotNull();
         assertThat(ticket.getEncKdcRepPart()).isNotNull();

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/b6c20968/kerby-kerb/kerb-kdc-test/src/main/java/org/apache/kerby/kerberos/kerb/server/KdcTestBase.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-kdc-test/src/main/java/org/apache/kerby/kerberos/kerb/server/KdcTestBase.java b/kerby-kerb/kerb-kdc-test/src/main/java/org/apache/kerby/kerberos/kerb/server/KdcTestBase.java
index f76ccc3..974d626 100644
--- a/kerby-kerb/kerb-kdc-test/src/main/java/org/apache/kerby/kerberos/kerb/server/KdcTestBase.java
+++ b/kerby-kerb/kerb-kdc-test/src/main/java/org/apache/kerby/kerberos/kerb/server/KdcTestBase.java
@@ -24,6 +24,7 @@ import org.apache.kerby.kerberos.kerb.client.KrbClient;
 import org.apache.kerby.kerberos.kerb.client.KrbConfig;
 import org.apache.kerby.kerberos.kerb.client.KrbConfigKey;
 import org.apache.kerby.util.IOUtil;
+import org.apache.kerby.util.NetworkUtil;
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Before;
@@ -31,41 +32,25 @@ import org.junit.BeforeClass;
 
 import java.io.File;
 import java.io.IOException;
-import java.net.ServerSocket;
 
 public abstract class KdcTestBase {
-    protected static final String TEST_PASSWORD = "123456";
     private static File testDir;
 
-    protected String kdcRealm;
-    private String clientPrincipal;
-    private String serverPrincipal;
+    private final String kdcRealm = "TEST.COM";
+    protected final String clientPassword = "123456";
+    private final String hostname = "localhost";
+    private final String clientPrincipalName = "drankye";
+    private final String clientPrincipal = clientPrincipalName + "@" + kdcRealm;
+    private final String serverPrincipalName = "test-service";
+    private final String serverPrincipal =
+            serverPrincipalName + "/" + hostname + "@" + kdcRealm;
 
-    protected String hostname = "localhost";
-    protected int tcpPort = -1;
-    protected int udpPort = -1;
+    private int tcpPort = -1;
+    private int udpPort = -1;
 
-    protected TestKdcServer kdcServer;
+    protected SimpleKdcServer kdcServer;
     protected KrbClient krbClnt;
 
-    /**
-     * Get a server socket point for testing usage, either TCP or UDP.
-     * @return server socket point
-     */
-    private static int getServerPort() {
-        int serverPort = 0;
-
-        try {
-            ServerSocket serverSocket = new ServerSocket(0);
-            serverPort = serverSocket.getLocalPort();
-            serverSocket.close();
-        } catch (IOException e) {
-            throw new RuntimeException("Failed to get a server socket point");
-        }
-
-        return serverPort;
-    }
-
     @BeforeClass
     public static void createTestDir() throws IOException {
         String basedir = System.getProperty("basedir");
@@ -86,20 +71,24 @@ public abstract class KdcTestBase {
         return testDir;
     }
 
-    protected void setClientPrincipal(String clientPrincipal) {
-        this.clientPrincipal = clientPrincipal;
+    protected String getClientPrincipalName() {
+        return clientPrincipalName;
     }
 
     protected String getClientPrincipal() {
-        return this.clientPrincipal;
+        return clientPrincipal;
     }
 
-    protected void setServerPrincipal(String serverPrincipal) {
-        this.serverPrincipal = serverPrincipal;
+    protected String getServerPrincipalName() {
+        return serverPrincipalName;
+    }
+
+    protected String getClientPassword() {
+        return clientPassword;
     }
 
     protected String getServerPrincipal() {
-        return this.serverPrincipal;
+        return serverPrincipal;
     }
 
     protected boolean allowUdp() {
@@ -110,11 +99,20 @@ public abstract class KdcTestBase {
         return true;
     }
 
+    protected int getTcpPort() {
+        return tcpPort;
+    }
+
+    protected int getUdpPort() {
+        return udpPort;
+    }
+
     protected String getFileContent(String path) throws IOException {
         return IOUtil.readFile(new File(path));
     }
 
-    protected String writeToTestDir(String content, String fileName) throws IOException {
+    protected String writeToTestDir(String content,
+                                    String fileName) throws IOException {
         File file = new File(testDir, fileName);
         if (file.exists()) {
             file.delete();
@@ -126,11 +124,11 @@ public abstract class KdcTestBase {
     @Before
     public void setUp() throws Exception {
         if (allowTcp()) {
-            tcpPort = getServerPort();
+            tcpPort = NetworkUtil.getServerPort();
         }
 
         if (allowUdp()) {
-            udpPort = getServerPort();
+            udpPort = NetworkUtil.getServerPort();
         }
 
         setUpKdcServer();
@@ -152,6 +150,7 @@ public abstract class KdcTestBase {
      * @throws Exception
      */
     protected void prepareKdcServer() throws Exception {
+        kdcServer.setKdcRealm(kdcRealm);
         kdcServer.setKdcHost(hostname);
         kdcServer.setAllowTcp(allowTcp());
         if (tcpPort > 0) {
@@ -165,13 +164,9 @@ public abstract class KdcTestBase {
     }
 
     protected void setUpKdcServer() throws Exception {
-        kdcServer = new TestKdcServer();
+        kdcServer = new SimpleKdcServer();
         prepareKdcServer();
         kdcServer.init();
-
-        kdcRealm = kdcServer.getKdcRealm();
-        clientPrincipal = "drankye@" + kdcRealm;
-        serverPrincipal = "test-service/localhost@" + kdcRealm;
     }
 
     protected void setUpClient() throws Exception {
@@ -199,11 +194,13 @@ public abstract class KdcTestBase {
     protected void createPrincipals() throws KrbException {
         kdcServer.createTgsPrincipal();
         kdcServer.createPrincipals(serverPrincipal);
+        kdcServer.createPrincipal(clientPrincipal, clientPassword);
     }
 
     protected void deletePrincipals() throws KrbException {
         kdcServer.deleteTgsPrincipal();
         kdcServer.deletePrincipals(serverPrincipal);
+        kdcServer.deletePrincipal(clientPrincipal);
     }
 
     @After

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/b6c20968/kerby-kerb/kerb-kdc-test/src/main/java/org/apache/kerby/kerberos/kerb/server/TestKdcServer.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-kdc-test/src/main/java/org/apache/kerby/kerberos/kerb/server/TestKdcServer.java b/kerby-kerb/kerb-kdc-test/src/main/java/org/apache/kerby/kerberos/kerb/server/TestKdcServer.java
deleted file mode 100644
index 023e6ef..0000000
--- a/kerby-kerb/kerb-kdc-test/src/main/java/org/apache/kerby/kerberos/kerb/server/TestKdcServer.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/**
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *  
- *    http://www.apache.org/licenses/LICENSE-2.0
- *  
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License. 
- *  
- */
-package org.apache.kerby.kerberos.kerb.server;
-
-public class TestKdcServer extends SimpleKdcServer {
-
-    @Override
-    protected void prepareKdcConfig() {
-        KdcConfig kdcConfig = getKdcConfig();
-        kdcConfig.setString(KdcConfigKey.KDC_REALM, "TEST.COM");
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/b6c20968/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/GssInteropTest.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/GssInteropTest.java b/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/GssInteropTest.java
index 3652fea..e1967eb 100644
--- a/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/GssInteropTest.java
+++ b/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/GssInteropTest.java
@@ -6,26 +6,21 @@
  *  to you under the Apache License, Version 2.0 (the
  *  "License"); you may not use this file except in compliance
  *  with the License.  You may obtain a copy of the License at
- *  
+ *
  *    http://www.apache.org/licenses/LICENSE-2.0
- *  
+ *
  *  Unless required by applicable law or agreed to in writing,
  *  software distributed under the License is distributed on an
  *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  *  KIND, either express or implied.  See the License for the
  *  specific language governing permissions and limitations
  *  under the License. 
- *  
+ *
  */
 package org.apache.kerby.kerberos.kerb.server;
 
 import org.apache.kerby.kerberos.kerb.KrbException;
-import org.ietf.jgss.GSSContext;
-import org.ietf.jgss.GSSCredential;
-import org.ietf.jgss.GSSException;
-import org.ietf.jgss.GSSManager;
-import org.ietf.jgss.GSSName;
-import org.ietf.jgss.Oid;
+import org.ietf.jgss.*;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
@@ -46,34 +41,7 @@ import java.util.Set;
 /**
  * This is an interop test using the Java GSS APIs against the Kerby KDC
  */
-public class GssInteropTest extends KdcTest {
-    private String clientPrincipal;
-    private String serverPrincipal;
-
-    @Override
-    protected void setUpKdcServer() throws Exception {
-        kdcServer = new TestKdcServer();
-        prepareKdcServer();
-
-        kdcServer.init();
-
-        // Must disable pre-auth
-        kdcServer.getKdcConfig().setBoolean(
-                KdcConfigKey.PREAUTH_REQUIRED, true);
-
-        kdcRealm = kdcServer.getKdcRealm();
-        clientPrincipal = "drankye@" + kdcRealm;
-        setClientPrincipal(clientPrincipal);
-        serverPrincipal = "test-service/localhost@" + kdcRealm;
-        setServerPrincipal(serverPrincipal);
-    }
-
-    @Override
-    protected void createPrincipals() throws KrbException {
-        kdcServer.createTgsPrincipal();
-        kdcServer.createPrincipal(serverPrincipal, TEST_PASSWORD);
-        kdcServer.createPrincipal(clientPrincipal, TEST_PASSWORD);
-    }
+public class GssInteropTest extends KdcTestBase {
 
     @Before
     @Override
@@ -90,22 +58,29 @@ public class GssInteropTest extends KdcTest {
         // Read in krb5.conf and substitute in the correct port
         File file2 = new File(this.getClass().getResource("/krb5.conf").getPath());
         String content2 = getFileContent(file2.getPath());
-        content2 = content2.replaceAll("port", "" + tcpPort);
+        content2 = content2.replaceAll("port", "" + getTcpPort());
         String path2 = writeToTestDir(content2, file2.getName());
 
         System.setProperty("java.security.krb5.conf", path2);
     }
 
     @Override
-    protected boolean allowUdp() {
-        return false;
+    protected void createPrincipals() throws KrbException {
+        kdcServer.createTgsPrincipal();
+        kdcServer.createPrincipal(getClientPrincipal(), getClientPassword());
+        kdcServer.createPrincipal(getServerPrincipal(), getServerPassword());
+    }
+
+    private String getServerPassword() {
+        return getClientPassword(); // Reuse the same password
     }
 
     @Test
     public void testKdc() throws Exception {
         kdcServer.start();
 
-        LoginContext loginContext = new LoginContext("drankye", new KerberosCallbackHandler());
+        LoginContext loginContext = new LoginContext(getClientPrincipalName(),
+                new KerberosCallbackHandler());
         loginContext.login();
 
         Subject clientSubject = loginContext.getSubject();
@@ -122,7 +97,7 @@ public class GssInteropTest extends KdcTest {
         // Get the service ticket
         KerberosClientExceptionAction action =
                 new KerberosClientExceptionAction(clientPrincipals.iterator().next(),
-                        "test-service/localhost@TEST.COM");
+                        getServerPrincipal());
 
         byte[] kerberosToken = (byte[]) Subject.doAs(clientSubject, action);
         Assert.assertNotNull(kerberosToken);
@@ -136,7 +111,8 @@ public class GssInteropTest extends KdcTest {
 
     private void validateServiceTicket(byte[] ticket) throws Exception {
         // Get the TGT for the service
-        LoginContext loginContext = new LoginContext("test-service", new KerberosCallbackHandler());
+        LoginContext loginContext = new LoginContext("test-service",
+                new KerberosCallbackHandler());
         loginContext.login();
 
         Subject serviceSubject = loginContext.getSubject();
@@ -145,23 +121,23 @@ public class GssInteropTest extends KdcTest {
 
         // Handle the service ticket
         KerberosServiceExceptionAction serviceAction =
-                new KerberosServiceExceptionAction(ticket, "test-service/localhost@TEST.COM");
+                new KerberosServiceExceptionAction(ticket,
+                        getServerPrincipal());
 
         Subject.doAs(serviceSubject, serviceAction);
     }
 
-    private static class KerberosCallbackHandler implements CallbackHandler {
-
+    private class KerberosCallbackHandler implements CallbackHandler {
         public void handle(Callback[] callbacks) throws IOException,
                 UnsupportedCallbackException {
             for (int i = 0; i < callbacks.length; i++) {
                 if (callbacks[i] instanceof PasswordCallback) {
                     PasswordCallback pc = (PasswordCallback) callbacks[i];
-                    if (pc.getPrompt().contains("drankye")) {
-                        pc.setPassword(TEST_PASSWORD.toCharArray());
+                    if (pc.getPrompt().contains(getClientPrincipalName())) {
+                        pc.setPassword(getClientPassword().toCharArray());
                         break;
-                    } else if (pc.getPrompt().contains("test-service")) {
-                        pc.setPassword(TEST_PASSWORD.toCharArray());
+                    } else if (pc.getPrompt().contains(getServerPrincipalName())) {
+                        pc.setPassword(clientPassword.toCharArray());
                         break;
                     }
                 }
@@ -173,7 +149,7 @@ public class GssInteropTest extends KdcTest {
      * This class represents a PrivilegedExceptionAction implementation to obtain a service ticket from a Kerberos
      * Key Distribution Center.
      */
-    private static class KerberosClientExceptionAction implements PrivilegedExceptionAction<byte[]> {
+    private class KerberosClientExceptionAction implements PrivilegedExceptionAction<byte[]> {
 
         private static final String JGSS_KERBEROS_TICKET_OID = "1.2.840.113554.1.2.2";
 
@@ -188,26 +164,28 @@ public class GssInteropTest extends KdcTest {
         public byte[] run() throws GSSException {
             GSSManager gssManager = GSSManager.getInstance();
 
-            GSSName gssService = gssManager.createName(serviceName, GSSName.NT_USER_NAME);
+            GSSName gssService = gssManager.createName(serviceName,
+                    GSSName.NT_USER_NAME);
             Oid oid = new Oid(JGSS_KERBEROS_TICKET_OID);
-            GSSName gssClient = gssManager.createName(clientPrincipal.getName(), GSSName.NT_USER_NAME);
-            GSSCredential credentials =
-                    gssManager.createCredential(
-                            gssClient, GSSCredential.DEFAULT_LIFETIME, oid, GSSCredential.INITIATE_ONLY
-                    );
-
-            GSSContext secContext =
-                    gssManager.createContext(
-                            gssService, oid, credentials, GSSContext.DEFAULT_LIFETIME
-                    );
+            GSSName gssClient = gssManager.createName(clientPrincipal.getName(),
+                    GSSName.NT_USER_NAME);
+            GSSCredential credentials = gssManager.createCredential(
+                    gssClient, GSSCredential.DEFAULT_LIFETIME, oid,
+                    GSSCredential.INITIATE_ONLY
+            );
+
+            GSSContext secContext = gssManager.createContext(
+                    gssService, oid, credentials,
+                    GSSContext.DEFAULT_LIFETIME
+            );
 
             secContext.requestMutualAuth(false);
             secContext.requestCredDeleg(false);
 
             try {
                 byte[] token = new byte[0];
-                byte[] returnedToken = secContext.initSecContext(token, 0, token.length);
-
+                byte[] returnedToken = secContext.initSecContext(token,
+                        0, token.length);
                 return returnedToken;
             } finally {
                 secContext.dispose();
@@ -215,7 +193,8 @@ public class GssInteropTest extends KdcTest {
         }
     }
 
-    private static class KerberosServiceExceptionAction implements PrivilegedExceptionAction<byte[]> {
+    private static class KerberosServiceExceptionAction
+            implements PrivilegedExceptionAction<byte[]> {
 
         private static final String JGSS_KERBEROS_TICKET_OID = "1.2.840.113554.1.2.2";
 
@@ -232,7 +211,8 @@ public class GssInteropTest extends KdcTest {
             GSSManager gssManager = GSSManager.getInstance();
 
             GSSContext secContext = null;
-            GSSName gssService = gssManager.createName(serviceName, GSSName.NT_USER_NAME);
+            GSSName gssService = gssManager.createName(serviceName,
+                    GSSName.NT_USER_NAME);
 
             Oid oid = new Oid(JGSS_KERBEROS_TICKET_OID);
             GSSCredential credentials =

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/b6c20968/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/KdcTest.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/KdcTest.java b/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/KdcTest.java
index d517a0a..2dcbfcb 100644
--- a/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/KdcTest.java
+++ b/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/KdcTest.java
@@ -19,7 +19,6 @@
  */
 package org.apache.kerby.kerberos.kerb.server;
 
-import org.apache.kerby.kerberos.kerb.KrbException;
 import org.apache.kerby.kerberos.kerb.spec.ticket.ServiceTicket;
 import org.apache.kerby.kerberos.kerb.spec.ticket.TgtTicket;
 import org.junit.Assert;
@@ -29,15 +28,6 @@ import java.io.File;
 import static org.assertj.core.api.Assertions.assertThat;
 
 public abstract class KdcTest extends KdcTestBase {
-    private String clientPrincipal;
-    private String serverPrincipal;
-
-    @Override
-    protected void createPrincipals() throws KrbException {
-        super.createPrincipals();
-        clientPrincipal = getClientPrincipal();
-        kdcServer.createPrincipal(clientPrincipal, TEST_PASSWORD);
-    }
 
     protected void performKdcTest() throws Exception {
         kdcServer.start();
@@ -51,11 +41,11 @@ public abstract class KdcTest extends KdcTestBase {
         ServiceTicket tkt;
 
         try {
-            tgt = krbClnt.requestTgtWithPassword(clientPrincipal, TEST_PASSWORD);
+            tgt = krbClnt.requestTgtWithPassword(getClientPrincipal(),
+                    getClientPassword());
             assertThat(tgt).isNotNull();
 
-            serverPrincipal = getServerPrincipal();
-            tkt = krbClnt.requestServiceTicketWithTgt(tgt, serverPrincipal);
+            tkt = krbClnt.requestServiceTicketWithTgt(tgt, getServerPrincipal());
             assertThat(tkt).isNotNull();
         } catch (Exception e) {
             System.out.println("Exception occurred with good password");