http://git-wip-us.apache.org/repos/asf/jclouds/blob/8cb2cb44/apis/chef/src/test/java/org/jclouds/chef/functions/ParseSearchDataBagItemFromJsonTest.java ---------------------------------------------------------------------- diff --git a/apis/chef/src/test/java/org/jclouds/chef/functions/ParseSearchDataBagItemFromJsonTest.java b/apis/chef/src/test/java/org/jclouds/chef/functions/ParseSearchDataBagItemFromJsonTest.java deleted file mode 100644 index 3daf3a8..0000000 --- a/apis/chef/src/test/java/org/jclouds/chef/functions/ParseSearchDataBagItemFromJsonTest.java +++ /dev/null @@ -1,62 +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.jclouds.chef.functions; - -import static org.testng.Assert.assertEquals; - -import java.io.IOException; - -import org.jclouds.chef.ChefApiMetadata; -import org.jclouds.chef.config.ChefParserModule; -import org.jclouds.chef.domain.DatabagItem; -import org.jclouds.chef.domain.SearchResult; -import org.jclouds.http.HttpResponse; -import org.jclouds.json.config.GsonModule; -import org.jclouds.rest.annotations.ApiVersion; -import org.testng.annotations.BeforeTest; -import org.testng.annotations.Test; - -import com.google.inject.AbstractModule; -import com.google.inject.Guice; -import com.google.inject.Injector; - -@Test(groups = { "unit" }) -public class ParseSearchDataBagItemFromJsonTest { - private ParseSearchDatabagFromJson handler; - - @BeforeTest - protected void setUpInjector() throws IOException { - Injector injector = Guice.createInjector(new AbstractModule() { - @Override - protected void configure() { - bind(String.class).annotatedWith(ApiVersion.class).toInstance(ChefApiMetadata.DEFAULT_API_VERSION); - } - }, new ChefParserModule(), new GsonModule()); - - handler = injector.getInstance(ParseSearchDatabagFromJson.class); - } - - public void test1() { - String itemJson = "{\"my_key\":\"my_data\"}"; - String searchJson = "{\"rows\":[{\"raw_data\": {\"id\":\"item1\",\"my_key\":\"my_data\"}}]}"; - DatabagItem item = new DatabagItem("item1", itemJson); - SearchResult<DatabagItem> result = handler.apply(HttpResponse.builder().statusCode(200).message("ok") - .payload(searchJson).build()); - assertEquals(result.size(), 1); - assertEquals(result.iterator().next(), item); - } -}
http://git-wip-us.apache.org/repos/asf/jclouds/blob/8cb2cb44/apis/chef/src/test/java/org/jclouds/chef/functions/ParseUploadSandboxFromJsonTest.java ---------------------------------------------------------------------- diff --git a/apis/chef/src/test/java/org/jclouds/chef/functions/ParseUploadSandboxFromJsonTest.java b/apis/chef/src/test/java/org/jclouds/chef/functions/ParseUploadSandboxFromJsonTest.java deleted file mode 100644 index b92fb3a..0000000 --- a/apis/chef/src/test/java/org/jclouds/chef/functions/ParseUploadSandboxFromJsonTest.java +++ /dev/null @@ -1,87 +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.jclouds.chef.functions; - -import static com.google.common.io.BaseEncoding.base16; -import static com.google.common.primitives.Bytes.asList; -import static org.testng.Assert.assertEquals; - -import java.io.IOException; -import java.net.URI; - -import org.jclouds.chef.ChefApiMetadata; -import org.jclouds.chef.config.ChefParserModule; -import org.jclouds.chef.domain.ChecksumStatus; -import org.jclouds.chef.domain.UploadSandbox; -import org.jclouds.http.HttpResponse; -import org.jclouds.http.functions.ParseJson; -import org.jclouds.json.config.GsonModule; -import org.jclouds.rest.annotations.ApiVersion; -import org.testng.annotations.BeforeTest; -import org.testng.annotations.Test; - -import com.google.inject.AbstractModule; -import com.google.inject.Guice; -import com.google.inject.Injector; -import com.google.inject.Key; -import com.google.inject.TypeLiteral; - -/** - * Tests behavior of {@code ParseUploadSiteFromJson} - */ -@Test(groups = { "unit" }, singleThreaded = true) -public class ParseUploadSandboxFromJsonTest { - - private ParseJson<UploadSandbox> handler; - private Injector injector; - - @BeforeTest - protected void setUpInjector() throws IOException { - injector = Guice.createInjector(new AbstractModule() { - @Override - protected void configure() { - bind(String.class).annotatedWith(ApiVersion.class).toInstance(ChefApiMetadata.DEFAULT_API_VERSION); - } - }, new ChefParserModule(), new GsonModule()); - - handler = injector.getInstance(Key.get(new TypeLiteral<ParseJson<UploadSandbox>>() { - })); - } - - public void test() { - assertEquals( - handler.apply(HttpResponse.builder().statusCode(200).message("ok") - .payload(ParseUploadSandboxFromJsonTest.class.getResourceAsStream("/upload-site.json")).build()), - UploadSandbox - .builder() - .uri(URI - .create("https://api.opscode.com/organizations/jclouds/sandboxes/d454f71e2a5f400c808d0c5d04c2c88c")) - .checksum( - asList(base16().lowerCase().decode("0c5ecd7788cf4f6c7de2a57193897a6c")), - ChecksumStatus - .builder() - .url(URI - .create("https://s3.amazonaws.com/opscode-platform-production-data/organization-486ca3ac66264fea926aa0b4ff74341c/sandbox-d454f71e2a5f400c808d0c5d04c2c88c/checksum-0c5ecd7788cf4f6c7de2a57193897a6c?AWSAccessKeyId=AKIAJOZTD2N26S7W6APA&Expires=1277344702&Signature=FtKyqvYEjhhEKmRY%2B0M8aGPMM7g%3D")) - .needsUpload(true).build()) - .checksum(asList(base16().lowerCase().decode("0189e76ccc476701d6b374e5a1a27347")), - ChecksumStatus.builder().build()) - .checksum(asList(base16().lowerCase().decode("1dda05ed139664f1f89b9dec482b77c0")), - ChecksumStatus.builder().build()).sandboxId("d454f71e2a5f400c808d0c5d04c2c88c").build() - - ); - } -} http://git-wip-us.apache.org/repos/asf/jclouds/blob/8cb2cb44/apis/chef/src/test/java/org/jclouds/chef/functions/RunListForGroupTest.java ---------------------------------------------------------------------- diff --git a/apis/chef/src/test/java/org/jclouds/chef/functions/RunListForGroupTest.java b/apis/chef/src/test/java/org/jclouds/chef/functions/RunListForGroupTest.java deleted file mode 100644 index 28b8833..0000000 --- a/apis/chef/src/test/java/org/jclouds/chef/functions/RunListForGroupTest.java +++ /dev/null @@ -1,92 +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.jclouds.chef.functions; - -import static org.easymock.EasyMock.createMock; -import static org.easymock.EasyMock.expect; -import static org.easymock.EasyMock.replay; -import static org.easymock.EasyMock.verify; -import static org.testng.Assert.assertEquals; - -import java.io.IOException; - -import org.jclouds.chef.ChefApi; -import org.jclouds.chef.ChefApiMetadata; -import org.jclouds.chef.config.ChefParserModule; -import org.jclouds.chef.domain.Client; -import org.jclouds.chef.domain.DatabagItem; -import org.jclouds.json.Json; -import org.jclouds.json.config.GsonModule; -import org.jclouds.rest.annotations.Api; -import org.jclouds.rest.annotations.ApiVersion; -import org.testng.annotations.Test; - -import com.google.common.collect.ImmutableList; -import com.google.inject.AbstractModule; -import com.google.inject.Guice; -import com.google.inject.Injector; - -@Test(groups = "unit", testName = "RunListForGroupTest") -public class RunListForGroupTest { - private Injector injector = Guice.createInjector(new AbstractModule() { - @Override - protected void configure() { - bind(String.class).annotatedWith(ApiVersion.class).toInstance(ChefApiMetadata.DEFAULT_API_VERSION); - } - }, new ChefParserModule(), new GsonModule()); - - private Json json = injector.getInstance(Json.class); - - @Test(expectedExceptions = IllegalStateException.class) - public void testWhenNoDatabagItem() throws IOException { - ChefApi chefApi = createMock(ChefApi.class); - Client client = createMock(Client.class); - - RunListForGroup fn = new RunListForGroup(new BootstrapConfigForGroup("jclouds", chefApi), json); - - expect(chefApi.getDatabagItem("jclouds", "foo")).andReturn(null); - - replay(client); - replay(chefApi); - - fn.apply("foo"); - - verify(client); - verify(chefApi); - } - - @Test - public void testReadRunList() throws IOException { - ChefApi chefApi = createMock(ChefApi.class); - Api api = createMock(Api.class); - - RunListForGroup fn = new RunListForGroup(new BootstrapConfigForGroup("jclouds", chefApi), json); - DatabagItem config = new DatabagItem("foo", - "{\"tomcat6\":{\"ssl_port\":8433},\"run_list\":[\"recipe[apache2]\",\"role[webserver]\"]}"); - - expect(chefApi.getDatabagItem("jclouds", "foo")).andReturn(config); - - replay(api); - replay(chefApi); - - assertEquals(fn.apply("foo"), ImmutableList.of("recipe[apache2]", "role[webserver]")); - - verify(api); - verify(chefApi); - } - -} http://git-wip-us.apache.org/repos/asf/jclouds/blob/8cb2cb44/apis/chef/src/test/java/org/jclouds/chef/functions/UriForResourceTest.java ---------------------------------------------------------------------- diff --git a/apis/chef/src/test/java/org/jclouds/chef/functions/UriForResourceTest.java b/apis/chef/src/test/java/org/jclouds/chef/functions/UriForResourceTest.java deleted file mode 100644 index 3285a1c..0000000 --- a/apis/chef/src/test/java/org/jclouds/chef/functions/UriForResourceTest.java +++ /dev/null @@ -1,54 +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.jclouds.chef.functions; - -import static org.testng.Assert.assertEquals; - -import java.net.URI; - -import org.jclouds.chef.domain.Resource; -import org.testng.annotations.Test; - -import com.google.common.base.Function; - -/** - * Tests behavior of {@code UriForResource} - */ -@Test(groups = { "unit" }) -public class UriForResourceTest { - - @Test(expectedExceptions = NullPointerException.class) - public void testWithNullInput() { - Function<Object, URI> function = new UriForResource(); - function.apply(null); - } - - @Test(expectedExceptions = IllegalArgumentException.class) - public void testWithInvalidInput() { - Function<Object, URI> function = new UriForResource(); - function.apply(new Object()); - } - - @Test - public void testWithValidResource() { - Function<Object, URI> function = new UriForResource(); - Resource res = Resource.builder().name("test").url(URI.create("http://foo/bar")).build(); - URI result = function.apply(res); - assertEquals(res.getUrl().toString(), result.toString()); - } - -} http://git-wip-us.apache.org/repos/asf/jclouds/blob/8cb2cb44/apis/chef/src/test/java/org/jclouds/chef/handlers/ChefApiErrorRetryHandlerTest.java ---------------------------------------------------------------------- diff --git a/apis/chef/src/test/java/org/jclouds/chef/handlers/ChefApiErrorRetryHandlerTest.java b/apis/chef/src/test/java/org/jclouds/chef/handlers/ChefApiErrorRetryHandlerTest.java deleted file mode 100644 index 5e99675..0000000 --- a/apis/chef/src/test/java/org/jclouds/chef/handlers/ChefApiErrorRetryHandlerTest.java +++ /dev/null @@ -1,115 +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.jclouds.chef.handlers; - -import static org.easymock.EasyMock.createMock; -import static org.easymock.EasyMock.expect; -import static org.easymock.EasyMock.replay; -import static org.easymock.EasyMock.verify; - -import org.jclouds.http.HttpCommand; -import org.jclouds.http.HttpRequest; -import org.jclouds.http.HttpResponse; -import org.jclouds.http.handlers.BackoffLimitedRetryHandler; -import org.testng.annotations.Test; - -/** - * Tests behavior of {@code ChefClientErrorRetryHandler} - */ -@Test(groups = { "unit" }) -public class ChefApiErrorRetryHandlerTest { - @Test - public void test401DoesNotRetry() { - - HttpCommand command = createMock(HttpCommand.class); - HttpResponse response = createMock(HttpResponse.class); - BackoffLimitedRetryHandler retry = createMock(BackoffLimitedRetryHandler.class); - - expect(command.getFailureCount()).andReturn(0); - expect(response.getStatusCode()).andReturn(401).atLeastOnce(); - - replay(response); - replay(retry); - replay(command); - - ChefApiErrorRetryHandler handler = new ChefApiErrorRetryHandler(retry); - - assert !handler.shouldRetryRequest(command, response); - - verify(retry); - verify(command); - verify(response); - - } - - @Test - public void test400DoesNotRetry() { - - HttpCommand command = createMock(HttpCommand.class); - HttpResponse response = createMock(HttpResponse.class); - BackoffLimitedRetryHandler retry = createMock(BackoffLimitedRetryHandler.class); - - expect(command.getFailureCount()).andReturn(0); - expect(response.getStatusCode()).andReturn(401).atLeastOnce(); - - replay(response); - replay(retry); - replay(command); - - ChefApiErrorRetryHandler handler = new ChefApiErrorRetryHandler(retry); - - assert !handler.shouldRetryRequest(command, response); - - verify(retry); - verify(command); - verify(response); - - } - - @Test - public void testRetryOn400PutSandbox() { - - HttpCommand command = createMock(HttpCommand.class); - BackoffLimitedRetryHandler retry = createMock(BackoffLimitedRetryHandler.class); - - HttpRequest request = HttpRequest.builder().method("PUT") - .endpoint("https://api.opscode.com/organizations/jclouds/sandboxes/bfd68d4052f44053b2e593a33b5e1cd5") - .build(); - HttpResponse response = HttpResponse - .builder() - .statusCode(400) - .message("400 Bad Request") - .payload( - "{\"error\":[\"Cannot update sandbox bfd68d4052f44053b2e593a33b5e1cd5: checksum 9b7c23369f4b576451216c39f214af6c was not uploaded\"]}") - .build(); - - expect(command.getFailureCount()).andReturn(0); - expect(command.getCurrentRequest()).andReturn(request).atLeastOnce(); - expect(retry.shouldRetryRequest(command, response)).andReturn(true); - - replay(retry); - replay(command); - - ChefApiErrorRetryHandler handler = new ChefApiErrorRetryHandler(retry); - - assert handler.shouldRetryRequest(command, response); - - verify(retry); - verify(command); - - } -} http://git-wip-us.apache.org/repos/asf/jclouds/blob/8cb2cb44/apis/chef/src/test/java/org/jclouds/chef/internal/BaseChefApiLiveTest.java ---------------------------------------------------------------------- diff --git a/apis/chef/src/test/java/org/jclouds/chef/internal/BaseChefApiLiveTest.java b/apis/chef/src/test/java/org/jclouds/chef/internal/BaseChefApiLiveTest.java deleted file mode 100644 index 225e593..0000000 --- a/apis/chef/src/test/java/org/jclouds/chef/internal/BaseChefApiLiveTest.java +++ /dev/null @@ -1,542 +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.jclouds.chef.internal; - -import static com.google.common.base.Throwables.propagate; -import static com.google.common.collect.Iterables.any; -import static com.google.common.collect.Iterables.isEmpty; -import static com.google.common.hash.Hashing.md5; -import static java.util.concurrent.TimeUnit.MILLISECONDS; -import static org.jclouds.util.Predicates2.retry; -import static org.testng.Assert.assertEquals; -import static org.testng.Assert.assertFalse; -import static org.testng.Assert.assertNotNull; -import static org.testng.Assert.assertNull; -import static org.testng.Assert.assertTrue; -import static org.testng.Assert.fail; - -import java.io.File; -import java.io.IOException; -import java.io.InputStream; -import java.util.Collections; -import java.util.List; -import java.util.Properties; -import java.util.Set; - -import org.jclouds.chef.ChefApi; -import org.jclouds.chef.domain.ChecksumStatus; -import org.jclouds.chef.domain.Client; -import org.jclouds.chef.domain.CookbookDefinition; -import org.jclouds.chef.domain.CookbookVersion; -import org.jclouds.chef.domain.DatabagItem; -import org.jclouds.chef.domain.Environment; -import org.jclouds.chef.domain.Metadata; -import org.jclouds.chef.domain.Node; -import org.jclouds.chef.domain.Resource; -import org.jclouds.chef.domain.Role; -import org.jclouds.chef.domain.Sandbox; -import org.jclouds.chef.domain.SearchResult; -import org.jclouds.chef.domain.UploadSandbox; -import org.jclouds.chef.options.CreateClientOptions; -import org.jclouds.chef.options.SearchOptions; -import org.jclouds.crypto.Pems; -import org.jclouds.io.ByteStreams2; -import org.jclouds.io.Payloads; -import org.jclouds.io.payloads.FilePayload; -import org.jclouds.rest.ResourceNotFoundException; -import org.testng.annotations.AfterClass; -import org.testng.annotations.Test; - -import com.google.common.base.Predicate; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableSet; -import com.google.common.hash.Hashing; -import com.google.common.io.Closeables; -import com.google.common.io.Files; -import com.google.common.primitives.Bytes; - -/** - * Tests behavior of {@code ChefApi} - */ -@Test(groups = { "live", "integration" }) -public abstract class BaseChefApiLiveTest<A extends ChefApi> extends BaseChefLiveTest<A> { - public static final String PREFIX = "jcloudstest-" + System.getProperty("user.name"); - public static final String ADMIN_PREFIX = "jcloudstest-adm-" + System.getProperty("user.name"); - public static final String ENV_NODE = PREFIX + "-env-node"; - - // It may take a bit until the search index is populated - protected int maxWaitForIndexInMs = 60000; - - // The id of the data bag item used in search tests - private String databagitemId; - - public void testCreateNewCookbook() throws Exception { - // Define the file you want in the cookbook - File file = new File(System.getProperty("user.dir"), "pom.xml"); - FilePayload content = Payloads.newFilePayload(file); - content.getContentMetadata().setContentType("application/x-binary"); - - // Get an md5 so that you can see if the server already has it or not - content.getContentMetadata().setContentMD5(Files.asByteSource(file).hash(Hashing.md5()).asBytes()); - - // Note that java collections cannot effectively do equals or hashcodes on - // byte arrays, so let's convert to a list of bytes. - List<Byte> md5 = Bytes.asList(content.getContentMetadata().getContentMD5()); - - // Request an upload site for this file - UploadSandbox site = api.createUploadSandboxForChecksums(ImmutableSet.of(md5)); - assertTrue(site.getChecksums().containsKey(md5), md5 + " not in " + site.getChecksums()); - - try { - // Upload the file contents, if still not uploaded - ChecksumStatus status = site.getChecksums().get(md5); - if (status.needsUpload()) { - api.uploadContent(status.getUrl(), content); - } - Sandbox sandbox = api.commitSandbox(site.getSandboxId(), true); - assertTrue(sandbox.isCompleted(), "Sandbox should be completed after uploading"); - } catch (RuntimeException e) { - api.commitSandbox(site.getSandboxId(), false); - fail("Could not upload content"); - } - - // Create the metadata of the cookbook - Metadata metadata = Metadata.builder() // - .name(PREFIX) // - .version("0.0.0") // - .description("Jclouds test uploaded cookbook") // - .maintainer("jclouds") // - .maintainerEmail("[email protected]") // - .license("Apache 2.0") // - .build(); - - // Create a new cookbook - CookbookVersion cookbook = CookbookVersion.builder(PREFIX, "0.0.0") // - .metadata(metadata) // - .rootFile(Resource.builder().fromPayload(content).build()) // - .build(); - - // upload the cookbook to the remote server - api.updateCookbook(PREFIX, "0.0.0", cookbook); - } - - public void testListCookbooks() throws Exception { - Set<String> cookbookNames = api.listCookbooks(); - assertFalse(cookbookNames.isEmpty(), "No cookbooks were found"); - - for (String cookbookName : cookbookNames) { - Set<String> versions = api.listVersionsOfCookbook(cookbookName); - assertFalse(versions.isEmpty(), "There are no versions of the cookbook: " + cookbookName); - - for (String version : api.listVersionsOfCookbook(cookbookName)) { - CookbookVersion cookbook = api.getCookbook(cookbookName, version); - assertNotNull(cookbook, "Could not get cookbook: " + cookbookName); - } - } - } - - @Test(dependsOnMethods = "testListCookbooks") - public void testListCookbookVersionsWithChefService() throws Exception { - Iterable<? extends CookbookVersion> cookbooks = chefService.listCookbookVersions(); - assertFalse(isEmpty(cookbooks), "No cookbooks were found"); - } - - @Test(dependsOnMethods = "testListCookbookVersionsWithChefService") - public void testDownloadCookbooks() throws Exception { - Iterable<? extends CookbookVersion> cookbooks = chefService.listCookbookVersions(); - for (CookbookVersion cookbook : cookbooks) { - for (Resource resource : ImmutableList.<Resource> builder().addAll(cookbook.getDefinitions()) - .addAll(cookbook.getFiles()).addAll(cookbook.getLibraries()).addAll(cookbook.getSuppliers()) - .addAll(cookbook.getRecipes()).addAll(cookbook.getResources()).addAll(cookbook.getRootFiles()) - .addAll(cookbook.getTemplates()).build()) { - - InputStream stream = api.getResourceContents(resource); - assertNotNull(stream, "Resource contents are null for resource: " + resource.getName()); - - byte[] md5 = ByteStreams2.hashAndClose(stream, md5()).asBytes(); - assertEquals(md5, resource.getChecksum()); - } - } - } - - @Test(dependsOnMethods = "testCreateNewCookbook") - public void testUpdateCookbook() throws Exception { - CookbookVersion cookbook = api.getCookbook(PREFIX, "0.0.0"); - assertNotNull(cookbook, "Cookbook not found: " + PREFIX); - assertNotNull(api.updateCookbook(PREFIX, "0.0.0", cookbook), "Updated cookbook was null"); - } - - @Test(dependsOnMethods = { "testCreateNewCookbook", "testUpdateCookbook" }) - public void testDeleteCookbook() throws Exception { - assertNotNull(api.deleteCookbook(PREFIX, "0.0.0"), "Deleted cookbook was null"); - } - - @Test - public void testCreateClient() throws Exception { - api.deleteClient(PREFIX); - String credential = Pems.pem(api.createClient(PREFIX).getPrivateKey()); - assertClientCreated(PREFIX, credential); - } - - @Test - public void testCreateAdminClient() throws Exception { - api.deleteClient(ADMIN_PREFIX); - String credential = Pems.pem(api.createClient(ADMIN_PREFIX, CreateClientOptions.Builder.admin()).getPrivateKey()); - assertClientCreated(ADMIN_PREFIX, credential); - } - - @Test(dependsOnMethods = "testCreateClient") - public void testGenerateKeyForClient() throws Exception { - String credential = Pems.pem(api.generateKeyForClient(PREFIX).getPrivateKey()); - assertClientCreated(PREFIX, credential); - } - - @Test - public void testListNodes() throws Exception { - Set<String> nodes = api.listNodes(); - assertNotNull(nodes, "No nodes were found"); - } - - @Test(dependsOnMethods = "testCreateRole") - public void testCreateNode() throws Exception { - api.deleteNode(PREFIX); - api.createNode(Node.builder().name(PREFIX).runListElement("role[" + PREFIX + "]").environment("_default").build()); - Node node = api.getNode(PREFIX); - // TODO check recipes - assertNotNull(node, "Created node should not be null"); - Set<String> nodes = api.listNodes(); - assertTrue(nodes.contains(PREFIX), String.format("node %s not in %s", PREFIX, nodes)); - } - - @Test(dependsOnMethods = "testCreateNode") - public void testUpdateNode() throws Exception { - for (String nodename : api.listNodes()) { - Node node = api.getNode(nodename); - api.updateNode(node); - } - } - - @Test - public void testListRoles() throws Exception { - Set<String> roles = api.listRoles(); - assertNotNull(roles, "Role list was null"); - } - - @Test - public void testCreateRole() throws Exception { - api.deleteRole(PREFIX); - api.createRole(Role.builder().name(PREFIX).runListElement("recipe[java]").build()); - Role role = api.getRole(PREFIX); - assertNotNull(role, "Created role should not be null"); - assertEquals(role.getName(), PREFIX); - assertEquals(role.getRunList(), Collections.singleton("recipe[java]")); - } - - @Test(dependsOnMethods = "testCreateRole") - public void testUpdateRole() throws Exception { - for (String rolename : api.listRoles()) { - Role role = api.getRole(rolename); - api.updateRole(role); - } - } - - @Test - public void testListDatabags() throws Exception { - Set<String> databags = api.listDatabags(); - assertNotNull(databags, "Data bag list was null"); - } - - @Test - public void testCreateDatabag() throws Exception { - api.deleteDatabag(PREFIX); - api.createDatabag(PREFIX); - } - - @Test(dependsOnMethods = "testCreateDatabagItem") - public void testListDatabagItems() throws Exception { - Set<String> databagItems = api.listDatabagItems(PREFIX); - assertNotNull(databagItems, "Data bag item list was null"); - } - - @Test(dependsOnMethods = "testCreateDatabag") - public void testCreateDatabagItem() throws Exception { - Properties config = new Properties(); - config.setProperty("foo", "bar"); - api.deleteDatabagItem(PREFIX, PREFIX); - DatabagItem databagItem = api.createDatabagItem(PREFIX, new DatabagItem("config", json.toJson(config))); - databagitemId = databagItem.getId(); - assertNotNull(databagItem, "Created data bag item should not be null"); - assertEquals(databagItem.getId(), "config"); - - // The databagItem json contains extra keys: (the name and the type if the - // item) - Properties props = json.fromJson(databagItem.toString(), Properties.class); - for (Object key : config.keySet()) { - assertTrue(props.containsKey(key)); - assertEquals(config.get(key), props.get(key)); - } - } - - @Test(dependsOnMethods = "testCreateDatabagItem") - public void testUpdateDatabagItem() throws Exception { - for (String databagItemId : api.listDatabagItems(PREFIX)) { - DatabagItem databagItem = api.getDatabagItem(PREFIX, databagItemId); - api.updateDatabagItem(PREFIX, databagItem); - } - } - - @Test(dependsOnMethods = "testSearchDatabagWithOptions") - public void testDeleteDatabagItem() throws Exception { - for (String databagItemId : api.listDatabagItems(PREFIX)) { - DatabagItem databagItem = api.deleteDatabagItem(PREFIX, databagItemId); - assertNotNull(databagItem, "Deleted data bag item should not be null"); - assertEquals(databagItem.getId(), databagItemId, "Deleted data bag item id must match the original id"); - assertNull(api.getDatabagItem(PREFIX, databagItemId), "Data bag item should not exist"); - } - } - - @Test - public void testListSearchIndexes() throws Exception { - Set<String> indexes = api.listSearchIndexes(); - assertNotNull(indexes, "The index list should not be null"); - assertTrue(indexes.contains("node")); - assertTrue(indexes.contains("client")); - assertTrue(indexes.contains("role")); - } - - @Test - public void testSearchNodes() throws Exception { - SearchResult<? extends Node> results = api.searchNodes(); - assertNotNull(results, "Node result list should not be null"); - } - - @Test(dependsOnMethods = { "testListSearchIndexes", "testCreateNode" }) - public void testSearchNodesWithOptions() throws Exception { - Predicate<SearchOptions> waitForIndex = retry(new Predicate<SearchOptions>() { - @Override - public boolean apply(SearchOptions input) { - SearchResult<? extends Node> results = api.searchNodes(input); - assertNotNull(results); - if (results.size() > 0) { - assertEquals(results.size(), 1); - assertEquals(results.iterator().next().getName(), PREFIX); - return true; - } else { - // The index may still not be populated - return false; - } - } - }, maxWaitForIndexInMs, 5000L, MILLISECONDS); - - SearchOptions options = SearchOptions.Builder.query("name:" + PREFIX); - assertTrue(waitForIndex.apply(options)); - } - - @Test - public void testSearchClients() throws Exception { - SearchResult<? extends Client> results = api.searchClients(); - assertNotNull(results, "Client result list should not be null"); - } - - @Test(dependsOnMethods = { "testListSearchIndexes", "testCreateClient" }) - public void testSearchClientsWithOptions() throws Exception { - Predicate<SearchOptions> waitForIndex = retry(new Predicate<SearchOptions>() { - @Override - public boolean apply(SearchOptions input) { - SearchResult<? extends Client> results = api.searchClients(input); - assertNotNull(results); - if (results.size() > 0) { - assertEquals(results.size(), 1); - assertEquals(results.iterator().next().getName(), PREFIX); - return true; - } else { - // The index may still not be populated - return false; - } - } - }, maxWaitForIndexInMs, 5000L, MILLISECONDS); - - SearchOptions options = SearchOptions.Builder.query("name:" + PREFIX); - assertTrue(waitForIndex.apply(options)); - } - - @Test - public void testSearchRoles() throws Exception { - SearchResult<? extends Role> results = api.searchRoles(); - assertNotNull(results, "Role result list should not be null"); - } - - @Test(dependsOnMethods = { "testListSearchIndexes", "testCreateRole" }) - public void testSearchRolesWithOptions() throws Exception { - Predicate<SearchOptions> waitForIndex = retry(new Predicate<SearchOptions>() { - @Override - public boolean apply(SearchOptions input) { - SearchResult<? extends Role> results = api.searchRoles(input); - assertNotNull(results); - if (results.size() > 0) { - assertEquals(results.size(), 1); - assertEquals(results.iterator().next().getName(), PREFIX); - return true; - } else { - // The index may still not be populated - return false; - } - } - }, maxWaitForIndexInMs, 5000L, MILLISECONDS); - - SearchOptions options = SearchOptions.Builder.query("name:" + PREFIX); - assertTrue(waitForIndex.apply(options)); - } - - @Test(dependsOnMethods = { "testListSearchIndexes", "testCreateDatabagItem" }) - public void testSearchDatabag() throws Exception { - SearchResult<? extends DatabagItem> results = api.searchDatabagItems(PREFIX); - assertNotNull(results, "Data bag item result list should not be null"); - } - - @Test(dependsOnMethods = { "testListSearchIndexes", "testCreateDatabagItem" }) - public void testSearchDatabagWithOptions() throws Exception { - Predicate<SearchOptions> waitForIndex = retry(new Predicate<SearchOptions>() { - @Override - public boolean apply(SearchOptions input) { - SearchResult<? extends DatabagItem> results = api.searchDatabagItems(PREFIX, input); - assertNotNull(results); - if (results.size() > 0) { - assertEquals(results.size(), 1); - assertEquals(results.iterator().next().getId(), databagitemId); - return true; - } else { - // The index may still not be populated - return false; - } - } - }, maxWaitForIndexInMs, 5000L, MILLISECONDS); - - SearchOptions options = SearchOptions.Builder.query("id:" + databagitemId); - assertTrue(waitForIndex.apply(options)); - } - - @Test(expectedExceptions = ResourceNotFoundException.class, dependsOnMethods = "testListSearchIndexes") - public void testSearchDatabagNotFound() throws Exception { - SearchResult<? extends DatabagItem> results = api.searchDatabagItems("whoopie"); - assertNotNull(results, "Data bag item result list should not be null"); - } - - @Test - public void testCreateEnvironment() { - api.deleteEnvironment(PREFIX); - api.createEnvironment(Environment.builder().name(PREFIX).description(PREFIX).build()); - Environment env = api.getEnvironment(PREFIX); - assertNotNull(env, "Created environment should not be null"); - assertEquals(env.getName(), PREFIX); - assertEquals(env.getDescription(), PREFIX); - } - - @Test(dependsOnMethods = "testCreateEnvironment") - public void testListEnvironment() { - Set<String> envList = api.listEnvironments(); - assertNotNull(envList, "Environment list was null"); - assertTrue(envList.contains(PREFIX)); - } - - @Test(dependsOnMethods = "testCreateEnvironment") - public void testSearchEnvironments() throws Exception { - SearchResult<? extends Environment> results = api.searchEnvironments(); - assertNotNull(results, "Environment result list was null"); - } - - @Test(dependsOnMethods = { "testListSearchIndexes", "testCreateEnvironment" }) - public void testSearchEnvironmentsWithOptions() throws Exception { - Predicate<SearchOptions> waitForIndex = retry(new Predicate<SearchOptions>() { - @Override - public boolean apply(SearchOptions input) { - SearchResult<? extends Environment> results = api.searchEnvironments(input); - assertNotNull(results); - if (results.size() > 0) { - assertEquals(results.size(), 1); - assertEquals(results.iterator().next().getName(), PREFIX); - return true; - } else { - // The index may still not be populated - return false; - } - } - }, maxWaitForIndexInMs, 5000L, MILLISECONDS); - - SearchOptions options = SearchOptions.Builder.query("name:" + PREFIX); - assertTrue(waitForIndex.apply(options)); - } - - @Test(dependsOnMethods = "testCreateEnvironment") - public void testListRecipesInEnvironment() { - Set<String> recipeList = api.listRecipesInEnvironment(PREFIX); - assertTrue(!recipeList.isEmpty()); - } - - @Test(dependsOnMethods = "testCreateEnvironment") - public void testListNodesInEnvironment() { - api.deleteNode(ENV_NODE); - api.createNode(Node.builder().name(ENV_NODE).runListElement("role[" + PREFIX + "]").environment(PREFIX).build()); - Node node = api.getNode(ENV_NODE); - assertNotNull(node, "Created node should not be null"); - Set<String> nodeList = api.listNodesInEnvironment(PREFIX); - assertTrue(!nodeList.isEmpty()); - } - - @Test(dependsOnMethods = "testCreateNewCookbook") - public void testListCookbooksInEnvironment() throws Exception { - Set<CookbookDefinition> cookbooks = api.listCookbooksInEnvironment("_default"); - assertTrue(any(cookbooks, new Predicate<CookbookDefinition>() { - @Override - public boolean apply(CookbookDefinition input) { - return PREFIX.equals(input.getName()); - }}), String.format("Cookbook %s not in %s", PREFIX, cookbooks)); - } - - @AfterClass(groups = { "live", "integration" }) - @Override - public void tearDown() { - api.deleteClient(PREFIX); - api.deleteClient(ADMIN_PREFIX); - api.deleteNode(PREFIX); - api.deleteNode(ENV_NODE); - api.deleteRole(PREFIX); - api.deleteDatabag(PREFIX); - api.deleteEnvironment(PREFIX); - super.tearDown(); - } - - private void assertClientCreated(String identity, String credential) { - Properties overrides = super.setupProperties(); - overrides.setProperty(provider + ".identity", identity); - overrides.setProperty(provider + ".credential", credential); - - A clientApi = create(overrides, setupModules()); - - try { - Client client = clientApi.getClient(identity); - assertNotNull(client, "Client not found: " + identity); - } finally { - try { - Closeables.close(clientApi, true); - } catch (IOException e) { - throw propagate(e); - } - } - } - -} http://git-wip-us.apache.org/repos/asf/jclouds/blob/8cb2cb44/apis/chef/src/test/java/org/jclouds/chef/internal/BaseChefLiveTest.java ---------------------------------------------------------------------- diff --git a/apis/chef/src/test/java/org/jclouds/chef/internal/BaseChefLiveTest.java b/apis/chef/src/test/java/org/jclouds/chef/internal/BaseChefLiveTest.java deleted file mode 100644 index e314418..0000000 --- a/apis/chef/src/test/java/org/jclouds/chef/internal/BaseChefLiveTest.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 org.jclouds.chef.internal; - -import static org.jclouds.reflect.Types2.checkBound; - -import java.io.File; -import java.io.IOException; -import java.util.Properties; - -import org.jclouds.apis.BaseApiLiveTest; -import org.jclouds.chef.ChefApi; -import org.jclouds.chef.ChefService; -import org.jclouds.json.Json; -import org.testng.annotations.Test; - -import com.google.common.base.Charsets; -import com.google.common.base.Throwables; -import com.google.common.io.Files; -import com.google.common.reflect.TypeToken; -import com.google.inject.Injector; -import com.google.inject.Module; - -@Test(groups = "live") -public abstract class BaseChefLiveTest<A extends ChefApi> extends BaseApiLiveTest<A> { - - protected Injector injector; - protected ChefService chefService; - protected Json json; - - protected BaseChefLiveTest() { - provider = "chef"; - } - - /** - * the credential is a path to the pem file. - */ - @Override - protected Properties setupProperties() { - Properties overrides = super.setupProperties(); - credential = setCredentialFromPemFile(overrides, identity, provider + ".credential"); - return overrides; - } - - @Override - protected void initialize() { - super.initialize(); - chefService = injector.getInstance(ChefService.class); - json = injector.getInstance(Json.class); - } - - @Override - protected A create(Properties props, Iterable<Module> modules) { - injector = newBuilder().modules(modules).overrides(props).buildInjector(); - return injector.getInstance(resolveApiClass()); - } - - protected String setCredentialFromPemFile(Properties overrides, String identity, String key) { - String val = null; - String credentialFromFile = null; - if (System.getProperties().containsKey("test." + key)) { - val = System.getProperty("test." + key); - } else { - val = System.getProperty("user.home") + "/.chef/" + identity + ".pem"; - } - try { - credentialFromFile = Files.toString(new File(val), Charsets.UTF_8); - } catch (IOException e) { - throw Throwables.propagate(e); - } - overrides.setProperty(key, credentialFromFile); - return credentialFromFile; - } - - @SuppressWarnings("unchecked") - private Class<A> resolveApiClass() { - return Class.class.cast(checkBound(new TypeToken<A>(getClass()) { - private static final long serialVersionUID = 1L; - }).getRawType()); - } - -} http://git-wip-us.apache.org/repos/asf/jclouds/blob/8cb2cb44/apis/chef/src/test/java/org/jclouds/chef/internal/BaseChefServiceTest.java ---------------------------------------------------------------------- diff --git a/apis/chef/src/test/java/org/jclouds/chef/internal/BaseChefServiceTest.java b/apis/chef/src/test/java/org/jclouds/chef/internal/BaseChefServiceTest.java deleted file mode 100644 index e763d8f..0000000 --- a/apis/chef/src/test/java/org/jclouds/chef/internal/BaseChefServiceTest.java +++ /dev/null @@ -1,99 +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.jclouds.chef.internal; - -import static org.testng.Assert.assertEquals; - -import java.util.List; - -import org.jclouds.ContextBuilder; -import org.jclouds.chef.ChefApiMetadata; -import org.jclouds.chef.domain.BootstrapConfig; -import org.jclouds.chef.filters.SignedHeaderAuthTest; -import org.jclouds.chef.util.RunListBuilder; -import org.jclouds.domain.JsonBall; -import org.jclouds.logging.config.NullLoggingModule; -import org.jclouds.rest.internal.BaseRestApiTest.MockModule; -import org.testng.annotations.BeforeClass; -import org.testng.annotations.Test; - -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableSet; -import com.google.inject.Injector; -import com.google.inject.Module; - -/** - * Unit tests for the <code>BaseChefService</code> class. - */ -@Test(groups = "unit", testName = "BaseChefServiceTest") -public class BaseChefServiceTest { - - private BaseChefService chefService; - - @BeforeClass - public void setup() { - Injector injector = ContextBuilder.newBuilder(new ChefApiMetadata()) - .credentials(SignedHeaderAuthTest.USER_ID, SignedHeaderAuthTest.PRIVATE_KEY) - .modules(ImmutableSet.<Module> of(new MockModule(), new NullLoggingModule())).buildInjector(); - - chefService = injector.getInstance(BaseChefService.class); - } - - @Test(expectedExceptions = NullPointerException.class, expectedExceptionsMessageRegExp = "bootstrapConfig must not be null") - public void testBuildBootstrapConfigurationWithNullConfig() { - chefService.buildBootstrapConfiguration(null); - } - - public void testBuildBootstrapConfigurationWithEmptyRunlist() { - BootstrapConfig bootstrapConfig = BootstrapConfig.builder().runList(ImmutableList.<String> of()).build(); - String config = chefService.buildBootstrapConfiguration(bootstrapConfig); - assertEquals(config, "{\"run_list\":[]}"); - } - - public void testBuildBootstrapConfigurationWithRunlist() { - List<String> runlist = new RunListBuilder().addRecipe("apache2").addRole("webserver").build(); - BootstrapConfig bootstrapConfig = BootstrapConfig.builder().runList(runlist).build(); - String config = chefService.buildBootstrapConfiguration(bootstrapConfig); - assertEquals(config, "{\"run_list\":[\"recipe[apache2]\",\"role[webserver]\"]}"); - } - - public void testBuildBootstrapConfigurationWithRunlistAndEmptyAttributes() { - List<String> runlist = new RunListBuilder().addRecipe("apache2").addRole("webserver").build(); - BootstrapConfig bootstrapConfig = BootstrapConfig.builder().runList(runlist).attributes(new JsonBall("{}")) - .build(); - String config = chefService.buildBootstrapConfiguration(bootstrapConfig); - assertEquals(config, "{\"run_list\":[\"recipe[apache2]\",\"role[webserver]\"]}"); - } - - public void testBuildBootstrapConfigurationWithRunlistAndAttributes() { - List<String> runlist = new RunListBuilder().addRecipe("apache2").addRole("webserver").build(); - BootstrapConfig bootstrapConfig = BootstrapConfig.builder().runList(runlist) - .attributes(new JsonBall("{\"tomcat6\":{\"ssl_port\":8433}}")).build(); - String config = chefService.buildBootstrapConfiguration(bootstrapConfig); - assertEquals(config, "{\"tomcat6\":{\"ssl_port\":8433},\"run_list\":[\"recipe[apache2]\",\"role[webserver]\"]}"); - } - - public void testBuildBootstrapConfigurationWithRunlistAndAttributesAndEnvironment() { - List<String> runlist = new RunListBuilder().addRecipe("apache2").addRole("webserver").build(); - BootstrapConfig bootstrapConfig = BootstrapConfig.builder().runList(runlist) - .attributes(new JsonBall("{\"tomcat6\":{\"ssl_port\":8433}}")).environment("env").build(); - String config = chefService.buildBootstrapConfiguration(bootstrapConfig); - assertEquals(config, - "{\"tomcat6\":{\"ssl_port\":8433},\"environment\":\"env\",\"run_list\":[\"recipe[apache2]\",\"role[webserver]\"]}"); - } - -} http://git-wip-us.apache.org/repos/asf/jclouds/blob/8cb2cb44/apis/chef/src/test/java/org/jclouds/chef/internal/BaseStubbedOhaiLiveTest.java ---------------------------------------------------------------------- diff --git a/apis/chef/src/test/java/org/jclouds/chef/internal/BaseStubbedOhaiLiveTest.java b/apis/chef/src/test/java/org/jclouds/chef/internal/BaseStubbedOhaiLiveTest.java deleted file mode 100644 index 8779017..0000000 --- a/apis/chef/src/test/java/org/jclouds/chef/internal/BaseStubbedOhaiLiveTest.java +++ /dev/null @@ -1,60 +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.jclouds.chef.internal; - -import java.util.Map; - -import org.jclouds.apis.ApiMetadata; -import org.jclouds.chef.ChefApi; -import org.jclouds.chef.ChefApiMetadata; -import org.jclouds.chef.config.ChefBootstrapModule; -import org.jclouds.chef.config.ChefHttpApiModule; -import org.jclouds.chef.config.ChefParserModule; -import org.jclouds.domain.JsonBall; -import org.jclouds.ohai.AutomaticSupplier; -import org.jclouds.ohai.config.ConfiguresOhai; -import org.jclouds.ohai.config.OhaiModule; -import org.testng.annotations.Test; - -import com.google.common.base.Supplier; -import com.google.common.base.Suppliers; -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.ImmutableSet; -import com.google.inject.Module; - -@Test(groups = "live") -@Deprecated -public class BaseStubbedOhaiLiveTest extends BaseChefLiveTest<ChefApi> { - - @ConfiguresOhai - static class TestOhaiModule extends OhaiModule { - - @Override - protected Supplier<Map<String, JsonBall>> provideAutomatic(AutomaticSupplier in) { - return Suppliers.<Map<String, JsonBall>> ofInstance(ImmutableMap.of("foo", new JsonBall("bar"))); - } - } - - @Override - protected ApiMetadata createApiMetadata() { - return new ChefApiMetadata() - .toBuilder() - .defaultModules( - ImmutableSet.<Class<? extends Module>> of(ChefHttpApiModule.class, ChefParserModule.class, - ChefBootstrapModule.class, TestOhaiModule.class)).build(); - } -} http://git-wip-us.apache.org/repos/asf/jclouds/blob/8cb2cb44/apis/chef/src/test/java/org/jclouds/chef/strategy/internal/CleanupStaleNodesAndClientsImplLiveTest.java ---------------------------------------------------------------------- diff --git a/apis/chef/src/test/java/org/jclouds/chef/strategy/internal/CleanupStaleNodesAndClientsImplLiveTest.java b/apis/chef/src/test/java/org/jclouds/chef/strategy/internal/CleanupStaleNodesAndClientsImplLiveTest.java deleted file mode 100644 index e8b249b..0000000 --- a/apis/chef/src/test/java/org/jclouds/chef/strategy/internal/CleanupStaleNodesAndClientsImplLiveTest.java +++ /dev/null @@ -1,61 +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.jclouds.chef.strategy.internal; - -import static org.testng.Assert.assertNotNull; -import static org.testng.Assert.assertNull; - -import org.jclouds.chef.ChefApi; -import org.jclouds.chef.internal.BaseChefLiveTest; -import org.testng.annotations.Test; - -import com.google.common.collect.ImmutableSet; - -/** - * Tests behavior of {@code CleanupStaleNodesAndClientsImpl} strategies - */ -@Test(groups = "live", testName = "CleanupStaleNodesAndClientsImplLiveTest") -public class CleanupStaleNodesAndClientsImplLiveTest extends BaseChefLiveTest<ChefApi> { - - private CreateNodeAndPopulateAutomaticAttributesImpl creator; - private CleanupStaleNodesAndClientsImpl strategy; - - @Override - protected void initialize() { - super.initialize(); - this.creator = injector.getInstance(CreateNodeAndPopulateAutomaticAttributesImpl.class); - this.strategy = injector.getInstance(CleanupStaleNodesAndClientsImpl.class); - } - - @Test - public void testExecute() throws InterruptedException { - try { - creator.execute(prefix, ImmutableSet.<String> of()); - // http://tickets.corp.opscode.com/browse/PL-522 - // assert chef.nodeExists(prefix); - assertNotNull(api.getNode(prefix)); - strategy.execute(prefix, 10); - assertNotNull(api.getNode(prefix)); - Thread.sleep(1000); - strategy.execute(prefix, 1); - assertNull(api.getNode(prefix)); - } finally { - api.deleteNode(prefix); - } - } - -} http://git-wip-us.apache.org/repos/asf/jclouds/blob/8cb2cb44/apis/chef/src/test/java/org/jclouds/chef/strategy/internal/CreateNodeAndPopulateAutomaticAttributesImplLiveTest.java ---------------------------------------------------------------------- diff --git a/apis/chef/src/test/java/org/jclouds/chef/strategy/internal/CreateNodeAndPopulateAutomaticAttributesImplLiveTest.java b/apis/chef/src/test/java/org/jclouds/chef/strategy/internal/CreateNodeAndPopulateAutomaticAttributesImplLiveTest.java deleted file mode 100644 index 60f2661..0000000 --- a/apis/chef/src/test/java/org/jclouds/chef/strategy/internal/CreateNodeAndPopulateAutomaticAttributesImplLiveTest.java +++ /dev/null @@ -1,62 +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.jclouds.chef.strategy.internal; - -import static org.testng.Assert.assertEquals; - -import java.util.Set; - -import org.jclouds.chef.ChefApi; -import org.jclouds.chef.domain.Node; -import org.jclouds.chef.internal.BaseChefLiveTest; -import org.jclouds.ohai.config.OhaiModule.CurrentUserProvider; -import org.testng.annotations.Test; - -import com.google.common.collect.ImmutableSet; - -/** - * Tests behavior of {@code CreateNodeAndPopulateAutomaticAttributesImpl} - * strategies - */ -@Test(groups = "live", testName = "CreateNodeAndPopulateAutomaticAttributesImplLiveTest") -public class CreateNodeAndPopulateAutomaticAttributesImplLiveTest extends BaseChefLiveTest<ChefApi> { - - private CurrentUserProvider currentUserProvider; - private CreateNodeAndPopulateAutomaticAttributesImpl strategy; - - @Override - protected void initialize() { - super.initialize(); - this.currentUserProvider = injector.getInstance(CurrentUserProvider.class); - this.strategy = injector.getInstance(CreateNodeAndPopulateAutomaticAttributesImpl.class); - } - - @Test - public void testExecute() { - Set<String> runList = ImmutableSet.of("role[" + prefix + "]"); - try { - strategy.execute(prefix, runList); - Node node = api.getNode(prefix); - assertEquals(node.getName(), prefix); - assertEquals(node.getRunList(), runList); - assertEquals(node.getAutomaticAttributes().get("current_user").toString(), currentUserProvider.get().toString()); - } finally { - api.deleteNode(prefix); - } - } - -} http://git-wip-us.apache.org/repos/asf/jclouds/blob/8cb2cb44/apis/chef/src/test/java/org/jclouds/chef/strategy/internal/CreateNodeAndPopulateAutomaticAttributesImplTest.java ---------------------------------------------------------------------- diff --git a/apis/chef/src/test/java/org/jclouds/chef/strategy/internal/CreateNodeAndPopulateAutomaticAttributesImplTest.java b/apis/chef/src/test/java/org/jclouds/chef/strategy/internal/CreateNodeAndPopulateAutomaticAttributesImplTest.java deleted file mode 100644 index 3ba7110..0000000 --- a/apis/chef/src/test/java/org/jclouds/chef/strategy/internal/CreateNodeAndPopulateAutomaticAttributesImplTest.java +++ /dev/null @@ -1,61 +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.jclouds.chef.strategy.internal; - -import static org.easymock.classextension.EasyMock.createMock; -import static org.easymock.classextension.EasyMock.replay; -import static org.easymock.classextension.EasyMock.verify; - -import java.util.Map; - -import org.jclouds.chef.ChefApi; -import org.jclouds.chef.domain.Node; -import org.jclouds.domain.JsonBall; -import org.testng.annotations.Test; - -import com.google.common.base.Supplier; -import com.google.common.base.Suppliers; -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.ImmutableSet; - -/** - * Tests behavior of {@code CreateNodeAndPopulateAutomaticAttributesImpl} - */ -@Test(groups = "unit", testName = "CreateNodeAndPopulateAutomaticAttributesImplTest") -public class CreateNodeAndPopulateAutomaticAttributesImplTest { - - @Test - public void testWithNoRunlist() { - ChefApi chef = createMock(ChefApi.class); - - Supplier<Map<String, JsonBall>> automaticSupplier = Suppliers.<Map<String, JsonBall>> ofInstance(ImmutableMap.<String, JsonBall> of()); - - Node nodeWithAutomatic = Node.builder().name("name").environment("_default") - .automaticAttributes(automaticSupplier.get()).build(); - - chef.createNode(nodeWithAutomatic); - - replay(chef); - - CreateNodeAndPopulateAutomaticAttributesImpl updater = new CreateNodeAndPopulateAutomaticAttributesImpl(chef, - automaticSupplier); - - updater.execute("name", ImmutableSet.<String> of()); - verify(chef); - - } -} http://git-wip-us.apache.org/repos/asf/jclouds/blob/8cb2cb44/apis/chef/src/test/java/org/jclouds/chef/strategy/internal/DeleteAllApisAndNodesInListImplLiveTest.java ---------------------------------------------------------------------- diff --git a/apis/chef/src/test/java/org/jclouds/chef/strategy/internal/DeleteAllApisAndNodesInListImplLiveTest.java b/apis/chef/src/test/java/org/jclouds/chef/strategy/internal/DeleteAllApisAndNodesInListImplLiveTest.java deleted file mode 100644 index 6f0e595..0000000 --- a/apis/chef/src/test/java/org/jclouds/chef/strategy/internal/DeleteAllApisAndNodesInListImplLiveTest.java +++ /dev/null @@ -1,64 +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.jclouds.chef.strategy.internal; - -import static org.testng.Assert.assertNotNull; -import static org.testng.Assert.assertNull; - -import org.jclouds.chef.ChefApi; -import org.jclouds.chef.internal.BaseChefLiveTest; -import org.testng.annotations.Test; - -import com.google.common.collect.ImmutableSet; - -/** - * Tests behavior of {@code DeleteAllApisAndNodesInListImpl} strategies - */ -@Test(groups = "live", testName = "DeleteAllApisAndNodesInListImplLiveTest") -public class DeleteAllApisAndNodesInListImplLiveTest extends BaseChefLiveTest<ChefApi> { - - private DeleteAllNodesInListImpl strategy; - private CreateNodeAndPopulateAutomaticAttributesImpl creator; - - @Override - protected void initialize() { - super.initialize(); - this.creator = injector.getInstance(CreateNodeAndPopulateAutomaticAttributesImpl.class); - this.strategy = injector.getInstance(DeleteAllNodesInListImpl.class); - } - - @Test - public void testExecute() throws InterruptedException { - try { - creator.execute(prefix, ImmutableSet.<String> of()); - creator.execute(prefix + 1, ImmutableSet.<String> of()); - - // http://tickets.corp.opscode.com/browse/PL-522 - // assert api.nodeExists(prefix); - assertNotNull(api.getNode(prefix)); - assertNotNull(api.getNode(prefix + 1)); - - strategy.execute(ImmutableSet.of(prefix, prefix + 1)); - assertNull(api.getNode(prefix)); - assertNull(api.getNode(prefix + 1)); - } finally { - api.deleteNode(prefix); - api.deleteNode(prefix + 1); - } - } - -} http://git-wip-us.apache.org/repos/asf/jclouds/blob/8cb2cb44/apis/chef/src/test/java/org/jclouds/chef/strategy/internal/ListCookbookVersionsInEnvironmentImplLiveTest.java ---------------------------------------------------------------------- diff --git a/apis/chef/src/test/java/org/jclouds/chef/strategy/internal/ListCookbookVersionsInEnvironmentImplLiveTest.java b/apis/chef/src/test/java/org/jclouds/chef/strategy/internal/ListCookbookVersionsInEnvironmentImplLiveTest.java deleted file mode 100644 index 5f68fcf..0000000 --- a/apis/chef/src/test/java/org/jclouds/chef/strategy/internal/ListCookbookVersionsInEnvironmentImplLiveTest.java +++ /dev/null @@ -1,217 +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.jclouds.chef.strategy.internal; - -import static com.google.common.collect.Iterables.size; -import static org.testng.Assert.assertTrue; -import static org.testng.Assert.fail; - -import java.io.File; -import java.util.List; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; - -import com.google.common.util.concurrent.ListeningExecutorService; -import com.google.common.util.concurrent.MoreExecutors; -import org.jclouds.chef.ChefApi; -import org.jclouds.chef.domain.ChecksumStatus; -import org.jclouds.chef.domain.CookbookVersion; -import org.jclouds.chef.domain.Metadata; -import org.jclouds.chef.domain.Resource; -import org.jclouds.chef.domain.Sandbox; -import org.jclouds.chef.domain.UploadSandbox; -import org.jclouds.chef.internal.BaseChefLiveTest; -import org.jclouds.io.Payloads; -import org.jclouds.io.payloads.FilePayload; -import org.testng.annotations.AfterClass; -import org.testng.annotations.Test; - -import com.google.common.collect.ImmutableSet; -import com.google.common.hash.Hashing; -import com.google.common.io.Files; -import com.google.common.primitives.Bytes; - -/** - * Tests behavior of {@code ListCookbookVersionsInEnvironmentImpl} strategies - */ -@Test(groups = "live", testName = "ListCookbookVersionsInEnvironmentImplLiveTest") -public class ListCookbookVersionsInEnvironmentImplLiveTest extends BaseChefLiveTest<ChefApi> { - public static final String PREFIX = "jcloudstest-strategy-" + System.getProperty("user.name"); - - private ListCookbookVersionsInEnvironmentImpl strategy; - private CreateNodeAndPopulateAutomaticAttributesImpl creator; - - private ExecutorService testExecutorService; - private ListeningExecutorService testListeningExecutorService; - - @Override - protected void initialize() { - super.initialize(); - - try { - createCookbooksWithMultipleVersions(PREFIX); - createCookbooksWithMultipleVersions(PREFIX + 1); - } catch (Exception e) { - fail("Could not create cookbooks", e); - } - - this.strategy = injector.getInstance(ListCookbookVersionsInEnvironmentImpl.class); - this.testExecutorService = Executors.newFixedThreadPool(5); - this.testListeningExecutorService = MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(5)); - } - - @AfterClass(groups = { "integration", "live" }) - @Override - protected void tearDown() { - api.deleteCookbook(PREFIX, "0.0.0"); - api.deleteCookbook(PREFIX, "1.0.0"); - api.deleteCookbook(PREFIX + 1, "0.0.0"); - api.deleteCookbook(PREFIX + 1, "1.0.0"); - - this.testExecutorService.shutdown(); - this.testListeningExecutorService.shutdown(); - - super.tearDown(); - } - - @Test - public void testExecute() { - assertTrue(size(strategy.execute("_default")) > 0, "Expected one or more elements"); - } - - @Test - public void testExecuteConcurrentlyWithExecutorService() { - assertTrue(size(strategy.execute(testExecutorService, "_default")) > 0, - "Expected one or more elements"); - } - - @Test - public void testExecuteConcurrentlyWithListeningExecutorService() { - assertTrue(size(strategy.execute(testListeningExecutorService, "_default")) > 0, - "Expected one or more elements"); - } - - @Test - public void testExecuteWithNumVersions() { - assertTrue(size(strategy.execute("_default", "2")) > 0, "Expected one or more elements"); - } - - @Test - public void testExecuteConcurrentlyWithNumVersionsAndExecutorService() { - assertTrue(size(strategy.execute(testExecutorService, "_default", "2")) > 0, - "Expected one or more elements"); - } - - @Test - public void testExecuteConcurrentlyWithNumVersionsAndListeningExecutorService() { - assertTrue(size(strategy.execute(testListeningExecutorService, "_default", "2")) > 0, - "Expected one or more elements"); - } - - @Test - public void testExecuteWithNumVersionsAll() { - assertTrue(size(strategy.execute("_default", "all")) > 0, "Expected one or more elements"); - } - - @Test - public void testExecuteConcurrentlyWithNumVersionsAllAndExecutorService() { - assertTrue(size(strategy.execute(testExecutorService, "_default", "all")) > 0, - "Expected one or more elements"); - } - - @Test - public void testExecuteConcurrentlyWithNumVersionsAllAndListeningExecutorService() { - assertTrue(size(strategy.execute(testListeningExecutorService, "_default", "all")) > 0, - "Expected one or more elements"); - } - - private FilePayload uploadContent(String fileName) throws Exception { - // Define the file you want in the cookbook - File file = new File(System.getProperty("user.dir"), fileName); - FilePayload content = Payloads.newFilePayload(file); - content.getContentMetadata().setContentType("application/x-binary"); - - // Get an md5 so that you can see if the server already has it or not - content.getContentMetadata().setContentMD5(Files.asByteSource(file).hash(Hashing.md5()).asBytes()); - - // Note that java collections cannot effectively do equals or hashcodes on - // byte arrays, so let's convert to a list of bytes. - List<Byte> md5 = Bytes.asList(content.getContentMetadata().getContentMD5()); - - // Request an upload site for this file - UploadSandbox site = api.createUploadSandboxForChecksums(ImmutableSet.of(md5)); - assertTrue(site.getChecksums().containsKey(md5), md5 + " not in " + site.getChecksums()); - - try { - // Upload the file contents, if still not uploaded - ChecksumStatus status = site.getChecksums().get(md5); - if (status.needsUpload()) { - api.uploadContent(status.getUrl(), content); - } - Sandbox sandbox = api.commitSandbox(site.getSandboxId(), true); - assertTrue(sandbox.isCompleted(), "Sandbox should be completed after uploading"); - } catch (RuntimeException e) { - api.commitSandbox(site.getSandboxId(), false); - fail("Could not upload content", e); - } - - return content; - } - - private void createCookbooksWithMultipleVersions(String cookbookName) throws Exception { - FilePayload v0content = uploadContent("pom.xml"); - FilePayload v1content = uploadContent("../README.md"); - - // Create the metadata of the cookbook - Metadata metadata = Metadata.builder() // - .name(cookbookName) // - .version("0.0.0") // - .description("Jclouds test uploaded cookbook") // - .maintainer("jclouds") // - .maintainerEmail("[email protected]") // - .license("Apache 2.0") // - .build(); - - // Create new cookbook version - CookbookVersion cookbook = CookbookVersion.builder(cookbookName, "0.0.0") // - .metadata(metadata) // - .rootFile(Resource.builder().fromPayload(v0content).build()) // - .build(); - - // upload the cookbook to the remote server - api.updateCookbook(cookbookName, "0.0.0", cookbook); - - // Create the metadata of the cookbook - metadata = Metadata.builder() // - .name(cookbookName) // - .version("1.0.0") // - .description("Jclouds test uploaded cookbook") // - .maintainer("jclouds") // - .maintainerEmail("[email protected]") // - .license("Apache 2.0") // - .build(); - - // Create a new cookbook version - cookbook = CookbookVersion.builder(cookbookName, "1.0.0") // - .metadata(metadata) // - .rootFile(Resource.builder().fromPayload(v1content).build()) // - .build(); - - // upload the cookbook to the remote server - api.updateCookbook(cookbookName, "1.0.0", cookbook); - } -} http://git-wip-us.apache.org/repos/asf/jclouds/blob/8cb2cb44/apis/chef/src/test/java/org/jclouds/chef/strategy/internal/ListNodesImplLiveTest.java ---------------------------------------------------------------------- diff --git a/apis/chef/src/test/java/org/jclouds/chef/strategy/internal/ListNodesImplLiveTest.java b/apis/chef/src/test/java/org/jclouds/chef/strategy/internal/ListNodesImplLiveTest.java deleted file mode 100644 index 903b998..0000000 --- a/apis/chef/src/test/java/org/jclouds/chef/strategy/internal/ListNodesImplLiveTest.java +++ /dev/null @@ -1,82 +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.jclouds.chef.strategy.internal; - -import static com.google.common.collect.Iterables.size; -import static org.testng.Assert.assertTrue; - -import com.google.common.util.concurrent.ListeningExecutorService; -import com.google.common.util.concurrent.MoreExecutors; -import org.jclouds.chef.ChefApi; -import org.jclouds.chef.internal.BaseChefLiveTest; -import org.testng.annotations.AfterClass; -import org.testng.annotations.Test; - -import com.google.common.collect.ImmutableSet; - -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; - -/** - * Tests behavior of {@code ListNodesImpl} strategies - */ -@Test(groups = "live", testName = "ListNodesImplLiveTest") -public class ListNodesImplLiveTest extends BaseChefLiveTest<ChefApi> { - - private ListNodesImpl strategy; - private CreateNodeAndPopulateAutomaticAttributesImpl creator; - - private ExecutorService testExecutorService; - private ListeningExecutorService testListeningExecutorService; - - @Override - protected void initialize() { - super.initialize(); - this.creator = injector.getInstance(CreateNodeAndPopulateAutomaticAttributesImpl.class); - this.strategy = injector.getInstance(ListNodesImpl.class); - creator.execute(prefix, ImmutableSet.<String> of()); - creator.execute(prefix + 1, ImmutableSet.<String> of()); - - this.testExecutorService = Executors.newFixedThreadPool(5); - this.testListeningExecutorService = MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(5)); - } - - @AfterClass(groups = { "integration", "live" }) - @Override - protected void tearDown() { - api.deleteNode(prefix); - api.deleteNode(prefix + 1); - - this.testExecutorService.shutdown(); - this.testListeningExecutorService.shutdown(); - - super.tearDown(); - } - - @Test - public void testExecute() { - assertTrue(size(strategy.execute()) > 0, "Expected one or more elements"); - } - - public void testExecuteConcurrentlyWithExecutorService() { - assertTrue(size(strategy.execute(testExecutorService)) > 0, "Expected one or more elements"); - } - - public void testExecuteConcurrentlyWithListeningExecutorService() { - assertTrue(size(strategy.execute(testListeningExecutorService)) > 0, "Expected one or more elements"); - } -} http://git-wip-us.apache.org/repos/asf/jclouds/blob/8cb2cb44/apis/chef/src/test/java/org/jclouds/chef/strategy/internal/ListNodesInEnvironmentImplLiveTest.java ---------------------------------------------------------------------- diff --git a/apis/chef/src/test/java/org/jclouds/chef/strategy/internal/ListNodesInEnvironmentImplLiveTest.java b/apis/chef/src/test/java/org/jclouds/chef/strategy/internal/ListNodesInEnvironmentImplLiveTest.java deleted file mode 100644 index f655d52..0000000 --- a/apis/chef/src/test/java/org/jclouds/chef/strategy/internal/ListNodesInEnvironmentImplLiveTest.java +++ /dev/null @@ -1,86 +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.jclouds.chef.strategy.internal; - -import static com.google.common.collect.Iterables.size; -import static org.testng.Assert.assertTrue; - -import com.google.common.util.concurrent.ListeningExecutorService; -import com.google.common.util.concurrent.MoreExecutors; -import org.jclouds.chef.ChefApi; -import org.jclouds.chef.internal.BaseChefLiveTest; -import org.testng.annotations.AfterClass; -import org.testng.annotations.Test; - -import com.google.common.collect.ImmutableSet; - -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; - -/** - * Tests behavior of {@code ListNodesInEnvironmentImpl} strategies - */ -@Test(groups = "live", testName = "ListNodesInEnvironmentImplLiveTest") -public class ListNodesInEnvironmentImplLiveTest extends BaseChefLiveTest<ChefApi> { - - private ListNodesInEnvironmentImpl strategy; - private CreateNodeAndPopulateAutomaticAttributesImpl creator; - - private ExecutorService testExecutorService; - private ListeningExecutorService testListeningExecutorService; - - @Override - protected void initialize() { - super.initialize(); - this.creator = injector.getInstance(CreateNodeAndPopulateAutomaticAttributesImpl.class); - this.strategy = injector.getInstance(ListNodesInEnvironmentImpl.class); - creator.execute(prefix, ImmutableSet.<String>of()); - creator.execute(prefix + 1, ImmutableSet.<String>of()); - - this.testExecutorService = Executors.newFixedThreadPool(5); - this.testListeningExecutorService = MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(5)); - } - - @AfterClass(groups = { "integration", "live" }) - @Override - protected void tearDown() { - api.deleteNode(prefix); - api.deleteNode(prefix + 1); - - this.testExecutorService.shutdown(); - this.testListeningExecutorService.shutdown(); - - super.tearDown(); - } - - @Test - public void testExecute() { - assertTrue(size(strategy.execute("_default")) > 0, "Expected one or more elements"); - } - - @Test - public void testExecuteConcurrentlyWithExecutorService() { - assertTrue(size(strategy.execute(testExecutorService, "_default")) > 0, - "Expected one or more elements"); - } - - @Test - public void testExecuteConcurrentlyWithListeningExecutorService() { - assertTrue(size(strategy.execute(testListeningExecutorService, "_default")) > 0, - "Expected one or more elements"); - } -} http://git-wip-us.apache.org/repos/asf/jclouds/blob/8cb2cb44/apis/chef/src/test/java/org/jclouds/chef/strategy/internal/UpdateAutomaticAttributesOnNodeImplLiveTest.java ---------------------------------------------------------------------- diff --git a/apis/chef/src/test/java/org/jclouds/chef/strategy/internal/UpdateAutomaticAttributesOnNodeImplLiveTest.java b/apis/chef/src/test/java/org/jclouds/chef/strategy/internal/UpdateAutomaticAttributesOnNodeImplLiveTest.java deleted file mode 100644 index a8f7438..0000000 --- a/apis/chef/src/test/java/org/jclouds/chef/strategy/internal/UpdateAutomaticAttributesOnNodeImplLiveTest.java +++ /dev/null @@ -1,61 +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.jclouds.chef.strategy.internal; - -import static org.testng.Assert.assertEquals; - -import java.util.Set; - -import org.jclouds.chef.ChefApi; -import org.jclouds.chef.domain.Node; -import org.jclouds.chef.internal.BaseChefLiveTest; -import org.jclouds.ohai.config.OhaiModule.CurrentUserProvider; -import org.testng.annotations.Test; - -import com.google.common.collect.ImmutableSet; - -/** - * Tests behavior of {@code UpdateAutomaticAttributesOnNodeImpl} strategies - */ -@Test(groups = "live", testName = "UpdateAutomaticAttributesOnNodeImplLiveTest") -public class UpdateAutomaticAttributesOnNodeImplLiveTest extends BaseChefLiveTest<ChefApi> { - - private CurrentUserProvider currentUserProvider; - private UpdateAutomaticAttributesOnNodeImpl strategy; - - @Override - protected void initialize() { - super.initialize(); - this.currentUserProvider = injector.getInstance(CurrentUserProvider.class); - this.strategy = injector.getInstance(UpdateAutomaticAttributesOnNodeImpl.class); - } - - @Test - public void testExecute() { - Set<String> runList = ImmutableSet.of("role[" + prefix + "]"); - try { - api.createNode(Node.builder().name(prefix).runList(runList).environment("_default").build()); - strategy.execute(prefix); - Node node = api.getNode(prefix); - assertEquals(node.getName(), prefix); - assertEquals(node.getRunList(), runList); - assertEquals(node.getAutomaticAttributes().get("current_user").toString(), currentUserProvider.get().toString()); - } finally { - api.deleteNode(prefix); - } - } -} http://git-wip-us.apache.org/repos/asf/jclouds/blob/8cb2cb44/apis/chef/src/test/java/org/jclouds/chef/strategy/internal/UpdateAutomaticAttributesOnNodeImplTest.java ---------------------------------------------------------------------- diff --git a/apis/chef/src/test/java/org/jclouds/chef/strategy/internal/UpdateAutomaticAttributesOnNodeImplTest.java b/apis/chef/src/test/java/org/jclouds/chef/strategy/internal/UpdateAutomaticAttributesOnNodeImplTest.java deleted file mode 100644 index 2e0d198..0000000 --- a/apis/chef/src/test/java/org/jclouds/chef/strategy/internal/UpdateAutomaticAttributesOnNodeImplTest.java +++ /dev/null @@ -1,63 +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.jclouds.chef.strategy.internal; - -import static org.easymock.EasyMock.createMock; -import static org.easymock.EasyMock.expect; -import static org.easymock.EasyMock.replay; -import static org.easymock.EasyMock.verify; - -import java.util.Map; - -import org.jclouds.chef.ChefApi; -import org.jclouds.chef.domain.Node; -import org.jclouds.domain.JsonBall; -import org.testng.annotations.Test; - -import com.google.common.base.Supplier; -import com.google.common.base.Suppliers; -import com.google.common.collect.ImmutableMap; - -/** - * Tests behavior of {@code UpdateAutomaticAttributesOnNodeImpl} - */ -@Test(groups = { "unit" }) -public class UpdateAutomaticAttributesOnNodeImplTest { - - @Test - public void test() { - ChefApi chef = createMock(ChefApi.class); - - Map<String, JsonBall> automatic = ImmutableMap.<String, JsonBall> of(); - Supplier<Map<String, JsonBall>> automaticSupplier = Suppliers.<Map<String, JsonBall>> ofInstance(automatic); - - Node node = Node.builder().name("name").environment("_default").build(); - Node nodeWithAutomatic = Node.builder().name("name").environment("_default").automaticAttributes(automatic) - .build(); - - expect(chef.getNode("name")).andReturn(node); - expect(chef.updateNode(nodeWithAutomatic)).andReturn(null); - - replay(chef); - - UpdateAutomaticAttributesOnNodeImpl updater = new UpdateAutomaticAttributesOnNodeImpl(chef, automaticSupplier); - - updater.execute("name"); - verify(chef); - - } -}
