test_class.declarator: ctx = new HystrixRequestContextRule()
test_class.modifier: @Rule
      public
test_class.original_string: @Rule
      public HystrixRequestContextRule ctx = new HystrixRequestContextRule();
test_class.type: HystrixRequestContextRule
test_class.var_name: ctx
test_class.declarator: uniqueNameCounter = new AtomicInteger(1)
test_class.modifier: static
test_class.original_string: static AtomicInteger uniqueNameCounter = new AtomicInteger(1);
test_class.type: AtomicInteger
test_class.var_name: uniqueNameCounter
test_class.file: hystrix-core/src/test/java/com/netflix/hystrix/HystrixCommandTest.java
test_class.identifier: HystrixCommandTest
test_class.superclass: extends CommonHystrixCommandTests<TestHystrixCommand<Integer>>
test_case.body: @Test
      public void testCircuitBreakerAcrossMultipleCommandsButSameCircuitBreaker() throws InterruptedException {
          HystrixCommandKey key = HystrixCommandKey.Factory.asKey("SharedCircuitBreaker");
          TestCircuitBreaker circuitBreaker = new TestCircuitBreaker(key);
          /* fail 3 times and then it should trip the circuit and stop executing */
          // failure 1
          TestHystrixCommand<Integer> attempt1 = getSharedCircuitBreakerCommand(key, ExecutionIsolationStrategy.THREAD, AbstractTestHystrixCommand.FallbackResult.SUCCESS, circuitBreaker);
          System.out.println("COMMAND KEY (from cmd): " + attempt1.commandKey.name());
          attempt1.execute();
          Thread.sleep(100);
          assertTrue(attempt1.isResponseFromFallback());
          assertFalse(attempt1.isCircuitBreakerOpen());
          assertFalse(attempt1.isResponseShortCircuited());
  
          // failure 2 with a different command, same circuit breaker
          TestHystrixCommand<Integer> attempt2 = getSharedCircuitBreakerCommand(key, ExecutionIsolationStrategy.THREAD, AbstractTestHystrixCommand.FallbackResult.SUCCESS, circuitBreaker);
          attempt2.execute();
          Thread.sleep(100);
          assertTrue(attempt2.isFailedExecution());
          assertTrue(attempt2.isResponseFromFallback());
          assertFalse(attempt2.isCircuitBreakerOpen());
          assertFalse(attempt2.isResponseShortCircuited());
  
          // failure 3 of the Hystrix, 2nd for this particular HystrixCommand
          TestHystrixCommand<Integer> attempt3 = getSharedCircuitBreakerCommand(key, ExecutionIsolationStrategy.THREAD, AbstractTestHystrixCommand.FallbackResult.SUCCESS, circuitBreaker);
          attempt3.execute();
          Thread.sleep(100);
          assertTrue(attempt3.isFailedExecution());
          assertTrue(attempt3.isResponseFromFallback());
          assertFalse(attempt3.isResponseShortCircuited());
  
          // it should now be 'open' and prevent further executions
          // after having 3 failures on the Hystrix that these 2 different HystrixCommand objects are for
          assertTrue(attempt3.isCircuitBreakerOpen());
  
          // attempt 4
          TestHystrixCommand<Integer> attempt4 = getSharedCircuitBreakerCommand(key, ExecutionIsolationStrategy.THREAD, AbstractTestHystrixCommand.FallbackResult.SUCCESS, circuitBreaker);
          attempt4.execute();
          Thread.sleep(100);
          assertTrue(attempt4.isResponseFromFallback());
          // this should now be true as the response will be short-circuited
          assertTrue(attempt4.isResponseShortCircuited());
          // this should remain open
          assertTrue(attempt4.isCircuitBreakerOpen());
  
          assertSaneHystrixRequestLog(4);
          assertCommandExecutionEvents(attempt1, HystrixEventType.FAILURE, HystrixEventType.FALLBACK_SUCCESS);
          assertCommandExecutionEvents(attempt2, HystrixEventType.FAILURE, HystrixEventType.FALLBACK_SUCCESS);
          assertCommandExecutionEvents(attempt3, HystrixEventType.FAILURE, HystrixEventType.FALLBACK_SUCCESS);
          assertCommandExecutionEvents(attempt4, HystrixEventType.SHORT_CIRCUITED, HystrixEventType.FALLBACK_SUCCESS);
      }
test_case.class_method_signature: HystrixCommandTest.testCircuitBreakerAcrossMultipleCommandsButSameCircuitBreaker()
test_case.full_signature: @Test public void testCircuitBreakerAcrossMultipleCommandsButSameCircuitBreaker()
test_case.identifier: testCircuitBreakerAcrossMultipleCommandsButSameCircuitBreaker
test_case.invocations: asKey getSharedCircuitBreakerCommand println name execute sleep assertTrue isResponseFromFallback assertFalse isCircuitBreakerOpen assertFalse isResponseShortCircuited getSharedCircuitBreakerCommand execute sleep assertTrue isFailedExecution assertTrue isResponseFromFallback assertFalse isCircuitBreakerOpen assertFalse isResponseShortCircuited getSharedCircuitBreakerCommand execute sleep assertTrue isFailedExecution assertTrue isResponseFromFallback assertFalse isResponseShortCircuited assertTrue isCircuitBreakerOpen getSharedCircuitBreakerCommand execute sleep assertTrue isResponseFromFallback assertTrue isResponseShortCircuited assertTrue isCircuitBreakerOpen assertSaneHystrixRequestLog assertCommandExecutionEvents assertCommandExecutionEvents assertCommandExecutionEvents assertCommandExecutionEvents
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void testCircuitBreakerAcrossMultipleCommandsButSameCircuitBreaker()
focal_class.declarator: executionThread = new AtomicReference<Thread>()
focal_class.modifier: private final
focal_class.original_string: private final AtomicReference<Thread> executionThread = new AtomicReference<Thread>();
focal_class.type: AtomicReference<Thread>
focal_class.var_name: executionThread
focal_class.declarator: interruptOnFutureCancel = new AtomicBoolean(false)
focal_class.modifier: private final
focal_class.original_string: private final AtomicBoolean interruptOnFutureCancel = new AtomicBoolean(false);
focal_class.type: AtomicBoolean
focal_class.var_name: interruptOnFutureCancel
focal_class.file: hystrix-core/src/main/java/com/netflix/hystrix/HystrixCommand.java
focal_class.identifier: HystrixCommand
focal_class.interfaces: implements HystrixExecutable<R>, HystrixInvokableInfo<R>, HystrixObservable<R>
focal_class.class_method_signature: HystrixCommand.HystrixCommand(HystrixCommandGroupKey group)
focal_class.full_signature: protected  HystrixCommand(HystrixCommandGroupKey group)
focal_class.identifier: HystrixCommand
focal_class.modifiers: protected
focal_class.parameters: (HystrixCommandGroupKey group)
focal_class.signature:  HystrixCommand(HystrixCommandGroupKey group)
focal_class.class_method_signature: HystrixCommand.HystrixCommand(HystrixCommandGroupKey group, HystrixThreadPoolKey threadPool)
focal_class.full_signature: protected  HystrixCommand(HystrixCommandGroupKey group, HystrixThreadPoolKey threadPool)
focal_class.identifier: HystrixCommand
focal_class.modifiers: protected
focal_class.parameters: (HystrixCommandGroupKey group, HystrixThreadPoolKey threadPool)
focal_class.signature:  HystrixCommand(HystrixCommandGroupKey group, HystrixThreadPoolKey threadPool)
focal_class.class_method_signature: HystrixCommand.HystrixCommand(HystrixCommandGroupKey group, int executionIsolationThreadTimeoutInMilliseconds)
focal_class.full_signature: protected  HystrixCommand(HystrixCommandGroupKey group, int executionIsolationThreadTimeoutInMilliseconds)
focal_class.identifier: HystrixCommand
focal_class.modifiers: protected
focal_class.parameters: (HystrixCommandGroupKey group, int executionIsolationThreadTimeoutInMilliseconds)
focal_class.signature:  HystrixCommand(HystrixCommandGroupKey group, int executionIsolationThreadTimeoutInMilliseconds)
focal_class.class_method_signature: HystrixCommand.HystrixCommand(HystrixCommandGroupKey group, HystrixThreadPoolKey threadPool, int executionIsolationThreadTimeoutInMilliseconds)
focal_class.full_signature: protected  HystrixCommand(HystrixCommandGroupKey group, HystrixThreadPoolKey threadPool, int executionIsolationThreadTimeoutInMilliseconds)
focal_class.identifier: HystrixCommand
focal_class.modifiers: protected
focal_class.parameters: (HystrixCommandGroupKey group, HystrixThreadPoolKey threadPool, int executionIsolationThreadTimeoutInMilliseconds)
focal_class.signature:  HystrixCommand(HystrixCommandGroupKey group, HystrixThreadPoolKey threadPool, int executionIsolationThreadTimeoutInMilliseconds)
focal_class.class_method_signature: HystrixCommand.HystrixCommand(Setter setter)
focal_class.full_signature: protected  HystrixCommand(Setter setter)
focal_class.identifier: HystrixCommand
focal_class.modifiers: protected
focal_class.parameters: (Setter setter)
focal_class.signature:  HystrixCommand(Setter setter)
focal_class.class_method_signature: HystrixCommand.HystrixCommand(HystrixCommandGroupKey group, HystrixCommandKey key, HystrixThreadPoolKey threadPoolKey, HystrixCircuitBreaker circuitBreaker, HystrixThreadPool threadPool,
              HystrixCommandProperties.Setter commandPropertiesDefaults, HystrixThreadPoolProperties.Setter threadPoolPropertiesDefaults,
              HystrixCommandMetrics metrics, TryableSemaphore fallbackSemaphore, TryableSemaphore executionSemaphore,
              HystrixPropertiesStrategy propertiesStrategy, HystrixCommandExecutionHook executionHook)
focal_class.full_signature:   HystrixCommand(HystrixCommandGroupKey group, HystrixCommandKey key, HystrixThreadPoolKey threadPoolKey, HystrixCircuitBreaker circuitBreaker, HystrixThreadPool threadPool,
              HystrixCommandProperties.Setter commandPropertiesDefaults, HystrixThreadPoolProperties.Setter threadPoolPropertiesDefaults,
              HystrixCommandMetrics metrics, TryableSemaphore fallbackSemaphore, TryableSemaphore executionSemaphore,
              HystrixPropertiesStrategy propertiesStrategy, HystrixCommandExecutionHook executionHook)
focal_class.identifier: HystrixCommand
focal_class.parameters: (HystrixCommandGroupKey group, HystrixCommandKey key, HystrixThreadPoolKey threadPoolKey, HystrixCircuitBreaker circuitBreaker, HystrixThreadPool threadPool,
              HystrixCommandProperties.Setter commandPropertiesDefaults, HystrixThreadPoolProperties.Setter threadPoolPropertiesDefaults,
              HystrixCommandMetrics metrics, TryableSemaphore fallbackSemaphore, TryableSemaphore executionSemaphore,
              HystrixPropertiesStrategy propertiesStrategy, HystrixCommandExecutionHook executionHook)
focal_class.signature:  HystrixCommand(HystrixCommandGroupKey group, HystrixCommandKey key, HystrixThreadPoolKey threadPoolKey, HystrixCircuitBreaker circuitBreaker, HystrixThreadPool threadPool,
              HystrixCommandProperties.Setter commandPropertiesDefaults, HystrixThreadPoolProperties.Setter threadPoolPropertiesDefaults,
              HystrixCommandMetrics metrics, TryableSemaphore fallbackSemaphore, TryableSemaphore executionSemaphore,
              HystrixPropertiesStrategy propertiesStrategy, HystrixCommandExecutionHook executionHook)
focal_class.class_method_signature: HystrixCommand.run()
focal_class.full_signature: protected abstract R run()
focal_class.identifier: run
focal_class.modifiers: protected abstract
focal_class.parameters: ()
focal_class.return: R
focal_class.signature: R run()
focal_class.class_method_signature: HystrixCommand.getFallback()
focal_class.full_signature: protected R getFallback()
focal_class.identifier: getFallback
focal_class.modifiers: protected
focal_class.parameters: ()
focal_class.return: R
focal_class.signature: R getFallback()
focal_class.class_method_signature: HystrixCommand.getExecutionObservable()
focal_class.full_signature: @Override final protected Observable<R> getExecutionObservable()
focal_class.identifier: getExecutionObservable
focal_class.modifiers: @Override final protected
focal_class.parameters: ()
focal_class.return: Observable<R>
focal_class.signature: Observable<R> getExecutionObservable()
focal_class.class_method_signature: HystrixCommand.getFallbackObservable()
focal_class.full_signature: @Override final protected Observable<R> getFallbackObservable()
focal_class.identifier: getFallbackObservable
focal_class.modifiers: @Override final protected
focal_class.parameters: ()
focal_class.return: Observable<R>
focal_class.signature: Observable<R> getFallbackObservable()
focal_class.class_method_signature: HystrixCommand.execute()
focal_class.full_signature: public R execute()
focal_class.identifier: execute
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: R
focal_class.signature: R execute()
focal_class.class_method_signature: HystrixCommand.queue()
focal_class.full_signature: public Future<R> queue()
focal_class.identifier: queue
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: Future<R>
focal_class.signature: Future<R> queue()
focal_class.class_method_signature: HystrixCommand.getFallbackMethodName()
focal_class.full_signature: @Override protected String getFallbackMethodName()
focal_class.identifier: getFallbackMethodName
focal_class.modifiers: @Override protected
focal_class.parameters: ()
focal_class.return: String
focal_class.signature: String getFallbackMethodName()
focal_class.class_method_signature: HystrixCommand.isFallbackUserDefined()
focal_class.full_signature: @Override protected boolean isFallbackUserDefined()
focal_class.identifier: isFallbackUserDefined
focal_class.modifiers: @Override protected
focal_class.parameters: ()
focal_class.return: boolean
focal_class.signature: boolean isFallbackUserDefined()
focal_class.class_method_signature: HystrixCommand.commandIsScalar()
focal_class.full_signature: @Override protected boolean commandIsScalar()
focal_class.identifier: commandIsScalar
focal_class.modifiers: @Override protected
focal_class.parameters: ()
focal_class.return: boolean
focal_class.signature: boolean commandIsScalar()
focal_class.superclass: extends AbstractCommand<R>
focal_method.body: public R execute() {
          try {
              return queue().get();
          } catch (Exception e) {
              throw Exceptions.sneakyThrow(decomposeException(e));
          }
      }
focal_method.class_method_signature: HystrixCommand.execute()
focal_method.full_signature: public R execute()
focal_method.identifier: execute
focal_method.invocations: get queue sneakyThrow decomposeException
focal_method.modifiers: public
focal_method.parameters: ()
focal_method.return: R
focal_method.signature: R execute()