Surefire 2.18 allocates and initializes the statics for ALL the test classes up front. Thus, the "Server" and similar ports get overwridden and tests fail. Update TestUtil to record the port on the various package names walkingup the class so we can start fixing tests.
Project: http://git-wip-us.apache.org/repos/asf/cxf/repo Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/94337b7a Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/94337b7a Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/94337b7a Branch: refs/heads/3.0.x-fixes Commit: 94337b7a052c9f926667b0b5d07a4d6dcc635fbb Parents: 9b9bc69 Author: Daniel Kulp <[email protected]> Authored: Wed May 20 13:37:06 2015 -0400 Committer: Daniel Kulp <[email protected]> Committed: Fri May 22 14:36:28 2015 -0400 ---------------------------------------------------------------------- .../apache/cxf/testutil/common/TestUtil.java | 38 ++++++++++++++++---- 1 file changed, 32 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cxf/blob/94337b7a/testutils/src/main/java/org/apache/cxf/testutil/common/TestUtil.java ---------------------------------------------------------------------- diff --git a/testutils/src/main/java/org/apache/cxf/testutil/common/TestUtil.java b/testutils/src/main/java/org/apache/cxf/testutil/common/TestUtil.java index 2cb3703..b72e5c6 100644 --- a/testutils/src/main/java/org/apache/cxf/testutil/common/TestUtil.java +++ b/testutils/src/main/java/org/apache/cxf/testutil/common/TestUtil.java @@ -142,13 +142,42 @@ public final class TestUtil { public static String getNewPortNumber(String name) { return getNewPortNumber(name, name); } - public static String getNewPortNumber(String fullName, String simpleName) { + + private static void applyNames(String fullName, String simpleName, String p) { + ports.setProperty("testutil.ports." + fullName, p); + ports.setProperty("testutil.ports." + simpleName, p); + System.setProperty("testutil.ports." + fullName, p); + System.setProperty("testutil.ports." + simpleName, p); + if (fullName.endsWith("." + simpleName)) { + int idx = fullName.lastIndexOf('.', fullName.lastIndexOf('.')); + while (idx != -1) { + String name = fullName.substring(idx + 1); + ports.setProperty("testutil.ports." + name, p); + System.setProperty("testutil.ports." + name, p); + idx = fullName.lastIndexOf('.', idx - 1); + } + } + } + private static void removeNames(String fullName, String simpleName) { ports.remove("testutil.ports." + fullName); ports.remove("testutil.ports." + simpleName); System.clearProperty("testutil.ports." + fullName); System.clearProperty("testutil.ports." + simpleName); + if (fullName.endsWith("." + simpleName)) { + int idx = fullName.lastIndexOf('.', fullName.lastIndexOf('.')); + while (idx != -1) { + String name = fullName.substring(idx + 1); + ports.remove("testutil.ports." + name); + System.clearProperty("testutil.ports." + name); + idx = fullName.lastIndexOf('.', idx - 1); + } + } + } + + public static String getNewPortNumber(String fullName, String simpleName) { + removeNames(fullName, simpleName); return getPortNumber(fullName, simpleName); - } + } public static String getPortNumber(String fullName, String simpleName) { String p = ports.getProperty("testutil.ports." + fullName); if (p == null) { @@ -170,10 +199,7 @@ public final class TestUtil { // } } - ports.put("testutil.ports." + fullName, p); - ports.put("testutil.ports." + simpleName, p); - System.setProperty("testutil.ports." + fullName, p); - System.setProperty("testutil.ports." + simpleName, p); + applyNames(fullName, simpleName, p); return p; }
