Improve sentinel case (#256)

diff --git a/dubbo-samples-sentinel/pom.xml b/dubbo-samples-sentinel/pom.xml
index 7dd8c3e..b848e7c 100644
--- a/dubbo-samples-sentinel/pom.xml
+++ b/dubbo-samples-sentinel/pom.xml
@@ -32,195 +32,87 @@
         <source.level>1.8</source.level>
         <target.level>1.8</target.level>
         <dubbo.version>2.7.7</dubbo.version>
-        <sentinel.version>1.6.2</sentinel.version>
         <junit.version>4.12</junit.version>
         <spring.version>4.3.16.RELEASE</spring.version>
-        <docker-maven-plugin.version>0.30.0</docker-maven-plugin.version>
-        <jib-maven-plugin.version>1.2.0</jib-maven-plugin.version>
-        <maven-compiler-plugin.version>3.7.0</maven-compiler-plugin.version>
-        <maven-failsafe-plugin.version>2.21.0</maven-failsafe-plugin.version>
-        <image.name>${project.artifactId}:${dubbo.version}</image.name>
-        <java-image.name>openjdk:8</java-image.name>
-        <dubbo.port>20888</dubbo.port>
-        <zookeeper.port>2181</zookeeper.port>
-        <main-class>org.apache.samples.sentinel.FooProviderBootstrap</main-class>
+        <sentinel.version>1.6.2</sentinel.version>
     </properties>
 
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.springframework</groupId>
+                <artifactId>spring-framework-bom</artifactId>
+                <version>${spring.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.dubbo</groupId>
+                <artifactId>dubbo-bom</artifactId>
+                <version>${dubbo.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.dubbo</groupId>
+                <artifactId>dubbo-dependencies-zookeeper</artifactId>
+                <version>${dubbo.version}</version>
+                <type>pom</type>
+            </dependency>
+            <dependency>
+                <groupId>org.slf4j</groupId>
+                <artifactId>slf4j-log4j12</artifactId>
+                <version>1.7.25</version>
+            </dependency>
+            <dependency>
+                <groupId>junit</groupId>
+                <artifactId>junit</artifactId>
+                <version>${junit.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.alibaba.csp</groupId>
+                <artifactId>sentinel-apache-dubbo-adapter</artifactId>
+                <version>${sentinel.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.alibaba.csp</groupId>
+                <artifactId>sentinel-transport-simple-http</artifactId>
+                <version>${sentinel.version}</version>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
     <dependencies>
         <dependency>
             <groupId>org.apache.dubbo</groupId>
             <artifactId>dubbo</artifactId>
-            <version>${dubbo.version}</version>
         </dependency>
-
         <dependency>
             <groupId>org.apache.dubbo</groupId>
             <artifactId>dubbo-dependencies-zookeeper</artifactId>
-            <version>${dubbo.version}</version>
             <type>pom</type>
         </dependency>
-
         <dependency>
             <groupId>com.alibaba.csp</groupId>
             <artifactId>sentinel-apache-dubbo-adapter</artifactId>
-            <version>${sentinel.version}</version>
         </dependency>
-
         <dependency>
             <groupId>com.alibaba.csp</groupId>
             <artifactId>sentinel-transport-simple-http</artifactId>
-            <version>${sentinel.version}</version>
         </dependency>
-
         <dependency>
             <groupId>junit</groupId>
             <artifactId>junit</artifactId>
-            <version>${junit.version}</version>
             <scope>test</scope>
         </dependency>
-
         <dependency>
             <groupId>org.springframework</groupId>
             <artifactId>spring-test</artifactId>
-            <version>${spring.version}</version>
             <scope>test</scope>
         </dependency>
     </dependencies>
 
     <profiles>
-        <profile>
-            <id>dubbo-integration-test</id>
-            <build>
-                <plugins>
-                    <plugin>
-                        <groupId>org.apache.dubbo</groupId>
-                        <artifactId>dubbo-maven-address-plugin</artifactId>
-                        <version>1.0-SNAPSHOT</version>
-                        <executions>
-                            <execution>
-                                <goals>
-                                    <goal>local-address</goal>
-                                </goals>
-                                <configuration>
-                                    <localAddress>dubbo-local-address</localAddress>
-                                </configuration>
-                                <phase>initialize</phase>
-                            </execution>
-                        </executions>
-                    </plugin>
-
-                    <plugin>
-                        <groupId>com.google.cloud.tools</groupId>
-                        <artifactId>jib-maven-plugin</artifactId>
-                        <version>${jib-maven-plugin.version}</version>
-                        <configuration>
-                            <from>
-                                <image>${java-image.name}</image>
-                            </from>
-                            <to>
-                                <image>${image.name}</image>
-                            </to>
-                            <container>
-                                <mainClass>${main-class}</mainClass>
-                                <ports>
-                                    <port>${dubbo.port}</port>
-                                </ports>
-                                <environment>
-                                    <DUBBO_IP_TO_REGISTRY>${dubbo-local-address}</DUBBO_IP_TO_REGISTRY>
-                                </environment>
-                                <jvmFlags>
-                                    <jvmFlag>-Dzookeeper.address=${dubbo-local-address}</jvmFlag>
-                                    <jvmFlag>-Ddubbo.port=${dubbo.port}</jvmFlag>
-                                </jvmFlags>
-                            </container>
-                        </configuration>
-                        <executions>
-                            <execution>
-                                <phase>package</phase>
-                                <goals>
-                                    <goal>dockerBuild</goal>
-                                </goals>
-                            </execution>
-                        </executions>
-                    </plugin>
-
-                    <plugin>
-                        <groupId>io.fabric8</groupId>
-                        <artifactId>docker-maven-plugin</artifactId>
-                        <version>${docker-maven-plugin.version}</version>
-                        <configuration>
-                            <images>
-                                <image>
-                                    <name>zookeeper:latest</name>
-                                    <run>
-                                        <ports>
-                                            <port>${zookeeper.port}:${zookeeper.port}</port>
-                                        </ports>
-                                        <wait>
-                                            <tcp>
-                                                <host>${dubbo-local-address}</host>
-                                                <ports>
-                                                    <port>${zookeeper.port}</port>
-                                                </ports>
-                                            </tcp>
-                                        </wait>
-                                    </run>
-                                </image>
-                                <image>
-                                    <name>${image.name}</name>
-                                    <run>
-                                        <ports>
-                                            <port>${dubbo.port}:${dubbo.port}</port>
-                                        </ports>
-                                        <wait>
-                                            <log>dubbo service started</log>
-                                        </wait>
-                                    </run>
-                                </image>
-                            </images>
-                        </configuration>
-                        <executions>
-                            <execution>
-                                <id>start</id>
-                                <phase>pre-integration-test</phase>
-                                <goals>
-                                    <goal>start</goal>
-                                </goals>
-                            </execution>
-                            <execution>
-                                <id>stop</id>
-                                <phase>post-integration-test</phase>
-                                <goals>
-                                    <goal>stop</goal>
-                                </goals>
-                            </execution>
-                        </executions>
-                    </plugin>
-
-                    <plugin>
-                        <groupId>org.apache.maven.plugins</groupId>
-                        <artifactId>maven-failsafe-plugin</artifactId>
-                        <version>${maven-failsafe-plugin.version}</version>
-                        <executions>
-                            <execution>
-                                <goals>
-                                    <goal>integration-test</goal>
-                                    <goal>verify</goal>
-                                </goals>
-                                <configuration>
-                                    <systemPropertyVariables>
-                                        <zookeeper.address>${dubbo-local-address}</zookeeper.address>
-                                    </systemPropertyVariables>
-                                    <includes>
-                                        <include>**/*IT.java</include>
-                                    </includes>
-                                </configuration>
-                            </execution>
-                        </executions>
-                    </plugin>
-                </plugins>
-            </build>
-        </profile>
         <!-- For jdk 11 above JavaEE annotation -->
         <profile>
             <id>javax.annotation</id>
@@ -242,7 +134,7 @@
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-compiler-plugin</artifactId>
-                <version>${maven-compiler-plugin.version}</version>
+                <version>3.7.0</version>
                 <configuration>
                     <source>${source.level}</source>
                     <target>${target.level}</target>
diff --git a/dubbo-samples-sentinel/src/main/java/org/apache/samples/sentinel/consumer/FooServiceConsumer.java b/dubbo-samples-sentinel/src/main/java/org/apache/samples/sentinel/consumer/FooServiceConsumer.java
index 3b5f10d..e204383 100644
--- a/dubbo-samples-sentinel/src/main/java/org/apache/samples/sentinel/consumer/FooServiceConsumer.java
+++ b/dubbo-samples-sentinel/src/main/java/org/apache/samples/sentinel/consumer/FooServiceConsumer.java
@@ -23,7 +23,7 @@
 
 public class FooServiceConsumer {
 
-    @Reference
+    @Reference(timeout = 3000)
     private FooService fooService;
 
     public String sayHello(String name) {
diff --git a/dubbo-samples-sentinel/src/main/java/org/apache/samples/sentinel/provider/FooServiceImpl.java b/dubbo-samples-sentinel/src/main/java/org/apache/samples/sentinel/provider/FooServiceImpl.java
index ca9b1d0..32bbdef 100644
--- a/dubbo-samples-sentinel/src/main/java/org/apache/samples/sentinel/provider/FooServiceImpl.java
+++ b/dubbo-samples-sentinel/src/main/java/org/apache/samples/sentinel/provider/FooServiceImpl.java
@@ -23,7 +23,7 @@
 
 import java.time.LocalDateTime;
 
-@Service
+@Service(timeout = 3000)
 public class FooServiceImpl implements FooService {
 
     @Override
diff --git a/dubbo-samples-sentinel/src/test/java/org/apache/samples/sentinel/FooServiceIT.java b/dubbo-samples-sentinel/src/test/java/org/apache/samples/sentinel/FooServiceIT.java
index 08c9eba..11d19af 100644
--- a/dubbo-samples-sentinel/src/test/java/org/apache/samples/sentinel/FooServiceIT.java
+++ b/dubbo-samples-sentinel/src/test/java/org/apache/samples/sentinel/FooServiceIT.java
@@ -17,6 +17,7 @@
 
 package org.apache.samples.sentinel;
 
+import com.alibaba.csp.sentinel.slots.block.flow.FlowException;
 import org.apache.dubbo.rpc.RpcException;
 
 import org.apache.samples.sentinel.consumer.ConsumerConfiguration;
@@ -27,6 +28,8 @@
 import org.springframework.test.context.ContextConfiguration;
 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
 
+import java.util.Arrays;
+
 @RunWith(SpringJUnit4ClassRunner.class)
 @ContextConfiguration(classes = {ConsumerConfiguration.class})
 public class FooServiceIT {
@@ -40,11 +43,18 @@
         }
     }
 
-    // FIXME: I think here sentinel's FlowException is expected.
-    @Test(expected = RpcException.class)
-    public void testFlowControl2() throws Exception {
+    @Test(expected = com.alibaba.csp.sentinel.slots.block.flow.FlowException.class)
+    public void testFlowControl2() throws Throwable {
         for (int i = 0; i < 11; i++) {
-            consumer.sayHello("dubbo");
+            try {
+                consumer.sayHello("dubbo");
+            } catch (Throwable e) {
+                if (e.getMessage().contains("com.alibaba.csp.sentinel.slots.block.flow.FlowException")) {
+                    throw new FlowException(e.getMessage());
+                }
+                e.printStackTrace();
+                throw e.getCause();
+            }
         }
     }
 }