/*
* Licensed under the import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.atomic.AtomicInteger;
import junit.framework.TestCase;
import org.apache.http.HttpEntityEnclosingRequest;
import org.esigate.api.BaseUrlRetrieveStrategy;
import org.esigate.test.TestUtils;
se is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package org.esigate.url;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.atomic.AtomicInteger;
import junit.framework.TestCase;
import org.esigate.api.BaseUrlRetrieveStrategy;
import org.esigate.http.IncomingRequest;
import org.esigate.test.TestUtils;
public class RoundRobinBaseUrlRetrieveStrategyTest extends TestCase {
public void testGetBaseURL() {
String[] baseUrls =
new String[] {"http://example.com/test/", "http://example1.com/test/", "http://example2.com/test/"};
BaseUrlRetrieveStrategy strategy = new RoundRobinBaseUrlRetrieveStrategy(baseUrls);
IncomingRequest request = TestUtils.createIncomingRequest().build();
int times = 5;
int requestsCount = baseUrls.length * times;
ConcurrentMap<String, AtomicInteger> counterMap = new ConcurrentHashMap<>();
for (int i = 0; i < requestsCount; i++) {
String baseUrl = strategy.getBaseURL(request);
counterMap.putIfAbsent(baseUrl, new AtomicInteger(0));
counterMap.get(baseUrl).incrementAndGet();
}
for (String baseUrl : baseUrls) {
assertEquals(times, counterMap.get(baseUrl).get());
}
}
}