boolean tryEnterBulkhead() { boolean callPermitted = false; long timeout = config.getMaxWaitTime(); if (timeout == 0) { callPermitted = semaphore.tryAcquire(); } else { try { callPermitted = semaphore.tryAcquire(timeout, TimeUnit.MILLISECONDS); } catch (InterruptedException ex) { callPermitted = false; } } return callPermitted; }
@Test public void testBuildCustom() { // given int maxConcurrent = 66; long maxWait = 555; // when BulkheadConfig config = BulkheadConfig.custom() .maxConcurrentCalls(maxConcurrent) .maxWaitTime(maxWait) .build(); // then assertThat(config).isNotNull(); assertThat(config.getMaxConcurrentCalls()).isEqualTo(maxConcurrent); assertThat(config.getMaxWaitTime()).isEqualTo(maxWait); }
@Test public void changePermissionsInIdleState() { BulkheadConfig originalConfig = BulkheadConfig.custom() .maxConcurrentCalls(3) .maxWaitTime(5000) .build(); SemaphoreBulkhead bulkhead = new SemaphoreBulkhead("test", originalConfig); assertThat(bulkhead.getBulkheadConfig().getMaxConcurrentCalls()).isEqualTo(3); assertThat(bulkhead.getBulkheadConfig().getMaxWaitTime()).isEqualTo(5000); BulkheadConfig newConfig = BulkheadConfig.custom() .maxConcurrentCalls(5) .maxWaitTime(5000) .build(); bulkhead.changeConfig(newConfig); assertThat(bulkhead.getBulkheadConfig().getMaxConcurrentCalls()).isEqualTo(5); assertThat(bulkhead.getBulkheadConfig().getMaxWaitTime()).isEqualTo(5000); newConfig = BulkheadConfig.custom() .maxConcurrentCalls(2) .maxWaitTime(5000) .build(); bulkhead.changeConfig(newConfig); assertThat(bulkhead.getBulkheadConfig().getMaxConcurrentCalls()).isEqualTo(2); assertThat(bulkhead.getBulkheadConfig().getMaxWaitTime()).isEqualTo(5000); bulkhead.changeConfig(newConfig); }
@Test public void changeWaitTimeInIdleState() { BulkheadConfig originalConfig = BulkheadConfig.custom() .maxConcurrentCalls(3) .maxWaitTime(5000) .build(); SemaphoreBulkhead bulkhead = new SemaphoreBulkhead("test", originalConfig); assertThat(bulkhead.getBulkheadConfig().getMaxConcurrentCalls()).isEqualTo(3); assertThat(bulkhead.getBulkheadConfig().getMaxWaitTime()).isEqualTo(5000); BulkheadConfig newConfig = BulkheadConfig.custom() .maxConcurrentCalls(3) .maxWaitTime(3000) .build(); bulkhead.changeConfig(newConfig); assertThat(bulkhead.getBulkheadConfig().getMaxConcurrentCalls()).isEqualTo(3); assertThat(bulkhead.getBulkheadConfig().getMaxWaitTime()).isEqualTo(3000); newConfig = BulkheadConfig.custom() .maxConcurrentCalls(3) .maxWaitTime(7000) .build(); bulkhead.changeConfig(newConfig); assertThat(bulkhead.getBulkheadConfig().getMaxConcurrentCalls()).isEqualTo(3); assertThat(bulkhead.getBulkheadConfig().getMaxWaitTime()).isEqualTo(7000); bulkhead.changeConfig(newConfig); }
assertThat(bulkhead.getBulkheadConfig().getMaxWaitTime()).isEqualTo(0); assertThat(bulkhead.getMetrics().getAvailableConcurrentCalls()).isEqualTo(1); assertThat(bulkhead.tryEnterBulkhead()).isTrue();