diff --git a/prober/src/main/java/google/registry/monitoring/blackbox/module/WebWhoisModule.java b/prober/src/main/java/google/registry/monitoring/blackbox/module/WebWhoisModule.java index a295f9fd4..b3c2f6c7b 100644 --- a/prober/src/main/java/google/registry/monitoring/blackbox/module/WebWhoisModule.java +++ b/prober/src/main/java/google/registry/monitoring/blackbox/module/WebWhoisModule.java @@ -27,7 +27,6 @@ import google.registry.monitoring.blackbox.handler.WebWhoisMessageHandler; import google.registry.monitoring.blackbox.message.HttpRequestMessage; import google.registry.monitoring.blackbox.metric.MetricsCollector; import google.registry.monitoring.blackbox.token.WebWhoisToken; -import google.registry.util.CircularList; import google.registry.util.Clock; import io.netty.bootstrap.Bootstrap; import io.netty.channel.Channel; @@ -191,8 +190,8 @@ public class WebWhoisModule { @Singleton @Provides @WebWhoisProtocol - CircularList provideTopLevelDomains() { - return new CircularList.Builder().add("how", "soy", "xn--q9jyb4c").build(); + ImmutableList provideTopLevelDomains() { + return ImmutableList.of("how", "soy", "xn--q9jyb4c"); } @Provides diff --git a/prober/src/main/java/google/registry/monitoring/blackbox/token/WebWhoisToken.java b/prober/src/main/java/google/registry/monitoring/blackbox/token/WebWhoisToken.java index 78fc551a0..e8617ea6d 100644 --- a/prober/src/main/java/google/registry/monitoring/blackbox/token/WebWhoisToken.java +++ b/prober/src/main/java/google/registry/monitoring/blackbox/token/WebWhoisToken.java @@ -14,11 +14,15 @@ package google.registry.monitoring.blackbox.token; +import static com.google.common.base.Preconditions.checkArgument; + import com.google.common.collect.ImmutableList; +import com.google.common.collect.Iterables; +import com.google.common.collect.Iterators; +import com.google.common.collect.PeekingIterator; import google.registry.monitoring.blackbox.exception.UndeterminedStateException; import google.registry.monitoring.blackbox.message.OutboundMessageType; import google.registry.monitoring.blackbox.module.WebWhoisModule.WebWhoisProtocol; -import google.registry.util.CircularList; import javax.inject.Inject; /** @@ -33,19 +37,21 @@ public class WebWhoisToken extends Token { /** For each top level domain (tld), we probe "prefix.tld". */ private static final String PREFIX = "whois.nic."; - /** {@link ImmutableList} of all top level domains to be probed. */ - private CircularList topLevelDomainsList; + /** {@link PeekingIterator} over a cycle of all top level domains to be probed. */ + private final PeekingIterator tldCycleIterator; @Inject - public WebWhoisToken(@WebWhoisProtocol CircularList topLevelDomainsList) { + public WebWhoisToken(@WebWhoisProtocol ImmutableList topLevelDomainsList) { + checkArgument(!topLevelDomainsList.isEmpty(), "topLevelDomainsList must not be empty."); - this.topLevelDomainsList = topLevelDomainsList; + this.tldCycleIterator = + Iterators.peekingIterator(Iterables.cycle(topLevelDomainsList).iterator()); } - /** Moves on to next top level domain in {@code topLevelDomainsList}. */ + /** Moves on to next top level domain in {@code tldCycleIterator}. */ @Override public WebWhoisToken next() { - topLevelDomainsList = topLevelDomainsList.next(); + tldCycleIterator.next(); return this; } @@ -62,6 +68,6 @@ public class WebWhoisToken extends Token { */ @Override public String host() { - return PREFIX + topLevelDomainsList.get(); + return PREFIX + tldCycleIterator.peek(); } } diff --git a/prober/src/test/java/google/registry/monitoring/blackbox/token/WebWhoisTokenTest.java b/prober/src/test/java/google/registry/monitoring/blackbox/token/WebWhoisTokenTest.java index 0294e0aff..dfb4cd599 100644 --- a/prober/src/test/java/google/registry/monitoring/blackbox/token/WebWhoisTokenTest.java +++ b/prober/src/test/java/google/registry/monitoring/blackbox/token/WebWhoisTokenTest.java @@ -16,9 +16,9 @@ package google.registry.monitoring.blackbox.token; import static com.google.common.truth.Truth.assertThat; +import com.google.common.collect.ImmutableList; import google.registry.monitoring.blackbox.exception.UndeterminedStateException; import google.registry.monitoring.blackbox.message.HttpRequestMessage; -import google.registry.util.CircularList; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; @@ -32,8 +32,8 @@ public class WebWhoisTokenTest { private static final String FIRST_TLD = "first_test"; private static final String SECOND_TLD = "second_test"; private static final String THIRD_TLD = "third_test"; - private final CircularList testDomains = - new CircularList.Builder().add(FIRST_TLD, SECOND_TLD, THIRD_TLD).build(); + private final ImmutableList testDomains = + ImmutableList.of(FIRST_TLD, SECOND_TLD, THIRD_TLD); public Token webToken = new WebWhoisToken(testDomains); @@ -48,10 +48,12 @@ public class WebWhoisTokenTest { assertThat(secondMessage.headers().get("host")).isEqualTo(PREFIX + FIRST_TLD); } - /** - * As Circular Linked List has not been implemented yet, we cannot yet wrap around, so we don't - * test that in testing {@code next}. - */ + @Test + public void testHostOfToken() { + assertThat(webToken.host()).isEqualTo(PREFIX + FIRST_TLD); + assertThat(webToken.host()).isEqualTo(PREFIX + FIRST_TLD); + } + @Test public void testNextToken() { assertThat(webToken.host()).isEqualTo(PREFIX + FIRST_TLD);