/* * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License 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 junit.framework.TestCase; import org.apache.commons.lang3.StringUtils; import org.esigate.api.BaseUrlRetrieveStrategy; import org.esigate.http.IncomingRequest; import org.esigate.test.TestUtils; public class IpHashBaseUrlRetrieveStrategyTest extends TestCase { public void testGetBaseURLRandom() { String[] baseUrls = new String[] {"http://example.com/test/", "http://example1.com/test/", "http://example2.com/test/"}; BaseUrlRetrieveStrategy strategy = new IpHashBaseUrlRetrieveStrategy(baseUrls); IncomingRequest request = TestUtils.createIncomingRequest().build(); strategy.getBaseURL(request); } public void testGetBaseURLInvalidIp() { String[] baseUrls = new String[] {"http://example.com/test/", "http://example1.com/test/", "http://example2.com/test/"}; BaseUrlRetrieveStrategy strategy = new IpHashBaseUrlRetrieveStrategy(baseUrls); IncomingRequest request = TestUtils.createIncomingRequest().setRemoteAddr("").build(); strategy.getBaseURL(request); request = TestUtils.createIncomingRequest().setRemoteAddr(null).build(); strategy.getBaseURL(request); request = TestUtils.createIncomingRequest().setRemoteAddr("not_ip").build(); strategy.getBaseURL(request); request = TestUtils.createIncomingRequest().setRemoteAddr("a.b.c.d").build(); strategy.getBaseURL(request); } public void testGetBaseURLSameIpSameBaseUrl() { String[] baseUrls = new String[] {"http://example.com/test/", "http://example1.com/test/", "http://example2.com/test/"}; BaseUrlRetrieveStrategy strategy = new IpHashBaseUrlRetrieveStrategy(baseUrls); int times = 100; for (int i = 0; i < times; i++) { String ip = getRandomIp(); IncomingRequest request = TestUtils.createIncomingRequest().setRemoteAddr(ip).build(); String baseURL1 = strategy.getBaseURL(request); String baseURL2 = strategy.getBaseURL(request); String baseURL3 = strategy.getBaseURL(request); assertEquals(baseURL1, baseURL2); assertEquals(baseURL1, baseURL3); } } private String getRandomIp() { String[] arr = new String[4]; for (int i = 0; i < 4; i++) { arr[i] = Integer.toString((int) (Math.random() * 256)); } return StringUtils.join(arr, "."); } }