You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@polygene.apache.org by pa...@apache.org on 2016/09/05 01:46:18 UTC
[2/2] zest-java git commit: ZEST-175 Only run HTTP library vhost
tests on Java < 9
ZEST-175 Only run HTTP library vhost tests on Java < 9
Project: http://git-wip-us.apache.org/repos/asf/zest-java/repo
Commit: http://git-wip-us.apache.org/repos/asf/zest-java/commit/8fd9d5ac
Tree: http://git-wip-us.apache.org/repos/asf/zest-java/tree/8fd9d5ac
Diff: http://git-wip-us.apache.org/repos/asf/zest-java/diff/8fd9d5ac
Branch: refs/heads/develop
Commit: 8fd9d5ac0e300926003e5cd27d863d6045758f91
Parents: 954f5a4
Author: Paul Merlin <pa...@apache.org>
Authored: Sun Sep 4 18:45:36 2016 -0700
Committer: Paul Merlin <pa...@apache.org>
Committed: Sun Sep 4 18:45:36 2016 -0700
----------------------------------------------------------------------
libraries/http/build.gradle | 37 +++++-
.../zest/library/http/JettyTestSuite.java | 1 -
.../http/VirtualHostJettyServiceTest.java | 88 -------------
.../zest/library/http/dns/LocalManagedDns.java | 125 -------------------
.../http/dns/LocalManagedDnsDescriptor.java | 48 -------
...un.net.spi.nameservice.NameServiceDescriptor | 36 ------
.../http/VirtualHostJettyServiceTest.java | 90 +++++++++++++
.../zest/library/http/dns/LocalManagedDns.java | 125 +++++++++++++++++++
.../http/dns/LocalManagedDnsDescriptor.java | 48 +++++++
...un.net.spi.nameservice.NameServiceDescriptor | 17 +++
.../http/src/vhost-test/resources/logback.xml | 37 ++++++
11 files changed, 348 insertions(+), 304 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/zest-java/blob/8fd9d5ac/libraries/http/build.gradle
----------------------------------------------------------------------
diff --git a/libraries/http/build.gradle b/libraries/http/build.gradle
index d7e3cdc..c049c65 100644
--- a/libraries/http/build.gradle
+++ b/libraries/http/build.gradle
@@ -22,11 +22,6 @@ description = "Apache Zest\u2122 Http Library provides embedded Jetty for Apache Ze
jar { manifest { name = "Apache Zest\u2122 Library - Http" }}
-test {
- systemProperties 'networkaddress.cache.ttl': '0'
- systemProperties 'sun.net.spi.nameservice.provider.1': 'dns,LocalManagedDns'
-}
-
dependencies {
compile( project( ":org.apache.zest.core:org.apache.zest.core.api" ) )
@@ -38,9 +33,39 @@ dependencies {
testCompile( project( ":org.apache.zest.core:org.apache.zest.core.testsupport" ) )
testCompile( libraries.http_client )
- testCompile( libraries.dnsjava )
testRuntime( project( ":org.apache.zest.core:org.apache.zest.core.runtime" ) )
testRuntime( libraries.logback )
}
+
+// Do not run vhost tests on Java >= 9 because they use internal JDK apis
+if(JavaVersion.current() < JavaVersion.VERSION_1_9) {
+ sourceSets {
+ vhostTest {
+ java {
+ compileClasspath += main.output + test.output
+ runtimeClasspath += main.output + test.output
+ srcDir file('src/vhost-test/java')
+ }
+ resources {
+ srcDir file('src/vhost-test/resources')
+ }
+ }
+ }
+ configurations {
+ vhostTestCompile.extendsFrom testCompile
+ vhostTestRuntime.extendsFrom testRuntime
+ }
+ dependencies {
+ vhostTestCompile( libraries.dnsjava )
+ }
+ task vhostTest(type: Test) {
+ testClassesDir = sourceSets.vhostTest.output.classesDir
+ classpath = sourceSets.vhostTest.runtimeClasspath
+ systemProperties 'networkaddress.cache.ttl': '0'
+ systemProperties 'sun.net.spi.nameservice.provider.1': 'dns,LocalManagedDns'
+ }
+ check.dependsOn vhostTest
+ vhostTest.mustRunAfter test
+}
http://git-wip-us.apache.org/repos/asf/zest-java/blob/8fd9d5ac/libraries/http/src/test/java/org/apache/zest/library/http/JettyTestSuite.java
----------------------------------------------------------------------
diff --git a/libraries/http/src/test/java/org/apache/zest/library/http/JettyTestSuite.java b/libraries/http/src/test/java/org/apache/zest/library/http/JettyTestSuite.java
index e96e402..5d59563 100644
--- a/libraries/http/src/test/java/org/apache/zest/library/http/JettyTestSuite.java
+++ b/libraries/http/src/test/java/org/apache/zest/library/http/JettyTestSuite.java
@@ -24,7 +24,6 @@ import org.junit.runners.Suite;
@RunWith( Suite.class )
@Suite.SuiteClasses( {
- VirtualHostJettyServiceTest.class,
JettyServiceTest.class,
JettyJMXStatisticsTest.class,
SecureJettyServiceTest.class,
http://git-wip-us.apache.org/repos/asf/zest-java/blob/8fd9d5ac/libraries/http/src/test/java/org/apache/zest/library/http/VirtualHostJettyServiceTest.java
----------------------------------------------------------------------
diff --git a/libraries/http/src/test/java/org/apache/zest/library/http/VirtualHostJettyServiceTest.java b/libraries/http/src/test/java/org/apache/zest/library/http/VirtualHostJettyServiceTest.java
deleted file mode 100644
index 87b869d..0000000
--- a/libraries/http/src/test/java/org/apache/zest/library/http/VirtualHostJettyServiceTest.java
+++ /dev/null
@@ -1,88 +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.zest.library.http;
-
-import java.io.IOException;
-import org.apache.http.client.methods.HttpGet;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.apache.zest.api.common.Visibility;
-import org.apache.zest.bootstrap.AssemblyException;
-import org.apache.zest.bootstrap.ModuleAssembly;
-import org.apache.zest.library.http.dns.LocalManagedDns;
-import org.apache.zest.test.EntityTestAssembler;
-
-import static org.junit.Assert.assertEquals;
-import static org.apache.zest.library.http.Servlets.addServlets;
-import static org.apache.zest.library.http.Servlets.serve;
-import static org.apache.zest.test.util.Assume.assumeNoIbmJdk;
-
-public class VirtualHostJettyServiceTest
- extends AbstractJettyTest
-{
- private static final String HOST1 = "host1.http.library.zest";
- private static final String HOST2 = "host2.http.library.zest";
-
- @Override
- public void assemble( ModuleAssembly module )
- throws AssemblyException
- {
- ModuleAssembly configModule = module;
- new EntityTestAssembler().assemble( configModule );
- new JettyServiceAssembler().withConfig( configModule, Visibility.layer ).assemble( module );
-
- SecureJettyConfiguration config = configModule.forMixin( SecureJettyConfiguration.class ).declareDefaults();
- config.hostName().set( "127.0.0.1" );
- config.port().set( HTTP_PORT );
- config.virtualHosts().set( HOST1 + "," + HOST2 );
-
- addServlets( serve( "/hello" ).with( HelloWorldServletService.class ) ).to( module );
- }
-
- @BeforeClass
- public static void beforeVirtualHostsClass()
- {
- assumeNoIbmJdk();
- LocalManagedDns.putName( HOST1, "127.0.0.1" );
- LocalManagedDns.putName( HOST2, "127.0.0.1" );
- }
-
- @AfterClass
- public static void afterVirtualHostsClass()
- {
- LocalManagedDns.removeName( HOST1 );
- LocalManagedDns.removeName( HOST2 );
- }
-
- @Test
- public void test()
- throws IOException
- {
- // Available on HOST1 and HOST2
- String output = defaultHttpClient.execute( new HttpGet( "http://" + HOST1 + ":8041/hello" ),
- stringResponseHandler );
- assertEquals( "Hello World", output );
-
- output = defaultHttpClient.execute( new HttpGet( "http://" + HOST2 + ":8041/hello" ),
- stringResponseHandler );
- assertEquals( "Hello World", output );
- }
-}
http://git-wip-us.apache.org/repos/asf/zest-java/blob/8fd9d5ac/libraries/http/src/test/java/org/apache/zest/library/http/dns/LocalManagedDns.java
----------------------------------------------------------------------
diff --git a/libraries/http/src/test/java/org/apache/zest/library/http/dns/LocalManagedDns.java b/libraries/http/src/test/java/org/apache/zest/library/http/dns/LocalManagedDns.java
deleted file mode 100644
index 68b208d..0000000
--- a/libraries/http/src/test/java/org/apache/zest/library/http/dns/LocalManagedDns.java
+++ /dev/null
@@ -1,125 +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.zest.library.http.dns;
-
-import java.net.Inet4Address;
-import java.net.InetAddress;
-import java.net.UnknownHostException;
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-import org.xbill.DNS.spi.DNSJavaNameServiceDescriptor;
-import sun.net.spi.nameservice.NameService;
-
-public class LocalManagedDns
- implements NameService
-{
-
- private static final NameService DEFAULT_DNS = new DNSJavaNameServiceDescriptor().createNameService();
- private static final Map<String, String> NAMES = new ConcurrentHashMap<String, String>();
-
- public static void clearNames()
- {
- NAMES.clear();
- }
-
- public static String putName( String name, String ip )
- {
- return NAMES.put( name, ip );
- }
-
- public static String removeName( String name )
- {
- return NAMES.remove( name );
- }
-
- public String getHostByAddr( byte[] bytes )
- throws UnknownHostException
- {
- return DEFAULT_DNS.getHostByAddr( bytes );
- }
-
- public InetAddress[] lookupAllHostAddr( String name )
- throws UnknownHostException
- {
- String log = "[CDNS] Lookup request";
- String ip = NAMES.get( name );
- InetAddress[] result = new InetAddress[ 0 ];
- if ( ip != null && ip.length() > 0 ) {
- log += " on managed name (" + name + ")";
- byte[] ipBytes = ipStringToBytes( ip );
- result = new InetAddress[]{ Inet4Address.getByAddress( ipBytes ) };
- } else {
- log += " on non-managed name (" + name + ")";
- result = DEFAULT_DNS.lookupAllHostAddr( name );
- }
- return result;
- }
-
- private static byte[] ipStringToBytes( String ipString )
- {
- if ( ipString == null || ipString.length() == 0 ) {
- return null;
- }
-
- int inetAddrSize = 4;
- int octets;
- char ch;
- byte[] dst = new byte[ inetAddrSize ];
- char[] srcb = ipString.toCharArray();
- boolean saw_digit = false;
-
- octets = 0;
- int i = 0;
- int cur = 0;
- while ( i < srcb.length ) {
- ch = srcb[i++];
- if ( Character.isDigit( ch ) ) {
- int sum = dst[cur] * 10 + ( Character.digit( ch, 10 ) & 0xff );
-
- if ( sum > 255 ) {
- return null;
- }
-
- dst[cur] = ( byte ) ( sum & 0xff );
- if ( !saw_digit ) {
- if ( ++octets > inetAddrSize ) {
- return null;
- }
- saw_digit = true;
- }
- } else if ( ch == '.' && saw_digit ) {
- if ( octets == inetAddrSize ) {
- return null;
- }
- cur++;
- dst[cur] = 0;
- saw_digit = false;
- } else {
- return null;
- }
- }
-
- if ( octets < inetAddrSize ) {
- return null;
- }
- return dst;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/zest-java/blob/8fd9d5ac/libraries/http/src/test/java/org/apache/zest/library/http/dns/LocalManagedDnsDescriptor.java
----------------------------------------------------------------------
diff --git a/libraries/http/src/test/java/org/apache/zest/library/http/dns/LocalManagedDnsDescriptor.java b/libraries/http/src/test/java/org/apache/zest/library/http/dns/LocalManagedDnsDescriptor.java
deleted file mode 100644
index a2ae722..0000000
--- a/libraries/http/src/test/java/org/apache/zest/library/http/dns/LocalManagedDnsDescriptor.java
+++ /dev/null
@@ -1,48 +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.zest.library.http.dns;
-
-import sun.net.spi.nameservice.NameService;
-import sun.net.spi.nameservice.NameServiceDescriptor;
-
-public class LocalManagedDnsDescriptor
- implements NameServiceDescriptor
-{
-
- public static final String PROVIDER_NAME = "LocalManagedDns";
- private static final NameService nameService = new LocalManagedDns();
-
- public NameService createNameService()
- throws Exception
- {
- return nameService;
- }
-
- public String getProviderName()
- {
- return PROVIDER_NAME;
- }
-
- public String getType()
- {
- return "dns";
- }
-
-}
http://git-wip-us.apache.org/repos/asf/zest-java/blob/8fd9d5ac/libraries/http/src/test/resources/META-INF/services/sun.net.spi.nameservice.NameServiceDescriptor
----------------------------------------------------------------------
diff --git a/libraries/http/src/test/resources/META-INF/services/sun.net.spi.nameservice.NameServiceDescriptor b/libraries/http/src/test/resources/META-INF/services/sun.net.spi.nameservice.NameServiceDescriptor
deleted file mode 100644
index a8a8434..0000000
--- a/libraries/http/src/test/resources/META-INF/services/sun.net.spi.nameservice.NameServiceDescriptor
+++ /dev/null
@@ -1,36 +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.
-#
-#
-#
-
-# 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.
-
-org.apache.zest.library.http.dns.LocalManagedDnsDescriptor
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/zest-java/blob/8fd9d5ac/libraries/http/src/vhost-test/java/org/apache/zest/library/http/VirtualHostJettyServiceTest.java
----------------------------------------------------------------------
diff --git a/libraries/http/src/vhost-test/java/org/apache/zest/library/http/VirtualHostJettyServiceTest.java b/libraries/http/src/vhost-test/java/org/apache/zest/library/http/VirtualHostJettyServiceTest.java
new file mode 100644
index 0000000..1bf526c
--- /dev/null
+++ b/libraries/http/src/vhost-test/java/org/apache/zest/library/http/VirtualHostJettyServiceTest.java
@@ -0,0 +1,90 @@
+/*
+ * 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.zest.library.http;
+
+import java.io.IOException;
+import org.apache.http.client.methods.HttpGet;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.apache.zest.api.common.Visibility;
+import org.apache.zest.bootstrap.AssemblyException;
+import org.apache.zest.bootstrap.ModuleAssembly;
+import org.apache.zest.library.http.dns.LocalManagedDns;
+import org.apache.zest.test.EntityTestAssembler;
+
+import static org.junit.Assert.assertEquals;
+import static org.apache.zest.library.http.Servlets.addServlets;
+import static org.apache.zest.library.http.Servlets.serve;
+import static org.apache.zest.test.util.Assume.assumeNoIbmJdk;
+
+// TODO Compilation fails with Java 9
+// TODO Move this to a separate source set that's enabled only when Java < 9
+public class VirtualHostJettyServiceTest
+ extends AbstractJettyTest
+{
+ private static final String HOST1 = "host1.http.library.zest";
+ private static final String HOST2 = "host2.http.library.zest";
+
+ @Override
+ public void assemble( ModuleAssembly module )
+ throws AssemblyException
+ {
+ ModuleAssembly configModule = module;
+ new EntityTestAssembler().assemble( configModule );
+ new JettyServiceAssembler().withConfig( configModule, Visibility.layer ).assemble( module );
+
+ SecureJettyConfiguration config = configModule.forMixin( SecureJettyConfiguration.class ).declareDefaults();
+ config.hostName().set( "127.0.0.1" );
+ config.port().set( HTTP_PORT );
+ config.virtualHosts().set( HOST1 + "," + HOST2 );
+
+ addServlets( serve( "/hello" ).with( HelloWorldServletService.class ) ).to( module );
+ }
+
+ @BeforeClass
+ public static void beforeVirtualHostsClass()
+ {
+ assumeNoIbmJdk();
+ LocalManagedDns.putName( HOST1, "127.0.0.1" );
+ LocalManagedDns.putName( HOST2, "127.0.0.1" );
+ }
+
+ @AfterClass
+ public static void afterVirtualHostsClass()
+ {
+ LocalManagedDns.removeName( HOST1 );
+ LocalManagedDns.removeName( HOST2 );
+ }
+
+ @Test
+ public void test()
+ throws IOException
+ {
+ // Available on HOST1 and HOST2
+ String output = defaultHttpClient.execute( new HttpGet( "http://" + HOST1 + ":8041/hello" ),
+ stringResponseHandler );
+ assertEquals( "Hello World", output );
+
+ output = defaultHttpClient.execute( new HttpGet( "http://" + HOST2 + ":8041/hello" ),
+ stringResponseHandler );
+ assertEquals( "Hello World", output );
+ }
+}
http://git-wip-us.apache.org/repos/asf/zest-java/blob/8fd9d5ac/libraries/http/src/vhost-test/java/org/apache/zest/library/http/dns/LocalManagedDns.java
----------------------------------------------------------------------
diff --git a/libraries/http/src/vhost-test/java/org/apache/zest/library/http/dns/LocalManagedDns.java b/libraries/http/src/vhost-test/java/org/apache/zest/library/http/dns/LocalManagedDns.java
new file mode 100644
index 0000000..68b208d
--- /dev/null
+++ b/libraries/http/src/vhost-test/java/org/apache/zest/library/http/dns/LocalManagedDns.java
@@ -0,0 +1,125 @@
+/*
+ * 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.zest.library.http.dns;
+
+import java.net.Inet4Address;
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import org.xbill.DNS.spi.DNSJavaNameServiceDescriptor;
+import sun.net.spi.nameservice.NameService;
+
+public class LocalManagedDns
+ implements NameService
+{
+
+ private static final NameService DEFAULT_DNS = new DNSJavaNameServiceDescriptor().createNameService();
+ private static final Map<String, String> NAMES = new ConcurrentHashMap<String, String>();
+
+ public static void clearNames()
+ {
+ NAMES.clear();
+ }
+
+ public static String putName( String name, String ip )
+ {
+ return NAMES.put( name, ip );
+ }
+
+ public static String removeName( String name )
+ {
+ return NAMES.remove( name );
+ }
+
+ public String getHostByAddr( byte[] bytes )
+ throws UnknownHostException
+ {
+ return DEFAULT_DNS.getHostByAddr( bytes );
+ }
+
+ public InetAddress[] lookupAllHostAddr( String name )
+ throws UnknownHostException
+ {
+ String log = "[CDNS] Lookup request";
+ String ip = NAMES.get( name );
+ InetAddress[] result = new InetAddress[ 0 ];
+ if ( ip != null && ip.length() > 0 ) {
+ log += " on managed name (" + name + ")";
+ byte[] ipBytes = ipStringToBytes( ip );
+ result = new InetAddress[]{ Inet4Address.getByAddress( ipBytes ) };
+ } else {
+ log += " on non-managed name (" + name + ")";
+ result = DEFAULT_DNS.lookupAllHostAddr( name );
+ }
+ return result;
+ }
+
+ private static byte[] ipStringToBytes( String ipString )
+ {
+ if ( ipString == null || ipString.length() == 0 ) {
+ return null;
+ }
+
+ int inetAddrSize = 4;
+ int octets;
+ char ch;
+ byte[] dst = new byte[ inetAddrSize ];
+ char[] srcb = ipString.toCharArray();
+ boolean saw_digit = false;
+
+ octets = 0;
+ int i = 0;
+ int cur = 0;
+ while ( i < srcb.length ) {
+ ch = srcb[i++];
+ if ( Character.isDigit( ch ) ) {
+ int sum = dst[cur] * 10 + ( Character.digit( ch, 10 ) & 0xff );
+
+ if ( sum > 255 ) {
+ return null;
+ }
+
+ dst[cur] = ( byte ) ( sum & 0xff );
+ if ( !saw_digit ) {
+ if ( ++octets > inetAddrSize ) {
+ return null;
+ }
+ saw_digit = true;
+ }
+ } else if ( ch == '.' && saw_digit ) {
+ if ( octets == inetAddrSize ) {
+ return null;
+ }
+ cur++;
+ dst[cur] = 0;
+ saw_digit = false;
+ } else {
+ return null;
+ }
+ }
+
+ if ( octets < inetAddrSize ) {
+ return null;
+ }
+ return dst;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/zest-java/blob/8fd9d5ac/libraries/http/src/vhost-test/java/org/apache/zest/library/http/dns/LocalManagedDnsDescriptor.java
----------------------------------------------------------------------
diff --git a/libraries/http/src/vhost-test/java/org/apache/zest/library/http/dns/LocalManagedDnsDescriptor.java b/libraries/http/src/vhost-test/java/org/apache/zest/library/http/dns/LocalManagedDnsDescriptor.java
new file mode 100644
index 0000000..a2ae722
--- /dev/null
+++ b/libraries/http/src/vhost-test/java/org/apache/zest/library/http/dns/LocalManagedDnsDescriptor.java
@@ -0,0 +1,48 @@
+/*
+ * 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.zest.library.http.dns;
+
+import sun.net.spi.nameservice.NameService;
+import sun.net.spi.nameservice.NameServiceDescriptor;
+
+public class LocalManagedDnsDescriptor
+ implements NameServiceDescriptor
+{
+
+ public static final String PROVIDER_NAME = "LocalManagedDns";
+ private static final NameService nameService = new LocalManagedDns();
+
+ public NameService createNameService()
+ throws Exception
+ {
+ return nameService;
+ }
+
+ public String getProviderName()
+ {
+ return PROVIDER_NAME;
+ }
+
+ public String getType()
+ {
+ return "dns";
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/zest-java/blob/8fd9d5ac/libraries/http/src/vhost-test/resources/META-INF/services/sun.net.spi.nameservice.NameServiceDescriptor
----------------------------------------------------------------------
diff --git a/libraries/http/src/vhost-test/resources/META-INF/services/sun.net.spi.nameservice.NameServiceDescriptor b/libraries/http/src/vhost-test/resources/META-INF/services/sun.net.spi.nameservice.NameServiceDescriptor
new file mode 100644
index 0000000..723c58d
--- /dev/null
+++ b/libraries/http/src/vhost-test/resources/META-INF/services/sun.net.spi.nameservice.NameServiceDescriptor
@@ -0,0 +1,17 @@
+# 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.
+
+org.apache.zest.library.http.dns.LocalManagedDnsDescriptor
http://git-wip-us.apache.org/repos/asf/zest-java/blob/8fd9d5ac/libraries/http/src/vhost-test/resources/logback.xml
----------------------------------------------------------------------
diff --git a/libraries/http/src/vhost-test/resources/logback.xml b/libraries/http/src/vhost-test/resources/logback.xml
new file mode 100644
index 0000000..c390645
--- /dev/null
+++ b/libraries/http/src/vhost-test/resources/logback.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ 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.
+ ~
+ ~
+ -->
+<configuration>
+
+ <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
+ <encoder>
+ <pattern>[ZEST] @%-20thread %-5level %logger{36} - %msg%n</pattern>
+ </encoder>
+ </appender>
+
+ <root level="info">
+ <appender-ref ref="stdout" />
+ </root>
+
+ <logger name="org.apache.zest.library.http" level="trace"/>
+ <logger name="org.eclipse.jetty" level="info"/>
+ <logger name="org.jetty" level="info"/>
+
+</configuration>