@ -115,14 +115,15 @@ public class HystrixBuilderTest {
@@ -115,14 +115,15 @@ public class HystrixBuilderTest {
interface GitHubHystrix {
@RequestLine ( "GET /repos/{owner}/{repo}/contributors" )
HystrixCommand < List < String > > contributorsHystrixCommand ( @Param ( "owner" ) String owner , @Param ( "repo" ) String repo ) ;
HystrixCommand < List < String > > contributorsHystrixCommand ( @Param ( "owner" ) String owner ,
@Param ( "repo" ) String repo ) ;
}
@Test
public void fallbacksApplyOnError ( ) {
server . enqueue ( new MockResponse ( ) . setResponseCode ( 500 ) ) ;
GitHub fallback = new GitHub ( ) {
GitHub fallback = new GitHub ( ) {
@Override
public List < String > contributors ( String owner , String repo ) {
if ( owner . equals ( "Netflix" ) & & repo . equals ( "feign" ) ) {
@ -145,11 +146,12 @@ public class HystrixBuilderTest {
@@ -145,11 +146,12 @@ public class HystrixBuilderTest {
public void errorInFallbackHasExpectedBehavior ( ) {
thrown . expect ( HystrixRuntimeException . class ) ;
thrown . expectMessage ( "contributors failed and fallback failed." ) ;
thrown . expectCause ( isA ( FeignException . class ) ) ; // as opposed to RuntimeException (from the fallback)
thrown . expectCause (
isA ( FeignException . class ) ) ; // as opposed to RuntimeException (from the fallback)
server . enqueue ( new MockResponse ( ) . setResponseCode ( 500 ) ) ;
GitHub fallback = new GitHub ( ) {
GitHub fallback = new GitHub ( ) {
@Override
public List < String > contributors ( String owner , String repo ) {
throw new RuntimeException ( "oops" ) ;
@ -255,7 +257,6 @@ public class HystrixBuilderTest {
@@ -255,7 +257,6 @@ public class HystrixBuilderTest {
assertThat ( observable ) . isNotNull ( ) ;
assertThat ( server . getRequestCount ( ) ) . isEqualTo ( 0 ) ;
TestSubscriber < List < String > > testSubscriber = new TestSubscriber < List < String > > ( ) ;
observable . subscribe ( testSubscriber ) ;
testSubscriber . awaitTerminalEvent ( ) ;
@ -273,7 +274,6 @@ public class HystrixBuilderTest {
@@ -273,7 +274,6 @@ public class HystrixBuilderTest {
assertThat ( observable ) . isNotNull ( ) ;
assertThat ( server . getRequestCount ( ) ) . isEqualTo ( 0 ) ;
TestSubscriber < List < String > > testSubscriber = new TestSubscriber < List < String > > ( ) ;
observable . subscribe ( testSubscriber ) ;
testSubscriber . awaitTerminalEvent ( ) ;
@ -429,7 +429,8 @@ public class HystrixBuilderTest {
@@ -429,7 +429,8 @@ public class HystrixBuilderTest {
private TestInterface target ( ) {
return HystrixFeign . builder ( )
. decoder ( new GsonDecoder ( ) )
. target ( TestInterface . class , "http://localhost:" + server . getPort ( ) , new FallbackTestInterface ( ) ) ;
. target ( TestInterface . class , "http://localhost:" + server . getPort ( ) ,
new FallbackTestInterface ( ) ) ;
}
interface TestInterface {
@ -481,7 +482,8 @@ public class HystrixBuilderTest {
@@ -481,7 +482,8 @@ public class HystrixBuilderTest {
}
class FallbackTestInterface implements TestInterface {
@Override public HystrixCommand < String > command ( ) {
@Override
public HystrixCommand < String > command ( ) {
return new HystrixCommand < String > ( HystrixCommandGroupKey . Factory . asKey ( "Test" ) ) {
@Override
protected String run ( ) throws Exception {
@ -490,9 +492,11 @@ public class HystrixBuilderTest {
@@ -490,9 +492,11 @@ public class HystrixBuilderTest {
} ;
}
@Override public HystrixCommand < List < String > > listCommand ( ) {
@Override
public HystrixCommand < List < String > > listCommand ( ) {
return new HystrixCommand < List < String > > ( HystrixCommandGroupKey . Factory . asKey ( "Test" ) ) {
@Override protected List < String > run ( ) throws Exception {
@Override
protected List < String > run ( ) throws Exception {
List < String > fallbackResult = new ArrayList < String > ( ) ;
fallbackResult . add ( "fallback" ) ;
return fallbackResult ;
@ -500,47 +504,57 @@ public class HystrixBuilderTest {
@@ -500,47 +504,57 @@ public class HystrixBuilderTest {
} ;
}
@Override public HystrixCommand < Integer > intCommand ( ) {
@Override
public HystrixCommand < Integer > intCommand ( ) {
return new HystrixCommand < Integer > ( HystrixCommandGroupKey . Factory . asKey ( "Test" ) ) {
@Override protected Integer run ( ) throws Exception {
@Override
protected Integer run ( ) throws Exception {
return 0 ;
}
} ;
}
@Override public Observable < List < String > > listObservable ( ) {
@Override
public Observable < List < String > > listObservable ( ) {
List < String > fallbackResult = new ArrayList < String > ( ) ;
fallbackResult . add ( "fallback" ) ;
return Observable . just ( fallbackResult ) ;
}
@Override public Observable < String > observable ( ) {
@Override
public Observable < String > observable ( ) {
return Observable . just ( "fallback" ) ;
}
@Override public Single < Integer > intSingle ( ) {
@Override
public Single < Integer > intSingle ( ) {
return Single . just ( 0 ) ;
}
@Override public Single < List < String > > listSingle ( ) {
@Override
public Single < List < String > > listSingle ( ) {
List < String > fallbackResult = new ArrayList < String > ( ) ;
fallbackResult . add ( "fallback" ) ;
return Single . just ( fallbackResult ) ;
}
@Override public Single < String > single ( ) {
@Override
public Single < String > single ( ) {
return Single . just ( "fallback" ) ;
}
@Override public Observable < Integer > intObservable ( ) {
@Override
public Observable < Integer > intObservable ( ) {
return Observable . just ( 0 ) ;
}
@Override public String get ( ) {
@Override
public String get ( ) {
return "fallback" ;
}
@Override public List < String > getList ( ) {
@Override
public List < String > getList ( ) {
List < String > fallbackResult = new ArrayList < String > ( ) ;
fallbackResult . add ( "fallback" ) ;
return fallbackResult ;