http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/699b3f65/core/src/test/java/brooklyn/qa/performance/TaskPerformanceTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/brooklyn/qa/performance/TaskPerformanceTest.java b/core/src/test/java/brooklyn/qa/performance/TaskPerformanceTest.java index 6e4a0d0..c940a36 100644 --- a/core/src/test/java/brooklyn/qa/performance/TaskPerformanceTest.java +++ b/core/src/test/java/brooklyn/qa/performance/TaskPerformanceTest.java @@ -26,6 +26,8 @@ import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; +import org.apache.brooklyn.core.util.task.BasicExecutionManager; +import org.apache.brooklyn.core.util.task.SingleThreadedScheduler; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.testng.annotations.BeforeMethod; @@ -33,8 +35,6 @@ import org.testng.annotations.Test; import brooklyn.util.collections.MutableMap; import brooklyn.util.exceptions.Exceptions; -import brooklyn.util.task.BasicExecutionManager; -import brooklyn.util.task.SingleThreadedScheduler; import brooklyn.util.time.Time; import com.google.common.collect.ImmutableList;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/699b3f65/core/src/test/java/brooklyn/test/HttpService.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/brooklyn/test/HttpService.java b/core/src/test/java/brooklyn/test/HttpService.java index 2710211..80f63f0 100644 --- a/core/src/test/java/brooklyn/test/HttpService.java +++ b/core/src/test/java/brooklyn/test/HttpService.java @@ -40,10 +40,10 @@ import org.eclipse.jetty.webapp.WebAppContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.apache.brooklyn.api.location.PortRange; +import org.apache.brooklyn.core.util.ResourceUtils; +import org.apache.brooklyn.core.util.crypto.SecureKeys; import org.apache.brooklyn.location.basic.LocalhostMachineProvisioningLocation; -import brooklyn.util.ResourceUtils; -import brooklyn.util.crypto.SecureKeys; import brooklyn.util.javalang.Threads; import brooklyn.util.os.Os; http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/699b3f65/core/src/test/java/brooklyn/test/policy/TestEnricher.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/brooklyn/test/policy/TestEnricher.java b/core/src/test/java/brooklyn/test/policy/TestEnricher.java index c204c8b..88cc362 100644 --- a/core/src/test/java/brooklyn/test/policy/TestEnricher.java +++ b/core/src/test/java/brooklyn/test/policy/TestEnricher.java @@ -23,6 +23,7 @@ import java.util.Map; import org.apache.brooklyn.api.entity.Entity; import org.apache.brooklyn.api.event.AttributeSensor; +import org.apache.brooklyn.core.util.flags.SetFromFlag; import com.google.common.reflect.TypeToken; @@ -30,7 +31,6 @@ import brooklyn.config.ConfigKey; import brooklyn.enricher.basic.AbstractEnricher; import brooklyn.entity.basic.ConfigKeys; import brooklyn.event.basic.BasicConfigKey; -import brooklyn.util.flags.SetFromFlag; public class TestEnricher extends AbstractEnricher { @SetFromFlag("confName") http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/699b3f65/core/src/test/java/brooklyn/test/policy/TestPolicy.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/brooklyn/test/policy/TestPolicy.java b/core/src/test/java/brooklyn/test/policy/TestPolicy.java index b93450c..184eb4e 100644 --- a/core/src/test/java/brooklyn/test/policy/TestPolicy.java +++ b/core/src/test/java/brooklyn/test/policy/TestPolicy.java @@ -22,12 +22,12 @@ import java.util.Collections; import java.util.Map; import org.apache.brooklyn.api.event.AttributeSensor; +import org.apache.brooklyn.core.util.flags.SetFromFlag; import brooklyn.config.ConfigKey; import brooklyn.entity.basic.ConfigKeys; import brooklyn.event.basic.BasicConfigKey; import brooklyn.policy.basic.AbstractPolicy; -import brooklyn.util.flags.SetFromFlag; import com.google.common.reflect.TypeToken; http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/699b3f65/core/src/test/java/brooklyn/util/BrooklynMavenArtifactsTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/brooklyn/util/BrooklynMavenArtifactsTest.java b/core/src/test/java/brooklyn/util/BrooklynMavenArtifactsTest.java deleted file mode 100644 index 0fcfdf7..0000000 --- a/core/src/test/java/brooklyn/util/BrooklynMavenArtifactsTest.java +++ /dev/null @@ -1,96 +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 brooklyn.util; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.testng.Assert; -import org.testng.annotations.Test; - -import brooklyn.test.Asserts; -import brooklyn.util.exceptions.Exceptions; -import brooklyn.util.maven.MavenArtifact; -import brooklyn.util.maven.MavenRetriever; -import brooklyn.util.stream.Streams; -import brooklyn.util.text.Strings; -import brooklyn.util.time.Duration; -import brooklyn.util.time.Time; - -@Test -public class BrooklynMavenArtifactsTest { - - private static final Logger log = LoggerFactory.getLogger(BrooklynMavenArtifactsTest.class); - - @Test(groups="Integration") - public void testUtilsCommon() { - ResourceUtils.create(this).checkUrlExists(BrooklynMavenArtifacts.localUrlForJar("brooklyn-utils-common")); - } - - @Test(groups="Integration") - public void testExampleWar() { - String url = BrooklynMavenArtifacts.localUrl("example", "brooklyn-example-hello-world-sql-webapp", "war"); - ResourceUtils.create(this).checkUrlExists(url); - log.info("found example war at: "+url); - } - - @Test(groups="Integration") - // runs without internet but doesn't assert what it should, and can take a long time, so integration - public void testBadExampleWar() { - String url = BrooklynMavenArtifacts.localUrl("example", "brooklyn-example-GOODBYE-world-sql-webapp", "war"); - Assert.assertFalse(ResourceUtils.create(this).doesUrlExist(url), "should not exist: "+url); - } - - public void testHostedIsHttp() { - String common = BrooklynMavenArtifacts.hostedUrlForJar("brooklyn-utils-common"); - log.info("online should be at: "+common); - Assert.assertTrue(common.startsWith("http")); - } - - @Test(groups="Integration") - public void testHistoricHosted() { - // NB: this should be a version known to be up at sonatype or maven central, NOT necessarily the current version! - String snapshot = MavenRetriever.hostedUrl(MavenArtifact.fromCoordinate("org.apache.brooklyn:brooklyn-utils-common:jar:0.7.0-SNAPSHOT")); - log.info("Sample snapshot URL is: "+snapshot); - checkValidArchive(snapshot); - ResourceUtils.create(this).checkUrlExists(snapshot); - - // NB: this should be a version known to be up at sonatype or maven central, NOT necessarily the current version! - String release = MavenRetriever.hostedUrl(MavenArtifact.fromCoordinate("io.brooklyn:brooklyn-utils-common:jar:0.6.0")); - log.info("Sample release URL is: "+release); - checkValidArchive(release); - } - - private void checkValidArchive(final String url) { - // Note have seen response code 500 from repository.apache.org, for - // https://repository.apache.org/service/local/artifact/maven/redirect?r=snapshots&v=0.7.0-SNAPSHOT&g=org.apache.brooklyn&a=brooklyn-utils-common&e=jar - // Therefore willing to retry, rather than failing immediately. - Asserts.succeedsEventually(new Runnable() { - @Override public void run() { - try { - byte[] bytes = Streams.readFully(ResourceUtils.create(this).getResourceFromUrl(url)); - // confirm this follow redirects! - Assert.assertTrue(bytes.length > 100*1000, "download of "+url+" is suspect ("+Strings.makeSizeString(bytes.length)+")"); - // (could also check it is a zip etc) - } catch (Exception e) { - throw Exceptions.propagate(e); - } - }}); - } - -} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/699b3f65/core/src/test/java/brooklyn/util/ResourceUtilsHttpTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/brooklyn/util/ResourceUtilsHttpTest.java b/core/src/test/java/brooklyn/util/ResourceUtilsHttpTest.java deleted file mode 100644 index daac00a..0000000 --- a/core/src/test/java/brooklyn/util/ResourceUtilsHttpTest.java +++ /dev/null @@ -1,196 +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 brooklyn.util; - -import static org.testng.Assert.assertEquals; -import static org.testng.Assert.assertFalse; - -import java.io.IOException; -import java.io.InputStream; - -import org.apache.http.HttpException; -import org.apache.http.HttpRequest; -import org.apache.http.HttpResponse; -import org.apache.http.HttpStatus; -import org.apache.http.entity.StringEntity; -import org.apache.http.localserver.RequestBasicAuth; -import org.apache.http.localserver.ResponseBasicUnauthorized; -import org.apache.http.protocol.HttpContext; -import org.apache.http.protocol.HttpRequestHandler; -import org.apache.http.protocol.ResponseServer; -import org.testng.annotations.AfterClass; -import org.testng.annotations.BeforeClass; -import org.testng.annotations.Test; - -import brooklyn.test.TestHttpRequestHandler; -import brooklyn.test.TestHttpServer; -import brooklyn.util.stream.Streams; -import brooklyn.util.text.Strings; - -public class ResourceUtilsHttpTest { - private ResourceUtils utils; - private TestHttpServer server; - private String baseUrl; - - @BeforeClass(alwaysRun=true) - public void setUp() throws Exception { - utils = ResourceUtils.create(this, "mycontext"); - server = new TestHttpServer() - .interceptor(new ResponseServer()) - .interceptor(new ResponseBasicUnauthorized()) - .interceptor(new RequestBasicAuth()) - .handler("/simple", new TestHttpRequestHandler().response("OK")) - .handler("/empty", new TestHttpRequestHandler().code(HttpStatus.SC_NO_CONTENT)) - .handler("/missing", new TestHttpRequestHandler().code(HttpStatus.SC_NOT_FOUND).response("Missing")) - .handler("/redirect", new TestHttpRequestHandler().code(HttpStatus.SC_MOVED_TEMPORARILY).response("Redirect").header("Location", "/simple")) - .handler("/cycle", new TestHttpRequestHandler().code(HttpStatus.SC_MOVED_TEMPORARILY).response("Redirect").header("Location", "/cycle")) - .handler("/secure", new TestHttpRequestHandler().code(HttpStatus.SC_MOVED_TEMPORARILY).response("Redirect").header("Location", "https://0.0.0.0/")) - .handler("/auth", new AuthHandler("test", "test", "OK")) - .handler("/auth_escape", new AuthHandler("test@me:/", "test", "OK")) - .handler("/auth_escape2", new AuthHandler("test@me:test", "", "OK")) - .handler("/no_credentials", new CheckNoCredentials()) - .start(); - baseUrl = server.getUrl(); - } - - @AfterClass(alwaysRun=true) - public void tearDown() throws Exception { - server.stop(); - } - - @Test - public void testGet() throws Exception { - InputStream stream = utils.getResourceFromUrl(baseUrl + "/simple"); - assertEquals(Streams.readFullyString(stream), "OK"); - } - - @Test - public void testGetEmpty() throws Exception { - InputStream stream = utils.getResourceFromUrl(baseUrl + "/empty"); - assertEquals(Streams.readFullyString(stream), ""); - } - - @Test - public void testGetProtected() throws Exception { - String url = baseUrl.replace("http://", "http://test:test@") + "/auth"; - InputStream stream = utils.getResourceFromUrl(url); - assertEquals(Streams.readFullyString(stream), "OK"); - } - - @Test - public void testGetProtectedEscape() throws Exception { - String url = baseUrl.replace("http://", "http://test%40me%3A%2F:test@") + "/auth_escape"; - InputStream stream = utils.getResourceFromUrl(url); - assertEquals(Streams.readFullyString(stream), "OK"); - } - - @Test - public void testGetProtectedEscape2() throws Exception { - String url = baseUrl.replace("http://", "http://test%40me%3Atest@") + "/auth_escape2"; - InputStream stream = utils.getResourceFromUrl(url); - assertEquals(Streams.readFullyString(stream), "OK"); - } - - @Test(expectedExceptions = RuntimeException.class) - public void testProtectedFailsWithoutCredentials() throws Exception { - utils.getResourceFromUrl(baseUrl + "/auth"); - } - - @Test - public void testInvalidCredentialsNotPassed() throws Exception { - String url = baseUrl + "/no_credentials?no:auth@needed"; - InputStream stream = utils.getResourceFromUrl(url); - assertEquals(Streams.readFullyString(stream), "OK"); - } - - @Test - public void testRedirect() throws Exception { - InputStream stream = utils.getResourceFromUrl(baseUrl + "/redirect"); - assertEquals(Streams.readFullyString(stream), "OK"); - } - - @Test(expectedExceptions = RuntimeException.class) - public void testCycleRedirect() throws Exception { - InputStream stream = utils.getResourceFromUrl(baseUrl + "/cycle"); - assertEquals(Streams.readFullyString(stream), "OK"); - } - - @Test(expectedExceptions = RuntimeException.class) - public void testGetMissing() throws Exception { - utils.getResourceFromUrl(baseUrl + "/missing"); - } - - @Test(expectedExceptions = RuntimeException.class) - public void testFollowsProtoChange() throws Exception { - utils.getResourceFromUrl(baseUrl + "/secure"); - } - - // See https://github.com/brooklyncentral/brooklyn/issues/1338 - @Test(groups={"Integration"}) - public void testResourceFromUrlFollowsRedirect() throws Exception { - String contents = new ResourceUtils(this).getResourceAsString("http://bit.ly/brooklyn-visitors-creation-script"); - assertFalse(contents.contains("bit.ly"), "contents="+contents); - } - - private static class AuthHandler implements HttpRequestHandler { - private String username; - private String password; - private String responseBody; - - public AuthHandler(String username, String password, String response) { - this.username = username; - this.password = password; - this.responseBody = response; - } - - @Override - public void handle(HttpRequest request, HttpResponse response, HttpContext context) throws HttpException, IOException { - String creds = (String) context.getAttribute("creds"); - if (creds == null || !creds.equals(getExpectedCredentials())) { - response.setStatusCode(HttpStatus.SC_UNAUTHORIZED); - } else { - response.setEntity(new StringEntity(responseBody)); - } - } - - private String getExpectedCredentials() { - if (Strings.isEmpty(password)) { - return username; - } else { - return username + ":" + password; - } - } - - } - - private static class CheckNoCredentials implements HttpRequestHandler { - - @Override - public void handle(HttpRequest request, HttpResponse response, - HttpContext context) throws HttpException, IOException { - String creds = (String) context.getAttribute("creds"); - if (creds == null) { - response.setEntity(new StringEntity("OK")); - } else { - response.setStatusCode(HttpStatus.SC_BAD_REQUEST); - } - } - - } -} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/699b3f65/core/src/test/java/brooklyn/util/ResourceUtilsTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/brooklyn/util/ResourceUtilsTest.java b/core/src/test/java/brooklyn/util/ResourceUtilsTest.java deleted file mode 100644 index de54ebb..0000000 --- a/core/src/test/java/brooklyn/util/ResourceUtilsTest.java +++ /dev/null @@ -1,189 +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 brooklyn.util; - -import static org.testng.Assert.assertEquals; -import static org.testng.Assert.assertFalse; -import static org.testng.Assert.assertNotNull; -import static org.testng.Assert.assertTrue; - -import java.io.ByteArrayInputStream; -import java.io.File; -import java.io.FileInputStream; -import java.io.InputStream; -import java.net.URL; -import java.util.List; -import java.util.NoSuchElementException; -import java.util.Properties; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.testng.annotations.AfterClass; -import org.testng.annotations.BeforeClass; -import org.testng.annotations.Test; - -import brooklyn.util.net.Urls; -import brooklyn.util.os.Os; -import brooklyn.util.stream.Streams; -import brooklyn.util.text.Identifiers; - -import com.google.common.base.Charsets; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.Iterables; -import com.google.common.io.Files; - -public class ResourceUtilsTest { - - private static final Logger log = LoggerFactory.getLogger(ResourceUtilsTest.class); - - private String tempFileContents = "abc"; - private ResourceUtils utils; - private File tempFile; - - @BeforeClass(alwaysRun=true) - public void setUp() throws Exception { - utils = ResourceUtils.create(this, "mycontext"); - tempFile = Os.writeToTempFile(new ByteArrayInputStream(tempFileContents.getBytes()), "resourceutils-test", ".txt"); - } - - @AfterClass(alwaysRun=true) - public void tearDown() throws Exception { - if (tempFile != null) tempFile.delete(); - } - - @Test - public void testWriteStreamToTempFile() throws Exception { - File tempFileLocal = Os.writeToTempFile(new ByteArrayInputStream("mycontents".getBytes()), "resourceutils-test", ".txt"); - try { - List<String> lines = Files.readLines(tempFileLocal, Charsets.UTF_8); - assertEquals(lines, ImmutableList.of("mycontents")); - } finally { - tempFileLocal.delete(); - } - } - - @Test - public void testPropertiesStreamToTempFile() throws Exception { - Properties props = new Properties(); - props.setProperty("mykey", "myval"); - File tempFileLocal = Os.writePropertiesToTempFile(props, "resourceutils-test", ".txt"); - FileInputStream fis = null; - try { - fis = new FileInputStream(tempFileLocal); - Properties props2 = new Properties(); - props2.load(fis); - assertEquals(props2.getProperty("mykey"), "myval"); - } finally { - Streams.closeQuietly(fis); - tempFileLocal.delete(); - } - } - - @Test - public void testGetResourceViaClasspathWithPrefix() throws Exception { - InputStream stream = utils.getResourceFromUrl("classpath://brooklyn/config/sample.properties"); - assertNotNull(stream); - } - - @Test - public void testGetResourceViaClasspathWithoutPrefix() throws Exception { - InputStream stream = utils.getResourceFromUrl("/brooklyn/config/sample.properties"); - assertNotNull(stream); - } - - @Test - public void testGetResourceViaFileWithPrefix() throws Exception { - // The correct format for file URLs is file:///<absolute path>. - // On UNIX file:///tmp. - // On Windows both file:/C:/temp and file:///C:/temp are supported by Java, - // while Windows itself supports the latter only. - // Note that file://C:/temp is *wrong*, because C: is interpreted as the host - InputStream stream = utils.getResourceFromUrl(tempFile.toURI().toURL().toString()); - assertEquals(Streams.readFullyString(stream), tempFileContents); - } - - @Test - public void testGetResourceViaFileWithoutPrefix() throws Exception { - InputStream stream = utils.getResourceFromUrl(tempFile.getAbsolutePath()); - assertEquals(Streams.readFullyString(stream), tempFileContents); - } - - @Test - public void testClassLoaderDir() throws Exception { - String d = utils.getClassLoaderDir(); - log.info("Found resource "+this+" in: "+d); - assertTrue(new File(d, "brooklyn/util/").exists()); - } - - @Test - public void testClassLoaderDirFromJar() throws Exception { - String d = utils.getClassLoaderDir("java/lang/Object.class"); - log.info("Found Object in: "+d); - assertTrue(d.toLowerCase().endsWith(".jar")); - } - - @Test - public void testClassLoaderDirFromJarWithSlash() throws Exception { - String d = utils.getClassLoaderDir("/java/lang/Object.class"); - log.info("Found Object in: "+d); - assertTrue(d.toLowerCase().endsWith(".jar")); - } - - @Test(expectedExceptions={NoSuchElementException.class}) - public void testClassLoaderDirNotFound() throws Exception { - String d = utils.getClassLoaderDir("/somewhere/not/found/XXX.xxx"); - // above should fail - log.warn("Uh oh found imaginary resource in: "+d); - } - - @Test(groups="Integration") - public void testGetResourceViaSftp() throws Exception { - InputStream stream = utils.getResourceFromUrl("sftp://localhost:"+tempFile.getAbsolutePath()); - assertEquals(Streams.readFullyString(stream), tempFileContents); - } - - @Test(groups="Integration") - public void testGetResourceViaSftpWithUsername() throws Exception { - String user = System.getProperty("user.name"); - InputStream stream = utils.getResourceFromUrl("sftp://"+user+"@localhost:"+tempFile.getAbsolutePath()); - assertEquals(Streams.readFullyString(stream), tempFileContents); - } - - @Test - public void testDataUrl() throws Exception { - assertEquals(utils.getResourceAsString("data:,hello"), "hello"); - assertEquals(utils.getResourceAsString("data:,hello%20world"), "hello world"); - // above is correct. below are not valid ... but we accept them anyway - assertEquals(utils.getResourceAsString("data:hello"), "hello"); - assertEquals(utils.getResourceAsString("data://hello"), "hello"); - assertEquals(utils.getResourceAsString("data:hello world"), "hello world"); - assertEquals(utils.getResourceAsString(Urls.asDataUrlBase64("hello world")), "hello world"); - - String longString = Identifiers.makeRandomId(256); - for (int a=32; a<128; a++) longString += (char)a; - assertEquals(utils.getResourceAsString(Urls.asDataUrlBase64(longString)), longString); - } - - @Test - public void testGetResources() { - Iterable<URL> manifests = ResourceUtils.create().getResources("META-INF/MANIFEST.MF"); - assertFalse(Iterables.isEmpty(manifests)); - } - -} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/699b3f65/core/src/test/java/brooklyn/util/config/ConfigBagTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/brooklyn/util/config/ConfigBagTest.java b/core/src/test/java/brooklyn/util/config/ConfigBagTest.java deleted file mode 100644 index 93cf6ed..0000000 --- a/core/src/test/java/brooklyn/util/config/ConfigBagTest.java +++ /dev/null @@ -1,191 +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 brooklyn.util.config; - -import static org.testng.Assert.assertEquals; - -import java.util.List; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.atomic.AtomicInteger; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.testng.Assert; -import org.testng.annotations.Test; - -import brooklyn.config.ConfigKey; -import brooklyn.entity.basic.ConfigKeys; -import brooklyn.util.collections.MutableList; -import brooklyn.util.collections.MutableMap; -import brooklyn.util.exceptions.Exceptions; -import brooklyn.util.time.Duration; - -public class ConfigBagTest { - - @SuppressWarnings("unused") - private static final Logger log = LoggerFactory.getLogger(ConfigBagTest.class); - - private static final ConfigKey<String> K1 = ConfigKeys.newStringConfigKey("k1"); - private static final ConfigKey<String> K2 = ConfigKeys.newStringConfigKey("k2"); - private static final ConfigKey<String> K3 = ConfigKeys.newStringConfigKey("k3"); - - @Test - public void testPutAndGet() { - ConfigBag bag = ConfigBag.newInstance(); - bag.put(K1, "v1"); - assertEquals(bag.get(K1), "v1"); - } - - @Test - public void testPutStringAndGet() { - ConfigBag bag = ConfigBag.newInstance(); - bag.putAsStringKey(K1.getName(), "v1"); - assertEquals(bag.get(K1), "v1"); - } - - @Test - public void testUnused() { - ConfigBag bag = ConfigBag.newInstance(); - bag.put(K1, "v1"); - bag.put(K2, "v2a"); - assertEquals(bag.get(K1), "v1"); - assertEquals(bag.getUnusedConfig().size(), 1); - assertEquals(bag.peek(K2), "v2a"); - assertEquals(bag.getUnusedConfig().size(), 1); - assertEquals(bag.get(K2), "v2a"); - Assert.assertTrue(bag.getUnusedConfig().isEmpty()); - } - - @Test - public void testOrder() { - ConfigBag bag = ConfigBag.newInstance(); - bag.put(K1, "v1"); - bag.put(K2, "v2"); - bag.put(K3, "v3"); - Assert.assertEquals(MutableList.copyOf(bag.getAllConfig().keySet()), MutableList.of(K1.getName(), K2.getName(), K3.getName())); - Assert.assertEquals(MutableList.copyOf(bag.getAllConfig().values()), MutableList.of("v1", "v2", "v3")); - } - - @Test - public void testCopyOverwriteAndGet() { - ConfigBag bag1 = ConfigBag.newInstance(); - bag1.put(K1, "v1"); - bag1.put(K2, "v2a"); - bag1.put(K3, "v3"); - assertEquals(bag1.get(K1), "v1"); - - ConfigBag bag2 = ConfigBag.newInstanceCopying(bag1).putAll(MutableMap.of(K2, "v2b")); - assertEquals(bag1.getUnusedConfig().size(), 2); - assertEquals(bag2.getUnusedConfig().size(), 2); - - assertEquals(bag2.get(K1), "v1"); - assertEquals(bag1.get(K2), "v2a"); - assertEquals(bag1.getUnusedConfig().size(), 1); - assertEquals(bag2.getUnusedConfig().size(), 2); - - assertEquals(bag2.get(K2), "v2b"); - assertEquals(bag2.getUnusedConfig().size(), 1); - - assertEquals(bag2.get(K3), "v3"); - assertEquals(bag2.getUnusedConfig().size(), 0); - assertEquals(bag1.getUnusedConfig().size(), 1); - } - - @Test - public void testCopyExtendingAndGet() { - ConfigBag bag1 = ConfigBag.newInstance(); - bag1.put(K1, "v1"); - bag1.put(K2, "v2a"); - bag1.put(K3, "v3"); - assertEquals(bag1.get(K1), "v1"); - - ConfigBag bag2 = ConfigBag.newInstanceExtending(bag1, null).putAll(MutableMap.of(K2, "v2b")); - assertEquals(bag1.getUnusedConfig().size(), 2); - assertEquals(bag2.getUnusedConfig().size(), 2, "unused are: "+bag2.getUnusedConfig()); - - assertEquals(bag2.get(K1), "v1"); - assertEquals(bag1.get(K2), "v2a"); - assertEquals(bag1.getUnusedConfig().size(), 1); - assertEquals(bag2.getUnusedConfig().size(), 2); - - assertEquals(bag2.get(K2), "v2b"); - assertEquals(bag2.getUnusedConfig().size(), 1); - - assertEquals(bag2.get(K3), "v3"); - assertEquals(bag2.getUnusedConfig().size(), 0); - // when extended, the difference is that parent is also marked - assertEquals(bag1.getUnusedConfig().size(), 0); - } - - @Test - public void testConcurrent() throws InterruptedException { - ConfigBag bag = ConfigBag.newInstance(); - bag.put(K1, "v1"); - bag.put(K2, "v2"); - bag.put(K3, "v3"); - runConcurrentTest(bag, 10, Duration.millis(50)); - } - - @Test(groups="Integration") - public void testConcurrentBig() throws InterruptedException { - ConfigBag bag = ConfigBag.newInstance(); - bag.put(K1, "v1"); - bag.put(K2, "v2"); - bag.put(K3, "v3"); - runConcurrentTest(bag, 20, Duration.seconds(5)); - } - - private void runConcurrentTest(final ConfigBag bag, int numThreads, Duration time) throws InterruptedException { - List<Thread> threads = MutableList.of(); - final Map<Thread,Exception> exceptions = new ConcurrentHashMap<Thread,Exception>(); - final AtomicInteger successes = new AtomicInteger(); - for (int i=0; i<numThreads; i++) { - Thread t = new Thread() { - @Override - public void run() { - try { - while (!interrupted()) { - if (Math.random()<0.9) - bag.put(ConfigKeys.newStringConfigKey("k"+((int)(10*Math.random()))), "v"+((int)(10*Math.random()))); - if (Math.random()<0.8) - bag.get(ConfigKeys.newStringConfigKey("k"+((int)(10*Math.random())))); - if (Math.random()<0.2) - bag.copy(bag); - if (Math.random()<0.6) - bag.remove(ConfigKeys.newStringConfigKey("k"+((int)(10*Math.random())))); - successes.incrementAndGet(); - } - } catch (Exception e) { - exceptions.put(Thread.currentThread(), e); - Exceptions.propagateIfFatal(e); - } - } - }; - t.setName("ConfigBagTest-concurrent-thread-"+i); - threads.add(t); - } - for (Thread t: threads) t.start(); - time.countdownTimer().waitForExpiry(); - for (Thread t: threads) t.interrupt(); - for (Thread t: threads) t.join(); - Assert.assertTrue(exceptions.isEmpty(), "Got "+exceptions.size()+"/"+numThreads+" exceptions ("+successes.get()+" successful): "+exceptions); - } - -} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/699b3f65/core/src/test/java/brooklyn/util/crypto/SecureKeysAndSignerTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/brooklyn/util/crypto/SecureKeysAndSignerTest.java b/core/src/test/java/brooklyn/util/crypto/SecureKeysAndSignerTest.java deleted file mode 100644 index 1bdb0a3..0000000 --- a/core/src/test/java/brooklyn/util/crypto/SecureKeysAndSignerTest.java +++ /dev/null @@ -1,166 +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 brooklyn.util.crypto; - -import java.io.File; -import java.io.FileInputStream; -import java.nio.charset.Charset; -import java.security.KeyPair; -import java.security.PublicKey; -import java.security.cert.CertificateException; -import java.security.cert.X509Certificate; - -import org.testng.Assert; -import org.testng.annotations.Test; - -import brooklyn.util.ResourceUtils; -import brooklyn.util.crypto.SecureKeys.PassphraseProblem; -import brooklyn.util.os.Os; - -import com.google.common.io.Files; - -public class SecureKeysAndSignerTest { - - // a bit slow, so marked as integration (but possibly due to leftover rebind-cleanup, benign failures writing to /tmp/xx) - @Test(groups="Integration") - public void testGenerateSignedKeys() throws Exception { - FluentKeySigner signer = new FluentKeySigner("the-root"). - validForYears(2). - selfsign(); - X509Certificate signerCert = signer.getAuthorityCertificate(); - - KeyPair aKey = SecureKeys.newKeyPair(); - X509Certificate aCert = signer.newCertificateFor("A", aKey); - - KeyPair bKey = SecureKeys.newKeyPair(); - X509Certificate bCert = signer.newCertificateFor("B", bKey); - - FluentKeySigner selfSigner1 = new FluentKeySigner("self1").selfsign(); - X509Certificate selfCert1 = selfSigner1.getAuthorityCertificate(); - - SecureKeys.getTrustManager(aCert).checkClientTrusted(new X509Certificate[] { aCert }, "RSA"); - SecureKeys.getTrustManager(signerCert).checkClientTrusted(new X509Certificate[] { signerCert }, "RSA"); - - try { - SecureKeys.getTrustManager(aCert).checkClientTrusted(new X509Certificate[] { bCert }, "RSA"); - Assert.fail("Trust manager for A should not accept B"); - } catch (CertificateException e) { /* expected */ } - -// SecureKeys.getTrustManager(signerCert).checkClientTrusted(new X509Certificate[] { aCert }, "RSA"); - // NB, the above failes; we have to convert to a canonical implementation, handled by the following - - Assert.assertTrue(SecureKeys.isCertificateAuthorizedBy(signerCert, signerCert)); - Assert.assertTrue(SecureKeys.isCertificateAuthorizedBy(aCert, signerCert)); - Assert.assertTrue(SecureKeys.isCertificateAuthorizedBy(bCert, signerCert)); - Assert.assertFalse(SecureKeys.isCertificateAuthorizedBy(signerCert, aCert)); - Assert.assertFalse(SecureKeys.isCertificateAuthorizedBy(bCert, aCert)); - - Assert.assertTrue(SecureKeys.isCertificateAuthorizedBy(selfCert1, selfCert1)); - Assert.assertFalse(SecureKeys.isCertificateAuthorizedBy(selfCert1, signerCert)); - } - - @Test - public void testInjectCertificateAuthority() throws Exception { - KeyPair caKey = SecureKeys.newKeyPair(); - X509Certificate caCert = new FluentKeySigner("the-root", caKey).selfsign().getAuthorityCertificate(); - - FluentKeySigner signer = new FluentKeySigner(caCert, caKey); - Assert.assertEquals("the-root", signer.getCommonName()); - - KeyPair aKey = SecureKeys.newKeyPair(); - X509Certificate aCert = signer.newCertificateFor("A", aKey); - - Assert.assertTrue(SecureKeys.isCertificateAuthorizedBy(aCert, caCert)); - } - - @Test - public void testReadRsaKey() throws Exception { - KeyPair key = SecureKeys.readPem(ResourceUtils.create(this).getResourceFromUrl("classpath://brooklyn/util/crypto/sample_rsa.pem"), null); - checkNonTrivial(key); - } - - @Test(expectedExceptions=IllegalStateException.class) - public void testReadRsaPublicKeyAsPemFails() throws Exception { - // should fail; see next test - SecureKeys.readPem(ResourceUtils.create(this).getResourceFromUrl("classpath://brooklyn/util/crypto/sample_rsa.pem.pub"), null); - } - - @Test - public void testReadRsaPublicKeyAsAuthKeysWorks() throws Exception { - PublicKey key = AuthorizedKeysParser.decodePublicKey( - ResourceUtils.create(this).getResourceAsString("classpath://brooklyn/util/crypto/sample_rsa.pem.pub")); - KeyPair fromPem = SecureKeys.readPem(ResourceUtils.create(this).getResourceFromUrl("classpath://brooklyn/util/crypto/sample_rsa.pem"), null); - Assert.assertEquals(key, fromPem.getPublic()); - } - - @Test - public void testEncodeDecodeRsaPublicKey() throws Exception { - String data = ResourceUtils.create(this).getResourceAsString("classpath://brooklyn/util/crypto/sample_rsa.pem.pub"); - PublicKey key = AuthorizedKeysParser.decodePublicKey(data); - String data2 = AuthorizedKeysParser.encodePublicKey(key); - Assert.assertTrue(data.contains(data2), "Expected to find '"+data2+"' in '"+data+"'"); - PublicKey key2 = AuthorizedKeysParser.decodePublicKey(data2); - Assert.assertEquals(key2, key); - } - - @Test - public void testEncodeDecodeDsaPublicKey() throws Exception { - String data = ResourceUtils.create(this).getResourceAsString("classpath://brooklyn/util/crypto/sample_dsa.pem.pub"); - PublicKey key = AuthorizedKeysParser.decodePublicKey(data); - String data2 = AuthorizedKeysParser.encodePublicKey(key); - Assert.assertTrue(data.contains(data2), "Expected to find '"+data2+"' in '"+data+"'"); - PublicKey key2 = AuthorizedKeysParser.decodePublicKey(data2); - Assert.assertEquals(key2, key); - } - - @Test - public void testReadDsaKey() throws Exception { - KeyPair key = SecureKeys.readPem(ResourceUtils.create(this).getResourceFromUrl("classpath://brooklyn/util/crypto/sample_dsa.pem"), null); - checkNonTrivial(key); - } - - @Test(expectedExceptions=Exception.class) - public void testCantReadRsaPassphraseKeyWithoutPassphrase() throws Exception { - KeyPair key = SecureKeys.readPem(ResourceUtils.create(this).getResourceFromUrl("classpath://brooklyn/util/crypto/sample_rsa_passphrase.pem"), null); - checkNonTrivial(key); - } - - @Test(expectedExceptions=PassphraseProblem.class) - public void testReadRsaPassphraseWithoutKeyFails() throws Exception { - SecureKeys.readPem(ResourceUtils.create(this).getResourceFromUrl("classpath://brooklyn/util/crypto/sample_rsa_passphrase.pem"), null); - } - - @Test - public void testReadRsaPassphraseKeyAndWriteWithoutPassphrase() throws Exception { - KeyPair key = SecureKeys.readPem(ResourceUtils.create(this).getResourceFromUrl("classpath://brooklyn/util/crypto/sample_rsa_passphrase.pem"), "passphrase"); - checkNonTrivial(key); - File f = Os.newTempFile(getClass(), "brooklyn-sample_rsa_passphrase_without_passphrase.pem"); - Files.write(SecureKeys.stringPem(key), f, Charset.defaultCharset()); - KeyPair key2 = SecureKeys.readPem(new FileInputStream(f), null); - checkNonTrivial(key2); - Assert.assertEquals(key2.getPrivate().getEncoded(), key.getPrivate().getEncoded()); - Assert.assertEquals(key2.getPublic().getEncoded(), key.getPublic().getEncoded()); - } - - private void checkNonTrivial(KeyPair key) { - Assert.assertNotEquals(key.getPrivate().getEncoded().length, 0); - Assert.assertNotEquals(key.getPublic().getEncoded().length, 0); - } - -} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/699b3f65/core/src/test/java/brooklyn/util/file/ArchiveBuilderTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/brooklyn/util/file/ArchiveBuilderTest.java b/core/src/test/java/brooklyn/util/file/ArchiveBuilderTest.java deleted file mode 100644 index 6469f5a..0000000 --- a/core/src/test/java/brooklyn/util/file/ArchiveBuilderTest.java +++ /dev/null @@ -1,193 +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 brooklyn.util.file; - -import static org.testng.Assert.assertEquals; -import static org.testng.Assert.assertFalse; -import static org.testng.Assert.assertTrue; - -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.util.Arrays; -import java.util.List; -import java.util.Set; -import java.util.zip.ZipEntry; -import java.util.zip.ZipInputStream; - -import javax.annotation.Nullable; - -import org.testng.annotations.BeforeClass; -import org.testng.annotations.Test; - -import brooklyn.util.collections.MutableSet; -import brooklyn.util.os.Os; -import brooklyn.util.text.Identifiers; - -import com.google.common.base.Charsets; -import com.google.common.base.Predicate; -import com.google.common.base.Predicates; -import com.google.common.collect.Iterables; -import com.google.common.collect.Lists; -import com.google.common.io.Files; - -/** - * Test the operation of the {@link ArchiveBuilder} class. - */ -@Test -public class ArchiveBuilderTest { - - private File parentDir, tmpDir, tmpDir2; - private Predicate<ZipEntry> isDirectory = new Predicate<ZipEntry>() { - @Override - public boolean apply(@Nullable ZipEntry input) { - return input.isDirectory(); - } - }; - - @BeforeClass - public void createTmpDirAndFiles() throws IOException { - parentDir = Os.newTempDir(getClass().getSimpleName()); - Os.deleteOnExitRecursively(parentDir); - tmpDir = new File(parentDir, Identifiers.makeRandomId(4)); - Os.mkdirs(tmpDir); - Files.write("abcdef", new File(tmpDir, "data01.txt"), Charsets.US_ASCII); - Files.write("123456", new File(tmpDir, "data02.txt"), Charsets.US_ASCII); - Files.write("qqqqqq", new File(tmpDir, "data03.txt"), Charsets.US_ASCII); - - tmpDir2 = new File(parentDir, Identifiers.makeRandomId(4)); - Os.mkdirs(tmpDir2); - Files.write("zzzzzz", new File(tmpDir2, "data04.txt"), Charsets.US_ASCII); - } - - @Test - public void testCreateZipFromDir() throws Exception { - File archive = ArchiveBuilder.zip().addDirContentsAt(tmpDir, ".").create(); - archive.deleteOnExit(); - - List<ZipEntry> entries = Lists.newArrayList(); - ZipInputStream input = new ZipInputStream(new FileInputStream(archive)); - ZipEntry entry = input.getNextEntry(); - while (entry != null) { - entries.add(entry); - entry = input.getNextEntry(); - } - assertEquals(entries.size(), 4); - Iterable<ZipEntry> directories = Iterables.filter(entries, isDirectory); - Iterable<ZipEntry> files = Iterables.filter(entries, Predicates.not(isDirectory)); - assertEquals(Iterables.size(directories), 1); - assertEquals(Iterables.size(files), 3); - String dirName = Iterables.getOnlyElement(directories).getName(); - assertEquals(dirName, "./"); - - Set<String> names = MutableSet.of(); - for (ZipEntry file : files) { - assertTrue(file.getName().startsWith(dirName)); - names.add(file.getName()); - } - assertTrue(names.contains("./data01.txt")); - assertFalse(names.contains("./data04.txt")); - input.close(); - } - - @Test - public void testCreateZipFromTwoDirs() throws Exception { - File archive = ArchiveBuilder.zip().addDirContentsAt(tmpDir, ".").addDirContentsAt(tmpDir2, ".").create(); - archive.deleteOnExit(); - - List<ZipEntry> entries = Lists.newArrayList(); - ZipInputStream input = new ZipInputStream(new FileInputStream(archive)); - ZipEntry entry = input.getNextEntry(); - while (entry != null) { - entries.add(entry); - entry = input.getNextEntry(); - } - assertEquals(entries.size(), 5); - Iterable<ZipEntry> directories = Iterables.filter(entries, isDirectory); - Iterable<ZipEntry> files = Iterables.filter(entries, Predicates.not(isDirectory)); - assertEquals(Iterables.size(directories), 1); - assertEquals(Iterables.size(files), 4); - String dirName = Iterables.getOnlyElement(directories).getName(); - assertEquals(dirName, "./"); - - Set<String> names = MutableSet.of(); - for (ZipEntry file : files) { - assertTrue(file.getName().startsWith(dirName)); - names.add(file.getName()); - } - assertTrue(names.contains("./data01.txt")); - assertTrue(names.contains("./data04.txt")); - input.close(); - } - @Test - public void testCreateZipFromFiles() throws Exception { - ArchiveBuilder builder = ArchiveBuilder.zip(); - for (String fileName : Arrays.asList("data01.txt", "data02.txt", "data03.txt")) { - builder.addAt(new File(tmpDir, fileName), "."); - } - File archive = builder.create(); - archive.deleteOnExit(); - - List<ZipEntry> entries = Lists.newArrayList(); - ZipInputStream input = new ZipInputStream(new FileInputStream(archive)); - ZipEntry entry = input.getNextEntry(); - while (entry != null) { - entries.add(entry); - entry = input.getNextEntry(); - } - assertEquals(entries.size(), 3); - Iterable<ZipEntry> directories = Iterables.filter(entries, isDirectory); - Iterable<ZipEntry> files = Iterables.filter(entries, Predicates.not(isDirectory)); - assertTrue(Iterables.isEmpty(directories)); - assertEquals(Iterables.size(files), 3); - for (ZipEntry file : files) { - assertTrue(file.getName().startsWith(Os.mergePathsUnix(".", "data"))); - } - input.close(); - } - - @Test - public void testCreateZipFromFilesWithBaseDir() throws Exception { - ArchiveBuilder builder = ArchiveBuilder.zip(); - String baseDir = tmpDir.getName(); - for (String fileName : Arrays.asList("data01.txt", "data02.txt", "data03.txt")) { - builder.addFromLocalBaseDir(parentDir, Os.mergePaths(baseDir, fileName)); - } - File archive = builder.create(); - archive.deleteOnExit(); - - List<ZipEntry> entries = Lists.newArrayList(); - ZipInputStream input = new ZipInputStream(new FileInputStream(archive)); - ZipEntry entry = input.getNextEntry(); - while (entry != null) { - entries.add(entry); - entry = input.getNextEntry(); - } - assertEquals(entries.size(), 3); - Iterable<ZipEntry> directories = Iterables.filter(entries, isDirectory); - Iterable<ZipEntry> files = Iterables.filter(entries, Predicates.not(isDirectory)); - assertTrue(Iterables.isEmpty(directories)); - assertEquals(Iterables.size(files), 3); - for (ZipEntry file : files) { - assertTrue(file.getName().startsWith(Os.mergePathsUnix(".", baseDir))); - } - input.close(); - } - -} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/699b3f65/core/src/test/java/brooklyn/util/file/ArchiveUtilsTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/brooklyn/util/file/ArchiveUtilsTest.java b/core/src/test/java/brooklyn/util/file/ArchiveUtilsTest.java deleted file mode 100644 index 6715444..0000000 --- a/core/src/test/java/brooklyn/util/file/ArchiveUtilsTest.java +++ /dev/null @@ -1,135 +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 brooklyn.util.file; - -import static org.testng.Assert.assertEquals; -import static org.testng.Assert.assertFalse; -import static org.testng.Assert.assertTrue; - -import java.io.File; -import java.util.Map; - -import org.testng.annotations.AfterClass; -import org.testng.annotations.AfterMethod; -import org.testng.annotations.BeforeClass; -import org.testng.annotations.BeforeMethod; -import org.testng.annotations.Test; - -import brooklyn.entity.BrooklynAppUnitTestSupport; -import org.apache.brooklyn.location.basic.SshMachineLocation; -import brooklyn.util.ResourceUtils; -import brooklyn.util.os.Os; - -import com.google.api.client.repackaged.com.google.common.base.Joiner; -import com.google.common.base.Charsets; -import com.google.common.collect.ImmutableMap; -import com.google.common.io.Files; - -// Test are integration, because relies on ssh/scp via SshMachineLocation -public class ArchiveUtilsTest extends BrooklynAppUnitTestSupport { - - private SshMachineLocation machine; - private ResourceUtils resourceUtils; - - private Map<String, String> archiveContents = ImmutableMap.of("a.txt", "mya"); - private File destDir; - private File origZip; - private File origJar; - - @BeforeClass(alwaysRun=true) - public void setUpClass() throws Exception { - origZip = newZip(archiveContents); - origJar = Os.newTempFile(ArchiveUtilsTest.class, ".jar"); - Files.copy(origZip, origJar); - } - - @AfterClass(alwaysRun=true) - public void tearDownClass() throws Exception { - if (origZip != null) origZip.delete(); - if (origJar != null) origJar.delete(); - } - - @BeforeMethod(alwaysRun=true) - @Override - public void setUp() throws Exception { - super.setUp(); - machine = app.newLocalhostProvisioningLocation().obtain(); - resourceUtils = ResourceUtils.create(ArchiveUtilsTest.class); - destDir = Os.newTempDir(getClass().getSimpleName()); - } - - @AfterMethod(alwaysRun=true) - @Override - public void tearDown() throws Exception { - super.tearDown(); - if (destDir != null) Os.deleteRecursively(destDir); - } - - @Test(groups="Integration") - public void testDeployZipWithNoOptionalArgsSupplied() throws Exception { - boolean result = ArchiveUtils.deploy(resourceUtils, ImmutableMap.<String, Object>of(), origZip.getAbsolutePath(), machine, destDir.getAbsolutePath(), true, null, null); - assertTrue(result); - assertFilesEqual(new File(destDir, origZip.getName()), origZip); - assertSubFilesEqual(destDir, archiveContents); - } - - @Test(groups="Integration") - public void testDeployZipDeletingArchiveAfterUnpack() throws Exception { - boolean result = ArchiveUtils.deploy(resourceUtils, ImmutableMap.<String, Object>of(), origZip.getAbsolutePath(), machine, destDir.getAbsolutePath(), false, null, null); - assertTrue(result); - assertFalse(new File(destDir, origZip.getName()).exists()); - assertSubFilesEqual(destDir, archiveContents); - } - - @Test(groups="Integration") - public void testDeployJarNotUnpacked() throws Exception { - ArchiveUtils.deploy(origJar.getAbsolutePath(), machine, destDir.getAbsolutePath()); - assertFilesEqual(new File(destDir, origJar.getName()), origJar); - } - - @Test(groups="Integration") - public void testDeployExplicitDestFile() throws Exception { - String destFile = "custom-destFile.jar"; - ArchiveUtils.deploy(origJar.getAbsolutePath(), machine, destDir.getAbsolutePath(), destFile); - assertFilesEqual(new File(destDir, destFile), origJar); - } - - private File newZip(Map<String, String> files) throws Exception { - File parentDir = Os.newTempDir(getClass().getSimpleName()+"-archive"); - for (Map.Entry<String, String> entry : files.entrySet()) { - File subFile = new File(Os.mergePaths(parentDir.getAbsolutePath(), entry.getKey())); - subFile.getParentFile().mkdirs(); - Files.write(entry.getValue(), subFile, Charsets.UTF_8); - } - return ArchiveBuilder.zip().addDirContentsAt(parentDir, ".").create(); - } - - private void assertFilesEqual(File f1, File f2) throws Exception { - byte[] bytes1 = Files.asByteSource(f1).read(); - byte[] bytes2 = Files.asByteSource(f1).read(); - assertEquals(bytes1, bytes2, "f1="+f1+"; f2="+f2); - } - - private void assertSubFilesEqual(File parentDir, Map<String, String> files) throws Exception { - for (Map.Entry<String, String> entry : archiveContents.entrySet()) { - File subFile = new File(Os.mergePaths(parentDir.getAbsolutePath(), entry.getKey())); - assertEquals(Joiner.on("\n").join(Files.readLines(subFile, Charsets.UTF_8)), entry.getValue()); - } - } -} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/699b3f65/core/src/test/java/brooklyn/util/flags/MethodCoercionsTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/brooklyn/util/flags/MethodCoercionsTest.java b/core/src/test/java/brooklyn/util/flags/MethodCoercionsTest.java deleted file mode 100644 index 4d06ca4..0000000 --- a/core/src/test/java/brooklyn/util/flags/MethodCoercionsTest.java +++ /dev/null @@ -1,146 +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 brooklyn.util.flags; - -import brooklyn.util.exceptions.Exceptions; -import brooklyn.util.guava.Maybe; -import com.google.common.base.Predicate; -import com.google.common.collect.ImmutableList; -import org.testng.annotations.BeforeClass; -import org.testng.annotations.Test; - -import java.lang.reflect.Method; -import java.util.List; - -import static org.testng.Assert.*; - -public class MethodCoercionsTest { - - private Method singleParameterMethod; - private Method multiParameterMethod; - private Method singleCollectionParameterMethod; - - @BeforeClass - public void testFixtureSetUp() { - try { - singleParameterMethod = TestClass.class.getMethod("singleParameterMethod", int.class); - multiParameterMethod = TestClass.class.getMethod("multiParameterMethod", boolean.class, int.class); - singleCollectionParameterMethod = TestClass.class.getMethod("singleCollectionParameterMethod", List.class); - } catch (NoSuchMethodException e) { - throw Exceptions.propagate(e); - } - } - - @Test - public void testMatchSingleParameterMethod() throws Exception { - Predicate<Method> predicate = MethodCoercions.matchSingleParameterMethod("singleParameterMethod", "42"); - assertTrue(predicate.apply(singleParameterMethod)); - assertFalse(predicate.apply(multiParameterMethod)); - assertFalse(predicate.apply(singleCollectionParameterMethod)); - } - - @Test - public void testTryFindAndInvokeSingleParameterMethod() throws Exception { - TestClass instance = new TestClass(); - Maybe<?> maybe = MethodCoercions.tryFindAndInvokeSingleParameterMethod(instance, "singleParameterMethod", "42"); - assertTrue(maybe.isPresent()); - assertTrue(instance.wasSingleParameterMethodCalled()); - } - - @Test - public void testMatchMultiParameterMethod() throws Exception { - Predicate<Method> predicate = MethodCoercions.matchMultiParameterMethod("multiParameterMethod", ImmutableList.of("true", "42")); - assertFalse(predicate.apply(singleParameterMethod)); - assertTrue(predicate.apply(multiParameterMethod)); - assertFalse(predicate.apply(singleCollectionParameterMethod)); - } - - @Test - public void testTryFindAndInvokeMultiParameterMethod() throws Exception { - TestClass instance = new TestClass(); - Maybe<?> maybe = MethodCoercions.tryFindAndInvokeMultiParameterMethod(instance, "multiParameterMethod", ImmutableList.of("true", "42")); - assertTrue(maybe.isPresent()); - assertTrue(instance.wasMultiParameterMethodCalled()); - } - - @Test - public void testTryFindAndInvokeBestMatchingMethod() throws Exception { - TestClass instance = new TestClass(); - Maybe<?> maybe = MethodCoercions.tryFindAndInvokeBestMatchingMethod(instance, "singleParameterMethod", "42"); - assertTrue(maybe.isPresent()); - assertTrue(instance.wasSingleParameterMethodCalled()); - - instance = new TestClass(); - maybe = MethodCoercions.tryFindAndInvokeBestMatchingMethod(instance, "multiParameterMethod", ImmutableList.of("true", "42")); - assertTrue(maybe.isPresent()); - assertTrue(instance.wasMultiParameterMethodCalled()); - - instance = new TestClass(); - maybe = MethodCoercions.tryFindAndInvokeBestMatchingMethod(instance, "singleCollectionParameterMethod", ImmutableList.of("fred", "joe")); - assertTrue(maybe.isPresent()); - assertTrue(instance.wasSingleCollectionParameterMethodCalled()); - } -/* - @Test - public void testMatchSingleCollectionParameterMethod() throws Exception { - Predicate<Method> predicate = MethodCoercions.matchSingleCollectionParameterMethod("singleCollectionParameterMethod", ImmutableList.of("42")); - assertFalse(predicate.apply(singleParameterMethod)); - assertFalse(predicate.apply(multiParameterMethod)); - assertTrue(predicate.apply(singleCollectionParameterMethod)); - } - - @Test - public void testTryFindAndInvokeSingleCollectionParameterMethod() throws Exception { - TestClass instance = new TestClass(); - Maybe<?> maybe = MethodCoercions.tryFindAndInvokeSingleCollectionParameterMethod(instance, "singleCollectionParameterMethod", ImmutableList.of("42")); - assertTrue(maybe.isPresent()); - assertTrue(instance.wasSingleCollectionParameterMethodCalled()); - } -*/ - public static class TestClass { - - private boolean singleParameterMethodCalled; - private boolean multiParameterMethodCalled; - private boolean singleCollectionParameterMethodCalled; - - public void singleParameterMethod(int parameter) { - singleParameterMethodCalled = true; - } - - public void multiParameterMethod(boolean parameter1, int parameter2) { - multiParameterMethodCalled = true; - } - - public void singleCollectionParameterMethod(List<String> parameter) { - singleCollectionParameterMethodCalled = true; - } - - public boolean wasSingleParameterMethodCalled() { - return singleParameterMethodCalled; - } - - public boolean wasMultiParameterMethodCalled() { - return multiParameterMethodCalled; - } - - public boolean wasSingleCollectionParameterMethodCalled() { - return singleCollectionParameterMethodCalled; - } - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/699b3f65/core/src/test/java/brooklyn/util/http/BetterMockWebServer.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/brooklyn/util/http/BetterMockWebServer.java b/core/src/test/java/brooklyn/util/http/BetterMockWebServer.java deleted file mode 100644 index fb76903..0000000 --- a/core/src/test/java/brooklyn/util/http/BetterMockWebServer.java +++ /dev/null @@ -1,138 +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 brooklyn.util.http; - -import java.io.IOException; -import java.net.MalformedURLException; -import java.net.Proxy; -import java.net.URL; - -import javax.net.ssl.SSLSocketFactory; - -import com.google.common.base.Throwables; -import com.google.mockwebserver.Dispatcher; -import com.google.mockwebserver.MockResponse; -import com.google.mockwebserver.MockWebServer; -import com.google.mockwebserver.RecordedRequest; - -/** like MockWebServer (and delegating) but: - * <li> allows subclassing - * <li> easy way to create instance which returns localhost for {@link #getHostName()} - * (since otherwise you can get failures on networks which misconfigure hostname) - * */ -public class BetterMockWebServer { - - final MockWebServer delegate = new MockWebServer(); - String hostname = null; - boolean isHttps = false; - - public static BetterMockWebServer newInstanceLocalhost() { - return new BetterMockWebServer().setHostName("localhost"); - } - - /** use {@link #newInstanceLocalhost()} or subclass */ - protected BetterMockWebServer() {} - - public BetterMockWebServer setHostName(String hostname) { - this.hostname = hostname; - return this; - } - - - // --- delegate methods (unchanged) - - public void enqueue(MockResponse response) { - delegate.enqueue(response); - } - - public boolean equals(Object obj) { - return delegate.equals(obj); - } - - public String getCookieDomain() { - return delegate.getCookieDomain(); - } - - public String getHostName() { - if (hostname!=null) return hostname; - return delegate.getHostName(); - } - - public int getPort() { - return delegate.getPort(); - } - - public int getRequestCount() { - return delegate.getRequestCount(); - } - - public URL getUrl(String path) { - try { - return isHttps - ? new URL("https://" + getHostName() + ":" + getPort() + path) - : new URL("http://" + getHostName() + ":" + getPort() + path); - } catch (MalformedURLException e) { - throw Throwables.propagate(e); - } - } - - public int hashCode() { - return delegate.hashCode(); - } - - public void play() throws IOException { - delegate.play(); - } - - public void play(int port) throws IOException { - delegate.play(port); - } - - public void setBodyLimit(int maxBodyLength) { - delegate.setBodyLimit(maxBodyLength); - } - - public void setDispatcher(Dispatcher dispatcher) { - delegate.setDispatcher(dispatcher); - } - - public void shutdown() throws IOException { - delegate.shutdown(); - } - - public RecordedRequest takeRequest() throws InterruptedException { - return delegate.takeRequest(); - } - - public Proxy toProxyAddress() { - return delegate.toProxyAddress(); - } - - public String toString() { - return delegate.toString(); - } - - public void useHttps(SSLSocketFactory sslSocketFactory, boolean tunnelProxy) { - isHttps = true; - delegate.useHttps(sslSocketFactory, tunnelProxy); - } - - - -} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/699b3f65/core/src/test/java/brooklyn/util/http/HttpToolIntegrationTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/brooklyn/util/http/HttpToolIntegrationTest.java b/core/src/test/java/brooklyn/util/http/HttpToolIntegrationTest.java deleted file mode 100644 index dc9fc31..0000000 --- a/core/src/test/java/brooklyn/util/http/HttpToolIntegrationTest.java +++ /dev/null @@ -1,98 +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 brooklyn.util.http; - -import static org.testng.Assert.assertTrue; - -import java.net.URI; - -import org.apache.http.client.HttpClient; -import org.testng.annotations.AfterMethod; -import org.testng.annotations.BeforeMethod; -import org.testng.annotations.Test; - -import org.apache.brooklyn.location.basic.PortRanges; -import brooklyn.test.HttpService; - -import com.google.common.collect.ImmutableMap; - -public class HttpToolIntegrationTest { - - // TODO Expand test coverage for credentials etc - - private HttpService httpService; - private HttpService httpsService; - - @BeforeMethod(alwaysRun=true) - public void setUp() throws Exception { - httpService = new HttpService(PortRanges.fromString("9000+"), false).start(); - httpsService = new HttpService(PortRanges.fromString("9000+"), true).start(); - } - - @AfterMethod(alwaysRun=true) - public void tearDown() throws Exception { - if (httpService != null) httpService.shutdown(); - if (httpsService != null) httpsService.shutdown(); - } - - @Test(groups = {"Integration"}) - public void testHttpGet() throws Exception { - URI baseUri = new URI(httpService.getUrl()); - - HttpClient client = HttpTool.httpClientBuilder().build(); - HttpToolResponse result = HttpTool.httpGet(client, baseUri, ImmutableMap.<String,String>of()); - assertTrue(new String(result.getContent()).contains("Hello, World"), "val="+new String(result.getContent())); - } - - @Test(groups = {"Integration"}) - public void testHttpRedirect() throws Exception { - URI baseUri = new URI(httpService.getUrl() + "hello/redirectAbsolute"); - - HttpClient client = HttpTool.httpClientBuilder().laxRedirect(true).build(); - HttpToolResponse result = HttpTool.httpGet(client, baseUri, ImmutableMap.<String,String>of()); - assertTrue(new String(result.getContent()).contains("Hello, World"), "val="+new String(result.getContent())); - } - - @Test(groups = {"Integration"}) - public void testHttpPost() throws Exception { - URI baseUri = new URI(httpService.getUrl()); - - HttpClient client = HttpTool.httpClientBuilder().build(); - HttpToolResponse result = HttpTool.httpPost(client, baseUri, ImmutableMap.<String,String>of(), new byte[0]); - assertTrue(new String(result.getContent()).contains("Hello, World"), "val="+new String(result.getContent())); - } - - @Test(groups = {"Integration"}) - public void testHttpsGetWithTrustAll() throws Exception { - URI baseUri = new URI(httpsService.getUrl()); - - HttpClient client = HttpTool.httpClientBuilder().https(true).trustAll().build(); - HttpToolResponse result = HttpTool.httpGet(client, baseUri, ImmutableMap.<String,String>of()); - assertTrue(new String(result.getContent()).contains("Hello, World"), "val="+new String(result.getContent())); - } - - @Test(groups = {"Integration"}) - public void testHttpsPostWithTrustSelfSigned() throws Exception { - URI baseUri = new URI(httpsService.getUrl()); - - HttpClient client = HttpTool.httpClientBuilder().https(true).trustSelfSigned().build(); - HttpToolResponse result = HttpTool.httpPost(client, baseUri, ImmutableMap.<String,String>of(), new byte[0]); - assertTrue(new String(result.getContent()).contains("Hello, World"), "val="+new String(result.getContent())); - } -} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/699b3f65/core/src/test/java/brooklyn/util/internal/FlagUtilsTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/brooklyn/util/internal/FlagUtilsTest.java b/core/src/test/java/brooklyn/util/internal/FlagUtilsTest.java deleted file mode 100644 index ed98dba..0000000 --- a/core/src/test/java/brooklyn/util/internal/FlagUtilsTest.java +++ /dev/null @@ -1,314 +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 brooklyn.util.internal; - -import static org.testng.Assert.assertEquals; -import static org.testng.Assert.assertFalse; -import static org.testng.Assert.assertTrue; - -import java.lang.reflect.Field; -import java.net.InetAddress; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import org.apache.brooklyn.api.entity.trait.Configurable; -import org.apache.brooklyn.api.management.Task; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.testng.annotations.Test; - -import brooklyn.config.ConfigKey; -import brooklyn.config.ConfigKey.HasConfigKey; -import brooklyn.entity.basic.ConfigKeys; -import brooklyn.event.basic.BasicConfigKey; -import brooklyn.util.collections.MutableMap; -import brooklyn.util.config.ConfigBag; -import brooklyn.util.flags.FlagUtils; -import brooklyn.util.flags.SetFromFlag; - -import com.google.common.base.Function; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.ImmutableSet; -import com.google.common.collect.Iterables; - -public class FlagUtilsTest { - - public static final Logger log = LoggerFactory.getLogger(FlagUtilsTest.class); - - @Test - public void testGetAllFields() { - log.info("types {}", FlagUtils.getAllAssignableTypes(Baz.class)); - assertEquals(FlagUtils.getAllAssignableTypes(Baz.class), ImmutableList.of(Baz.class, Foo.class, Bar.class)); - List<Field> fs = FlagUtils.getAllFields(Baz.class); - for (Field f : fs) { - log.info("field {} {}", f.getName(), f); - } - List<String> fsn = ImmutableList.copyOf(Iterables.transform(fs, new Function<Field, String>() { - @Override public String apply(Field f) { - return f.getName(); - }})); - assertTrue(fsn.indexOf("A") >= 0); - assertTrue(fsn.indexOf("w") > fsn.indexOf("A")); - assertTrue(fsn.indexOf("x") > fsn.indexOf("A") ); - assertTrue(fsn.indexOf("yNotY") > fsn.indexOf("A")); - assertTrue(fsn.indexOf("Z") > fsn.indexOf("yNotY") ); - } - - @Test - public void testSetFieldsFromFlags() { - Foo f = new Foo(); - Map<?,?> m = MutableMap.of("w", 3, "x", 1, "y", 7, "z", 9); - Map<?, ?> unused = FlagUtils.setFieldsFromFlags(m, f); - assertEquals(f.w, 3); - assertEquals(f.x, 1); - assertEquals(f.yNotY, 7); - assertEquals(unused, ImmutableMap.of("z", 9)); - Map<?,?> m2 = FlagUtils.getFieldsWithValues(f); - m.remove("z"); - assertEquals(m2, m); - } - - @Test - public void testCollectionCoercionOnSetFromFlags() { - WithSpecialFieldTypes s = new WithSpecialFieldTypes(); - Map<?,?> m = ImmutableMap.of("set", ImmutableSet.of(1)); - FlagUtils.setFieldsFromFlags(m, s); - assertEquals(s.set, ImmutableSet.of(1)); - } - - @Test - public void testInetAddressCoercionOnSetFromFlags() { - WithSpecialFieldTypes s = new WithSpecialFieldTypes(); - Map<?,?> m = ImmutableMap.of("inet", "127.0.0.1"); - FlagUtils.setFieldsFromFlags(m, s); - assertEquals(s.inet.getHostAddress(), "127.0.0.1"); - } - - @Test - public void testNonImmutableField() { - Foo f = new Foo(); - FlagUtils.setFieldsFromFlags(ImmutableMap.of("w", 8), f); - assertEquals(f.w, 8); - FlagUtils.setFieldsFromFlags(ImmutableMap.of("w", 9), f); - assertEquals(f.w, 9); - } - - @Test - public void testImmutableIntField() { - Foo f = new Foo(); - FlagUtils.setFieldsFromFlags(ImmutableMap.of("x", 8), f); - assertEquals(f.x, 8); - boolean succeededWhenShouldntHave = false; - try { - FlagUtils.setFieldsFromFlags(ImmutableMap.of("x", 9), f); - succeededWhenShouldntHave = true; - } catch (IllegalStateException e) { - //expected - } - assertFalse(succeededWhenShouldntHave); - assertEquals(f.x, 8); - } - - @Test - public void testImmutableObjectField() { - WithImmutableNonNullableObject o = new WithImmutableNonNullableObject(); - FlagUtils.setFieldsFromFlags(ImmutableMap.of("a", "a", "b", "b"), o); - assertEquals(o.a, "a"); - assertEquals(o.b, "b"); - - FlagUtils.setFieldsFromFlags(ImmutableMap.of("a", "a2"), o); - assertEquals(o.a, "a2"); - - boolean succeededWhenShouldntHave = false; - try { - FlagUtils.setFieldsFromFlags(ImmutableMap.of("b", "b2"), o); - succeededWhenShouldntHave = true; - } catch (IllegalStateException e) { - //expected - } - assertFalse(succeededWhenShouldntHave); - assertEquals(o.b, "b"); - } - - @Test - public void testNonNullable() { - WithImmutableNonNullableObject o = new WithImmutableNonNullableObject(); - //allowed - FlagUtils.setFieldsFromFlags(MutableMap.of("a", null), o); - assertEquals(o.a, null); - assertEquals(o.b, null); - //not allowed - boolean succeededWhenShouldntHave = false; - try { - FlagUtils.setFieldsFromFlags(MutableMap.of("b", null), o); - succeededWhenShouldntHave = true; - } catch (IllegalArgumentException e) { - //expected - } - assertFalse(succeededWhenShouldntHave); - assertEquals(o.b, null); - } - - @Test - public void testGetAnnotatedFields() throws Exception { - Map<Field, SetFromFlag> fm = FlagUtils.getAnnotatedFields(WithImmutableNonNullableObject.class); - assertEquals(fm.keySet().size(), 2); - assertTrue(fm.get(WithImmutableNonNullableObject.class.getDeclaredField("b")).immutable()); - } - - @Test - public void testCheckRequired() { - WithImmutableNonNullableObject f = new WithImmutableNonNullableObject(); - FlagUtils.setFieldsFromFlags(ImmutableMap.of("a", "a is a"), f); - assertEquals(f.a, "a is a"); - assertEquals(f.b, null); - int exceptions = 0; - try { - FlagUtils.checkRequiredFields(f); - } catch (IllegalStateException e) { - exceptions++; - } - assertEquals(exceptions, 1); - } - - @Test - public void testSetConfigKeys() { - FooCK f = new FooCK(); - Map<?,?> unused = FlagUtils.setFieldsFromFlags(ImmutableMap.of("f1", 9, "ck1", "do-set", "ck2", "dont-set", "c3", "do-set"), f); - assertEquals(f.bag.get(FooCK.CK1), "do-set"); - assertEquals(f.bag.get(FooCK.CK3), "do-set"); - assertEquals(f.f1, 9); - assertEquals(f.bag.containsKey(FooCK.CK2), false); - assertEquals(unused, ImmutableMap.of("ck2", "dont-set")); - } - - @Test - public void testSetAllConfigKeys() { - FooCK f = new FooCK(); - Map<?,?> unused = FlagUtils.setAllConfigKeys(ImmutableMap.of("f1", 9, "ck1", "do-set", "ck2", "do-set-2", "c3", "do-set"), f, true); - assertEquals(f.bag.get(FooCK.CK1), "do-set"); - assertEquals(f.bag.get(FooCK.CK3), "do-set"); - assertEquals(f.bag.containsKey(FooCK.CK2), true); - assertEquals(f.bag.get(FooCK.CK2), "do-set-2"); - assertEquals(unused, ImmutableMap.of("f1", 9)); - } - - @Test - public void testSetFromConfigKeys() { - FooCK f = new FooCK(); - Map<?, ?> unused = FlagUtils.setFieldsFromFlags(ImmutableMap.of(new BasicConfigKey<Integer>(Integer.class, "f1"), 9, "ck1", "do-set", "ck2", "dont-set"), f); - assertEquals(f.bag.get(FooCK.CK1), "do-set"); - assertEquals(f.f1, 9); - assertEquals(f.bag.containsKey(FooCK.CK2), false); - assertEquals(unused, ImmutableMap.of("ck2", "dont-set")); - } - - public static class Foo { - @SetFromFlag - int w; - - @SetFromFlag(immutable=true) - private int x; - - @SetFromFlag("y") - public int yNotY; - } - - public static interface Bar { - static final String Z = "myzval"; - } - - public static class Baz extends Foo implements Bar { - @SuppressWarnings("unused") //inspected by reflection - private static int A; - } - - public static class WithImmutableNonNullableObject { - @SetFromFlag - Object a; - @SetFromFlag(immutable=true, nullable=false) - public Object b; - } - - public static class WithSpecialFieldTypes { - @SetFromFlag Set<?> set; - @SetFromFlag InetAddress inet; - } - - public static class FooCK implements Configurable { - @SetFromFlag - public static ConfigKey<String> CK1 = ConfigKeys.newStringConfigKey("ck1"); - - public static ConfigKey<String> CK2 = ConfigKeys.newStringConfigKey("ck2"); - - @SetFromFlag("c3") - public static ConfigKey<String> CK3 = ConfigKeys.newStringConfigKey("ck3"); - - @SetFromFlag - int f1; - - ConfigBag bag = new ConfigBag(); - BasicConfigurationSupport configSupport = new BasicConfigurationSupport(); - - @Override - public ConfigurationSupport config() { - return configSupport; - } - - public <T> T setConfig(ConfigKey<T> key, T val) { - return config().set(key, val); - } - - private class BasicConfigurationSupport implements ConfigurationSupport { - @Override - public <T> T get(ConfigKey<T> key) { - return bag.get(key); - } - - @Override - public <T> T get(HasConfigKey<T> key) { - return get(key.getConfigKey()); - } - - @Override - public <T> T set(ConfigKey<T> key, T val) { - T old = bag.get(key); - bag.configure(key, val); - return old; - } - - @Override - public <T> T set(HasConfigKey<T> key, T val) { - return set(key.getConfigKey(), val); - } - - @Override - public <T> T set(ConfigKey<T> key, Task<T> val) { - throw new UnsupportedOperationException(); - } - - @Override - public <T> T set(HasConfigKey<T> key, Task<T> val) { - return set(key.getConfigKey(), val); - } - } - } -} \ No newline at end of file
