提交 6f68b70f 编写于 作者: A Allen Wang

Add test to test future returned from withMeta() API. Remove HttpClient from...

Add test to test future returned from withMeta() API. Remove HttpClient from the public constructor of HttpRequestTemplate.
上级 14aca8e2
......@@ -60,8 +60,8 @@ public class HttpRequestTemplate<T> implements RequestTemplate<T, HttpClientResp
}
}
public HttpRequestTemplate(String name, HttpResourceGroup group, HttpClient<ByteBuf, ByteBuf> client, Class<? extends T> classType) {
this.client = client;
public HttpRequestTemplate(String name, HttpResourceGroup group, Class<? extends T> classType) {
this.client = group.getClient();
this.classType = classType;
if (client instanceof LoadBalancingRxClient) {
LoadBalancingRxClient<?, ? ,?> ribbonClient = (LoadBalancingRxClient<?, ? ,?>) client;
......@@ -190,7 +190,7 @@ public class HttpRequestTemplate<T> implements RequestTemplate<T, HttpClientResp
@Override
public HttpRequestTemplate<T> copy(String name) {
HttpRequestTemplate<T> newTemplate = new HttpRequestTemplate<T>(name, this.group, this.client, this.classType);
HttpRequestTemplate<T> newTemplate = new HttpRequestTemplate<T>(name, this.group, this.classType);
newTemplate.cacheProviders.addAll(this.cacheProviders);
newTemplate.method = this.method;
newTemplate.headers.add(this.headers);
......
......@@ -37,7 +37,7 @@ public class HttpResourceGroup extends ResourceGroup<HttpRequestTemplate<?>> {
@Override
public <T> HttpRequestTemplate<T> newRequestTemplate(String name,
Class<? extends T> classType) {
return new HttpRequestTemplate<T>(name, HttpResourceGroup.this, client, classType);
return new HttpRequestTemplate<T>(name, this, classType);
}
public HttpRequestTemplate<ByteBuf> newRequestTemplate(String name) {
......@@ -48,4 +48,7 @@ public class HttpResourceGroup extends ResourceGroup<HttpRequestTemplate<?>> {
return headers;
}
HttpClient<ByteBuf, ByteBuf> getClient() {
return client;
}
}
......@@ -11,6 +11,8 @@ import java.io.UnsupportedEncodingException;
import java.nio.charset.Charset;
import java.util.Map;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicReference;
......@@ -61,12 +63,15 @@ public class RibbonTest {
@Test
public void testCommandWithMetaData() throws IOException {
public void testCommandWithMetaData() throws IOException, InterruptedException, ExecutionException {
// LogManager.getRootLogger().setLevel((Level)Level.DEBUG);
MockWebServer server = new MockWebServer();
String content = "Hello world";
server.enqueue(new MockResponse().setResponseCode(200).setHeader("Content-type", "text/plain")
.setBody(content));
server.enqueue(new MockResponse().setResponseCode(200).setHeader("Content-type", "text/plain")
.setBody(content));
server.play();
HttpResourceGroup group = Ribbon.createHttpResourceGroup("myclient", ClientOptions.create()
......@@ -80,12 +85,11 @@ public class RibbonTest {
public Observable<ByteBuf> get(String key, Map<String, Object> vars) {
return Observable.error(new Exception("Cache miss"));
}
}).withHystrixProperties(HystrixObservableCommand.Setter.withGroupKey(HystrixCommandGroupKey.Factory.asKey("group"))
.andCommandPropertiesDefaults(HystrixCommandProperties.Setter().withRequestCacheEnabled(false))
)
})
.requestBuilder().build();
final AtomicBoolean success = new AtomicBoolean(false);
Observable<String> result = request.withMetadata().toObservable().flatMap(new Func1<RibbonResponse<Observable<ByteBuf>>, Observable<String>>(){
RequestWithMetaData<ByteBuf> metaRequest = request.withMetadata();
Observable<String> result = metaRequest.toObservable().flatMap(new Func1<RibbonResponse<Observable<ByteBuf>>, Observable<String>>(){
@Override
public Observable<String> call(
final RibbonResponse<Observable<ByteBuf>> response) {
......@@ -101,6 +105,12 @@ public class RibbonTest {
String s = result.toBlocking().single();
assertEquals(content, s);
assertTrue(success.get());
Future<RibbonResponse<ByteBuf>> future = metaRequest.queue();
RibbonResponse<ByteBuf> response = future.get();
assertEquals(content, response.content().toString(Charset.defaultCharset()));
assertTrue(future.isDone());
assertTrue(response.getHystrixInfo().isSuccessfulExecution());
}
......@@ -222,9 +232,6 @@ public class RibbonTest {
}
})
.withUriTemplate("/")
.withHystrixProperties(HystrixObservableCommand.Setter.withGroupKey(HystrixCommandGroupKey.Factory.asKey("group"))
.andCommandPropertiesDefaults(HystrixCommandProperties.Setter().withRequestCacheEnabled(false))
)
.requestBuilder().build();
String result = request.execute().toString(Charset.defaultCharset());
assertEquals(content, result);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册