Skip to content

Commit c2d2f6b

Browse files
refactor: move setHostWeightPairsProperty method from RoundRobin to HostSelectorUtils
1 parent 0a044e4 commit c2d2f6b

File tree

4 files changed

+74
-31
lines changed

4 files changed

+74
-31
lines changed

wrapper/src/main/java/software/amazon/jdbc/plugin/limitless/LimitlessRouterServiceImpl.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
import software.amazon.jdbc.RoundRobinHostSelector;
3838
import software.amazon.jdbc.hostavailability.HostAvailability;
3939
import software.amazon.jdbc.util.FullServicesContainer;
40+
import software.amazon.jdbc.util.HostSelectorUtils;
4041
import software.amazon.jdbc.util.Messages;
4142
import software.amazon.jdbc.util.Utils;
4243
import software.amazon.jdbc.util.monitoring.MonitorErrorResponse;
@@ -126,7 +127,7 @@ public void establishConnection(final LimitlessConnectionContext context) throws
126127
return;
127128
}
128129

129-
RoundRobinHostSelector.setRoundRobinHostWeightPairsProperty(
130+
HostSelectorUtils.setHostWeightPairsProperty(RoundRobinHostSelector.ROUND_ROBIN_HOST_WEIGHT_PAIRS,
130131
context.getProps(),
131132
context.getLimitlessRouters());
132133
HostSpec selectedHostSpec;
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package software.amazon.jdbc.util;
2+
3+
import java.util.List;
4+
import java.util.Properties;
5+
import org.checkerframework.checker.nullness.qual.NonNull;
6+
import software.amazon.jdbc.AwsWrapperProperty;
7+
import software.amazon.jdbc.HostSpec;
8+
9+
public class HostSelectorUtils {
10+
public static void setHostWeightPairsProperty(
11+
final @NonNull AwsWrapperProperty property,
12+
final @NonNull Properties properties,
13+
final @NonNull List<HostSpec> hosts) {
14+
final StringBuilder builder = new StringBuilder();
15+
for (int i = 0; i < hosts.size(); i++) {
16+
builder
17+
.append(hosts.get(i).getHostId())
18+
.append(":")
19+
.append(hosts.get(i).getWeight());
20+
if (i < hosts.size() - 1) {
21+
builder.append(",");
22+
}
23+
}
24+
final String hostWeightPairsString = builder.toString();
25+
properties.setProperty(property.name, hostWeightPairsString);
26+
}
27+
}

wrapper/src/test/java/software/amazon/jdbc/RoundRobinHostSelectorTest.java

Lines changed: 1 addition & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import software.amazon.jdbc.HostSpecBuilder;
3333
import software.amazon.jdbc.RoundRobinHostSelector;
3434
import software.amazon.jdbc.hostavailability.SimpleHostAvailabilityStrategy;
35+
import software.amazon.jdbc.util.HostSelectorUtils;
3536

3637
public class RoundRobinHostSelectorTest {
3738
private static final int TEST_PORT = 5432;
@@ -524,34 +525,4 @@ void testGetHost_AllHostsChanged() throws SQLException {
524525
readerHostSpec4.getHost(),
525526
roundRobinHostSelector.getHost(hostsList14, HostRole.READER, defaultProps).getHost());
526527
}
527-
528-
@Test
529-
void testSetRoundRobinHostWeightPairsProperty() {
530-
final String expectedPropertyValue = "instance-1-id:2,instance-2-id:1,instance-3-id:0";
531-
532-
final List<HostSpec> hosts = Arrays.asList(
533-
new HostSpecBuilder(new SimpleHostAvailabilityStrategy())
534-
.host("instance-1")
535-
.hostId("instance-1-id")
536-
.weight(2)
537-
.build(),
538-
new HostSpecBuilder(new SimpleHostAvailabilityStrategy())
539-
.host("instance-2")
540-
.hostId("instance-2-id")
541-
.weight(1)
542-
.build(),
543-
new HostSpecBuilder(new SimpleHostAvailabilityStrategy())
544-
.host("instance-3")
545-
.hostId("instance-3-id")
546-
.weight(0)
547-
.build()
548-
);
549-
final Properties properties = new Properties();
550-
RoundRobinHostSelector.setRoundRobinHostWeightPairsProperty(properties, hosts);
551-
552-
final String actualPropertyValue = properties.getProperty(
553-
RoundRobinHostSelector.ROUND_ROBIN_HOST_WEIGHT_PAIRS.name);
554-
555-
assertEquals(expectedPropertyValue, actualPropertyValue);
556-
}
557528
}
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package software.amazon.jdbc.util;
2+
3+
import static org.junit.jupiter.api.Assertions.assertEquals;
4+
5+
import java.util.Arrays;
6+
import java.util.List;
7+
import java.util.Properties;
8+
import org.junit.jupiter.api.Test;
9+
import software.amazon.jdbc.HostSpec;
10+
import software.amazon.jdbc.HostSpecBuilder;
11+
import software.amazon.jdbc.RoundRobinHostSelector;
12+
import software.amazon.jdbc.hostavailability.SimpleHostAvailabilityStrategy;
13+
14+
public class HostSelectorUtilsTests {
15+
@Test
16+
void testSetHostWeightPairsProperty() {
17+
final String expectedPropertyValue = "instance-1-id:2,instance-2-id:1,instance-3-id:0";
18+
19+
final List<HostSpec> hosts = Arrays.asList(
20+
new HostSpecBuilder(new SimpleHostAvailabilityStrategy())
21+
.host("instance-1")
22+
.hostId("instance-1-id")
23+
.weight(2)
24+
.build(),
25+
new HostSpecBuilder(new SimpleHostAvailabilityStrategy())
26+
.host("instance-2")
27+
.hostId("instance-2-id")
28+
.weight(1)
29+
.build(),
30+
new HostSpecBuilder(new SimpleHostAvailabilityStrategy())
31+
.host("instance-3")
32+
.hostId("instance-3-id")
33+
.weight(0)
34+
.build()
35+
);
36+
final Properties properties = new Properties();
37+
HostSelectorUtils.setHostWeightPairsProperty(RoundRobinHostSelector.ROUND_ROBIN_HOST_WEIGHT_PAIRS, properties, hosts);
38+
39+
final String actualPropertyValue = properties.getProperty(
40+
RoundRobinHostSelector.ROUND_ROBIN_HOST_WEIGHT_PAIRS.name);
41+
42+
assertEquals(expectedPropertyValue, actualPropertyValue);
43+
}
44+
}

0 commit comments

Comments
 (0)