/** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you 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.apache.hadoop.util; import java.io.IOException; import org.apache.hadoop.util.CacheableIPList; import org.apache.hadoop.util.FileBasedIPList; import junit.framework.TestCase; public class TestCacheableIPList extends TestCase { /** * Add a bunch of subnets and IPSs to the file * setup a low cache refresh * test for inclusion * Check for exclusion * Add a bunch of subnets and Ips * wait for cache timeout. * test for inclusion * Check for exclusion */ public void testAddWithSleepForCacheTimeout() throws IOException, InterruptedException { String[] ips = {"10.119.103.112", "10.221.102.0/23", "10.113.221.221"}; TestFileBasedIPList.createFileWithEntries ("ips.txt", ips); CacheableIPList cipl = new CacheableIPList( new FileBasedIPList("ips.txt"),100); assertFalse("10.113.221.222 is in the list", cipl.isIn("10.113.221.222")); assertFalse ("10.222.103.121 is in the list", cipl.isIn("10.222.103.121")); TestFileBasedIPList.removeFile("ips.txt"); String[]ips2 = {"10.119.103.112", "10.221.102.0/23", "10.222.0.0/16", "10.113.221.221", "10.113.221.222"}; TestFileBasedIPList.createFileWithEntries ("ips.txt", ips2); Thread.sleep(101); assertTrue("10.113.221.222 is not in the list", cipl.isIn("10.113.221.222")); assertTrue ("10.222.103.121 is not in the list", cipl.isIn("10.222.103.121")); TestFileBasedIPList.removeFile("ips.txt"); } /** * Add a bunch of subnets and IPSs to the file * setup a low cache refresh * test for inclusion * Check for exclusion * Remove a bunch of subnets and Ips * wait for cache timeout. * test for inclusion * Check for exclusion */ public void testRemovalWithSleepForCacheTimeout() throws IOException, InterruptedException { String[] ips = {"10.119.103.112", "10.221.102.0/23", "10.222.0.0/16", "10.113.221.221", "10.113.221.222"}; TestFileBasedIPList.createFileWithEntries ("ips.txt", ips); CacheableIPList cipl = new CacheableIPList( new FileBasedIPList("ips.txt"),100); assertTrue("10.113.221.222 is not in the list", cipl.isIn("10.113.221.222")); assertTrue ("10.222.103.121 is not in the list", cipl.isIn("10.222.103.121")); TestFileBasedIPList.removeFile("ips.txt"); String[]ips2 = {"10.119.103.112", "10.221.102.0/23", "10.113.221.221"}; TestFileBasedIPList.createFileWithEntries ("ips.txt", ips2); Thread.sleep(1005); assertFalse("10.113.221.222 is in the list", cipl.isIn("10.113.221.222")); assertFalse ("10.222.103.121 is in the list", cipl.isIn("10.222.103.121")); TestFileBasedIPList.removeFile("ips.txt"); } /** * Add a bunch of subnets and IPSs to the file * setup a low cache refresh * test for inclusion * Check for exclusion * Add a bunch of subnets and Ips * do a refresh * test for inclusion * Check for exclusion */ public void testAddWithRefresh() throws IOException, InterruptedException { String[] ips = {"10.119.103.112", "10.221.102.0/23", "10.113.221.221"}; TestFileBasedIPList.createFileWithEntries ("ips.txt", ips); CacheableIPList cipl = new CacheableIPList( new FileBasedIPList("ips.txt"),100); assertFalse("10.113.221.222 is in the list", cipl.isIn("10.113.221.222")); assertFalse ("10.222.103.121 is in the list", cipl.isIn("10.222.103.121")); TestFileBasedIPList.removeFile("ips.txt"); String[]ips2 = {"10.119.103.112", "10.221.102.0/23", "10.222.0.0/16", "10.113.221.221", "10.113.221.222"}; TestFileBasedIPList.createFileWithEntries ("ips.txt", ips2); cipl.refresh(); assertTrue("10.113.221.222 is not in the list", cipl.isIn("10.113.221.222")); assertTrue ("10.222.103.121 is not in the list", cipl.isIn("10.222.103.121")); TestFileBasedIPList.removeFile("ips.txt"); } /** * Add a bunch of subnets and IPSs to the file * setup a low cache refresh * test for inclusion * Check for exclusion * Remove a bunch of subnets and Ips * wait for cache timeout. * test for inclusion * Check for exclusion */ public void testRemovalWithRefresh() throws IOException, InterruptedException { String[] ips = {"10.119.103.112", "10.221.102.0/23", "10.222.0.0/16", "10.113.221.221", "10.113.221.222"}; TestFileBasedIPList.createFileWithEntries ("ips.txt", ips); CacheableIPList cipl = new CacheableIPList( new FileBasedIPList("ips.txt"),100); assertTrue("10.113.221.222 is not in the list", cipl.isIn("10.113.221.222")); assertTrue ("10.222.103.121 is not in the list", cipl.isIn("10.222.103.121")); TestFileBasedIPList.removeFile("ips.txt"); String[]ips2 = {"10.119.103.112", "10.221.102.0/23", "10.113.221.221"}; TestFileBasedIPList.createFileWithEntries ("ips.txt", ips2); cipl.refresh(); assertFalse("10.113.221.222 is in the list", cipl.isIn("10.113.221.222")); assertFalse ("10.222.103.121 is in the list", cipl.isIn("10.222.103.121")); TestFileBasedIPList.removeFile("ips.txt"); } }