Skip to content

Commit 67f88f5

Browse files
author
innokenty
committed
pass all regions to selection strategy as well
This change provides an option for a custom strategy to select all the same regions over and over again without trying others. This may be useful when the strategy contains some extra specific information about the regions and therefore may want to select a given region twice.
1 parent a99cc18 commit 67f88f5

File tree

4 files changed

+13
-17
lines changed

4 files changed

+13
-17
lines changed

config/src/main/java/ru/qatools/gridrouter/config/HostSelectionStrategy.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
*/
88
public interface HostSelectionStrategy {
99

10-
Region selectRegion(List<Region> regions);
10+
Region selectRegion(List<Region> allRegions, List<Region> unvisitedRegions);
1111

1212
Host selectHost(List<Host> hosts);
1313

config/src/main/java/ru/qatools/gridrouter/config/RandomHostSelectionStrategy.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ protected <T extends WithCount> T selectRandom(List<T> elements) {
2121
}
2222

2323
@Override
24-
public Region selectRegion(List<Region> regions) {
25-
return selectRandom(regions);
24+
public Region selectRegion(List<Region> allRegions, List<Region> unvisitedRegions) {
25+
return selectRandom(unvisitedRegions);
2626
}
2727

2828
@Override

config/src/main/java/ru/qatools/gridrouter/config/SequentialHostSelectionStrategy.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,11 @@
77
*/
88
public class SequentialHostSelectionStrategy implements HostSelectionStrategy {
99

10-
private int regionIndex;
11-
1210
private int hostIndex;
1311

1412
@Override
15-
public Region selectRegion(List<Region> regions) {
16-
Region region = regions.get(regionIndex++ % regions.size());
17-
regionIndex %= regions.size();
18-
return region;
13+
public Region selectRegion(List<Region> allRegions, List<Region> unvisitedRegions) {
14+
return unvisitedRegions.get(0);
1915
}
2016

2117
@Override

proxy/src/main/java/ru/qatools/gridrouter/RouteServlet.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -98,15 +98,15 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response)
9898

9999
capabilityProcessorFactory.getProcessor(caps).process(caps);
100100

101-
List<Region> actualRegions = actualVersion.getRegions()
101+
List<Region> allRegions = actualVersion.getRegions()
102102
.stream().map(Region::copy).collect(toList());
103-
List<Region> unusedRegions = new ArrayList<>(actualRegions);
103+
List<Region> unvisitedRegions = new ArrayList<>(allRegions);
104104

105105
int attempt = 0;
106-
while (!actualRegions.isEmpty()) {
106+
while (!allRegions.isEmpty()) {
107107
attempt++;
108108

109-
Region currentRegion = hostSelectionStrategy.selectRegion(unusedRegions);
109+
Region currentRegion = hostSelectionStrategy.selectRegion(allRegions, unvisitedRegions);
110110
Host host = hostSelectionStrategy.selectHost(currentRegion.getHosts());
111111

112112
String route = host.getRoute();
@@ -138,12 +138,12 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response)
138138

139139
currentRegion.getHosts().remove(host);
140140
if (currentRegion.getHosts().isEmpty()) {
141-
actualRegions.remove(currentRegion);
141+
allRegions.remove(currentRegion);
142142
}
143143

144-
unusedRegions.remove(currentRegion);
145-
if (unusedRegions.isEmpty()) {
146-
unusedRegions = new ArrayList<>(actualRegions);
144+
unvisitedRegions.remove(currentRegion);
145+
if (unvisitedRegions.isEmpty()) {
146+
unvisitedRegions = new ArrayList<>(allRegions);
147147
}
148148
}
149149

0 commit comments

Comments
 (0)