You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by na...@apache.org on 2014/07/29 00:51:09 UTC

[03/10] Revert "Move jclouds-chef to the main jclouds repo"

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("someone@jclouds.org") //
-            .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("someone@jclouds.org") //
-            .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("someone@jclouds.org") //
-            .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);
-
-   }
-}