Remove unnecessary sign check, whether positive or negative (#1078)

This commit is contained in:
jizhuozhi
2022-03-11 19:50:13 +08:00
committed by Olga Maciaszek-Sharma
parent 12842c2c7a
commit f70b006b32

View File

@@ -26,6 +26,7 @@ import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.loadbalancer.support.SimpleObjectProvider;
import static java.lang.Integer.MAX_VALUE;
import static java.lang.Integer.MIN_VALUE;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.mock;
@@ -37,7 +38,22 @@ import static org.mockito.Mockito.when;
class RoundRobinLoadBalancerTest {
@Test
void shouldEnforceOrderWhenPositiveOverflow() {
void shouldOrderEnforcedWhenPositive() {
assertOrderEnforced(0);
}
@Test
void shouldOrderEnforcedWhenNegative() {
assertOrderEnforced(MIN_VALUE);
}
@Test
void shouldOrderEnforcedWhenPositiveOverflow() {
assertOrderEnforced(MAX_VALUE);
}
@SuppressWarnings("all")
void assertOrderEnforced(int seed) {
List<ServiceInstance> instances = new ArrayList<>();
for (int i = 0; i < 10; i++) {
ServiceInstance instance = mock(ServiceInstance.class);
@@ -49,11 +65,12 @@ class RoundRobinLoadBalancerTest {
when(supplier.get(any())).thenReturn(Flux.just(instances));
RoundRobinLoadBalancer loadBalancer = new RoundRobinLoadBalancer(new SimpleObjectProvider<>(supplier),
"shouldStartFromZeroWhenPositiveOverflow", MAX_VALUE);
"shouldStartFromZeroWhenPositiveOverflow", seed);
for (int i = 0; i < 10; i++) {
int instanceId = ((seed + 1 + i) & MAX_VALUE) % instances.size();
ServiceInstance chosen = loadBalancer.choose().block().getServer();
assertThat(chosen.getInstanceId()).isEqualTo(i + "");
assertThat(chosen.getInstanceId()).isEqualTo(instanceId + "");
}
}
}