From 4d4428ced8dc92b30be68fdaaca66df35940ab3e Mon Sep 17 00:00:00 2001 From: "ding.lid" Date: Tue, 27 Dec 2011 12:26:29 +0000 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0UT=20DUBBO-146=20=20=20Dubbo?= =?UTF-8?q?=E5=BA=8F=E5=88=97=E5=8C=96=E5=A4=B1=E8=B4=A5=EF=BC=88=E5=A6=82?= =?UTF-8?q?=E4=BC=A0=E8=BE=93=E5=AF=B9=E8=B1=A1=E6=B2=A1=E6=9C=89=E5=AE=9E?= =?UTF-8?q?=E7=8E=B0Serialiable=E6=8E=A5=E5=8F=A3=EF=BC=89=EF=BC=8CProvide?= =?UTF-8?q?r=E7=AB=AF=E4=B9=9F=E6=B2=A1=E6=9C=89=E5=BC=82=E5=B8=B8?= =?UTF-8?q?=E8=BE=93=E5=87=BA=EF=BC=8CConsumer=E7=AB=AF=E8=B6=85=E6=97=B6?= =?UTF-8?q?=E5=87=BA=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://code.alibabatech.com/svn/dubbo/trunk@751 1a56cb94-b969-4eaa-88fa-be21384802f2 --- .../com/alibaba/dubbo/config/ConfigTest.java | 31 +++++++++++- .../com/alibaba/dubbo/config/api/Box.java | 23 +++++++++ .../alibaba/dubbo/config/api/DemoService.java | 4 +- .../config/provider/impl/DemoServiceImpl.java | 5 ++ .../impl/DemoServiceImpl_LongWaiting.java | 5 ++ .../provider/impl/UnserializableBox.java | 49 +++++++++++++++++++ .../UnserializableBoxDemoServiceImpl.java | 36 ++++++++++++++ .../demo-provider-UnserializableBox.xml | 37 ++++++++++++++ 8 files changed, 188 insertions(+), 2 deletions(-) create mode 100644 dubbo-config/src/test/java/com/alibaba/dubbo/config/api/Box.java create mode 100644 dubbo-config/src/test/java/com/alibaba/dubbo/config/provider/impl/UnserializableBox.java create mode 100644 dubbo-config/src/test/java/com/alibaba/dubbo/config/provider/impl/UnserializableBoxDemoServiceImpl.java create mode 100644 dubbo-config/src/test/resources/com/alibaba/dubbo/config/demo-provider-UnserializableBox.xml diff --git a/dubbo-config/src/test/java/com/alibaba/dubbo/config/ConfigTest.java b/dubbo-config/src/test/java/com/alibaba/dubbo/config/ConfigTest.java index 815b99e53..2d4da77c4 100644 --- a/dubbo-config/src/test/java/com/alibaba/dubbo/config/ConfigTest.java +++ b/dubbo-config/src/test/java/com/alibaba/dubbo/config/ConfigTest.java @@ -20,6 +20,7 @@ import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.*; import static org.junit.matchers.JUnitMatchers.*; +import static org.hamcrest.core.IsNot.*; import java.util.List; @@ -330,7 +331,7 @@ public class ConfigTest { // BUG: DUBBO-846 2.0.9中,服务方法上的retry="false"设置失效 @Test - public void test_retry_effective() throws Exception { + public void test_retrySettingFail() throws Exception { ClassPathXmlApplicationContext providerContext = new ClassPathXmlApplicationContext( ConfigTest.class.getPackage().getName().replace('.', '/') + "/demo-provider-long-waiting.xml"); providerContext.start(); @@ -359,6 +360,34 @@ public class ConfigTest { providerContext.close(); } } + + // BUG: DUBBO-146 Dubbo序列化失败(如传输对象没有实现Serialiable接口),Provider端也没有异常输出,Consumer端超时出错 + @Test + public void test_returnSerializationFail() throws Exception { + ClassPathXmlApplicationContext providerContext = new ClassPathXmlApplicationContext(ConfigTest.class.getPackage().getName().replace('.', '/') + "/demo-provider-UnserializableBox.xml"); + providerContext.start(); + try { + ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext(ConfigTest.class.getPackage().getName().replace('.', '/') + "/init-reference.xml"); + ctx.start(); + try { + DemoService demoService = (DemoService)ctx.getBean("demoService"); + try { + demoService.getBox(); + fail(); + } catch (RpcException expected) { + assertThat(expected.getMessage(), containsString("must implement java.io.Serializable")); + assertThat(expected.getMessage(), not(containsString("timeout"))); + } + } finally { + ctx.stop(); + ctx.close(); + } + } finally { + providerContext.stop(); + providerContext.close(); + } + } + @Test public void testSystemPropertyOverrideProtocol() throws Exception { System.setProperty("dubbo.protocol.port", "20812"); diff --git a/dubbo-config/src/test/java/com/alibaba/dubbo/config/api/Box.java b/dubbo-config/src/test/java/com/alibaba/dubbo/config/api/Box.java new file mode 100644 index 000000000..a5a154989 --- /dev/null +++ b/dubbo-config/src/test/java/com/alibaba/dubbo/config/api/Box.java @@ -0,0 +1,23 @@ +/* + * Copyright 1999-2011 Alibaba Group. + * + * 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.dubbo.config.api; + +/** + * @author ding.lid + */ +public interface Box { + String getName(); +} diff --git a/dubbo-config/src/test/java/com/alibaba/dubbo/config/api/DemoService.java b/dubbo-config/src/test/java/com/alibaba/dubbo/config/api/DemoService.java index 6768ea2ae..a536ee8fd 100644 --- a/dubbo-config/src/test/java/com/alibaba/dubbo/config/api/DemoService.java +++ b/dubbo-config/src/test/java/com/alibaba/dubbo/config/api/DemoService.java @@ -22,5 +22,7 @@ package com.alibaba.dubbo.config.api; * @author william.liangf */ public interface DemoService { - String sayName(String name); + String sayName(String name); + + Box getBox(); } \ No newline at end of file diff --git a/dubbo-config/src/test/java/com/alibaba/dubbo/config/provider/impl/DemoServiceImpl.java b/dubbo-config/src/test/java/com/alibaba/dubbo/config/provider/impl/DemoServiceImpl.java index 9fc9b28b0..233b124de 100644 --- a/dubbo-config/src/test/java/com/alibaba/dubbo/config/provider/impl/DemoServiceImpl.java +++ b/dubbo-config/src/test/java/com/alibaba/dubbo/config/provider/impl/DemoServiceImpl.java @@ -15,6 +15,7 @@ */ package com.alibaba.dubbo.config.provider.impl; +import com.alibaba.dubbo.config.api.Box; import com.alibaba.dubbo.config.api.DemoService; /** @@ -27,5 +28,9 @@ public class DemoServiceImpl implements DemoService { public String sayName(String name) { return "say:" + name; } + + public Box getBox() { + return null; + } } \ No newline at end of file diff --git a/dubbo-config/src/test/java/com/alibaba/dubbo/config/provider/impl/DemoServiceImpl_LongWaiting.java b/dubbo-config/src/test/java/com/alibaba/dubbo/config/provider/impl/DemoServiceImpl_LongWaiting.java index 5b4b91dba..c9d17462f 100644 --- a/dubbo-config/src/test/java/com/alibaba/dubbo/config/provider/impl/DemoServiceImpl_LongWaiting.java +++ b/dubbo-config/src/test/java/com/alibaba/dubbo/config/provider/impl/DemoServiceImpl_LongWaiting.java @@ -15,6 +15,7 @@ */ package com.alibaba.dubbo.config.provider.impl; +import com.alibaba.dubbo.config.api.Box; import com.alibaba.dubbo.config.api.DemoService; /** @@ -32,4 +33,8 @@ public class DemoServiceImpl_LongWaiting implements DemoService { return "say:" + name; } + public Box getBox() { + return null; + } + } \ No newline at end of file diff --git a/dubbo-config/src/test/java/com/alibaba/dubbo/config/provider/impl/UnserializableBox.java b/dubbo-config/src/test/java/com/alibaba/dubbo/config/provider/impl/UnserializableBox.java new file mode 100644 index 000000000..c2d6a5279 --- /dev/null +++ b/dubbo-config/src/test/java/com/alibaba/dubbo/config/provider/impl/UnserializableBox.java @@ -0,0 +1,49 @@ +/* + * Copyright 1999-2011 Alibaba Group. + * + * 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.dubbo.config.provider.impl; + +import com.alibaba.dubbo.config.api.Box; + +/** + * @author ding.lid + */ +public class UnserializableBox implements Box { + private static final long serialVersionUID = -4141012025649711421L; + + private int count = 3; + private String name = "Jerry"; + + public int getCount() { + return count; + } + + public void setCount(int count) { + this.count = count; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @Override + public String toString() { + return "Box [count=" + count + ", name=" + name + "]"; + } +} diff --git a/dubbo-config/src/test/java/com/alibaba/dubbo/config/provider/impl/UnserializableBoxDemoServiceImpl.java b/dubbo-config/src/test/java/com/alibaba/dubbo/config/provider/impl/UnserializableBoxDemoServiceImpl.java new file mode 100644 index 000000000..65fe29846 --- /dev/null +++ b/dubbo-config/src/test/java/com/alibaba/dubbo/config/provider/impl/UnserializableBoxDemoServiceImpl.java @@ -0,0 +1,36 @@ +/* + * Copyright 1999-2011 Alibaba Group. + * + * 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.dubbo.config.provider.impl; + +import com.alibaba.dubbo.config.api.Box; +import com.alibaba.dubbo.config.api.DemoService; + +/** + * DemoServiceImpl + * + * @author william.liangf + */ +public class UnserializableBoxDemoServiceImpl implements DemoService { + + public String sayName(String name) { + return "say:" + name; + } + + public Box getBox() { + return new UnserializableBox(); + } + +} \ No newline at end of file diff --git a/dubbo-config/src/test/resources/com/alibaba/dubbo/config/demo-provider-UnserializableBox.xml b/dubbo-config/src/test/resources/com/alibaba/dubbo/config/demo-provider-UnserializableBox.xml new file mode 100644 index 000000000..bd2d1dfb8 --- /dev/null +++ b/dubbo-config/src/test/resources/com/alibaba/dubbo/config/demo-provider-UnserializableBox.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file -- GitLab