org.esigate.url.IpHashBaseUrlRetrieveStrategyTest.java Source code

Java tutorial

Introduction

Here is the source code for org.esigate.url.IpHashBaseUrlRetrieveStrategyTest.java

Source

/* 
 * 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, ".");
    }
}