/** * 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 com.leansoft.luxun.utils; import static com.leansoft.luxun.utils.Utils.caculateShortString; import static com.leansoft.luxun.utils.Utils.crc32; import static com.leansoft.luxun.utils.Utils.getBoolean; import static com.leansoft.luxun.utils.Utils.getInt; import static com.leansoft.luxun.utils.Utils.getProps; import static com.leansoft.luxun.utils.Utils.getString; import static com.leansoft.luxun.utils.Utils.getTopicPartition; import static com.leansoft.luxun.utils.Utils.getTopicRentionHours; import static com.leansoft.luxun.utils.Utils.loadProps; import static com.leansoft.luxun.utils.Utils.readShortString; import static com.leansoft.luxun.utils.Utils.writeShortString; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import java.io.File; import java.nio.ByteBuffer; import java.util.Map; import java.util.Properties; import org.junit.Test; import com.leansoft.luxun.utils.KV; public class UtilsTest { /** * Test method for {@link com.leansoft.luxun.utils.Utils#loadProps(java.lang.String)}. */ @Test public void testLoadProps() { final String filename = "./conf/server.properties"; if(new File(filename).exists()) { Properties props = loadProps(filename); assertTrue(props.size()>0); } if(! new File(filename+"-1").exists()){ try { loadProps(filename+"-1"); fail(); } catch (RuntimeException e) { //ignore } } } /** * Test method for {@link com.leansoft.luxun.utils.Utils#getProps(java.util.Properties, java.lang.String, java.util.Properties)}. */ @Test public void testGetProps() { Properties props = new Properties(); props.setProperty("black.list", "demo=10,test=100"); // Properties vp = getProps(props, "black.list", null); assertEquals("10", vp.getProperty("demo")); assertEquals("100", vp.getProperty("test")); } /** * Test method for {@link com.leansoft.luxun.utils.Utils#getString(java.util.Properties, java.lang.String, java.lang.String)}. */ @Test public void testGetStringPropertiesStringString() { System.setProperty("demo.count", "100"); assertEquals("-1",getString(System.getProperties(), "demo.count.noexist","-1")); } /** * Test method for {@link com.leansoft.luxun.utils.Utils#getString(java.util.Properties, java.lang.String)}. */ @Test public void testGetStringPropertiesString() { System.setProperty("demo.count", "100"); assertEquals("100",getString(System.getProperties(), "demo.count")); } /** * Test method for {@link com.leansoft.luxun.utils.Utils#getInt(java.util.Properties, java.lang.String)}. */ @Test public void testGetIntPropertiesString() { System.setProperty("demo.count", "100"); assertEquals(100,getInt(System.getProperties(), "demo.count")); } /** * Test method for {@link com.leansoft.luxun.utils.Utils#getInt(java.util.Properties, java.lang.String, int)}. */ @Test public void testGetIntPropertiesStringInt() { System.setProperty("demo.count", "100"); assertEquals(100,getInt(System.getProperties(), "demo.count",200)); assertEquals(200,getInt(System.getProperties(), "demo.count.noexist",200)); } /** * Test method for {@link com.leansoft.luxun.utils.Utils#getBoolean(java.util.Properties, java.lang.String, boolean)}. */ @Test public void testGetBoolean() { System.setProperty("demo.boolean", "true"); assertTrue(getBoolean(System.getProperties(), "demo.boolean", false)); assertTrue(getBoolean(System.getProperties(), "demo.boolean.notexist", true)); } /** * Test method for {@link com.leansoft.luxun.utils.Utils#getTopicRentionHours(java.lang.String)}. */ @Test public void testGetTopicRentionHours() { Map<String,Integer> map = getTopicRentionHours("demo:10,test:20"); assertEquals(2, map.size()); assertEquals(new Integer(10),map.get("demo")); assertEquals(new Integer(20),map.get("test")); } /** * Test method for {@link com.leansoft.luxun.utils.Utils#getTopicPartition(java.lang.String)}. */ @Test public void testGetTopicPartition() { KV<String, Integer> topicPartition = getTopicPartition("100-2"); assertEquals("100",topicPartition.k); assertEquals(new Integer(2), topicPartition.v); } /** * Test method for {@link com.leansoft.luxun.utils.Utils#writeShortString(java.nio.ByteBuffer, java.lang.String)}. */ @Test public void testWriteShortString() { ByteBuffer buffer = ByteBuffer.allocate(32); String s = "demo"; writeShortString(buffer, s); assertEquals(2+s.length(), buffer.position()); buffer.flip(); assertEquals(2+s.length(), buffer.limit()); assertEquals(s.length(), buffer.getShort()); } /** * Test method for {@link com.leansoft.luxun.utils.Utils#crc32(byte[], int, int)}. */ @Test public void testCrc32ByteArrayIntInt() { long c1 = crc32("luxun".getBytes()); long c2 = crc32("luxun".getBytes()); assertEquals(c1, c2); assertTrue(c1>0); } /** * Test method for {@link com.leansoft.luxun.utils.Utils#readShortString(java.nio.ByteBuffer)}. */ @Test public void testReadShortString() throws Exception{ final String s = "中文"; final int len = s.getBytes("UTF-8").length; final ByteBuffer buffer = ByteBuffer.allocate(2+len); buffer.putShort((short)len); buffer.put(s.getBytes("UTF-8")); buffer.rewind(); // assertEquals(s, readShortString(buffer)); } /** * Test method for {@link com.leansoft.luxun.utils.Utils#caculateShortString(java.lang.String)}. */ @Test public void testCaculateShortString() { assertEquals(2+4, caculateShortString("demo")); assertEquals(2+6, caculateShortString("中文")); } }