Updated Branches: refs/heads/master 5733d694f -> 22f9233e3
Cleanup tests * Use TestNG assertions * Formatted code in compute tests * Removed unnecessary local variables in tests to avoid using them by mistake between independent tests. Project: http://git-wip-us.apache.org/repos/asf/incubator-jclouds-chef/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-jclouds-chef/commit/22f9233e Tree: http://git-wip-us.apache.org/repos/asf/incubator-jclouds-chef/tree/22f9233e Diff: http://git-wip-us.apache.org/repos/asf/incubator-jclouds-chef/diff/22f9233e Branch: refs/heads/master Commit: 22f9233e38083f8c362059c3299df2ea6f129d0d Parents: 5733d69 Author: Ignasi Barrera <[email protected]> Authored: Mon Sep 9 16:20:46 2013 +0200 Committer: Ignasi Barrera <[email protected]> Committed: Tue Sep 10 14:25:05 2013 +0200 ---------------------------------------------------------------------- .../compute/ChefComputeServiceLiveTest.java | 15 +-- ...puteServiceIntegratedChefClientLiveTest.java | 129 +++++++++---------- .../chef/internal/BaseChefApiLiveTest.java | 24 ++-- 3 files changed, 78 insertions(+), 90 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-jclouds-chef/blob/22f9233e/compute/src/test/java/org/jclouds/chef/compute/ChefComputeServiceLiveTest.java ---------------------------------------------------------------------- diff --git a/compute/src/test/java/org/jclouds/chef/compute/ChefComputeServiceLiveTest.java b/compute/src/test/java/org/jclouds/chef/compute/ChefComputeServiceLiveTest.java index 0c8fcc5..67a716a 100644 --- a/compute/src/test/java/org/jclouds/chef/compute/ChefComputeServiceLiveTest.java +++ b/compute/src/test/java/org/jclouds/chef/compute/ChefComputeServiceLiveTest.java @@ -20,10 +20,11 @@ import static com.google.common.collect.Iterables.any; import static com.google.common.collect.Iterables.concat; import static com.google.common.collect.Iterables.getLast; import static org.jclouds.chef.predicates.CookbookVersionPredicates.containsRecipe; -import static org.jclouds.chef.predicates.CookbookVersionPredicates.containsRecipes; import static org.jclouds.compute.options.TemplateOptions.Builder.runScript; import static org.jclouds.reflect.Reflection2.typeToken; import static org.testng.Assert.assertEquals; +import static org.testng.Assert.assertTrue; +import static org.testng.Assert.fail; import java.io.IOException; import java.io.InputStream; @@ -69,14 +70,8 @@ public class ChefComputeServiceLiveTest extends BaseComputeServiceIntegratedChef view.getChefService().updateBootstrapConfigForGroup(group, bootstrap); assertEquals(view.getChefService().getRunListForGroup(group), runList); } else { - assert false : String.format("recipe %s not in %s", recipe, cookbookVersions); + fail(String.format("recipe %s not in %s", recipe, cookbookVersions)); } - - // TODO move this to a unit test - assert any(cookbookVersions, containsRecipe("apache2::mod_proxy")); - assert any(cookbookVersions, containsRecipes("apache2", "apache2::mod_proxy", "apache2::mod_proxy_http")); - assert !any(cookbookVersions, containsRecipe("apache2::bar")); - assert !any(cookbookVersions, containsRecipe("foo::bar")); } @Test(dependsOnMethods = "testCanUpdateRunList") @@ -94,9 +89,9 @@ public class ChefComputeServiceLiveTest extends BaseComputeServiceIntegratedChef URI uri = URI.create("http://" + getLast(node.getPublicAddresses())); InputStream content = computeContext.utils().http().get(uri); String string = Strings2.toStringAndClose(content); - assert string.indexOf("It works!") >= 0 : string; + assertTrue(string.indexOf("It works!") >= 0, + String.format("The default Apache page was not found: %s", string)); } - } @AfterClass(groups = { "integration", "live" }) http://git-wip-us.apache.org/repos/asf/incubator-jclouds-chef/blob/22f9233e/compute/src/test/java/org/jclouds/chef/compute/internal/BaseComputeServiceIntegratedChefClientLiveTest.java ---------------------------------------------------------------------- diff --git a/compute/src/test/java/org/jclouds/chef/compute/internal/BaseComputeServiceIntegratedChefClientLiveTest.java b/compute/src/test/java/org/jclouds/chef/compute/internal/BaseComputeServiceIntegratedChefClientLiveTest.java index 4eca736..4c87592 100644 --- a/compute/src/test/java/org/jclouds/chef/compute/internal/BaseComputeServiceIntegratedChefClientLiveTest.java +++ b/compute/src/test/java/org/jclouds/chef/compute/internal/BaseComputeServiceIntegratedChefClientLiveTest.java @@ -16,6 +16,8 @@ */ package org.jclouds.chef.compute.internal; +import static com.google.common.base.Throwables.propagate; +import java.io.IOException; import java.io.InputStream; import java.util.Properties; import java.util.concurrent.ConcurrentHashMap; @@ -43,82 +45,71 @@ import com.google.inject.Module; /** * @author Adrian Cole */ -public abstract class BaseComputeServiceIntegratedChefClientLiveTest - extends - BaseViewLiveTest<ChefContext> { +public abstract class BaseComputeServiceIntegratedChefClientLiveTest extends BaseViewLiveTest<ChefContext> { - protected TemplateBuilderSpec template; - protected LoginCredentials loginCredentials = LoginCredentials.builder() - .user("root").build(); + protected TemplateBuilderSpec template; + protected LoginCredentials loginCredentials = LoginCredentials.builder().user("root").build(); - // isolate tests from eachother, as default credentialStore is static - protected Module credentialStoreModule = new CredentialStoreModule( - new CopyInputStreamInputSupplierMap( - new ConcurrentHashMap<String, InputSupplier<InputStream>>())); + // isolate tests from each other, as default credentialStore is static + protected Module credentialStoreModule = new CredentialStoreModule(new CopyInputStreamInputSupplierMap( + new ConcurrentHashMap<String, InputSupplier<InputStream>>())); - private String computeProvider; + private String computeProvider; - protected Properties setupComputeProperties() { - Properties overrides = new Properties(); - overrides.setProperty(Constants.PROPERTY_TRUST_ALL_CERTS, "true"); - overrides.setProperty(Constants.PROPERTY_RELAX_HOSTNAME, "true"); - computeProvider = setIfTestSystemPropertyPresent(overrides, provider - + ".compute.provider"); - setIfTestSystemPropertyPresent(overrides, provider - + ".compute.identity"); - setIfTestSystemPropertyPresent(overrides, provider - + ".compute.credential"); - setIfTestSystemPropertyPresent(overrides, provider - + ".compute.endpoint"); - setIfTestSystemPropertyPresent(overrides, provider - + ".compute.api-version"); - setIfTestSystemPropertyPresent(overrides, provider - + ".compute.build-version"); - String spec = setIfTestSystemPropertyPresent(overrides, provider - + ".compute.template"); - if (spec != null) { - template = TemplateBuilderSpec.parse(spec); - if (template.getLoginUser() != null) { - Iterable<String> userPass = Splitter.on(':').split( - template.getLoginUser()); - Builder loginCredentialsBuilder = LoginCredentials.builder(); - loginCredentialsBuilder.user(Iterables.get(userPass, 0)); - if (Iterables.size(userPass) == 2) - loginCredentialsBuilder - .password(Iterables.get(userPass, 1)); - if (template.getAuthenticateSudo() != null) - loginCredentialsBuilder.authenticateSudo(template - .getAuthenticateSudo()); - loginCredentials = loginCredentialsBuilder.build(); - } - } - return overrides; - } + protected Properties setupComputeProperties() { + Properties overrides = new Properties(); + overrides.setProperty(Constants.PROPERTY_TRUST_ALL_CERTS, "true"); + overrides.setProperty(Constants.PROPERTY_RELAX_HOSTNAME, "true"); + computeProvider = setIfTestSystemPropertyPresent(overrides, provider + ".compute.provider"); + setIfTestSystemPropertyPresent(overrides, provider + ".compute.identity"); + setIfTestSystemPropertyPresent(overrides, provider + ".compute.credential"); + setIfTestSystemPropertyPresent(overrides, provider + ".compute.endpoint"); + setIfTestSystemPropertyPresent(overrides, provider + ".compute.api-version"); + setIfTestSystemPropertyPresent(overrides, provider + ".compute.build-version"); + String spec = setIfTestSystemPropertyPresent(overrides, provider + ".compute.template"); + if (spec != null) { + template = TemplateBuilderSpec.parse(spec); + if (template.getLoginUser() != null) { + Iterable<String> userPass = Splitter.on(':').split(template.getLoginUser()); + Builder loginCredentialsBuilder = LoginCredentials.builder(); + loginCredentialsBuilder.user(Iterables.get(userPass, 0)); + if (Iterables.size(userPass) == 2) + loginCredentialsBuilder.password(Iterables.get(userPass, 1)); + if (template.getAuthenticateSudo() != null) + loginCredentialsBuilder.authenticateSudo(template.getAuthenticateSudo()); + loginCredentials = loginCredentialsBuilder.build(); + } + } + return overrides; + } - @Override - protected Iterable<Module> setupModules() { - return ImmutableSet.<Module> of(getLoggingModule(), - credentialStoreModule, getSshModule()); - } + @Override + protected Iterable<Module> setupModules() { + return ImmutableSet.<Module> of(getLoggingModule(), credentialStoreModule, getSshModule()); + } - protected Module getSshModule() { - return new SshjSshClientModule(); - } + protected Module getSshModule() { + return new SshjSshClientModule(); + } - protected volatile ComputeServiceContext computeContext; + protected volatile ComputeServiceContext computeContext; - @Override - protected void initializeContext() { - super.initializeContext(); - computeContext = ContextBuilder.newBuilder(computeProvider) - .modules(setupModules()).overrides(setupComputeProperties()) - .buildView(ComputeServiceContext.class); - } + @Override + protected void initializeContext() { + super.initializeContext(); + computeContext = ContextBuilder.newBuilder(computeProvider).modules(setupModules()) + .overrides(setupComputeProperties()).buildView(ComputeServiceContext.class); + } - @AfterClass(groups = {"integration", "live"}) - @Override - protected void tearDownContext() { - Closeables.closeQuietly(computeContext); - super.tearDownContext(); - } + @AfterClass(groups = { "integration", "live" }) + @Override + protected void tearDownContext() { + try { + Closeables.close(computeContext, true); + } catch (IOException e) { + throw propagate(e); + } finally { + super.tearDownContext(); + } + } } http://git-wip-us.apache.org/repos/asf/incubator-jclouds-chef/blob/22f9233e/core/src/test/java/org/jclouds/chef/internal/BaseChefApiLiveTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/jclouds/chef/internal/BaseChefApiLiveTest.java b/core/src/test/java/org/jclouds/chef/internal/BaseChefApiLiveTest.java index 0130821..0cd9562 100644 --- a/core/src/test/java/org/jclouds/chef/internal/BaseChefApiLiveTest.java +++ b/core/src/test/java/org/jclouds/chef/internal/BaseChefApiLiveTest.java @@ -46,6 +46,7 @@ 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; @@ -76,10 +77,9 @@ public abstract class BaseChefApiLiveTest<A extends ChefApi> extends BaseChefLiv // It may take a bit until the search index is populated protected int maxWaitForIndexInMs = 60000; - - private Node node; - private Role role; - protected DatabagItem databagItem; + + // 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 @@ -103,7 +103,8 @@ public abstract class BaseChefApiLiveTest<A extends ChefApi> extends BaseChefLiv if (status.needsUpload()) { api.uploadContent(status.getUrl(), content); } - api.commitSandbox(site.getSandboxId(), true); + 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"); @@ -210,7 +211,7 @@ public abstract class BaseChefApiLiveTest<A extends ChefApi> extends BaseChefLiv public void testCreateNode() throws Exception { api.deleteNode(PREFIX); api.createNode(Node.builder().name(PREFIX).runListElement("role[" + PREFIX + "]").environment("_default").build()); - node = api.getNode(PREFIX); + Node node = api.getNode(PREFIX); // TODO check recipes assertNotNull(node, "Created node should not be null"); Set<String> nodes = api.listNodes(); @@ -235,7 +236,7 @@ public abstract class BaseChefApiLiveTest<A extends ChefApi> extends BaseChefLiv public void testCreateRole() throws Exception { api.deleteRole(PREFIX); api.createRole(Role.builder().name(PREFIX).runListElement("recipe[java]").build()); - role = api.getRole(PREFIX); + Role role = api.getRole(PREFIX); assertNotNull(role, "Created role should not be null"); assertEquals(role.getName(), PREFIX); assertEquals(role.getRunList(), Collections.singleton("recipe[java]")); @@ -272,7 +273,8 @@ public abstract class BaseChefApiLiveTest<A extends ChefApi> extends BaseChefLiv Properties config = new Properties(); config.setProperty("foo", "bar"); api.deleteDatabagItem(PREFIX, PREFIX); - databagItem = api.createDatabagItem(PREFIX, new DatabagItem("config", json.toJson(config))); + 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"); @@ -401,7 +403,7 @@ public abstract class BaseChefApiLiveTest<A extends ChefApi> extends BaseChefLiv assertNotNull(results); if (results.size() > 0) { assertEquals(results.size(), 1); - assertEquals(results.iterator().next().getId(), databagItem.getId()); + assertEquals(results.iterator().next().getId(), databagitemId); return true; } else { // The index may still not be populated @@ -410,7 +412,7 @@ public abstract class BaseChefApiLiveTest<A extends ChefApi> extends BaseChefLiv } }, maxWaitForIndexInMs, 5000L, MILLISECONDS); - SearchOptions options = SearchOptions.Builder.query("id:" + databagItem.getId()); + SearchOptions options = SearchOptions.Builder.query("id:" + databagitemId); assertTrue(waitForIndex.apply(options)); } @@ -475,7 +477,7 @@ public abstract class BaseChefApiLiveTest<A extends ChefApi> extends BaseChefLiv public void testListEnvironmentNodes() { api.deleteNode(ENV_NODE); api.createNode(Node.builder().name(ENV_NODE).runListElement("role[" + PREFIX + "]").environment(PREFIX).build()); - node = api.getNode(ENV_NODE); + Node node = api.getNode(ENV_NODE); assertNotNull(node, "Created node should not be null"); Set<String> nodeList = api.listEnvironmentNodes(PREFIX); assertTrue(!nodeList.isEmpty());
