mirror of https://github.com/apache/jclouds.git
Using the new context view (see http://code.google.com/p/jclouds/issues/detail?id=904) in runatcloud-tweetstore
This commit is contained in:
parent
a9f62a8c77
commit
8be906301e
|
@ -0,0 +1,65 @@
|
||||||
|
/**
|
||||||
|
* Licensed to jclouds, Inc. (jclouds) under one or more
|
||||||
|
* contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
* regarding copyright ownership. jclouds 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.demo.paas.config;
|
||||||
|
|
||||||
|
import static com.google.common.base.Preconditions.checkNotNull;
|
||||||
|
import static com.google.inject.name.Names.bindProperties;
|
||||||
|
import static org.jclouds.Constants.*;
|
||||||
|
|
||||||
|
import java.util.Properties;
|
||||||
|
|
||||||
|
import javax.servlet.ServletContext;
|
||||||
|
import javax.ws.rs.core.UriBuilder;
|
||||||
|
|
||||||
|
import org.jclouds.demo.tweetstore.config.util.PropertiesLoader;
|
||||||
|
|
||||||
|
import com.google.inject.AbstractModule;
|
||||||
|
import com.sun.jersey.api.uri.UriBuilderImpl;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Andrew Phillips
|
||||||
|
*/
|
||||||
|
public class HttpClientModule extends AbstractModule {
|
||||||
|
private final ServletContext context;
|
||||||
|
|
||||||
|
HttpClientModule(ServletContext context) {
|
||||||
|
this.context = context;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void configure() {
|
||||||
|
// URL connection defaults
|
||||||
|
Properties toBind = defaultProperties();
|
||||||
|
toBind.putAll(checkNotNull(new PropertiesLoader(context).get(), "properties"));
|
||||||
|
toBind.putAll(System.getProperties());
|
||||||
|
bindProperties(binder(), toBind);
|
||||||
|
bind(UriBuilder.class).to(UriBuilderImpl.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Properties defaultProperties() {
|
||||||
|
Properties props = new Properties();
|
||||||
|
props.setProperty(PROPERTY_MAX_CONNECTIONS_PER_CONTEXT, 20 + "");
|
||||||
|
props.setProperty(PROPERTY_MAX_CONNECTIONS_PER_HOST, 0 + "");
|
||||||
|
props.setProperty(PROPERTY_SO_TIMEOUT, 60000 + "");
|
||||||
|
props.setProperty(PROPERTY_CONNECTION_TIMEOUT, 60000 + "");
|
||||||
|
props.setProperty(PROPERTY_USER_THREADS, 0 + "");
|
||||||
|
props.setProperty(PROPERTY_IO_WORKER_THREADS, 20 + "");
|
||||||
|
return props;
|
||||||
|
}
|
||||||
|
}
|
|
@ -19,30 +19,22 @@
|
||||||
package org.jclouds.demo.paas.config;
|
package org.jclouds.demo.paas.config;
|
||||||
|
|
||||||
import static com.google.common.base.Preconditions.checkNotNull;
|
import static com.google.common.base.Preconditions.checkNotNull;
|
||||||
import static com.google.inject.name.Names.bindProperties;
|
|
||||||
import static java.util.concurrent.TimeUnit.SECONDS;
|
import static java.util.concurrent.TimeUnit.SECONDS;
|
||||||
|
|
||||||
import java.util.Properties;
|
|
||||||
|
|
||||||
import javax.servlet.ServletContext;
|
import javax.servlet.ServletContext;
|
||||||
import javax.servlet.ServletContextEvent;
|
import javax.servlet.ServletContextEvent;
|
||||||
import javax.servlet.ServletContextListener;
|
import javax.servlet.ServletContextListener;
|
||||||
import javax.ws.rs.core.UriBuilder;
|
|
||||||
|
|
||||||
import org.jclouds.PropertiesBuilder;
|
|
||||||
import org.jclouds.concurrent.config.ExecutorServiceModule;
|
import org.jclouds.concurrent.config.ExecutorServiceModule;
|
||||||
import org.jclouds.demo.paas.PlatformServices;
|
import org.jclouds.demo.paas.PlatformServices;
|
||||||
import org.jclouds.demo.paas.service.scheduler.Scheduler;
|
import org.jclouds.demo.paas.service.scheduler.Scheduler;
|
||||||
import org.jclouds.demo.paas.service.taskqueue.TaskQueue;
|
import org.jclouds.demo.paas.service.taskqueue.TaskQueue;
|
||||||
import org.jclouds.demo.tweetstore.config.util.PropertiesLoader;
|
|
||||||
import org.jclouds.http.HttpCommandExecutorService;
|
import org.jclouds.http.HttpCommandExecutorService;
|
||||||
import org.jclouds.http.config.JavaUrlHttpCommandExecutorServiceModule;
|
import org.jclouds.http.config.JavaUrlHttpCommandExecutorServiceModule;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
import com.google.common.collect.ImmutableMap;
|
||||||
import com.google.common.collect.ImmutableMap.Builder;
|
import com.google.common.collect.ImmutableMap.Builder;
|
||||||
import com.google.inject.AbstractModule;
|
|
||||||
import com.google.inject.Guice;
|
import com.google.inject.Guice;
|
||||||
import com.sun.jersey.api.uri.UriBuilderImpl;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Andrew Phillips
|
* @author Andrew Phillips
|
||||||
|
@ -69,17 +61,8 @@ public class PlatformServicesInitializer implements ServletContextListener {
|
||||||
final ServletContext context) {
|
final ServletContext context) {
|
||||||
return Guice.createInjector(new ExecutorServiceModule(),
|
return Guice.createInjector(new ExecutorServiceModule(),
|
||||||
new JavaUrlHttpCommandExecutorServiceModule(),
|
new JavaUrlHttpCommandExecutorServiceModule(),
|
||||||
new AbstractModule() {
|
new HttpClientModule(context))
|
||||||
@Override
|
.getInstance(HttpCommandExecutorService.class);
|
||||||
protected void configure() {
|
|
||||||
// URL connection defaults
|
|
||||||
Properties toBind = new PropertiesBuilder().build();
|
|
||||||
toBind.putAll(checkNotNull(new PropertiesLoader(context).get(), "properties"));
|
|
||||||
toBind.putAll(System.getProperties());
|
|
||||||
bindProperties(binder(), toBind);
|
|
||||||
bind(UriBuilder.class).to(UriBuilderImpl.class);
|
|
||||||
}
|
|
||||||
}).getInstance(HttpCommandExecutorService.class);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected static String getBaseUrl(ServletContext context) {
|
protected static String getBaseUrl(ServletContext context) {
|
||||||
|
|
|
@ -38,8 +38,8 @@ import java.util.Set;
|
||||||
import javax.servlet.ServletContext;
|
import javax.servlet.ServletContext;
|
||||||
import javax.servlet.ServletContextEvent;
|
import javax.servlet.ServletContextEvent;
|
||||||
|
|
||||||
|
import org.jclouds.ContextBuilder;
|
||||||
import org.jclouds.blobstore.BlobStoreContext;
|
import org.jclouds.blobstore.BlobStoreContext;
|
||||||
import org.jclouds.blobstore.BlobStoreContextBuilder;
|
|
||||||
import org.jclouds.demo.paas.PlatformServices;
|
import org.jclouds.demo.paas.PlatformServices;
|
||||||
import org.jclouds.demo.paas.service.taskqueue.TaskQueue;
|
import org.jclouds.demo.paas.service.taskqueue.TaskQueue;
|
||||||
import org.jclouds.demo.tweetstore.config.util.CredentialsCollector;
|
import org.jclouds.demo.tweetstore.config.util.CredentialsCollector;
|
||||||
|
@ -70,7 +70,7 @@ import com.google.inject.servlet.ServletModule;
|
||||||
* @author Adrian Cole
|
* @author Adrian Cole
|
||||||
*/
|
*/
|
||||||
public class GuiceServletConfig extends GuiceServletContextListener {
|
public class GuiceServletConfig extends GuiceServletContextListener {
|
||||||
private Map<String, BlobStoreContext<?, ?>> providerTypeToBlobStoreMap;
|
private Map<String, BlobStoreContext> providerTypeToBlobStoreMap;
|
||||||
private Twitter twitterClient;
|
private Twitter twitterClient;
|
||||||
private String container;
|
private String container;
|
||||||
private TaskQueue queue;
|
private TaskQueue queue;
|
||||||
|
@ -100,8 +100,8 @@ public class GuiceServletConfig extends GuiceServletContextListener {
|
||||||
// instantiate and store references to all blobstores by provider name
|
// instantiate and store references to all blobstores by provider name
|
||||||
providerTypeToBlobStoreMap = Maps.newHashMap();
|
providerTypeToBlobStoreMap = Maps.newHashMap();
|
||||||
for (String hint : getBlobstoreContexts(props)) {
|
for (String hint : getBlobstoreContexts(props)) {
|
||||||
providerTypeToBlobStoreMap.put(hint, BlobStoreContextBuilder
|
providerTypeToBlobStoreMap.put(hint, ContextBuilder.newBuilder(hint)
|
||||||
.newBuilder(hint).modules(modules).overrides(props).build());
|
.modules(modules).overrides(props).build(BlobStoreContext.class));
|
||||||
}
|
}
|
||||||
|
|
||||||
// get a queue for submitting store tweet requests and the application's base URL
|
// get a queue for submitting store tweet requests and the application's base URL
|
||||||
|
@ -127,7 +127,7 @@ public class GuiceServletConfig extends GuiceServletContextListener {
|
||||||
return Guice.createInjector(new ServletModule() {
|
return Guice.createInjector(new ServletModule() {
|
||||||
@Override
|
@Override
|
||||||
protected void configureServlets() {
|
protected void configureServlets() {
|
||||||
bind(new TypeLiteral<Map<String, BlobStoreContext<?, ?>>>() {})
|
bind(new TypeLiteral<Map<String, BlobStoreContext>>() {})
|
||||||
.toInstance(providerTypeToBlobStoreMap);
|
.toInstance(providerTypeToBlobStoreMap);
|
||||||
bind(Twitter.class).toInstance(twitterClient);
|
bind(Twitter.class).toInstance(twitterClient);
|
||||||
bind(TaskQueue.class).toInstance(queue);
|
bind(TaskQueue.class).toInstance(queue);
|
||||||
|
@ -144,7 +144,7 @@ public class GuiceServletConfig extends GuiceServletContextListener {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void contextDestroyed(ServletContextEvent servletContextEvent) {
|
public void contextDestroyed(ServletContextEvent servletContextEvent) {
|
||||||
for (BlobStoreContext<?, ?> context : providerTypeToBlobStoreMap.values()) {
|
for (BlobStoreContext context : providerTypeToBlobStoreMap.values()) {
|
||||||
context.close();
|
context.close();
|
||||||
}
|
}
|
||||||
queue.destroy();
|
queue.destroy();
|
||||||
|
|
|
@ -54,14 +54,14 @@ public class AddTweetsController extends HttpServlet implements
|
||||||
|
|
||||||
/** The serialVersionUID */
|
/** The serialVersionUID */
|
||||||
private static final long serialVersionUID = 3888348023150822683L;
|
private static final long serialVersionUID = 3888348023150822683L;
|
||||||
private final Map<String, BlobStoreContext<?, ?>> contexts;
|
private final Map<String, BlobStoreContext> contexts;
|
||||||
private final ServiceToStoredTweetStatuses blobStoreContextToContainerResult;
|
private final ServiceToStoredTweetStatuses blobStoreContextToContainerResult;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
protected Logger logger = Logger.NULL;
|
protected Logger logger = Logger.NULL;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
AddTweetsController(Map<String, BlobStoreContext<?, ?>> contexts,
|
AddTweetsController(Map<String, BlobStoreContext> contexts,
|
||||||
ServiceToStoredTweetStatuses blobStoreContextToContainerResult) {
|
ServiceToStoredTweetStatuses blobStoreContextToContainerResult) {
|
||||||
this.contexts = contexts;
|
this.contexts = contexts;
|
||||||
this.blobStoreContextToContainerResult = blobStoreContextToContainerResult;
|
this.blobStoreContextToContainerResult = blobStoreContextToContainerResult;
|
||||||
|
|
|
@ -65,7 +65,7 @@ public class EnqueueStoresController extends HttpServlet {
|
||||||
protected Logger logger = Logger.NULL;
|
protected Logger logger = Logger.NULL;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public EnqueueStoresController(Map<String, BlobStoreContext<?, ?>> contexts, TaskQueue taskQueue,
|
public EnqueueStoresController(Map<String, BlobStoreContext> contexts, TaskQueue taskQueue,
|
||||||
@Named(PaasConstants.PROPERTY_PLATFORM_BASE_URL) String baseUrl) {
|
@Named(PaasConstants.PROPERTY_PLATFORM_BASE_URL) String baseUrl) {
|
||||||
contextNames = contexts.keySet();
|
contextNames = contexts.keySet();
|
||||||
this.taskQueue = taskQueue;
|
this.taskQueue = taskQueue;
|
||||||
|
|
|
@ -75,7 +75,7 @@ public class StoreTweetsController extends HttpServlet {
|
||||||
/** The serialVersionUID */
|
/** The serialVersionUID */
|
||||||
private static final long serialVersionUID = 7215420527854203714L;
|
private static final long serialVersionUID = 7215420527854203714L;
|
||||||
|
|
||||||
private final Map<String, BlobStoreContext<?, ?>> contexts;
|
private final Map<String, BlobStoreContext> contexts;
|
||||||
private final Twitter client;
|
private final Twitter client;
|
||||||
private final String container;
|
private final String container;
|
||||||
|
|
||||||
|
@ -84,7 +84,7 @@ public class StoreTweetsController extends HttpServlet {
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
public StoreTweetsController(Map<String, BlobStoreContext<?, ?>> contexts,
|
public StoreTweetsController(Map<String, BlobStoreContext> contexts,
|
||||||
@Named(TweetStoreConstants.PROPERTY_TWEETSTORE_CONTAINER) String container, Twitter client) {
|
@Named(TweetStoreConstants.PROPERTY_TWEETSTORE_CONTAINER) String container, Twitter client) {
|
||||||
this.container = container;
|
this.container = container;
|
||||||
this.contexts = contexts;
|
this.contexts = contexts;
|
||||||
|
@ -93,7 +93,7 @@ public class StoreTweetsController extends HttpServlet {
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
public void addMyTweets(String contextName, Iterable<Status> responseList) {
|
public void addMyTweets(String contextName, Iterable<Status> responseList) {
|
||||||
BlobStoreContext<?, ?> context = checkNotNull(contexts.get(contextName), "no context for " + contextName + " in "
|
BlobStoreContext context = checkNotNull(contexts.get(contextName), "no context for " + contextName + " in "
|
||||||
+ contexts.keySet());
|
+ contexts.keySet());
|
||||||
BlobMap map = context.createBlobMap(container);
|
BlobMap map = context.createBlobMap(container);
|
||||||
for (Status status : responseList) {
|
for (Status status : responseList) {
|
||||||
|
|
|
@ -18,6 +18,7 @@
|
||||||
*/
|
*/
|
||||||
package org.jclouds.demo.tweetstore.functions;
|
package org.jclouds.demo.tweetstore.functions;
|
||||||
|
|
||||||
|
import java.net.URI;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
@ -27,6 +28,7 @@ import javax.inject.Inject;
|
||||||
import javax.inject.Named;
|
import javax.inject.Named;
|
||||||
import javax.inject.Singleton;
|
import javax.inject.Singleton;
|
||||||
|
|
||||||
|
import org.jclouds.Context;
|
||||||
import org.jclouds.blobstore.BlobMap;
|
import org.jclouds.blobstore.BlobMap;
|
||||||
import org.jclouds.blobstore.BlobStoreContext;
|
import org.jclouds.blobstore.BlobStoreContext;
|
||||||
import org.jclouds.demo.tweetstore.domain.StoredTweetStatus;
|
import org.jclouds.demo.tweetstore.domain.StoredTweetStatus;
|
||||||
|
@ -39,11 +41,11 @@ import com.google.common.collect.Iterables;
|
||||||
@Singleton
|
@Singleton
|
||||||
public class ServiceToStoredTweetStatuses implements Function<String, Iterable<StoredTweetStatus>> {
|
public class ServiceToStoredTweetStatuses implements Function<String, Iterable<StoredTweetStatus>> {
|
||||||
|
|
||||||
private final Map<String, BlobStoreContext<?, ?>> contexts;
|
private final Map<String, BlobStoreContext> contexts;
|
||||||
private final String container;
|
private final String container;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public ServiceToStoredTweetStatuses(Map<String, BlobStoreContext<?, ?>> contexts,
|
public ServiceToStoredTweetStatuses(Map<String, BlobStoreContext> contexts,
|
||||||
@Named(TweetStoreConstants.PROPERTY_TWEETSTORE_CONTAINER) String container) {
|
@Named(TweetStoreConstants.PROPERTY_TWEETSTORE_CONTAINER) String container) {
|
||||||
this.contexts = contexts;
|
this.contexts = contexts;
|
||||||
this.container = container;
|
this.container = container;
|
||||||
|
@ -53,8 +55,8 @@ public class ServiceToStoredTweetStatuses implements Function<String, Iterable<S
|
||||||
protected Logger logger = Logger.NULL;
|
protected Logger logger = Logger.NULL;
|
||||||
|
|
||||||
public Iterable<StoredTweetStatus> apply(String service) {
|
public Iterable<StoredTweetStatus> apply(String service) {
|
||||||
BlobStoreContext<?, ?> context = contexts.get(service);
|
BlobStoreContext context = contexts.get(service);
|
||||||
String host = context.getProviderSpecificContext().getEndpoint().getHost();
|
String host = URI.create(context.unwrap(Context.class).getProviderMetadata().getEndpoint()).getHost();
|
||||||
try {
|
try {
|
||||||
BlobMap blobMap = context.createBlobMap(container);
|
BlobMap blobMap = context.createBlobMap(container);
|
||||||
Set<String> blobs = blobMap.keySet();
|
Set<String> blobs = blobMap.keySet();
|
||||||
|
|
|
@ -25,8 +25,8 @@ import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.concurrent.ExecutionException;
|
import java.util.concurrent.ExecutionException;
|
||||||
|
|
||||||
|
import org.jclouds.ContextBuilder;
|
||||||
import org.jclouds.blobstore.BlobStoreContext;
|
import org.jclouds.blobstore.BlobStoreContext;
|
||||||
import org.jclouds.blobstore.BlobStoreContextBuilder;
|
|
||||||
import org.jclouds.blobstore.TransientApiMetadata;
|
import org.jclouds.blobstore.TransientApiMetadata;
|
||||||
import org.jclouds.blobstore.domain.Blob;
|
import org.jclouds.blobstore.domain.Blob;
|
||||||
import org.jclouds.demo.tweetstore.domain.StoredTweetStatus;
|
import org.jclouds.demo.tweetstore.domain.StoredTweetStatus;
|
||||||
|
@ -46,12 +46,12 @@ import com.google.common.collect.ImmutableSet;
|
||||||
@Test(groups = "unit")
|
@Test(groups = "unit")
|
||||||
public class AddTweetsControllerTest {
|
public class AddTweetsControllerTest {
|
||||||
|
|
||||||
Map<String, BlobStoreContext<?, ?>> createServices(String container) throws InterruptedException,
|
Map<String, BlobStoreContext> createServices(String container) throws InterruptedException,
|
||||||
ExecutionException {
|
ExecutionException {
|
||||||
Map<String, BlobStoreContext<?, ?>> services = Maps.newHashMap();
|
Map<String, BlobStoreContext> services = Maps.newHashMap();
|
||||||
TransientApiMetadata transientApiMetadata = TransientApiMetadata.builder().build();
|
TransientApiMetadata transientApiMetadata = TransientApiMetadata.builder().build();
|
||||||
for (String name : new String[] { "1", "2" }) {
|
for (String name : new String[] { "1", "2" }) {
|
||||||
BlobStoreContext<?, ?> context = BlobStoreContextBuilder.newBuilder(transientApiMetadata).build();
|
BlobStoreContext context = ContextBuilder.newBuilder(transientApiMetadata).build(BlobStoreContext.class);
|
||||||
context.getAsyncBlobStore().createContainerInLocation(null, container).get();
|
context.getAsyncBlobStore().createContainerInLocation(null, container).get();
|
||||||
Blob blob = context.getAsyncBlobStore().blobBuilder("1").build();
|
Blob blob = context.getAsyncBlobStore().blobBuilder("1").build();
|
||||||
blob.getMetadata().getUserMetadata().put(TweetStoreConstants.SENDER_NAME, "frank");
|
blob.getMetadata().getUserMetadata().put(TweetStoreConstants.SENDER_NAME, "frank");
|
||||||
|
@ -64,7 +64,7 @@ public class AddTweetsControllerTest {
|
||||||
|
|
||||||
public void testStoreTweets() throws IOException, InterruptedException, ExecutionException {
|
public void testStoreTweets() throws IOException, InterruptedException, ExecutionException {
|
||||||
String container = "container";
|
String container = "container";
|
||||||
Map<String, BlobStoreContext<?, ?>> contexts = createServices(container);
|
Map<String, BlobStoreContext> contexts = createServices(container);
|
||||||
|
|
||||||
ServiceToStoredTweetStatuses function = new ServiceToStoredTweetStatuses(contexts, container);
|
ServiceToStoredTweetStatuses function = new ServiceToStoredTweetStatuses(contexts, container);
|
||||||
AddTweetsController controller = new AddTweetsController(contexts, function);
|
AddTweetsController controller = new AddTweetsController(contexts, function);
|
||||||
|
|
|
@ -23,8 +23,8 @@ import static org.easymock.EasyMock.*;
|
||||||
import java.net.URI;
|
import java.net.URI;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
import org.jclouds.ContextBuilder;
|
||||||
import org.jclouds.blobstore.BlobStoreContext;
|
import org.jclouds.blobstore.BlobStoreContext;
|
||||||
import org.jclouds.blobstore.BlobStoreContextBuilder;
|
|
||||||
import org.jclouds.blobstore.TransientApiMetadata;
|
import org.jclouds.blobstore.TransientApiMetadata;
|
||||||
import org.jclouds.demo.paas.RunnableHttpRequest;
|
import org.jclouds.demo.paas.RunnableHttpRequest;
|
||||||
import org.jclouds.demo.paas.RunnableHttpRequest.Factory;
|
import org.jclouds.demo.paas.RunnableHttpRequest.Factory;
|
||||||
|
@ -43,16 +43,16 @@ import com.google.common.collect.ImmutableMultimap;
|
||||||
@Test(groups = "unit")
|
@Test(groups = "unit")
|
||||||
public class EnqueueStoresControllerTest {
|
public class EnqueueStoresControllerTest {
|
||||||
|
|
||||||
Map<String, BlobStoreContext<?, ?>> createBlobStores() {
|
Map<String, BlobStoreContext> createBlobStores() {
|
||||||
TransientApiMetadata transientApiMetadata = TransientApiMetadata.builder().build();
|
TransientApiMetadata transientApiMetadata = TransientApiMetadata.builder().build();
|
||||||
Map<String, BlobStoreContext<?, ?>> contexts = ImmutableMap.<String, BlobStoreContext<?, ?>>of(
|
Map<String, BlobStoreContext> contexts = ImmutableMap.<String, BlobStoreContext>of(
|
||||||
"test1", BlobStoreContextBuilder.newBuilder(transientApiMetadata).build(),
|
"test1", ContextBuilder.newBuilder(transientApiMetadata).build(BlobStoreContext.class),
|
||||||
"test2", BlobStoreContextBuilder.newBuilder(transientApiMetadata).build());
|
"test2", ContextBuilder.newBuilder(transientApiMetadata).build(BlobStoreContext.class));
|
||||||
return contexts;
|
return contexts;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testEnqueueStores() {
|
public void testEnqueueStores() {
|
||||||
Map<String, BlobStoreContext<?, ?>> stores = createBlobStores();
|
Map<String, BlobStoreContext> stores = createBlobStores();
|
||||||
TaskQueue taskQueue = createMock(TaskQueue.class);
|
TaskQueue taskQueue = createMock(TaskQueue.class);
|
||||||
Factory httpRequestFactory = createMock(Factory.class);
|
Factory httpRequestFactory = createMock(Factory.class);
|
||||||
EnqueueStoresController function = new EnqueueStoresController(stores,
|
EnqueueStoresController function = new EnqueueStoresController(stores,
|
||||||
|
|
|
@ -30,9 +30,9 @@ import java.util.Map;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
import java.util.concurrent.ExecutionException;
|
import java.util.concurrent.ExecutionException;
|
||||||
|
|
||||||
|
import org.jclouds.ContextBuilder;
|
||||||
import org.jclouds.blobstore.BlobMap;
|
import org.jclouds.blobstore.BlobMap;
|
||||||
import org.jclouds.blobstore.BlobStoreContext;
|
import org.jclouds.blobstore.BlobStoreContext;
|
||||||
import org.jclouds.blobstore.BlobStoreContextBuilder;
|
|
||||||
import org.jclouds.blobstore.TransientApiMetadata;
|
import org.jclouds.blobstore.TransientApiMetadata;
|
||||||
import org.jclouds.blobstore.domain.Blob;
|
import org.jclouds.blobstore.domain.Blob;
|
||||||
import org.jclouds.demo.tweetstore.reference.TweetStoreConstants;
|
import org.jclouds.demo.tweetstore.reference.TweetStoreConstants;
|
||||||
|
@ -57,19 +57,19 @@ public class StoreTweetsControllerTest {
|
||||||
return createMock(Twitter.class);
|
return createMock(Twitter.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
Map<String, BlobStoreContext<?, ?>> createBlobStores() throws InterruptedException, ExecutionException {
|
Map<String, BlobStoreContext> createBlobStores() throws InterruptedException, ExecutionException {
|
||||||
TransientApiMetadata transientApiMetadata = TransientApiMetadata.builder().build();
|
TransientApiMetadata transientApiMetadata = TransientApiMetadata.builder().build();
|
||||||
Map<String, BlobStoreContext<?, ?>> contexts = ImmutableMap.<String, BlobStoreContext<?, ?>>of(
|
Map<String, BlobStoreContext> contexts = ImmutableMap.<String, BlobStoreContext>of(
|
||||||
"test1", BlobStoreContextBuilder.newBuilder(transientApiMetadata).build(),
|
"test1", ContextBuilder.newBuilder(transientApiMetadata).build(BlobStoreContext.class),
|
||||||
"test2", BlobStoreContextBuilder.newBuilder(transientApiMetadata).build());
|
"test2", ContextBuilder.newBuilder(transientApiMetadata).build(BlobStoreContext.class));
|
||||||
for (BlobStoreContext<?, ?> blobstore : contexts.values()) {
|
for (BlobStoreContext blobstore : contexts.values()) {
|
||||||
blobstore.getAsyncBlobStore().createContainerInLocation(null, "favo").get();
|
blobstore.getAsyncBlobStore().createContainerInLocation(null, "favo").get();
|
||||||
}
|
}
|
||||||
return contexts;
|
return contexts;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testStoreTweets() throws IOException, InterruptedException, ExecutionException {
|
public void testStoreTweets() throws IOException, InterruptedException, ExecutionException {
|
||||||
Map<String, BlobStoreContext<?, ?>> stores = createBlobStores();
|
Map<String, BlobStoreContext> stores = createBlobStores();
|
||||||
StoreTweetsController function = new StoreTweetsController(stores, "favo", createTwitter());
|
StoreTweetsController function = new StoreTweetsController(stores, "favo", createTwitter());
|
||||||
|
|
||||||
User frank = createMock(User.class);
|
User frank = createMock(User.class);
|
||||||
|
@ -101,7 +101,7 @@ public class StoreTweetsControllerTest {
|
||||||
verify(jimmy);
|
verify(jimmy);
|
||||||
verify(jimmyStatus);
|
verify(jimmyStatus);
|
||||||
|
|
||||||
for (Entry<String, BlobStoreContext<?, ?>> entry : stores.entrySet()) {
|
for (Entry<String, BlobStoreContext> entry : stores.entrySet()) {
|
||||||
BlobMap map = entry.getValue().createBlobMap("favo");
|
BlobMap map = entry.getValue().createBlobMap("favo");
|
||||||
Blob frankBlob = map.get("1");
|
Blob frankBlob = map.get("1");
|
||||||
assertEquals(frankBlob.getMetadata().getName(), "1");
|
assertEquals(frankBlob.getMetadata().getName(), "1");
|
||||||
|
|
|
@ -23,9 +23,9 @@ import static org.testng.Assert.assertEquals;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.concurrent.ExecutionException;
|
import java.util.concurrent.ExecutionException;
|
||||||
|
|
||||||
|
import org.jclouds.ContextBuilder;
|
||||||
import org.jclouds.blobstore.BlobMap;
|
import org.jclouds.blobstore.BlobMap;
|
||||||
import org.jclouds.blobstore.BlobStoreContext;
|
import org.jclouds.blobstore.BlobStoreContext;
|
||||||
import org.jclouds.blobstore.BlobStoreContextBuilder;
|
|
||||||
import org.jclouds.blobstore.TransientApiMetadata;
|
import org.jclouds.blobstore.TransientApiMetadata;
|
||||||
import org.jclouds.blobstore.domain.Blob;
|
import org.jclouds.blobstore.domain.Blob;
|
||||||
import org.jclouds.demo.tweetstore.domain.StoredTweetStatus;
|
import org.jclouds.demo.tweetstore.domain.StoredTweetStatus;
|
||||||
|
@ -41,8 +41,8 @@ import org.testng.annotations.Test;
|
||||||
public class KeyToStoredTweetStatusTest {
|
public class KeyToStoredTweetStatusTest {
|
||||||
|
|
||||||
BlobMap createMap() throws InterruptedException, ExecutionException {
|
BlobMap createMap() throws InterruptedException, ExecutionException {
|
||||||
BlobStoreContext<?, ?> context =
|
BlobStoreContext context =
|
||||||
BlobStoreContextBuilder.newBuilder(TransientApiMetadata.builder().build()).build();
|
ContextBuilder.newBuilder(TransientApiMetadata.builder().build()).build(BlobStoreContext.class);
|
||||||
context.getBlobStore().createContainerInLocation(null, "test1");
|
context.getBlobStore().createContainerInLocation(null, "test1");
|
||||||
return context.createBlobMap("test1");
|
return context.createBlobMap("test1");
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,8 +24,8 @@ import java.io.IOException;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.concurrent.ExecutionException;
|
import java.util.concurrent.ExecutionException;
|
||||||
|
|
||||||
|
import org.jclouds.ContextBuilder;
|
||||||
import org.jclouds.blobstore.BlobStoreContext;
|
import org.jclouds.blobstore.BlobStoreContext;
|
||||||
import org.jclouds.blobstore.BlobStoreContextBuilder;
|
|
||||||
import org.jclouds.blobstore.TransientApiMetadata;
|
import org.jclouds.blobstore.TransientApiMetadata;
|
||||||
import org.jclouds.blobstore.domain.Blob;
|
import org.jclouds.blobstore.domain.Blob;
|
||||||
import org.jclouds.demo.tweetstore.domain.StoredTweetStatus;
|
import org.jclouds.demo.tweetstore.domain.StoredTweetStatus;
|
||||||
|
@ -43,12 +43,12 @@ import com.google.common.collect.Iterables;
|
||||||
@Test(groups = "unit")
|
@Test(groups = "unit")
|
||||||
public class ServiceToStoredTweetStatusesTest {
|
public class ServiceToStoredTweetStatusesTest {
|
||||||
|
|
||||||
Map<String, BlobStoreContext<?, ?>> createServices(String container) throws InterruptedException,
|
Map<String, BlobStoreContext> createServices(String container) throws InterruptedException,
|
||||||
ExecutionException {
|
ExecutionException {
|
||||||
Map<String, BlobStoreContext<?, ?>> services = Maps.newHashMap();
|
Map<String, BlobStoreContext> services = Maps.newHashMap();
|
||||||
TransientApiMetadata transientApiMetadata = TransientApiMetadata.builder().build();
|
TransientApiMetadata transientApiMetadata = TransientApiMetadata.builder().build();
|
||||||
for (String name : new String[] { "1", "2" }) {
|
for (String name : new String[] { "1", "2" }) {
|
||||||
BlobStoreContext<?, ?> context = BlobStoreContextBuilder.newBuilder(transientApiMetadata).build();
|
BlobStoreContext context = ContextBuilder.newBuilder(transientApiMetadata).build(BlobStoreContext.class);
|
||||||
context.getAsyncBlobStore().createContainerInLocation(null, container).get();
|
context.getAsyncBlobStore().createContainerInLocation(null, container).get();
|
||||||
Blob blob = context.getAsyncBlobStore().blobBuilder("1").build();
|
Blob blob = context.getAsyncBlobStore().blobBuilder("1").build();
|
||||||
blob.getMetadata().getUserMetadata().put(TweetStoreConstants.SENDER_NAME, "frank");
|
blob.getMetadata().getUserMetadata().put(TweetStoreConstants.SENDER_NAME, "frank");
|
||||||
|
@ -61,7 +61,7 @@ public class ServiceToStoredTweetStatusesTest {
|
||||||
|
|
||||||
public void testStoreTweets() throws IOException, InterruptedException, ExecutionException {
|
public void testStoreTweets() throws IOException, InterruptedException, ExecutionException {
|
||||||
String container = "container";
|
String container = "container";
|
||||||
Map<String, BlobStoreContext<?, ?>> contexts = createServices(container);
|
Map<String, BlobStoreContext> contexts = createServices(container);
|
||||||
|
|
||||||
ServiceToStoredTweetStatuses function = new ServiceToStoredTweetStatuses(contexts, container);
|
ServiceToStoredTweetStatuses function = new ServiceToStoredTweetStatuses(contexts, container);
|
||||||
|
|
||||||
|
|
|
@ -38,8 +38,9 @@ import java.util.Set;
|
||||||
import java.util.concurrent.ExecutionException;
|
import java.util.concurrent.ExecutionException;
|
||||||
import java.util.concurrent.TimeoutException;
|
import java.util.concurrent.TimeoutException;
|
||||||
|
|
||||||
|
import org.jclouds.Context;
|
||||||
|
import org.jclouds.ContextBuilder;
|
||||||
import org.jclouds.blobstore.BlobStoreContext;
|
import org.jclouds.blobstore.BlobStoreContext;
|
||||||
import org.jclouds.blobstore.BlobStoreContextBuilder;
|
|
||||||
import org.jclouds.demo.tweetstore.controller.StoreTweetsController;
|
import org.jclouds.demo.tweetstore.controller.StoreTweetsController;
|
||||||
import org.jclouds.logging.log4j.config.Log4JLoggingModule;
|
import org.jclouds.logging.log4j.config.Log4JLoggingModule;
|
||||||
import org.jclouds.rest.AuthorizationException;
|
import org.jclouds.rest.AuthorizationException;
|
||||||
|
@ -73,7 +74,7 @@ public class TweetStoreLiveTest {
|
||||||
|
|
||||||
RunAtCloudServer server;
|
RunAtCloudServer server;
|
||||||
private URL url;
|
private URL url;
|
||||||
private Map<String, BlobStoreContext<?, ?>> contexts;
|
private Map<String, BlobStoreContext> contexts;
|
||||||
private String container;
|
private String container;
|
||||||
private static final Iterable<String> blobstores =
|
private static final Iterable<String> blobstores =
|
||||||
Splitter.on(',').split(getRequiredSystemProperty(PROPERTY_TWEETSTORE_BLOBSTORES));
|
Splitter.on(',').split(getRequiredSystemProperty(PROPERTY_TWEETSTORE_BLOBSTORES));
|
||||||
|
@ -97,8 +98,8 @@ public class TweetStoreLiveTest {
|
||||||
this.contexts = Maps.newConcurrentMap();
|
this.contexts = Maps.newConcurrentMap();
|
||||||
|
|
||||||
for (String provider : blobstores) {
|
for (String provider : blobstores) {
|
||||||
contexts.put(provider, BlobStoreContextBuilder.newBuilder(provider)
|
contexts.put(provider, ContextBuilder.newBuilder(provider)
|
||||||
.modules(wiring).overrides(props).build());
|
.modules(wiring).overrides(props).build(BlobStoreContext.class));
|
||||||
}
|
}
|
||||||
|
|
||||||
Configuration conf = new ConfigurationBuilder()
|
Configuration conf = new ConfigurationBuilder()
|
||||||
|
@ -113,11 +114,11 @@ public class TweetStoreLiveTest {
|
||||||
ResponseList<Status> statuses = client.getMentions();
|
ResponseList<Status> statuses = client.getMentions();
|
||||||
|
|
||||||
boolean deleted = false;
|
boolean deleted = false;
|
||||||
for (BlobStoreContext<?, ?> context : contexts.values()) {
|
for (BlobStoreContext context : contexts.values()) {
|
||||||
try {
|
try {
|
||||||
if (context.getBlobStore().containerExists(container)) {
|
if (context.getBlobStore().containerExists(container)) {
|
||||||
System.err.printf("deleting container %s at %s%n", container, context.getProviderSpecificContext()
|
System.err.printf("deleting container %s at %s%n", container,
|
||||||
.getEndpoint());
|
context.unwrap(Context.class).getProviderMetadata().getEndpoint());
|
||||||
context.getBlobStore().deleteContainer(container);
|
context.getBlobStore().deleteContainer(container);
|
||||||
deleted = true;
|
deleted = true;
|
||||||
}
|
}
|
||||||
|
@ -129,9 +130,9 @@ public class TweetStoreLiveTest {
|
||||||
System.err.println("sleeping 60 seconds to allow containers to clear");
|
System.err.println("sleeping 60 seconds to allow containers to clear");
|
||||||
Thread.sleep(60000);
|
Thread.sleep(60000);
|
||||||
}
|
}
|
||||||
for (BlobStoreContext<?, ?> context : contexts.values()) {
|
for (BlobStoreContext context : contexts.values()) {
|
||||||
System.err.printf("creating container %s at %s%n", container, context.getProviderSpecificContext()
|
System.err.printf("creating container %s at %s%n", container,
|
||||||
.getEndpoint());
|
context.unwrap(Context.class).getProviderMetadata().getEndpoint());
|
||||||
context.getBlobStore().createContainerInLocation(null, container);
|
context.getBlobStore().createContainerInLocation(null, container);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -140,7 +141,7 @@ public class TweetStoreLiveTest {
|
||||||
Thread.sleep(5000);
|
Thread.sleep(5000);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (Entry<String, BlobStoreContext<?, ?>> entry : contexts.entrySet()) {
|
for (Entry<String, BlobStoreContext> entry : contexts.entrySet()) {
|
||||||
System.err.printf("filling container %s at %s%n", container, entry.getKey());
|
System.err.printf("filling container %s at %s%n", container, entry.getKey());
|
||||||
controller.addMyTweets(entry.getKey(), statuses);
|
controller.addMyTweets(entry.getKey(), statuses);
|
||||||
}
|
}
|
||||||
|
@ -210,8 +211,8 @@ public class TweetStoreLiveTest {
|
||||||
|
|
||||||
System.err.println("sleeping 20 seconds to allow for eventual consistency delay");
|
System.err.println("sleeping 20 seconds to allow for eventual consistency delay");
|
||||||
Thread.sleep(20000);
|
Thread.sleep(20000);
|
||||||
for (BlobStoreContext<?, ?> context : contexts.values()) {
|
for (BlobStoreContext context : contexts.values()) {
|
||||||
assert context.createInputStreamMap(container).size() > 0 : context.getProviderSpecificContext().getEndpoint();
|
assert context.createInputStreamMap(container).size() > 0 : context.unwrap(Context.class).getProviderMetadata().getEndpoint();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue