/* * Copyright(C) 2010-2011 Alibaba Group Holding Limited All rights reserved. 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 com.alibaba.doris.client; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; import junit.framework.TestCase; import org.apache.commons.lang.StringUtils; import com.alibaba.doris.client.mock.MockDataStoreFactoryImpl; /** * DataStoreTest * * @author Kun He (Raymond He), kun.hek@alibaba-inc.com * @since 1.0 2011-5-6 */ public class DataStoreTest extends TestCase { protected String configUrl; protected DataStoreFactory dataStoreFactory; protected DataStore dataStore; public DataStoreTest() { configUrl = "mock-doris-client.properties"; dataStoreFactory = new MockDataStoreFactoryImpl(configUrl); dataStore = dataStoreFactory.getDataStore("User"); } /** * Test Name: put,get逻辑校验. Expected Result: 取出数据正确 */ public void testPut() { String key = "key001"; String value = "value001"; dataStore.put(key, value); String strValue = (String) dataStore.get(key); assertEquals(value, strValue); } /** * Test Name: key值为空. Expected Result: Client端报错 */ public void testPut2() { String key = null; String value = "value001"; try { dataStore.put(key, value); fail("Null key!"); } catch (IllegalArgumentException e) { } } public void testSinglePuts(){ String key1 = "key1"; String value1 = "dddes"; Map<String, String> map = new HashMap<String, String>(); map.put(key1, value1); dataStore.puts(map); String strValue1 = (String) dataStore.get(key1); assertEquals(value1, strValue1); } public void testPuts() { String key1 = "key1"; String value1 = "value1"; String key2 = "key2"; String value2 = "value2"; Map<String, String> map = new HashMap<String, String>(); map.put(key1, value1); map.put(key2, value2); dataStore.puts(map); String strValue1 = (String) dataStore.get(key1); assertEquals(value1, strValue1); String strValue2 = (String) dataStore.get(key2); assertEquals(value2, strValue2); map = new HashMap<String, String>(); map.put(key1, value1 + "1"); dataStore.puts(map); strValue1 = (String) dataStore.get(key1); assertEquals(value1 + "1", strValue1); } public void testPutsValuenull() { String key1 = "key1"; String value1 = "value1"; String key2 = "key2"; String value2 = null; Map<String, String> map = new HashMap<String, String>(); map.put(key1, value1); map.put(key2, value2); dataStore.puts(map); String strValue1 = (String) dataStore.get(key1); assertEquals(value1, strValue1); String strValue2 = (String) dataStore.get(key2); assertNull(strValue2); } public void testPutsKeynull() { String key1 = "key1"; String value1 = "value1"; String key2 = null; String value2 = "value2"; Map<String, String> map = new HashMap<String, String>(); map.put(key1, value1); map.put(key2, value2); try { dataStore.puts(map); fail("null"); } catch (Exception e) { } } public void testGets() { String key1 = "key1"; String value1 = "value1"; String key2 = "key2"; String value2 = "value2"; dataStore.put(key1, value1); dataStore.put(key2, value2); List<String> keys = new ArrayList<String>(); keys.add(key1); keys.add(key2); List<Object> results = dataStore.gets(keys); for (int i = 0; i < 2; i++) { String s = (String) results.get(i); assertEquals(s, "value" + ++i); } keys = new ArrayList<String>(); keys.add(key1); // test gets single key results = dataStore.gets(keys); for (int i = 0; i < 2; i++) { String s = (String) results.get(i); assertEquals(s, "value" + ++i); } } public void testSingleGets(){ String key1 = "key1"; String value1 = "value1"; dataStore.put(key1, value1); List<String> keys = new ArrayList<String>(); keys.add(key1); List<Object> results = dataStore.gets(keys); for (int i = 0; i < 1; i++) { String s = (String) results.get(i); assertEquals(s, "value" + ++i); } } public void testGetMap() { String key1 = "key1"; String value1 = "value1"; String key2 = "key2"; String value2 = "value2"; dataStore.put(key1, value1); dataStore.put(key2, value2); List<String> keys = new ArrayList<String>(); keys.add(key1); keys.add(key2); Map<Object, Object> map = dataStore.getMap(keys); int i = 0; for (Entry<Object, Object> e : map.entrySet()) { if (e.getKey().equals("key" + ++i)) { assertEquals(e.getValue(), "value" + i); } } assertEquals(2, i); } /** * Test Name: value值为空. Expected Result: 取出数据正确 */ public void testPut3() { String key = "key001"; String value = null; try { dataStore.put(key, value); } catch (IllegalArgumentException e) { e.printStackTrace(); fail("Null value!"); } } /* * public void testPutObject() { String key = "key999"; Product product = new Product(); product.setId("P999"); * product.setName("Apple4"); product.setPrice(199.99); try { dataStore.put(key, product); Product product2 = * (Product) dataStore.get(key); Assert.assertEquals(product.getId(), product2.getId()); * Assert.assertEquals(product.getName(), product2.getName()); Assert.assertEquals(product.getPrice(), * product2.getPrice()); } catch (IllegalArgumentException e) { fail(e.toString()); } } */ // public void testGet() { // String key = "key002"; // String value = "value002"; // dataStore.put( key , value); // // String retValue = (String) dataStore.get( key ); // // assertEquals( "Get putted value", value , retValue); // } public void testDelete() { String key = "key003"; String value = "value003"; dataStore.put(key, value); dataStore.delete(key); String retValue = (String) dataStore.get(key); assertNull("Get deleted value", retValue); } /** * Test Name: put新的value给已存在的key,get出新的value, Expected Result: 取出数据正确 */ public void testKeyExisted() { String key = "key003"; String value = "value003"; dataStore.put(key, value); String value2 = "value004"; dataStore.put(key, value2); String retValue2 = (String) dataStore.get(key); assertEquals(value2, retValue2); } /** * Test Name: key为int类型, Expected Result: 取出数据正确 */ public void testPutKeyInt() { String key = "3"; String value = "value003"; dataStore.put(key, value); Integer key2 = 3; String value2 = "value004"; dataStore.put(key2, value2); String strValue1 = (String) dataStore.get(key); String strValue2 = (String) dataStore.get(key2); assertEquals(value2, strValue1); assertEquals(value2, strValue2); } /** * Test Name: key长度为0, Expected Result: client抛异常 */ public void testPutKeyLngth0() { String key = ""; String value = "value003"; try { dataStore.put(key, value); fail("Emtpy Key!"); } catch (IllegalArgumentException e) { } } /** * Test Name: key长度为255, Expected Result: 插入正常 */ public void testPutKeyLngth255() { String key = new String(new byte[255]); String value = "value003"; try { dataStore.put(key, value); } catch (IllegalArgumentException e) { } } /** * Test Name: key长度为256, Expected Result: client抛异常 */ public void testPutKeyLngth256() { String key = new String(new byte[256]); System.out.println(key.length()); String value = "value003"; try { dataStore.put(key, value); fail("Out of Length Key!"); } catch (IllegalArgumentException e) { } } /** * Test Name: key长度为256, Expected Result: client抛异常 */ public void testPutKeyLngth500() { String key = StringUtils.repeat("A", 300); System.out.println(key.length()); String value = "value003"; try { dataStore.put(key, value); fail("Out of Length Key!"); } catch (IllegalArgumentException e) { } } /** * Test Name: key长度为256, Expected Result: client抛异常 */ public void testPutValueMoreThan1M() { String key = "ABC"; String value = StringUtils.repeat("A", 1024 * 1024 + 1); System.out.println(key.length()); try { DataStore dataStore0 = dataStoreFactory.getDataStore("NotcompressUser"); dataStore0.put(key, value); fail("Out of Length Value, 1M!"); } catch (IllegalArgumentException e) { } } /** * Test Name: value为特殊字符 , Expected Result: 插入获取正常 */ public void testPutValueSpecial() { String key = new String(new byte[256]); System.out.println(key.length()); String value = "!@#$%^&*:-/a\u0001b,\n\t"; try { dataStore.put(key, value); String retValue = (String) dataStore.get(key); assertEquals(value, retValue); } catch (IllegalArgumentException e) { } } }