From 496ff9833b3daa53786452925c63802277d2f0e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=9C=B0=E5=B9=B3=E7=BA=BF?= <22250530@qq.com> Date: Sun, 21 Jun 2015 10:50:51 +0800 Subject: [PATCH] --- test/META-INF/persistence.xml | 14 + .../redkale/test/convert/BasedEntity.java | 21 + .../redkale/test/convert/BsonTestMain.java | 41 ++ .../redkale/test/convert/JsonTestMain.java | 31 ++ .../test/convert/TestComplextBean.java | 391 ++++++++++++++++++ .../redkale/test/convert/TestConvertBean.java | 129 ++++++ .../redkale/test/convert/TestEntry.java | 114 +++++ .../redkale/test/convert/TestEntry2.java | 45 ++ .../wentch/redkale/test/convert/UserInfo.java | 114 +++++ .../redkale/test/convert/UserMentorPrize.java | 89 ++++ .../redkale/test/net/UploadTestServlet.java | 48 +++ .../redkale/test/service/IMService.java | 28 ++ .../redkale/test/service/IMServlet.java | 27 ++ .../wentch/redkale/test/service/Person.java | 32 ++ .../wentch/redkale/test/service/TestBean.java | 14 + .../wentch/redkale/test/sncp/SncpTest.java | 69 ++++ .../redkale/test/sncp/SncpTestBean.java | 42 ++ .../redkale/test/sncp/SncpTestService.java | 20 + .../redkale/test/source/CacheTestBean.java | 78 ++++ .../wentch/redkale/test/source/JDBCTest.java | 43 ++ .../redkale/test/source/LoginTestBean.java | 26 ++ .../redkale/test/source/LoginTestRecord.java | 96 +++++ test/com/wentch/redkale/test/util/Test.java | 38 ++ .../wentch/redkale/test/util/TestBean.java | 46 +++ .../wentch/redkale/test/util/TestXBean.java | 15 + .../redkale/test/util/UntilTestMain.java | 101 +++++ .../test/websocket/ChatWebSocketServlet.java | 68 +++ .../redkale/test/websocket/Flash843.java | 29 ++ .../test/websocket/VideoWebSocketServlet.java | 128 ++++++ 29 files changed, 1937 insertions(+) create mode 100644 test/META-INF/persistence.xml create mode 100644 test/com/wentch/redkale/test/convert/BasedEntity.java create mode 100644 test/com/wentch/redkale/test/convert/BsonTestMain.java create mode 100644 test/com/wentch/redkale/test/convert/JsonTestMain.java create mode 100644 test/com/wentch/redkale/test/convert/TestComplextBean.java create mode 100644 test/com/wentch/redkale/test/convert/TestConvertBean.java create mode 100644 test/com/wentch/redkale/test/convert/TestEntry.java create mode 100644 test/com/wentch/redkale/test/convert/TestEntry2.java create mode 100644 test/com/wentch/redkale/test/convert/UserInfo.java create mode 100644 test/com/wentch/redkale/test/convert/UserMentorPrize.java create mode 100644 test/com/wentch/redkale/test/net/UploadTestServlet.java create mode 100644 test/com/wentch/redkale/test/service/IMService.java create mode 100644 test/com/wentch/redkale/test/service/IMServlet.java create mode 100644 test/com/wentch/redkale/test/service/Person.java create mode 100644 test/com/wentch/redkale/test/service/TestBean.java create mode 100644 test/com/wentch/redkale/test/sncp/SncpTest.java create mode 100644 test/com/wentch/redkale/test/sncp/SncpTestBean.java create mode 100644 test/com/wentch/redkale/test/sncp/SncpTestService.java create mode 100644 test/com/wentch/redkale/test/source/CacheTestBean.java create mode 100644 test/com/wentch/redkale/test/source/JDBCTest.java create mode 100644 test/com/wentch/redkale/test/source/LoginTestBean.java create mode 100644 test/com/wentch/redkale/test/source/LoginTestRecord.java create mode 100644 test/com/wentch/redkale/test/util/Test.java create mode 100644 test/com/wentch/redkale/test/util/TestBean.java create mode 100644 test/com/wentch/redkale/test/util/TestXBean.java create mode 100644 test/com/wentch/redkale/test/util/UntilTestMain.java create mode 100644 test/com/wentch/redkale/test/websocket/ChatWebSocketServlet.java create mode 100644 test/com/wentch/redkale/test/websocket/Flash843.java create mode 100644 test/com/wentch/redkale/test/websocket/VideoWebSocketServlet.java diff --git a/test/META-INF/persistence.xml b/test/META-INF/persistence.xml new file mode 100644 index 000000000..eba70637b --- /dev/null +++ b/test/META-INF/persistence.xml @@ -0,0 +1,14 @@ + + + + false + ALL + NONE + + + + + + + + diff --git a/test/com/wentch/redkale/test/convert/BasedEntity.java b/test/com/wentch/redkale/test/convert/BasedEntity.java new file mode 100644 index 000000000..5cc9642bd --- /dev/null +++ b/test/com/wentch/redkale/test/convert/BasedEntity.java @@ -0,0 +1,21 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.wentch.redkale.test.convert; + +import com.wentch.redkale.convert.json.JsonFactory; +import java.io.Serializable; + +/** + * + * @author zhangjx + */ +public abstract class BasedEntity implements Serializable { + + @Override + public String toString() { + return JsonFactory.root().getConvert().convertTo(this); + } +} diff --git a/test/com/wentch/redkale/test/convert/BsonTestMain.java b/test/com/wentch/redkale/test/convert/BsonTestMain.java new file mode 100644 index 000000000..a46d6b598 --- /dev/null +++ b/test/com/wentch/redkale/test/convert/BsonTestMain.java @@ -0,0 +1,41 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.wentch.redkale.test.convert; + +import com.wentch.redkale.convert.bson.BsonConvert; +import com.wentch.redkale.convert.bson.BsonFactory; +import com.wentch.redkale.convert.json.*; +import java.io.Serializable; +import java.util.Arrays; + +/** + * + * @author zhangjx + */ +public class BsonTestMain { + + public static void main(String[] args) throws Exception { + Serializable[] sers = new Serializable[]{"aaa",4}; + final BsonConvert convert = BsonFactory.root().getConvert(); + byte[] bytes = convert.convertTo(sers); + Serializable[] a = convert.convertFrom(Serializable[].class, bytes); + System.out.println(Arrays.toString(a)); + main2(args); + } + public static void main2(String[] args) throws Exception { + final BsonConvert convert = BsonFactory.root().getConvert(); + TestEntry2 entry = TestEntry2.create(); + byte[] bytes = convert.convertTo(TestEntry2.class, entry); + System.out.println(JsonFactory.root().getConvert().convertTo(entry)); + TestEntry rs = convert.convertFrom(TestEntry.class, bytes); + System.out.println(rs.toString()); + System.out.println(JsonFactory.root().getConvert().convertTo(rs)); + + TestComplextBean bean = new TestComplextBean(); + byte[] bytes2 = convert.convertTo(Object.class, bean); + System.out.println(convert.convertFrom(TestComplextBean.class, bytes2).toString()); + } +} diff --git a/test/com/wentch/redkale/test/convert/JsonTestMain.java b/test/com/wentch/redkale/test/convert/JsonTestMain.java new file mode 100644 index 000000000..c902849d6 --- /dev/null +++ b/test/com/wentch/redkale/test/convert/JsonTestMain.java @@ -0,0 +1,31 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.wentch.redkale.test.convert; + +import com.wentch.redkale.convert.json.*; +import com.wentch.redkale.util.*; +import java.lang.reflect.*; +import java.util.*; + +/** + * + * @author zhangjx + */ +public class JsonTestMain { + + private static final Type MAPTYPE = new TypeToken>() { + }.getType(); + + public static void main(String[] args) throws Exception { + JsonFactory factory = JsonFactory.root(); + factory.setTiny(true); + final JsonConvert convert = JsonFactory.root().getConvert(); + String json = "{\"access_token\":\"vVX2bIjN5P9TMOphDkStM96eNWapAehTuWAlVDO74aFaYxLwj2b-9-T9p_W2mfr9\",\"expires_in\":7200, \"aa\":\"\"}"; + Map map = convert.convertFrom(MAPTYPE, json); + System.out.println(map); + System.out.println(convert.convertTo(map)); + } +} diff --git a/test/com/wentch/redkale/test/convert/TestComplextBean.java b/test/com/wentch/redkale/test/convert/TestComplextBean.java new file mode 100644 index 000000000..212957dae --- /dev/null +++ b/test/com/wentch/redkale/test/convert/TestComplextBean.java @@ -0,0 +1,391 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.wentch.redkale.test.convert; + +import java.util.List; +import javax.persistence.*; + +/** + * + * @author zhangjx + */ +public class TestComplextBean extends BasedEntity{ + + @Id + private int userid; + + private String chname = ""; + + private int organid; + + private String photos = ""; + + private String introvideourl = ""; + + private String introduction = ""; + + private String linkemail = ""; + + private String telephone = ""; + + private String skype = ""; + + private String weixin = ""; + + private String jego = ""; + + private String city = ""; //'导师所在城市', + + private String states = ""; //导师所在洲名 + + private String country = ""; //导师所在国家 + + private int zones;// 导师所在时区 + + private int lac;// 1东北部,2西部,4中西部,8南部 + + private short hyproficient; + + private long createtime; + + private long updatetime; + + private int edutype; + + private int major; + + private short iecalevel; //IECA会员或者认证:1、IECA会员一级 ;2、IECA会员二级 ;3、IECA会员三级 ;4、IECA认证一级;5、IECA认证二级;6、IECA认证三级;7、非会员非认证导师' + + private int workyear; + + private int rateservice;//'服务态度评分(总分)', + + private int ratemajor;//'咨询专业评分(总分)', + + private int ratenum;//'导师评分人次数(总评价人次)', + + private int successnum;//'服务过多少名申请学生', + + private int successrate; //'申请的成功率: 9500,表示成功率为95%', + + private int successhotrate; //'常青藤学校比例: 6000,表示比例为60%', + + private long hots; + + private int starlevel; + + private String degreestr = ""; + + private String searchflag=""; + + private String searchkey = ""; + + @Transient + private boolean baseinfoAll = true;//基本信息是否完整 + + @Transient + private List prizes; + + @Transient + private UserInfo user; + + public List getPrizes() { + return prizes; + } + + public void setPrizes(List prizes) { + this.prizes = prizes; + } + + public boolean isBaseinfoAll() { + return baseinfoAll; + } + + public void setBaseinfoAll(boolean baseinfoAll) { + this.baseinfoAll = baseinfoAll; + } + + public UserInfo getUser() { + return user; + } + + public void setUser(UserInfo user) { + this.user = user; + } + + public int getUserid() { + return userid; + } + + public void setUserid(int userid) { + this.userid = userid; + } + + public String getChname() { + return chname; + } + + public void setChname(String chname) { + this.chname = chname; + } + + public int getOrganid() { + return organid; + } + + public void setOrganid(int organid) { + this.organid = organid; + } + + public String getPhotos() { + return photos; + } + + public void setPhotos(String photos) { + this.photos = photos; + } + + public String getIntrovideourl() { + return introvideourl; + } + + public void setIntrovideourl(String introvideourl) { + this.introvideourl = introvideourl; + } + + public String getIntroduction() { + return introduction; + } + + public void setIntroduction(String introduction) { + this.introduction = introduction; + } + + public String getLinkemail() { + return linkemail; + } + + public void setLinkemail(String linkemail) { + this.linkemail = linkemail; + } + + public String getTelephone() { + return telephone; + } + + public void setTelephone(String telephone) { + this.telephone = telephone; + } + + public String getSkype() { + return skype; + } + + public void setSkype(String skype) { + this.skype = skype; + } + + public String getWeixin() { + return weixin; + } + + public void setWeixin(String weixin) { + this.weixin = weixin; + } + + public String getJego() { + return jego; + } + + public void setJego(String jego) { + this.jego = jego; + } + + public String getCity() { + return city; + } + + public void setCity(String city) { + this.city = city; + } + + public String getStates() { + return states; + } + + public void setStates(String states) { + this.states = states; + } + + public String getCountry() { + return country; + } + + public void setCountry(String country) { + this.country = country; + } + + public int getZones() { + return zones; + } + + public void setZones(int zones) { + this.zones = zones; + } + + public int getLac() { + return lac; + } + + public void setLac(int lac) { + this.lac = lac; + } + + public short getHyproficient() { + return hyproficient; + } + + public void setHyproficient(short hyproficient) { + this.hyproficient = hyproficient; + } + + public long getCreatetime() { + return createtime; + } + + public void setCreatetime(long createtime) { + this.createtime = createtime; + } + + public long getUpdatetime() { + return updatetime; + } + + public void setUpdatetime(long updatetime) { + this.updatetime = updatetime; + } + + public int getEdutype() { + return edutype; + } + + public void setEdutype(int edutype) { + this.edutype = edutype; + } + + public int getMajor() { + return major; + } + + public void setMajor(int major) { + this.major = major; + } + + public short getIecalevel() { + return iecalevel; + } + + public void setIecalevel(short iecalevel) { + this.iecalevel = iecalevel; + } + + public int getWorkyear() { + return workyear; + } + + public void setWorkyear(int workyear) { + this.workyear = workyear; + } + + public int getRateservice() { + return rateservice; + } + + public void setRateservice(int rateservice) { + this.rateservice = rateservice; + } + + public int getRatemajor() { + return ratemajor; + } + + public void setRatemajor(int ratemajor) { + this.ratemajor = ratemajor; + } + + public int getRatenum() { + return ratenum; + } + + public void setRatenum(int ratenum) { + this.ratenum = ratenum; + } + + public int getSuccessnum() { + return successnum; + } + + public void setSuccessnum(int successnum) { + this.successnum = successnum; + } + + public int getSuccessrate() { + return successrate; + } + + public void setSuccessrate(int successrate) { + this.successrate = successrate; + } + + public int getSuccesshotrate() { + return successhotrate; + } + + public void setSuccesshotrate(int successhotrate) { + this.successhotrate = successhotrate; + } + + public long getHots() { + return hots; + } + + public void setHots(long hots) { + this.hots = hots; + } + + public int getStarlevel() { + return starlevel; + } + + public void setStarlevel(int starlevel) { + this.starlevel = starlevel; + } + + public String getDegreestr() { + return degreestr; + } + + public void setDegreestr(String degreestr) { + this.degreestr = degreestr; + } + + public String getSearchflag() { + return searchflag; + } + + public void setSearchflag(String searchflag) { + this.searchflag = searchflag; + } + + public String getSearchkey() { + return searchkey; + } + + public void setSearchkey(String searchkey) { + this.searchkey = searchkey; + } + +} diff --git a/test/com/wentch/redkale/test/convert/TestConvertBean.java b/test/com/wentch/redkale/test/convert/TestConvertBean.java new file mode 100644 index 000000000..f35904702 --- /dev/null +++ b/test/com/wentch/redkale/test/convert/TestConvertBean.java @@ -0,0 +1,129 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.wentch.redkale.test.convert; + +import com.wentch.redkale.util.Sheet; +import com.wentch.redkale.util.TypeToken; +import com.wentch.redkale.convert.bson.BsonFactory; +import com.wentch.redkale.convert.json.JsonFactory; +import java.lang.reflect.*; +import java.util.*; + +/** + * + * @author zhangjx + * @param + * @param + * @param + */ +public class TestConvertBean { + + public static class Entry { + + private String id; + + private String remark; + + public Entry(){ + + } + public Entry(String id, String remark) { + this.id = id; + this.remark = remark; + } + + @Override + public String toString() { + return "Entry{" + "id=" + id + ", remark=" + remark + '}'; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + } + + private T name; + + private List list; + + private Map map; + + public static void main(String[] args) throws Throwable { + TestConvertBean bean = new TestConvertBean<>(); + bean.setName(1234567890L); + List list = new ArrayList<>(); + list.add("你好"); + bean.setList(list); + Map map = new HashMap<>(); + map.put("myvalue", new Entry("myid", "")); + bean.setMap(map); + final Type type = new TypeToken>() { + }.getType(); + JsonFactory.root().setTiny(true); + String json = JsonFactory.root().getConvert().convertTo(type, bean); + System.out.println(json); + System.out.println( JsonFactory.root().getConvert().convertFrom(type, json).toString()); +// JsonFactory child = JsonFactory.root().createChild(); +// System.out.println(child.register(TestConvertBean.class, "name", new ConvertColumnEntry("name", true))); +// child.register(TestConvertBean.class, child.createEncoder(type)); +// System.out.println(child.getConvert().convertTo(type, bean)); + if(true) return; + + Sheet sheet = new Sheet<>(); + sheet.setTotal(20); + List list2 = new ArrayList<>(); + list2.add(new Entry("myid", "描述")); + sheet.setRows(list2); + final Type type2 = new TypeToken>() { + }.getType(); + System.out.println(JsonFactory.root().getConvert().convertTo(type2, sheet)); + sheet = BsonFactory.root().getConvert().convertFrom(type2, BsonFactory.root().getConvert().convertTo(type2, sheet)); + System.out.println(JsonFactory.root().getConvert().convertTo(type2, sheet)); + } + + @Override + public String toString() { + return "TestConvertBean{" + "name=" + name + ", list=" + list + ", map=" + map + '}'; + } + + public T getName() { + return name; + } + + public void setName(T name) { + this.name = name; + } + + public List getList() { + return list; + } + + public void setList(List list) { + this.list = list; + } + + public Map getMap() { + return map; + } + + public void setMap(Map map) { + this.map = map; + } + +} diff --git a/test/com/wentch/redkale/test/convert/TestEntry.java b/test/com/wentch/redkale/test/convert/TestEntry.java new file mode 100644 index 000000000..691ffef9c --- /dev/null +++ b/test/com/wentch/redkale/test/convert/TestEntry.java @@ -0,0 +1,114 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.wentch.redkale.test.convert; + +import com.wentch.redkale.convert.json.JsonFactory; +import com.wentch.redkale.util.Creator; +import java.util.*; + +/** + * + * @author zhangjx + */ +public class TestEntry { + + private String name; + + private String desc=""; + + private int id = (int) System.currentTimeMillis(); + + private int[] addrs; + + private List lists; + + private Map map; + + public static TestEntry create() { + TestEntry v = new TestEntry(); + v.setName("this is name\n \"test"); + v.setId(1000000001); + v.setAddrs(new int[]{22222, 33333, 44444, 55555, 66666, 77777, 88888, 99999}); + List list = new ArrayList<>(); + list.add("aaaa"); + list.add("bbbb"); + list.add("cccc"); + v.setLists(list); + Map map = new HashMap<>(); + map.put("AAA", 111); + map.put("BBB", 222); + map.put("CCC", 333); + v.setMap(map); + return v; + } + + public static void main(String[] args) throws Exception { + System.out.println(JsonFactory.root().getConvert().convertTo(create())); + Creator creator = Creator.create(TestEntry.class); //Creator.create(10, TestEntry.class); + TestEntry entry = creator.create(); + System.out.println(entry); + for(int i =0; i < 10000000; i++){ + creator.create(); + } + System.gc(); + Thread.sleep(2000) ; + System.out.println(creator.create()); + } + + @Override + public String toString() { + return JsonFactory.root().getConvert().convertTo(this); + } + + public int[] getAddrs() { + return addrs; + } + + public void setAddrs(int[] addrs) { + this.addrs = addrs; + } + + public List getLists() { + return lists; + } + + public void setLists(List lists) { + this.lists = lists; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public Map getMap() { + return map; + } + + public void setMap(Map map) { + this.map = map; + } + + public String getDesc() { + return desc; + } + + public void setDesc(String desc) { + this.desc = desc; + } + +} diff --git a/test/com/wentch/redkale/test/convert/TestEntry2.java b/test/com/wentch/redkale/test/convert/TestEntry2.java new file mode 100644 index 000000000..2c26c4d38 --- /dev/null +++ b/test/com/wentch/redkale/test/convert/TestEntry2.java @@ -0,0 +1,45 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.wentch.redkale.test.convert; + +import java.util.*; + +/** + * + * @author zhangjx + */ +public class TestEntry2 extends TestEntry { + + private String extend; + + public static TestEntry2 create() { + TestEntry2 v = new TestEntry2(); + v.setName("this is name\n \"test"); + v.setId(1000000001); + v.setAddrs(new int[]{22222, 33333, 44444, 55555, 66666, 77777, 88888, 99999}); + List list = new ArrayList<>(); + list.add("aaaa"); + list.add("bbbb"); + list.add("cccc"); + v.setLists(list); + Map map = new HashMap<>(); + map.put("AAA", 111); + map.put("BBB", 222); + map.put("CCC", 333); + v.setMap(map); + v.setExtend("hahaha"); + return v; + } + + public String getExtend() { + return extend; + } + + public void setExtend(String extend) { + this.extend = extend; + } + +} diff --git a/test/com/wentch/redkale/test/convert/UserInfo.java b/test/com/wentch/redkale/test/convert/UserInfo.java new file mode 100644 index 000000000..6ffc3391a --- /dev/null +++ b/test/com/wentch/redkale/test/convert/UserInfo.java @@ -0,0 +1,114 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.wentch.redkale.test.convert; + +/** + * + * @author zhangjx + */ +public class UserInfo extends BasedEntity { + + private int userid; + + private String namekey; + + private String nickname; + + private String chname; + + private String password; + + private String mobile; + + private String email; + + private short type; + + private short status; + + private int gmt = 8; + + public int getUserid() { + return userid; + } + + public void setUserid(int userid) { + this.userid = userid; + } + + public String getNamekey() { + return namekey; + } + + public void setNamekey(String namekey) { + this.namekey = namekey; + } + + public String getNickname() { + return nickname; + } + + public void setNickname(String nickname) { + this.nickname = nickname; + } + + public String getChname() { + return chname; + } + + public void setChname(String chname) { + this.chname = chname; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public String getMobile() { + return mobile; + } + + public void setMobile(String mobile) { + this.mobile = mobile; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public short getType() { + return type; + } + + public void setType(short type) { + this.type = type; + } + + public short getStatus() { + return status; + } + + public void setStatus(short status) { + this.status = status; + } + + public int getGmt() { + return gmt; + } + + public void setGmt(int gmt) { + this.gmt = gmt; + } + +} diff --git a/test/com/wentch/redkale/test/convert/UserMentorPrize.java b/test/com/wentch/redkale/test/convert/UserMentorPrize.java new file mode 100644 index 000000000..2e9a962fe --- /dev/null +++ b/test/com/wentch/redkale/test/convert/UserMentorPrize.java @@ -0,0 +1,89 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.wentch.redkale.test.convert; + +import com.wentch.redkale.source.DistributeGenerator; +import javax.persistence.*; + +/** + * + * @author zhangjx + */ +public class UserMentorPrize extends BasedEntity implements Comparable { + + private static final long serialVersionUID = 1L; + + @Id + @DistributeGenerator(initialValue = 10001) + private long mentorprizeid; + + private int userid; + + private String prizename; + + private int happenday; + + @Column(updatable = false) + private long createtime = System.currentTimeMillis(); + + private long updatetime; + + public UserMentorPrize() { + } + + public long getMentorprizeid() { + return mentorprizeid; + } + + public void setMentorprizeid(long mentorprizeid) { + this.mentorprizeid = mentorprizeid; + } + + public int getUserid() { + return userid; + } + + public void setUserid(int userid) { + this.userid = userid; + } + + public String getPrizename() { + return prizename; + } + + public void setPrizename(String prizename) { + this.prizename = prizename; + } + + public int getHappenday() { + return happenday; + } + + public void setHappenday(int happenday) { + this.happenday = happenday; + } + + public long getCreatetime() { + return createtime; + } + + public void setCreatetime(long createtime) { + this.createtime = createtime; + } + + public long getUpdatetime() { + return updatetime; + } + + public void setUpdatetime(long updatetime) { + this.updatetime = updatetime; + } + + @Override + public int compareTo(UserMentorPrize o) { + return this.happenday - o.happenday; + } +} diff --git a/test/com/wentch/redkale/test/net/UploadTestServlet.java b/test/com/wentch/redkale/test/net/UploadTestServlet.java new file mode 100644 index 000000000..645e39dc2 --- /dev/null +++ b/test/com/wentch/redkale/test/net/UploadTestServlet.java @@ -0,0 +1,48 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.wentch.redkale.test.net; + +import com.wentch.redkale.net.http.*; +import java.io.*; + +/** + * + * @author zhangjx + */ +//@WebServlet({"/uploadtest/form", "/uploadtest/send"}) +public class UploadTestServlet extends HttpServlet { + + @Override + public void execute(HttpRequest request, HttpResponse response) throws IOException { + if (request.getRequestURI().contains("/uploadtest/send")) { + send(request, response); + } else { + form(request, response); + } + } + + public void form(HttpRequest req, HttpResponse resp) throws IOException { + resp.setContentType("text/html"); + resp.finish( + "" + + "
" + + "描述:         文件1:

" + + "描述:         文件2:

" + + "描述:         文件3:

" + + "描述:         

" + + "              
" + + ""); + } + + public void send(HttpRequest req, HttpResponse resp) throws IOException { + MultiContext context = req.getMultiContext(); + for (MultiPart entry : context.listMultiPart()) { + entry.skip(); + System.out.println(entry); + } + System.exit(0); + } +} diff --git a/test/com/wentch/redkale/test/service/IMService.java b/test/com/wentch/redkale/test/service/IMService.java new file mode 100644 index 000000000..92a04e289 --- /dev/null +++ b/test/com/wentch/redkale/test/service/IMService.java @@ -0,0 +1,28 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.wentch.redkale.test.service; + +import com.wentch.redkale.service.Service; + +/** + * + * @author zhangjx + */ +public class IMService implements Service { + + @Override + public String toString() { + return "[" + this.getClass().getSimpleName() + "]"; + } + + public void send(String text) { + onSend(text); + } + + public void onSend(String text) { + System.out.println("接收到消息: " + text); + } +} diff --git a/test/com/wentch/redkale/test/service/IMServlet.java b/test/com/wentch/redkale/test/service/IMServlet.java new file mode 100644 index 000000000..b4a05bf58 --- /dev/null +++ b/test/com/wentch/redkale/test/service/IMServlet.java @@ -0,0 +1,27 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.wentch.redkale.test.service; + +import com.wentch.redkale.net.http.WebSocketServlet; +import com.wentch.redkale.net.http.WebSocket; +import java.util.Map; +import javax.annotation.Resource; + +/** + * + * @author zhangjx + */ +public class IMServlet extends WebSocketServlet { + + @Resource(name = "^IMNODE.+$") + private Map nodemaps; + + @Override + protected WebSocket createWebSocket() { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + +} diff --git a/test/com/wentch/redkale/test/service/Person.java b/test/com/wentch/redkale/test/service/Person.java new file mode 100644 index 000000000..c8791de9a --- /dev/null +++ b/test/com/wentch/redkale/test/service/Person.java @@ -0,0 +1,32 @@ +package com.wentch.redkale.test.service; + +import java.io.Serializable; + +public class Person implements Serializable { + + private byte[] b = new byte[1024 * 2]; + + private String name; + + @Override + public String toString() { + return "{name=" + name + ", b =" + (b == null ? "null" : "[length=" + b.length + "]") + "}"; + } + + public byte[] getB() { + return b; + } + + public void setB(byte[] b) { + this.b = b; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + +} diff --git a/test/com/wentch/redkale/test/service/TestBean.java b/test/com/wentch/redkale/test/service/TestBean.java new file mode 100644 index 000000000..86eb03140 --- /dev/null +++ b/test/com/wentch/redkale/test/service/TestBean.java @@ -0,0 +1,14 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.wentch.redkale.test.service; + +/** + * + * @author zhangjx + */ +public class TestBean { + +} diff --git a/test/com/wentch/redkale/test/sncp/SncpTest.java b/test/com/wentch/redkale/test/sncp/SncpTest.java new file mode 100644 index 000000000..a6c244d65 --- /dev/null +++ b/test/com/wentch/redkale/test/sncp/SncpTest.java @@ -0,0 +1,69 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.wentch.redkale.test.sncp; + +import com.wentch.redkale.convert.bson.*; +import com.wentch.redkale.net.*; +import com.wentch.redkale.net.sncp.*; +import com.wentch.redkale.util.*; +import com.wentch.redkale.watch.*; +import java.net.*; +import java.util.concurrent.*; + +/** + * + * @author zhangjx + */ +public class SncpTest { + + private static final String serviceName = ""; + + private static final int port = 7070; + + public static void main(String[] args) throws Exception { + + runServer(); + runClient(); + } + + private static void runClient() throws Exception { + ResourceFactory.root().register("", BsonConvert.class, BsonFactory.root().getConvert()); + Transport transport = new Transport("testsncp", "UDP", WatchFactory.root(), 100, new InetSocketAddress("127.0.0.1", port)); + ResourceFactory.root().register("testsncp", Transport.class, transport); + SncpTestService service = Sncp.createRemoteService(serviceName, SncpTestService.class, "testsncp"); + ResourceFactory.root().inject(service); + + SncpTestBean bean = new SncpTestBean(); + StringBuilder sb = new StringBuilder(); + for(int i =0; i < 2000; i++) { + sb.append("_").append(i).append("_0123456789"); + } + bean.setContent(sb.toString()); + System.out.println(service.queryResult(bean)); + } + + private static void runServer() throws Exception { + final CountDownLatch cdl = new CountDownLatch(1); + new Thread() { + @Override + public void run() { + try { + SncpServer server = new SncpServer(); + server.addService(new ServiceEntry(SncpTestService.class, new SncpTestService(), null, serviceName)); + AnyValue.DefaultAnyValue conf = new AnyValue.DefaultAnyValue(); + conf.addValue("host", "0.0.0.0"); + conf.addValue("port", "" + port); + server.init(conf); + server.start(); + cdl.countDown(); + } catch (Exception e) { + e.printStackTrace(); + } + } + }.start(); + cdl.await(); + } +} diff --git a/test/com/wentch/redkale/test/sncp/SncpTestBean.java b/test/com/wentch/redkale/test/sncp/SncpTestBean.java new file mode 100644 index 000000000..d8348dbc7 --- /dev/null +++ b/test/com/wentch/redkale/test/sncp/SncpTestBean.java @@ -0,0 +1,42 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.wentch.redkale.test.sncp; + +import com.wentch.redkale.convert.json.*; +import com.wentch.redkale.source.*; + +/** + * + * @author zhangjx + */ +public class SncpTestBean implements FilterBean { + + private long id; + + private String content; + + @Override + public String toString() { + return JsonFactory.root().getConvert().convertTo(this); + } + + public long getId() { + return id; + } + + public void setId(long id) { + this.id = id; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + +} diff --git a/test/com/wentch/redkale/test/sncp/SncpTestService.java b/test/com/wentch/redkale/test/sncp/SncpTestService.java new file mode 100644 index 000000000..ba1d591b4 --- /dev/null +++ b/test/com/wentch/redkale/test/sncp/SncpTestService.java @@ -0,0 +1,20 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.wentch.redkale.test.sncp; + +import com.wentch.redkale.service.*; + +/** + * + * @author zhangjx + */ +public class SncpTestService implements Service { + + public String queryResult(SncpTestBean bean) { + System.out.println("运行了方法"); + return "result: " + bean; + } +} diff --git a/test/com/wentch/redkale/test/source/CacheTestBean.java b/test/com/wentch/redkale/test/source/CacheTestBean.java new file mode 100644 index 000000000..6ba131166 --- /dev/null +++ b/test/com/wentch/redkale/test/source/CacheTestBean.java @@ -0,0 +1,78 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.wentch.redkale.test.source; + +import com.wentch.redkale.source.*; +import com.wentch.redkale.source.DataSource.Reckon; +import com.wentch.redkale.util.*; +import java.util.*; + +/** + * + * @author zhangjx + */ +public class CacheTestBean { + + private long pkgid; + + private String name; + + private long price; + + public static void main(String[] args) throws Exception { + final List list = new ArrayList<>(); + list.add(new CacheTestBean(1, "a", 12)); + list.add(new CacheTestBean(1, "a", 18)); + list.add(new CacheTestBean(2, "b", 20)); + list.add(new CacheTestBean(2, "bb", 60)); + Attribute idattr = Attribute.create(CacheTestBean.class, "pkgid"); + Attribute nameattr = Attribute.create(CacheTestBean.class, "name"); + Attribute priceattr = Attribute.create(CacheTestBean.class, "price"); + EntityCache cache = new EntityCache(CacheTestBean.class, Creator.create(CacheTestBean.class), idattr, null); + cache.fullLoad(list); + + System.out.println(cache.getMapResult(idattr, Reckon.COUNT, nameattr, null)); + System.out.println(cache.getMapResult(idattr, Reckon.DISTINCTCOUNT, nameattr, null)); + System.out.println(cache.getMapResult(idattr, Reckon.AVG, priceattr, null)); + System.out.println(cache.getMapResult(idattr, Reckon.SUM, priceattr, null)); + System.out.println(cache.getMapResult(idattr, Reckon.MAX, priceattr, null)); + System.out.println(cache.getMapResult(idattr, Reckon.MIN, priceattr, null)); + } + + public CacheTestBean() { + } + + public CacheTestBean(long pkgid, String name, long price) { + this.pkgid = pkgid; + this.name = name; + this.price = price; + } + + public long getPkgid() { + return pkgid; + } + + public void setPkgid(long pkgid) { + this.pkgid = pkgid; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public long getPrice() { + return price; + } + + public void setPrice(long price) { + this.price = price; + } + +} diff --git a/test/com/wentch/redkale/test/source/JDBCTest.java b/test/com/wentch/redkale/test/source/JDBCTest.java new file mode 100644 index 000000000..b843faa7b --- /dev/null +++ b/test/com/wentch/redkale/test/source/JDBCTest.java @@ -0,0 +1,43 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.wentch.redkale.test.source; + +import com.wentch.redkale.source.DataSource; +import com.wentch.redkale.source.DataSourceFactory; + +/** + * + * @author zhangjx + */ +public class JDBCTest { + + public static void main(String[] args) throws Exception { + System.setProperty("persist.type", "jdbc"); + DataSource source = DataSourceFactory.create(); //耗时:37415 + int count = 1000; + LoginTestRecord last = null; + long s = System.currentTimeMillis(); + int c = 0; + try { + for (int i = 0; i < count; i++) { + LoginTestRecord record = new LoginTestRecord(); + record.setSessionid(Long.toHexString(System.nanoTime())); + record.setLoginagent("win7"); + record.setLogintime(System.currentTimeMillis()); + record.setLoginip("127.0.0.1"); + record.setUserid(i); + source.insert(record); + last = record; + c = i; + } + } catch (Exception e) { + System.out.println("异常了: " + c); + e.printStackTrace(); + } + long e = System.currentTimeMillis() - s; + System.out.println("耗时:" + e); + } +} diff --git a/test/com/wentch/redkale/test/source/LoginTestBean.java b/test/com/wentch/redkale/test/source/LoginTestBean.java new file mode 100644 index 000000000..4e6be6650 --- /dev/null +++ b/test/com/wentch/redkale/test/source/LoginTestBean.java @@ -0,0 +1,26 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.wentch.redkale.test.source; + +import com.wentch.redkale.source.FilterBean; + +/** + * + * @author zhangjx + */ +public class LoginTestBean implements FilterBean { + + private String sessionid; + + public String getSessionid() { + return sessionid; + } + + public void setSessionid(String sessionid) { + this.sessionid = sessionid; + } + +} diff --git a/test/com/wentch/redkale/test/source/LoginTestRecord.java b/test/com/wentch/redkale/test/source/LoginTestRecord.java new file mode 100644 index 000000000..8f73d0a92 --- /dev/null +++ b/test/com/wentch/redkale/test/source/LoginTestRecord.java @@ -0,0 +1,96 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.wentch.redkale.test.source; + +import com.wentch.redkale.convert.json.JsonFactory; +import javax.persistence.*; +import static javax.persistence.GenerationType.SEQUENCE; + +/** + * CREATE TABLE `LoginTestRecord` ( + * `sessionid` VARCHAR(64) NOT NULL COMMENT '登陆会话ID', + * `userid` INT(11) NOT NULL COMMENT '登陆用户ID', + * `loginagent` VARCHAR(128) NOT NULL COMMENT '登陆端信息', + * `loginip` VARCHAR(255) NOT NULL COMMENT '登陆IP', + * `logintime` BIGINT(20) NOT NULL COMMENT '登陆时间', + * `logouttime` BIGINT(20) NOT NULL COMMENT '注销时间', + * PRIMARY KEY (`sessionid`) + * ) ENGINE=INNODB DEFAULT CHARSET=utf8; + * + * @author zhangjx + */ +@Entity +public class LoginTestRecord { + + @Id + @GeneratedValue(strategy = SEQUENCE, generator = "SEQ") + //@SequenceGenerator(name = "SEQ", initialValue = 100001, allocationSize = 1000) + private String sessionid; + + private int userid; + + private String loginagent; + + private String loginip; + + private long logintime; + + private long logouttime; + + @Override + public String toString() { + return JsonFactory.root().getConvert().convertTo(this); + } + + public String getSessionid() { + return sessionid; + } + + public void setSessionid(String sessionid) { + this.sessionid = sessionid; + } + + public int getUserid() { + return userid; + } + + public void setUserid(int userid) { + this.userid = userid; + } + + public String getLoginagent() { + return loginagent; + } + + public void setLoginagent(String loginagent) { + this.loginagent = loginagent; + } + + public String getLoginip() { + return loginip; + } + + public void setLoginip(String loginip) { + this.loginip = loginip; + } + + public long getLogintime() { + return logintime; + } + + public void setLogintime(long logintime) { + this.logintime = logintime; + } + + public long getLogouttime() { + return logouttime; + } + + public void setLogouttime(long logouttime) { + this.logouttime = logouttime; + } + +} diff --git a/test/com/wentch/redkale/test/util/Test.java b/test/com/wentch/redkale/test/util/Test.java new file mode 100644 index 000000000..22430bcf2 --- /dev/null +++ b/test/com/wentch/redkale/test/util/Test.java @@ -0,0 +1,38 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.wentch.redkale.test.util; + +import java.util.*; + +/** + * + * @author zhangjx + */ +public class Test { + + public static void main(String args[]) { + List list = new ArrayList(); + test1(list); + System.out.println(list.size()); // 1处 + test2(list); + System.out.println(list.size()); // 2处 + test3(list); + System.out.println(list.size()); // 3处 + } + + public static void test1(List list) { + list = null; + } + + public static void test2(List list) { + list.add("3wyc"); + } + + public static void test3(List list) { + list.add(new StringBuilder("3wyc")); + } + +} diff --git a/test/com/wentch/redkale/test/util/TestBean.java b/test/com/wentch/redkale/test/util/TestBean.java new file mode 100644 index 000000000..0965718fc --- /dev/null +++ b/test/com/wentch/redkale/test/util/TestBean.java @@ -0,0 +1,46 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.wentch.redkale.test.util; + +import java.util.Map; + +/** + * + * @author zhangjx + */ +public class TestBean { + + private String name; + + private int id; + + private Map map; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public Map getMap() { + return map; + } + + public void setMap(Map map) { + this.map = map; + } + +} diff --git a/test/com/wentch/redkale/test/util/TestXBean.java b/test/com/wentch/redkale/test/util/TestXBean.java new file mode 100644 index 000000000..87dcd87c2 --- /dev/null +++ b/test/com/wentch/redkale/test/util/TestXBean.java @@ -0,0 +1,15 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ + +package com.wentch.redkale.test.util; + +/** + * + * @author zhangjx + */ +public class TestXBean extends TestBean{ + +} diff --git a/test/com/wentch/redkale/test/util/UntilTestMain.java b/test/com/wentch/redkale/test/util/UntilTestMain.java new file mode 100644 index 000000000..82045ee04 --- /dev/null +++ b/test/com/wentch/redkale/test/util/UntilTestMain.java @@ -0,0 +1,101 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.wentch.redkale.test.util; + +import com.wentch.redkale.util.Reproduce; +import com.wentch.redkale.util.Attribute; + +/** + * + * @author zhangjx + */ +public class UntilTestMain { + + public static void main(String[] args) throws Throwable { + reproduce(args); + attribute(args); + } + + public static void reproduce(String[] args) throws Throwable { + final TestBean bean = new TestBean(); + bean.setId(123456); + bean.setName("zhangjx"); + final TestXBean beanx = new TestXBean(); + Reproduce action1 = Reproduce.create(TestXBean.class, TestBean.class); + Reproduce action2 = new Reproduce() { + + @Override + public TestXBean copy(TestXBean dest, TestBean src) { + dest.setId(src.getId()); + dest.setName(src.getName()); + dest.setMap(src.getMap()); + return dest; + } + }; + final int count = 1_000_000; + long s = System.nanoTime(); + for (int i = 0; i < count; i++) { + action2.copy(beanx, bean); + } + long e = System.nanoTime() - s; + System.out.println("静态Reproduce耗时: " + e); + s = System.nanoTime(); + for (int i = 0; i < count; i++) { + action1.copy(beanx, bean); + } + e = System.nanoTime() - s; + System.out.println("动态Reproduce耗时: " + e); + System.out.println(); + } + + public static void attribute(String[] args) throws Throwable { + final TestBean bean = new TestBean(); + bean.setId(123456); + bean.setName("zhangjx"); + Attribute action1 = Attribute.create(TestBean.class.getDeclaredField("name")); + Attribute action2 = new Attribute() { + + @Override + public String field() { + return "name"; + } + + @Override + public String get(TestBean obj) { + return obj.getName(); + } + + @Override + public void set(TestBean obj, String value) { + obj.setName(value); + } + + @Override + public Class type() { + return String.class; + } + + @Override + public Class declaringClass() { + return TestBean.class; + } + }; + final int count = 1_000_000; + long s = System.nanoTime(); + for (int i = 0; i < count; i++) { + action2.set(bean, "zhangjx2"); + } + long e = System.nanoTime() - s; + System.out.println("静态Attribute耗时: " + e); + s = System.nanoTime(); + for (int i = 0; i < count; i++) { + action1.set(bean, "zhangjx2"); + } + e = System.nanoTime() - s; + System.out.println("动态Attribute耗时: " + e); + System.out.println(); + } +} diff --git a/test/com/wentch/redkale/test/websocket/ChatWebSocketServlet.java b/test/com/wentch/redkale/test/websocket/ChatWebSocketServlet.java new file mode 100644 index 000000000..735bfabd9 --- /dev/null +++ b/test/com/wentch/redkale/test/websocket/ChatWebSocketServlet.java @@ -0,0 +1,68 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.wentch.redkale.test.websocket; + +import com.wentch.redkale.net.http.WebServlet; +import com.wentch.redkale.net.http.WebSocketServlet; +import com.wentch.redkale.net.http.WebSocket; +import static java.lang.Thread.sleep; +import java.text.*; +import java.util.concurrent.atomic.*; + +/** + * + * @author zhangjx + */ +@WebServlet("/chat") +public class ChatWebSocketServlet extends WebSocketServlet { + + private final AtomicLong counter = new AtomicLong(); + + private final AtomicLong icounter = new AtomicLong(); + + private final boolean debug; + + public ChatWebSocketServlet() { + debug = "true".equalsIgnoreCase(System.getProperty("debug", "false")); + Thread t = new Thread() { + + private final DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + { + setName("Debug-ChatWebSocket-ShowCount-Thread"); + } + + @Override + public void run() { + while (true) { + try { + sleep(60 * 1000); + } catch (Exception e) { + return; + } + System.out.println(format.format(new java.util.Date()) + ": 消息总数: " + counter.get() + ",间隔消息数: " + icounter.getAndSet(0)); + } + } + }; + t.start(); + } + + @Override + protected WebSocket createWebSocket() { + + return new WebSocket() { + + @Override + public void onMessage(String text) { + icounter.incrementAndGet(); + counter.incrementAndGet(); + if (debug) System.out.println("收到消息: " + text); + super.getWebSocketGroup().getWebSockets().forEach(x -> x.send(text)); + } + }; + } + +} diff --git a/test/com/wentch/redkale/test/websocket/Flash843.java b/test/com/wentch/redkale/test/websocket/Flash843.java new file mode 100644 index 000000000..77ea2c40e --- /dev/null +++ b/test/com/wentch/redkale/test/websocket/Flash843.java @@ -0,0 +1,29 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.wentch.redkale.test.websocket; + +import java.io.ByteArrayOutputStream; +import java.net.Socket; + +/** + * + * @author zhangjx + */ +public class Flash843 { + + public static void main(String[] args) throws Exception { + Socket socket = new Socket("113.105.88.229", 843); + socket.getOutputStream().write("".getBytes()); + socket.getOutputStream().flush(); + ByteArrayOutputStream out = new ByteArrayOutputStream(); + byte[] bytes = new byte[1024]; + int pos; + while ((pos = socket.getInputStream().read(bytes)) != -1) { + out.write(bytes, 0, pos); + } + System.out.println(out.toString()); + } +} diff --git a/test/com/wentch/redkale/test/websocket/VideoWebSocketServlet.java b/test/com/wentch/redkale/test/websocket/VideoWebSocketServlet.java new file mode 100644 index 000000000..7e54a0de6 --- /dev/null +++ b/test/com/wentch/redkale/test/websocket/VideoWebSocketServlet.java @@ -0,0 +1,128 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.wentch.redkale.test.websocket; + +import com.wentch.redkale.net.http.WebServlet; +import com.wentch.redkale.net.http.WebSocketServlet; +import com.wentch.redkale.net.http.HttpRequest; +import com.wentch.redkale.net.http.WebSocket; +import com.wentch.redkale.net.http.HttpServer; +import com.wentch.redkale.util.TypeToken; +import com.wentch.redkale.util.AnyValue; +import java.util.*; +import java.util.concurrent.CountDownLatch; + +/** + * + * @author zhangjx + */ +@WebServlet({"/listen/*"}) +public class VideoWebSocketServlet extends WebSocketServlet { + + private final Map sessions = new java.util.concurrent.ConcurrentHashMap<>(); + + private final Map users = new HashMap<>(); + + private static final class Entry { + + public WebSocket socket; + + public String username; + + public String userid; + + } + + public VideoWebSocketServlet() { + super(); + users.put("zhangjx", "xxxx"); + } + + @Override + protected WebSocket createWebSocket() { + WebSocket socket = new WebSocket() { + + private final TypeToken> mapToken = new TypeToken>() { + }; + + private boolean repeat = false; + + @Override + public String onOpen(final HttpRequest request) { + String uri = request.getRequestURI(); + int pos = uri.indexOf("/listen/"); + uri = uri.substring(pos + "/listen/".length()); + this.repeat = sessions.get(uri) != null; + if (!this.repeat) this.repeat = users.get(uri) == null; + String sessionid = Long.toString(System.nanoTime()); + if (uri.indexOf('\'') >= 0 || uri.indexOf('"') >= 0) return null; + if (!repeat) sessionid = uri; + return sessionid; + } + + @Override + public void onConnected() { + if (repeat) { + super.close(); + } else { + Entry entry = new Entry(); + entry.userid = this.getSessionid(); + entry.username = users.get(entry.userid); + sessions.put(this.getSessionid(), entry); + StringBuilder sb = new StringBuilder(); + for (Map.Entry en : sessions.entrySet()) { + if (sb.length() > 0) sb.append(','); + sb.append("{'userid':'").append(en.getKey()).append("','username':'").append(en.getValue().username).append("'}"); + } + super.send(("{'type':'user_list','users':[" + sb + "]}").replace('\'', '"')); + String msg = ("{'type':'discover_user','user':{'userid':'" + this.getSessionid() + "','username':'" + users.get(this.getSessionid()) + "'}}").replace('\'', '"'); + super.getWebSocketGroup().getWebSockets().filter(x -> x != this).forEach(x -> { + x.send(msg); + }); + } + } + + @Override + public void onMessage(String text) { + //System.out.println("接收到消息: " + text); + super.getWebSocketGroup().getWebSockets().filter(x -> x != this).forEach(x -> { + x.send(text); + }); + } + + @Override + public void onClose(int code, String reason) { + sessions.remove(this.getSessionid()); + String msg = ("{'type':'remove_user','user':{'userid':'" + this.getSessionid() + "','username':'" + users.get(this.getSessionid()) + "'}}").replace('\'', '"'); + super.getWebSocketGroup().getWebSockets().filter(x -> x != this).forEach(x -> { + x.send(msg); + }); + } + }; + return socket; + } + + public static void main(String[] args) throws Throwable { + CountDownLatch cdl = new CountDownLatch(1); + AnyValue.DefaultAnyValue config = new AnyValue.DefaultAnyValue(); + config.addValue("threads", System.getProperty("threads")); + config.addValue("bufferPoolSize", System.getProperty("bufferPoolSize")); + config.addValue("responsePoolSize", System.getProperty("responsePoolSize")); + config.addValue("host", System.getProperty("host", "0.0.0.0")); + config.addValue("port", System.getProperty("port", "8070")); + config.addValue("root", System.getProperty("root", "./root3/")); + AnyValue.DefaultAnyValue resConf = new AnyValue.DefaultAnyValue(); + resConf.setValue("cacheMaxLength", "200M"); + resConf.setValue("cacheMaxItemLength", "10M"); + config.setValue("ResourceServlet", resConf); + HttpServer server = new HttpServer(); + server.addHttpServlet(new VideoWebSocketServlet(), null, "/pipes/listen/*"); + server.init(config); + server.start(); + cdl.await(); + } + +}