Skip to content

Commit

Permalink
revise tests
Browse files Browse the repository at this point in the history
  • Loading branch information
dapengzhang0 committed Mar 9, 2020
1 parent c22b823 commit 5a7e732
Show file tree
Hide file tree
Showing 5 changed files with 99 additions and 182 deletions.
8 changes: 1 addition & 7 deletions xds/src/main/java/io/grpc/xds/LocalityStore.java
Original file line number Diff line number Diff line change
Expand Up @@ -51,8 +51,6 @@
import io.grpc.xds.OrcaOobUtil.OrcaReportingConfig;
import io.grpc.xds.OrcaOobUtil.OrcaReportingHelperWrapper;
import io.grpc.xds.WeightedRandomPicker.WeightedChildPicker;
import io.grpc.xds.WeightedRandomPicker.WeightedPickerFactory;
import io.grpc.xds.WeightedRandomPicker.WeightedRandomPickerFactory;
import io.grpc.xds.XdsLogger.XdsLogLevel;
import io.grpc.xds.XdsSubchannelPickers.ErrorPicker;
import java.util.ArrayList;
Expand Down Expand Up @@ -111,7 +109,6 @@ final class LocalityStoreImpl implements LocalityStore {

private final XdsLogger logger;
private final Helper helper;
private final WeightedPickerFactory pickerFactory;
private final LoadBalancerProvider loadBalancerProvider;
private final ThreadSafeRandom random;
private final LoadStatsStore loadStatsStore;
Expand All @@ -132,7 +129,6 @@ final class LocalityStoreImpl implements LocalityStore {
this(
logId,
helper,
WeightedRandomPickerFactory.INSTANCE,
lbRegistry,
ThreadSafeRandom.ThreadSafeRandomImpl.instance,
loadStatsStore,
Expand All @@ -144,14 +140,12 @@ final class LocalityStoreImpl implements LocalityStore {
LocalityStoreImpl(
InternalLogId logId,
Helper helper,
WeightedPickerFactory pickerFactory,
LoadBalancerRegistry lbRegistry,
ThreadSafeRandom random,
LoadStatsStore loadStatsStore,
OrcaPerRequestUtil orcaPerRequestUtil,
OrcaOobUtil orcaOobUtil) {
this.helper = checkNotNull(helper, "helper");
this.pickerFactory = checkNotNull(pickerFactory, "pickerFactory");
loadBalancerProvider = checkNotNull(
lbRegistry.getProvider(ROUND_ROBIN),
"Unable to find '%s' LoadBalancer", ROUND_ROBIN);
Expand Down Expand Up @@ -333,7 +327,7 @@ private void updatePicker(
picker = XdsSubchannelPickers.BUFFER_PICKER;
}
} else {
picker = pickerFactory.picker(childPickers);
picker = new WeightedRandomPicker(childPickers);
}

if (!dropOverloads.isEmpty()) {
Expand Down
39 changes: 21 additions & 18 deletions xds/src/main/java/io/grpc/xds/WeightedRandomPicker.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,13 @@
import io.grpc.LoadBalancer.PickSubchannelArgs;
import io.grpc.LoadBalancer.SubchannelPicker;
import java.util.List;
import java.util.Objects;

final class WeightedRandomPicker extends SubchannelPicker {

private final List<WeightedChildPicker> weightedChildPickers;
@VisibleForTesting
final List<WeightedChildPicker> weightedChildPickers;

private final ThreadSafeRandom random;
private final int totalWeight;

Expand All @@ -53,6 +56,23 @@ SubchannelPicker getPicker() {
return childPicker;
}

@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
WeightedChildPicker that = (WeightedChildPicker) o;
return weight == that.weight && Objects.equals(childPicker, that.childPicker);
}

@Override
public int hashCode() {
return Objects.hash(weight, childPicker);
}

@Override
public String toString() {
return MoreObjects.toStringHelper(this)
Expand Down Expand Up @@ -116,21 +136,4 @@ public String toString() {
.add("totalWeight", totalWeight)
.toString();
}

/** Factory that creates a SubchannelPicker for a given list of weighted child pickers. */
interface WeightedPickerFactory {
SubchannelPicker picker(List<WeightedChildPicker> childPickers);
}

static final class WeightedRandomPickerFactory implements WeightedPickerFactory {

static final WeightedRandomPickerFactory INSTANCE = new WeightedRandomPickerFactory();

private WeightedRandomPickerFactory() {}

@Override
public SubchannelPicker picker(List<WeightedChildPicker> childPickers) {
return new WeightedRandomPicker(childPickers);
}
}
}
15 changes: 1 addition & 14 deletions xds/src/main/java/io/grpc/xds/WeightedTargetLoadBalancer.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@
import static io.grpc.ConnectivityState.TRANSIENT_FAILURE;
import static io.grpc.xds.XdsSubchannelPickers.BUFFER_PICKER;

import com.google.common.annotations.VisibleForTesting;
import com.google.common.collect.ImmutableMap;
import io.grpc.ConnectivityState;
import io.grpc.InternalLogId;
Expand All @@ -32,8 +31,6 @@
import io.grpc.util.ForwardingLoadBalancerHelper;
import io.grpc.util.GracefulSwitchLoadBalancer;
import io.grpc.xds.WeightedRandomPicker.WeightedChildPicker;
import io.grpc.xds.WeightedRandomPicker.WeightedPickerFactory;
import io.grpc.xds.WeightedRandomPicker.WeightedRandomPickerFactory;
import io.grpc.xds.WeightedTargetLoadBalancerProvider.WeightedPolicySelection;
import io.grpc.xds.WeightedTargetLoadBalancerProvider.WeightedTargetConfig;
import io.grpc.xds.XdsLogger.XdsLogLevel;
Expand All @@ -51,21 +48,11 @@ final class WeightedTargetLoadBalancer extends LoadBalancer {
private final Map<String, GracefulSwitchLoadBalancer> childBalancers = new HashMap<>();
private final Map<String, ChildHelper> childHelpers = new HashMap<>();
private final Helper helper;
private final WeightedPickerFactory weightedPickerFactory;

private Map<String, WeightedPolicySelection> targets = ImmutableMap.of();

WeightedTargetLoadBalancer(Helper helper) {
this(
checkNotNull(helper, "helper"),
WeightedRandomPickerFactory.INSTANCE);
}

@VisibleForTesting
WeightedTargetLoadBalancer(
Helper helper, WeightedPickerFactory weightedPickerFactory) {
this.helper = helper;
this.weightedPickerFactory = weightedPickerFactory;
logger = XdsLogger.withLogId(
InternalLogId.allocate("weighted-target-lb", helper.getAuthority()));
logger.log(XdsLogLevel.INFO, "Created");
Expand Down Expand Up @@ -161,7 +148,7 @@ private void updateOverallBalancingState() {
picker = XdsSubchannelPickers.BUFFER_PICKER;
}
} else {
picker = weightedPickerFactory.picker(childPickers);
picker = new WeightedRandomPicker(childPickers);
}

if (overallState != null) {
Expand Down

0 comments on commit 5a7e732

Please sign in to comment.