Skip to content

Commit 16a1d66

Browse files
committed
Merge pull request #454 from mattrjacobs/observable-cmd-request-log
Add more unit tests for HystrixRequestLog to HystrixObservableCommandTest
2 parents 57cfcb4 + b5adfab commit 16a1d66

File tree

1 file changed

+76
-18
lines changed

1 file changed

+76
-18
lines changed

hystrix-core/src/test/java/com/netflix/hystrix/HystrixObservableCommandTest.java

+76-18
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,7 @@ public void testExecutionMultipleTimes() {
193193

194194
// semaphore isolated
195195
assertFalse(command.isExecutedInThread());
196+
assertEquals(1, HystrixRequestLog.getCurrentRequest().getAllExecutedCommands().size());
196197
}
197198

198199
/**
@@ -870,6 +871,8 @@ public void onNext(Boolean args) {
870871
// semaphore isolated
871872
assertFalse(command.isExecutedInThread());
872873

874+
assertEquals(1, HystrixRequestLog.getCurrentRequest().getAllExecutedCommands().size());
875+
873876
assertFalse(command.isResponseFromFallback());
874877
}
875878

@@ -2184,6 +2187,8 @@ public void testDynamicOwnerFails() {
21842187

21852188
// semaphore isolated
21862189
assertFalse(command.isExecutedInThread());
2190+
2191+
assertEquals(0, HystrixRequestLog.getCurrentRequest().getAllExecutedCommands().size());
21872192
} catch (Exception e) {
21882193
// success if we get here
21892194
}
@@ -2205,6 +2210,8 @@ public void testDynamicKey() {
22052210

22062211
// semaphore isolated
22072212
assertFalse(command1.isExecutedInThread());
2213+
2214+
assertEquals(2, HystrixRequestLog.getCurrentRequest().getAllExecutedCommands().size());
22082215
} catch (Exception e) {
22092216
e.printStackTrace();
22102217
fail("We received an exception.");
@@ -2447,8 +2454,6 @@ public void testRequestCacheWithSlowExecution() {
24472454

24482455
assertEquals(4, HystrixRequestLog.getCurrentRequest().getAllExecutedCommands().size());
24492456

2450-
System.out.println("HystrixRequestLog: " + HystrixRequestLog.getCurrentRequest().getExecutedCommandsAsString());
2451-
24522457
// semaphore isolated
24532458
assertFalse(command1.isExecutedInThread());
24542459
assertFalse(command2.isExecutedInThread());
@@ -3025,7 +3030,7 @@ public void testRequestCacheOnThreadRejectionThrowsException() throws Exception
30253030

30263031
assertEquals(100, circuitBreaker.metrics.getHealthCounts().getErrorPercentage());
30273032

3028-
// assertEquals(4, HystrixRequestLog.getCurrentRequest().getExecutedCommands().size());
3033+
assertEquals(4, HystrixRequestLog.getCurrentRequest().getAllExecutedCommands().size());
30293034
}
30303035

30313036
/**
@@ -3054,6 +3059,13 @@ public void testBasicExecutionWorksWithoutRequestVariable() {
30543059
e.printStackTrace();
30553060
fail("We received an exception => " + e.getMessage());
30563061
}
3062+
3063+
try {
3064+
HystrixRequestLog.getCurrentRequest();
3065+
fail("Should not have a RequestLog when RequestContext not initialized");
3066+
} catch (IllegalStateException ise) {
3067+
//expected
3068+
}
30573069
}
30583070

30593071
/**
@@ -3080,6 +3092,13 @@ public void testCacheKeyExecutionRequiresRequestVariable() {
30803092
} catch (Exception e) {
30813093
e.printStackTrace();
30823094
}
3095+
3096+
try {
3097+
HystrixRequestLog.getCurrentRequest();
3098+
fail("Should not have a RequestLog when RequestContext not initialized");
3099+
} catch (IllegalStateException ise) {
3100+
//expected
3101+
}
30833102
}
30843103

30853104
/**
@@ -3102,6 +3121,8 @@ public void testBadRequestExceptionViaExecuteInThread() {
31023121
assertEquals(0, circuitBreaker.metrics.getRollingCount(HystrixRollingNumberEvent.SUCCESS));
31033122
assertEquals(0, circuitBreaker.metrics.getRollingCount(HystrixRollingNumberEvent.EXCEPTION_THROWN));
31043123
assertEquals(0, circuitBreaker.metrics.getRollingCount(HystrixRollingNumberEvent.FAILURE));
3124+
3125+
assertEquals(1, HystrixRequestLog.getCurrentRequest().getAllExecutedCommands().size());
31053126
}
31063127

31073128
/**
@@ -3128,6 +3149,8 @@ public void testBadRequestExceptionViaQueueInThread() {
31283149
assertEquals(0, circuitBreaker.metrics.getRollingCount(HystrixRollingNumberEvent.SUCCESS));
31293150
assertEquals(0, circuitBreaker.metrics.getRollingCount(HystrixRollingNumberEvent.EXCEPTION_THROWN));
31303151
assertEquals(0, circuitBreaker.metrics.getRollingCount(HystrixRollingNumberEvent.FAILURE));
3152+
3153+
assertEquals(1, HystrixRequestLog.getCurrentRequest().getAllExecutedCommands().size());
31313154
}
31323155

31333156
/**
@@ -3162,6 +3185,8 @@ public void testBadRequestExceptionViaQueueInThreadOnResponseFromCache() {
31623185
assertEquals(0, circuitBreaker.metrics.getRollingCount(HystrixRollingNumberEvent.SUCCESS));
31633186
assertEquals(0, circuitBreaker.metrics.getRollingCount(HystrixRollingNumberEvent.EXCEPTION_THROWN));
31643187
assertEquals(0, circuitBreaker.metrics.getRollingCount(HystrixRollingNumberEvent.FAILURE));
3188+
3189+
assertEquals(2, HystrixRequestLog.getCurrentRequest().getAllExecutedCommands().size());
31653190
}
31663191

31673192
/**
@@ -3184,6 +3209,8 @@ public void testBadRequestExceptionViaExecuteInSemaphore() {
31843209
assertEquals(0, circuitBreaker.metrics.getRollingCount(HystrixRollingNumberEvent.SUCCESS));
31853210
assertEquals(0, circuitBreaker.metrics.getRollingCount(HystrixRollingNumberEvent.EXCEPTION_THROWN));
31863211
assertEquals(0, circuitBreaker.metrics.getRollingCount(HystrixRollingNumberEvent.FAILURE));
3212+
3213+
assertEquals(1, HystrixRequestLog.getCurrentRequest().getAllExecutedCommands().size());
31873214
}
31883215

31893216
/**
@@ -3210,6 +3237,8 @@ public void testBadRequestExceptionViaQueueInSemaphore() {
32103237
assertEquals(0, circuitBreaker.metrics.getRollingCount(HystrixRollingNumberEvent.SUCCESS));
32113238
assertEquals(0, circuitBreaker.metrics.getRollingCount(HystrixRollingNumberEvent.EXCEPTION_THROWN));
32123239
assertEquals(0, circuitBreaker.metrics.getRollingCount(HystrixRollingNumberEvent.FAILURE));
3240+
3241+
assertEquals(1, HystrixRequestLog.getCurrentRequest().getAllExecutedCommands().size());
32133242
}
32143243

32153244
/**
@@ -3234,6 +3263,8 @@ public void testCheckedExceptionViaExecute() {
32343263
assertEquals(0, circuitBreaker.metrics.getRollingCount(HystrixRollingNumberEvent.SUCCESS));
32353264
assertEquals(1, circuitBreaker.metrics.getRollingCount(HystrixRollingNumberEvent.FAILURE));
32363265
assertEquals(1, circuitBreaker.metrics.getRollingCount(HystrixRollingNumberEvent.EXCEPTION_THROWN));
3266+
3267+
assertEquals(1, HystrixRequestLog.getCurrentRequest().getAllExecutedCommands().size());
32373268
}
32383269

32393270
/**
@@ -3289,6 +3320,8 @@ public void onNext(Boolean args) {
32893320

32903321
// semaphore isolated
32913322
assertFalse(command.isExecutedInThread());
3323+
3324+
assertEquals(1, HystrixRequestLog.getCurrentRequest().getAllExecutedCommands().size());
32923325
}
32933326

32943327
/**
@@ -3319,6 +3352,8 @@ public void testErrorThrownViaExecute() {
33193352

33203353
// semaphore isolated
33213354
assertFalse(command.isExecutedInThread());
3355+
3356+
assertEquals(1, HystrixRequestLog.getCurrentRequest().getAllExecutedCommands().size());
33223357
}
33233358

33243359
/**
@@ -3350,6 +3385,8 @@ public void testErrorThrownViaQueue() {
33503385

33513386
// semaphore isolated
33523387
assertFalse(command.isExecutedInThread());
3388+
3389+
assertEquals(1, HystrixRequestLog.getCurrentRequest().getAllExecutedCommands().size());
33533390
}
33543391

33553392
/**
@@ -3407,6 +3444,8 @@ public void onNext(Boolean args) {
34073444

34083445
// semaphore isolated
34093446
assertFalse(command.isExecutedInThread());
3447+
3448+
assertEquals(1, HystrixRequestLog.getCurrentRequest().getAllExecutedCommands().size());
34103449
}
34113450

34123451
/**
@@ -3478,6 +3517,8 @@ public void testExecutionHookSuccessfulCommand() {
34783517

34793518
// semaphore isolated
34803519
assertFalse(command.isExecutedInThread());
3520+
3521+
assertEquals(2, HystrixRequestLog.getCurrentRequest().getAllExecutedCommands().size());
34813522
}
34823523

34833524
/**
@@ -3531,6 +3572,8 @@ public void testExecutionHookSuccessfulCommandViaFireAndForget() {
35313572

35323573
// semaphore isolated
35333574
assertFalse(command.isExecutedInThread());
3575+
3576+
assertEquals(1, HystrixRequestLog.getCurrentRequest().getAllExecutedCommands().size());
35343577
}
35353578

35363579
/**
@@ -3578,6 +3621,8 @@ public void testExecutionHookSuccessfulCommandWithMultipleGetsOnFuture() {
35783621

35793622
// semaphore isolated
35803623
assertFalse(command.isExecutedInThread());
3624+
3625+
assertEquals(1, HystrixRequestLog.getCurrentRequest().getAllExecutedCommands().size());
35813626
}
35823627

35833628
/**
@@ -3660,6 +3705,7 @@ public void testExecutionHookRunFailureWithoutFallback() {
36603705
// semaphore isolated
36613706
assertFalse(command.isExecutedInThread());
36623707

3708+
assertEquals(2, HystrixRequestLog.getCurrentRequest().getAllExecutedCommands().size());
36633709
}
36643710

36653711
/**
@@ -3731,6 +3777,8 @@ public void testExecutionHookRunFailureWithFallback() {
37313777

37323778
// semaphore isolated
37333779
assertFalse(command.isExecutedInThread());
3780+
3781+
assertEquals(2, HystrixRequestLog.getCurrentRequest().getAllExecutedCommands().size());
37343782
}
37353783

37363784
/**
@@ -3812,6 +3860,8 @@ public void testExecutionHookRunFailureWithFallbackFailure() {
38123860

38133861
// semaphore isolated
38143862
assertFalse(command.isExecutedInThread());
3863+
3864+
assertEquals(2, HystrixRequestLog.getCurrentRequest().getAllExecutedCommands().size());
38153865
}
38163866

38173867
/**
@@ -3851,19 +3901,10 @@ public void testExecutionHookTimeoutWithoutFallback() {
38513901
// timeout failure
38523902
assertEquals(FailureType.TIMEOUT, command.builder.executionHook.endExecuteFailureType);
38533903

3854-
// thread execution
3855-
// assertEquals(1, command.builder.executionHook.threadStart.get());
3856-
3857-
// we need to wait for the thread to complete before the onThreadComplete hook will be called
3858-
// try {
3859-
// Thread.sleep(400);
3860-
// } catch (InterruptedException e) {
3861-
// // ignore
3862-
// }
3863-
// assertEquals(1, command.builder.executionHook.threadComplete.get());
3864-
38653904
// semaphore isolated
38663905
assertFalse(command.isExecutedInThread());
3906+
3907+
assertEquals(1, HystrixRequestLog.getCurrentRequest().getAllExecutedCommands().size());
38673908
}
38683909

38693910
/**
@@ -3912,6 +3953,8 @@ public void testExecutionHookTimeoutWithFallback() {
39123953

39133954
// semaphore isolated
39143955
assertFalse(command.isExecutedInThread());
3956+
3957+
assertEquals(1, HystrixRequestLog.getCurrentRequest().getAllExecutedCommands().size());
39153958
}
39163959

39173960
/**
@@ -4013,6 +4056,8 @@ public void testExecutionHookShortCircuitedWithFallbackViaQueue() {
40134056

40144057
// semaphore isolated
40154058
assertFalse(command.isExecutedInThread());
4059+
4060+
assertEquals(1, HystrixRequestLog.getCurrentRequest().getAllExecutedCommands().size());
40164061
}
40174062

40184063
/**
@@ -4061,6 +4106,8 @@ public void testExecutionHookShortCircuitedWithFallbackViaExecute() {
40614106

40624107
// semaphore isolated
40634108
assertFalse(command.isExecutedInThread());
4109+
4110+
assertEquals(1, HystrixRequestLog.getCurrentRequest().getAllExecutedCommands().size());
40644111
}
40654112

40664113
/**
@@ -4136,6 +4183,8 @@ public void testExecutionHookSuccessfulCommandWithSemaphoreIsolation() {
41364183

41374184
// semaphore isolated
41384185
assertFalse(command.isExecutedInThread());
4186+
4187+
assertEquals(2, HystrixRequestLog.getCurrentRequest().getAllExecutedCommands().size());
41394188
}
41404189

41414190
/**
@@ -4187,6 +4236,8 @@ public void testExecutionHookFailureWithSemaphoreIsolation() {
41874236

41884237
// semaphore isolated
41894238
assertFalse(command.isExecutedInThread());
4239+
4240+
assertEquals(1, HystrixRequestLog.getCurrentRequest().getAllExecutedCommands().size());
41904241
}
41914242

41924243
/**
@@ -4228,13 +4279,13 @@ public void testExecutionFailureWithFallbackImplementedButDisabled() {
42284279

42294280
assertEquals(100, commandDisabled.builder.metrics.getHealthCounts().getErrorPercentage());
42304281

4231-
// assertEquals(2, HystrixRequestLog.getCurrentRequest().getExecutedCommands().size());
4282+
assertEquals(2, HystrixRequestLog.getCurrentRequest().getAllExecutedCommands().size());
42324283
}
42334284

42344285
/**
42354286
* Test that we can still use thread isolation if desired.
42364287
*/
4237-
@Test(timeout = 500)
4288+
@Test
42384289
public void testSynchronousExecutionTimeoutValueViaExecute() {
42394290
HystrixObservableCommand.Setter properties = HystrixObservableCommand.Setter
42404291
.withGroupKey(HystrixCommandGroupKey.Factory.asKey("TestKey"))
@@ -4247,6 +4298,7 @@ public void testSynchronousExecutionTimeoutValueViaExecute() {
42474298
HystrixObservableCommand<String> command = new HystrixObservableCommand<String>(properties) {
42484299
@Override
42494300
protected Observable<String> construct() {
4301+
42504302
return Observable.create(new OnSubscribe<String>() {
42514303

42524304
@Override
@@ -4281,9 +4333,11 @@ protected Observable<String> resumeWithFallback() {
42814333

42824334
// Thread isolated
42834335
assertTrue(command.isExecutedInThread());
4336+
4337+
assertEquals(1, HystrixRequestLog.getCurrentRequest().getAllExecutedCommands().size());
42844338
}
42854339

4286-
@Test(timeout = 500)
4340+
@Test
42874341
public void testSynchronousExecutionUsingThreadIsolationTimeoutValueViaObserve() {
42884342
HystrixObservableCommand.Setter properties = HystrixObservableCommand.Setter
42894343
.withGroupKey(HystrixCommandGroupKey.Factory.asKey("TestKey"))
@@ -4326,9 +4380,11 @@ protected Observable<String> resumeWithFallback() {
43264380

43274381
// Thread isolated
43284382
assertTrue(command.isExecutedInThread());
4383+
4384+
assertEquals(1, HystrixRequestLog.getCurrentRequest().getAllExecutedCommands().size());
43294385
}
43304386

4331-
@Test(timeout = 500)
4387+
@Test
43324388
public void testAsyncExecutionTimeoutValueViaObserve() {
43334389
HystrixObservableCommand.Setter properties = HystrixObservableCommand.Setter
43344390
.withGroupKey(HystrixCommandGroupKey.Factory.asKey("TestKey"))
@@ -4371,6 +4427,8 @@ protected Observable<String> resumeWithFallback() {
43714427

43724428
// semaphore isolated
43734429
assertFalse(command.isExecutedInThread());
4430+
4431+
assertEquals(1, HystrixRequestLog.getCurrentRequest().getAllExecutedCommands().size());
43744432
}
43754433

43764434
/**

0 commit comments

Comments
 (0)