package org.pinus4j.test.serializer; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.LinkedHashSet; import java.util.List; import java.util.Map; import java.util.Set; import java.util.TreeSet; import org.junit.Assert; import org.junit.Test; import org.pinus4j.serializer.DeserializeException; import org.pinus4j.serializer.Deserializer; import org.pinus4j.serializer.MyDeserializer; import org.pinus4j.serializer.MySerializer; import org.pinus4j.serializer.SerializeException; import org.pinus4j.serializer.Serializer; public class SerializerTest extends BaseTest { private Serializer ser = MySerializer.getInstance(); private Deserializer deser = MyDeserializer.getInstance(); @Test public void pref() { try { InnerModel sm = new InnerModel(); byte[] bb = null; for (int i = 0; i < 1000; i++) { bb = writeJson(sm); readJson(bb, InnerModel.class); bb = ser.ser(sm, false); deser.deser(bb, false, Model.class); bb = writeObject(sm); readObject(bb); } int times = 2000; System.out.println("ser and deser times=" + times); // jackson byte[] b = writeJson(sm); showLength("jackson length", b); long start = System.currentTimeMillis(); for (int i = 0; i < times; i++) writeJson(sm); System.out.println("jackson ser use:" + (System.currentTimeMillis() - start)); start = System.currentTimeMillis(); for (int i = 0; i < times; i++) readJson(b, InnerModel.class); System.out.println("jackson deser use:" + (System.currentTimeMillis() - start)); // jdk b = writeObject(sm); showLength("jdk length", b); start = System.currentTimeMillis(); for (int i = 0; i < times; i++) writeObject(sm); System.out.println("jdk ser use:" + (System.currentTimeMillis() - start)); start = System.currentTimeMillis(); for (int i = 0; i < times; i++) readObject(b); System.out.println("jdk deser use:" + (System.currentTimeMillis() - start)); // salix b = ser.ser(sm, false); showLength("salix length", b); start = System.currentTimeMillis(); for (int i = 0; i < times; i++) ser.ser(sm, false); System.out.println("salix ser use:" + (System.currentTimeMillis() - start)); start = System.currentTimeMillis(); for (int i = 0; i < times; i++) deser.deser(b, false, Model.class); System.out.println("salix deser use:" + (System.currentTimeMillis() - start)); } catch (Exception e) { e.printStackTrace(); } } @Test public void testModel() { try { Model sm = createModel(); byte[] b = ser.ser(sm, false); showLength("salix write", b); Model sm1 = deser.deser(b, false, Model.class); Assert.assertEquals(sm, sm1); b = writeObject(sm); showLength("java write", b); b = writeJson(sm); showLength("jackson write", b); } catch (Exception e) { e.printStackTrace(); } } @Test public void testThrowable() throws SerializeException, DeserializeException { RuntimeException e = new RuntimeException("test exception"); byte[] b = ser.ser(e); RuntimeException de = (RuntimeException) deser.deser(b, RuntimeException.class); System.out.println(de.getMessage()); } @Test public void testClass() { try { byte[] b = ser.ser(Model.class); Class c = deser.deser(b, Class.class); Assert.assertEquals(Model.class.getName(), c.getName()); } catch (Exception e) { e.printStackTrace(); } } @Test public void testList() { try { List<InnerModel> list = new ArrayList<InnerModel>(); for (int i = 0; i < 1000; i++) list.add(createInnerModel()); byte[] b = ser.ser(list, true); showLength(b); List<InnerModel> list1 = deser.deser(b, true, List.class); Assert.assertEquals(list, list1); b = writeObject(list); showLength(gzip(b)); b = writeJson(list); showLength(gzip(b)); } catch (Exception e) { e.printStackTrace(); } } @Test public void testInt() { try { int i = 100; byte[] b = ser.ser(i); showLength(b); int di = deser.deser(b, Integer.TYPE); System.out.println(di); } catch (Exception e) { e.printStackTrace(); } } @Test public void testString() { try { String s = "中华人民共和国"; byte[] b = ser.ser(s, false); showLength(b); b = writeObject(s); showLength(b); b = writeJson(s); showLength(b); } catch (Exception e) { e.printStackTrace(); } } }