This is an automated email from the ASF dual-hosted git repository.

hefengen pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shenyu.git


The following commit(s) were added to refs/heads/master by this push:
     new feb1e0499b [type:refactor] refactor e2e storage (#5284)
feb1e0499b is described below

commit feb1e0499bcc808f69451cbcfb55104f8076fe72
Author: moremind <[email protected]>
AuthorDate: Wed Nov 8 14:26:40 2023 +0800

    [type:refactor] refactor e2e storage (#5284)
    
    * [type:refactor] refactor storage
    
    * [type:refactor] refactor storage
    
    * [type:refactor] refactor module
    
    * [type:refactor] refactor module
    
    * [type:refactor] refactor module
    
    * [type:refactor] refactor module
    
    * [type:refactor] refactor module
    
    * [type:refactor] refactor module
---
 .github/workflows/e2e-k8s.yml                      |  14 +-
 shenyu-e2e/shenyu-e2e-case/pom.xml                 |   1 +
 .../src/test/resources/admin-application.yml       | 123 --------
 .../src/test/resources/bootstrap-application.yml   | 335 ---------------------
 .../src/test/resources/docker-compose.mysql.yml    | 144 ---------
 .../k8s/script/e2e-http-sync.sh}                   |  20 +-
 .../k8s/shenyu-examples-http.yml                   |  70 +++++
 .../shenyu-e2e-case/shenyu-e2e-case-http/pom.xml   |  10 +-
 .../shenyu/e2e/testcase/http/DataSynTest.java      |  59 ++++
 .../e2e/testcase/http/DividePluginCases.java       |  49 +++
 .../{divide => http}/DividePluginTest.java         |  58 +---
 .../src/test/resources/docker-compose.h2.yml       |  36 ---
 .../src/test/resources/docker-compose.mysql.yml    |  60 ----
 .../src/test/resources/docker-compose.postgres.yml |  62 ----
 .../src/test/resources/docker-compose.test.yml     |  64 ----
 .../k8s/script/e2e-springcloud-sync.sh             |   8 +-
 .../k8s/script/healthcheck.sh                      |  39 ---
 .../src/test/resources/admin-application.yml       | 123 --------
 .../src/test/resources/bootstrap-application.yml   | 203 -------------
 .../src/test/resources/docker-compose.mysql.yml    | 154 ----------
 .../src/test/resources/log4j2.xml                  |  30 --
 .../k8s/script/e2e-h2.sh}                          |   2 +-
 .../k8s/script/e2e-mysql.sh}                       |   2 +-
 .../k8s/script/e2e-postgres.sh}                    |   2 +-
 .../k8s/script/healthcheck.sh                      |   0
 .../k8s/script/services-h2.list                    |   0
 .../k8s/script/services-mysql.list                 |   0
 .../k8s/script/services-postgres.list              |   0
 .../k8s/shenyu-app-service-h2.yml                  |   0
 .../k8s/shenyu-app-service-mysql.yml               |   0
 .../k8s/shenyu-app-service-postgres.yml            |   0
 .../k8s/shenyu-deployment-h2.yml                   |   0
 .../k8s/shenyu-deployment-mysql.yml                |   0
 .../k8s/shenyu-deployment-postgres.yml             |   0
 .../log4j2.xml => shenyu-e2e-case-storage/pom.xml} |  24 +-
 .../e2e/testcase/divide/DividePluginCases.java     |   0
 .../e2e/testcase/divide/DividePluginTest.java      |   0
 .../k8s/script/e2e-websocket-sync.sh               |   6 +-
 .../k8s/script/healthcheck.sh                      |  39 ---
 39 files changed, 232 insertions(+), 1505 deletions(-)

diff --git a/.github/workflows/e2e-k8s.yml b/.github/workflows/e2e-k8s.yml
index f0fa44b761..7a2e595034 100644
--- a/.github/workflows/e2e-k8s.yml
+++ b/.github/workflows/e2e-k8s.yml
@@ -113,12 +113,12 @@ jobs:
     strategy:
       matrix:
         include:
-          - case: shenyu-e2e-case-http
-            script: e2e-http-h2
-          - case: shenyu-e2e-case-http
-            script: e2e-http-mysql
-          - case: shenyu-e2e-case-http
-            script: e2e-http-postgres
+          - case: shenyu-e2e-case-storage
+            script: e2e-h2
+          - case: shenyu-e2e-case-storage
+            script: e2e-mysql
+          - case: shenyu-e2e-case-storage
+            script: e2e-postgres
     steps:
       - uses: actions/checkout@v2
         with:
@@ -201,6 +201,8 @@ jobs:
     strategy:
       matrix:
         include:
+          - case: shenyu-e2e-case-http
+            script: e2e-http-sync
           - case: shenyu-e2e-case-spring-cloud
             script: e2e-springcloud-sync
           - case: shenyu-e2e-case-apache-dubbo
diff --git a/shenyu-e2e/shenyu-e2e-case/pom.xml 
b/shenyu-e2e/shenyu-e2e-case/pom.xml
index e72a646df7..56b9963010 100644
--- a/shenyu-e2e/shenyu-e2e-case/pom.xml
+++ b/shenyu-e2e/shenyu-e2e-case/pom.xml
@@ -29,6 +29,7 @@
     <packaging>pom</packaging>
 
     <modules>
+        <module>shenyu-e2e-case-storage</module>
         <module>shenyu-e2e-case-http</module>
         <module>shenyu-e2e-case-spring-cloud</module>
         <module>shenyu-e2e-case-alibaba-dubbo</module>
diff --git 
a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-grpc/src/test/resources/admin-application.yml
 
b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-grpc/src/test/resources/admin-application.yml
deleted file mode 100755
index 146a1b43cd..0000000000
--- 
a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-grpc/src/test/resources/admin-application.yml
+++ /dev/null
@@ -1,123 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-
-server:
-  port: 9095
-  address: 0.0.0.0
-
-spring:
-  profiles:
-    active: h2
-  thymeleaf:
-    cache: true
-    encoding: utf-8
-    enabled: true
-    prefix: classpath:/static/
-    suffix: .html
-  mvc:
-    pathmatch:
-      matching-strategy: ant_path_matcher
-  jackson:
-    time-zone: GMT+8 # GMT , Asia/Shanghai
-  messages:
-    basename: message/i18n
-
-management:
-  health:
-    mail:
-      enabled: off
-  endpoints:
-    web:
-      exposure:
-        include:
-          - 'health'
-          - 'prometheus'
-    enabled-by-default: true
-
-mybatis:
-  config-location: classpath:/mybatis/mybatis-config.xml
-  mapper-locations: classpath:/mappers/*.xml
-
-shenyu:
-  register:
-    registerType: http #http #zookeeper #etcd #nacos #consul
-    serverLists: #localhost:2181 #http://localhost:2379 #localhost:8848
-    props:
-      sessionTimeout: 5000
-      connectionTimeout: 2000
-      checked: true
-      zombieCheckThreads: 10
-      zombieCheckTimes: 5
-      scheduledTime: 10
-      nacosNameSpace: ShenyuRegisterCenter
-  sync:
-    websocket:
-      enabled: true
-      messageMaxSize: 10240
-      allowOrigins: ws://localhost:9095;ws://localhost:9195;
-  ldap:
-    enabled: false
-    url: ldap://xxxx:xxx
-    bind-dn: cn=xxx,dc=xxx,dc=xxx
-    password: xxxx
-    base-dn: ou=xxx,dc=xxx,dc=xxx
-    object-class: person
-    login-field: cn
-  jwt:
-    expired-seconds: 86400000
-  shiro:
-    white-list:
-      - /
-      - /favicon.*
-      - /static/**
-      - /index**
-      - /platform/login
-      - /websocket
-      - /error
-      - /actuator/health
-      - /actuator/health/** # /actuator/health/readiness 
/actuator/health/liveness
-      - /actuator/prometheus
-      - /swagger-ui.html
-      - /webjars/**
-      - /swagger-resources/**
-      - /v2/api-docs
-      - /csrf
-      - /alert/report
-  swagger:
-    enable: true
-  dashboard:
-    core:
-      onlySuperAdminPermission:
-        - system:manager:add
-        - system:manager:edit
-        - system:manager:delete
-        - system:role:add
-        - system:role:edit
-        - system:role:delete
-        - system:resource:addButton
-        - system:resource:addMenu
-        - system:resource:editButton
-        - system:resource:editMenu
-        - system:resource:deleteButton
-        - system:resource:deleteMenu
-
-logging:
-  level:
-    root: info
-    org.springframework.boot: info
-    org.apache.ibatis: info
-    org.apache.shenyu.bonuspoint: info
-    org.apache.shenyu.lottery: info
-    org.apache.shenyu: info
diff --git 
a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-grpc/src/test/resources/bootstrap-application.yml
 
b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-grpc/src/test/resources/bootstrap-application.yml
deleted file mode 100644
index 350c2294e8..0000000000
--- 
a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-grpc/src/test/resources/bootstrap-application.yml
+++ /dev/null
@@ -1,335 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-
-server:
-  port: 9195
-  address: 0.0.0.0
-  compression:
-    enabled: true
-    minResponseSize: 1048576 # If the response data is greater than 1M, enable 
compression.
-
-spring:
-  main:
-    allow-bean-definition-overriding: true
-  application:
-    name: shenyu-bootstrap
-  codec:
-    max-in-memory-size: 2MB
-  cloud:
-    discovery:
-      enabled: false
-    nacos:
-      discovery:
-        server-addr: 127.0.0.1:8848 # Spring Cloud Alibaba Dubbo use this.
-        enabled: false
-        namespace: ShenyuRegisterCenter
-
-# if you want use ribbon please config every server.
-#springCloud-test:
-#  ribbon:
-#    NIWSServerListClassName: 
com.netflix.niws.loadbalancer.DiscoveryEnabledNIWSServerList
-
-eureka:
-  client:
-    enabled: false
-    serviceUrl:
-      defaultZone: http://localhost:8761/eureka/
-  instance:
-    prefer-ip-address: true
-
-#  security:
-#    oauth2:
-#      client:
-#        registration:
-#          <your client-registration-id>:
-#            client-id: <your client-id>
-#            client-secret: <your client-secret>
-#        provider:
-#          <your client-registration-id>:
-#            authorization-uri: <your authorization-uri>
-#            token-uri: <your access-token-uri>
-#            user-info-uri: <your user-info-uri>
-#            jwk-set-uri: <your jwk-set-uri>
-
-management:
-  health:
-    redis:
-      enabled: false
-    elasticsearch:
-      enabled: false
-  endpoint:
-    health:
-      enabled: true
-      show-details: always
-  endpoints:
-    web:
-      exposure:
-        include: "*" # or health,info
-
-
-shenyu:
-  selectorMatchCache:
-    ## selector L1 cache
-    cache:
-      enabled: false
-      initialCapacity: 10000 # initial capacity in cache
-      maximumSize: 10000 # max size in cache
-    ## selector L2 cache, use trie as L2 cache
-    trie:
-      enabled: false
-      cacheSize: 128 # the number of plug-ins
-      matchMode: antPathMatch
-  ruleMatchCache:
-    ## rule L1 cache
-    cache:
-      enabled: true
-      initialCapacity: 10000 # initial capacity in cache
-      maximumSize: 65536 # max size in cache
-    ## rule L2 cache, use trie as L2 cache
-    trie:
-      enabled: false
-      cacheSize: 1024 # the number of selectors
-      matchMode: antPathMatch
-  netty:
-    http:
-      # set to false, user can custom the netty tcp server config.
-      webServerFactoryEnabled: true
-      selectCount: 1
-      workerCount: 8
-      accessLog: false
-      serverSocketChannel:
-        soRcvBuf: 87380
-        soBackLog: 128
-        soReuseAddr: false
-        connectTimeoutMillis: 10000
-        writeBufferHighWaterMark: 65536
-        writeBufferLowWaterMark: 32768
-        writeSpinCount: 16
-        autoRead: false
-        allocType: "pooled"
-        messageSizeEstimator: 8
-        singleEventExecutorPerGroup: true
-      socketChannel:
-        soKeepAlive: false
-        soReuseAddr: false
-        soLinger: -1
-        tcpNoDelay: true
-        soRcvBuf: 87380
-        soSndBuf: 16384
-        ipTos: 0
-        allowHalfClosure: false
-        connectTimeoutMillis: 10000
-        writeBufferHighWaterMark: 65536
-        writeBufferLowWaterMark: 32768
-        writeSpinCount: 16
-        autoRead: false
-        allocType: "pooled"
-        messageSizeEstimator: 8
-        singleEventExecutorPerGroup: true
-      sni:
-        enabled: false
-        mod: k8s #manul
-        defaultK8sSecretNamespace: shenyu-ingress
-        defaultK8sSecretName: default-cert
-  #        mod: manual
-  #        certificates:
-  #          - domain: 'localhost'
-  #            keyCertChainFile: 
'/Users/zhukunshuai/Desktop/cert/example.com+1.pem'
-  #            keyFile: '/Users/zhukunshuai/Desktop/cert/example.com+1-key.pem'
-  #          - domain: 'example.com'
-  #            keyCertChainFile: 
'/Users/zhukunshuai/Desktop/cert/example.com+1.pem'
-  #            keyFile: '/Users/zhukunshuai/Desktop/cert/example.com+1-key.pem'
-  #  httpclient:
-  #    strategy: netty # webClient
-  #    connectTimeout: 45000
-  #    responseTimeout: 3000
-  #    readerIdleTime: 3000
-  #    writerIdleTime: 3000
-  #    allIdleTime: 3000
-  #    readTimeout: 3000
-  #    writeTimeout: 3000
-  #    wiretap: false
-  #    keepAlive: false
-  #    maxInMemorySize: 1 #1mb
-  #    pool:
-  #      type: ELASTIC
-  #      name: proxy
-  #      maxConnections: 16
-  #      acquireTimeout: 45000
-  #      maxIdleTime: 3000
-  #    proxy:
-  #      host:
-  #      port:
-  #      username:
-  #      password:
-  #      nonProxyHostsPattern:
-  #    ssl:
-  #      useInsecureTrustManager: true
-  #      keyStoreType: PKCS12
-  #      keyStorePath: classpath:keystore.p12
-  #      keyStorePassword: 123456
-  #      keyStoreProvider:
-  #      keyPassword: 123456
-  #      trustedX509Certificates:
-  #      handshakeTimeout:
-  #      closeNotifyFlushTimeout:
-  #      closeNotifyReadTimeout:
-  #      defaultConfigurationType:
-  #    threadPool:
-  #      prefix: shenyu
-  #      selectCount: 1
-  #      workerCount: 8
-  #      daemon: true
-  register:
-    enabled: false
-    registerType: zookeeper #etcd #consul
-    serverLists: localhost:2181 #http://localhost:2379 #localhost:8848
-    props:
-  cross:
-    enabled: true
-    allowedHeaders:
-    allowedMethods: "*"
-    allowedAnyOrigin: true # the same of Access-Control-Allow-Origin: "*"
-      #    allowedOrigin:
-    # format : schema://prefix spacer domain
-    # Access-Control-Allow-Origin: "http://a.apache.org,http://b.apache.org";
-    #      spacer: "."
-    #      domain: apache.org
-    #      prefixes:
-    #        - a # a.apache.org
-    #        - b # b.apache.org
-    #      origins:
-    #        - c.apache.org
-    #        - d.apache.org
-    #        - http://e.apache.org
-    #      originRegex: ^http(|s)://(.*\.|)abc.com$
-    allowedExpose: ""
-    maxAge: "18000"
-    allowCredentials: true
-
-  switchConfig:
-    local: true
-    collapseSlashes: false
-  file:
-    enabled: true
-    maxSize : 10
-  sync:
-    websocket:
-      urls: ws://localhost:9095/websocket
-      allowOrigin: ws://localhost:9195
-  #    apollo:
-  #      appId: shenyu
-  #      meta: http://localhost:8080
-  #      env: dev
-  #      clusterName: test
-  #      namespace: application
-  #    zookeeper:
-  #      url: localhost:2181
-  #      sessionTimeout: 5000
-  #      connectionTimeout: 2000
-  #    http:
-  #      url: http://localhost:9095
-  #      username:
-  #      password:
-  #    nacos:
-  #      url: localhost:8848
-  #      namespace: 1c10d748-af86-43b9-8265-75f487d20c6c
-  #      username:
-  #      password:
-  #      acm:
-  #        enabled: false
-  #        endpoint: acm.aliyun.com
-  #        namespace:
-  #        accessKey:
-  #        secretKey:
-  #    etcd:
-  #      url: http://localhost:2379
-  #    consul:
-  #      url: http://localhost:8500
-  #      waitTime: 1000
-  #      watchDelay: 1000
-  exclude:
-    enabled: false
-    paths:
-      - /favicon.ico
-  fallback:
-    enabled: false
-    paths:
-      - /fallback/hystrix
-      - /fallback/resilience4j
-      - /fallback/sentinel
-  health:
-    enabled: true
-    paths:
-      - /actuator
-      - /health_check
-  alert:
-    enabled: true
-    admins: localhost:9095
-  extPlugin:
-    path:
-    enabled: true
-    threads: 1
-    scheduleTime: 300
-    scheduleDelay: 30
-  scheduler:
-    enabled: false
-    type: fixed
-    threads: 16
-  upstreamCheck:
-    enabled: false
-    poolSize: 10
-    timeout: 3000
-    healthyThreshold: 1
-    unhealthyThreshold: 1
-    interval: 5000
-    printEnabled: true
-    printInterval: 60000
-  springCloudCache:
-    enabled: false
-  ribbon:
-    serverListRefreshInterval: 10000
-  metrics:
-    enabled: false
-    name : prometheus
-    host: 127.0.0.1
-    port: 8090
-    jmxConfig:
-    props:
-      jvm_enabled: true
-  #  plugins:
-  #    rate-limiter.enabled: false
-  local:
-    enabled: false
-    sha512Key: 
"BA3253876AED6BC22D4A6FF53D8406C6AD864195ED144AB5C87621B6C233B548BAEAE6956DF346EC8C17F5EA10F35EE3CBC514797ED7DDD3145464E2A0BAB413"
-#  sharedPool:
-#    enable: true
-#    prefix: "shenyu-shared"
-#    corePoolSize: 200
-#    maximumPoolSize: 2000
-#    keepAliveTime: 60000
-#    # 1GB
-#    maxWorkQueueMemory: 1073741824
-#    # 256MB
-#    maxFreeMemory: 268435456
-
-logging:
-  level:
-    root: info
-    org.springframework.boot: info
-    org.apache.ibatis: info
-    org.apache.shenyu.bonuspoint: info
-    org.apache.shenyu.lottery: info
-    org.apache.shenyu: info
diff --git 
a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-grpc/src/test/resources/docker-compose.mysql.yml
 
b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-grpc/src/test/resources/docker-compose.mysql.yml
deleted file mode 100644
index 8f64ce68cd..0000000000
--- 
a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-grpc/src/test/resources/docker-compose.mysql.yml
+++ /dev/null
@@ -1,144 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-version: '2.3'
-
-services:
-  zookeeper:
-    image: zookeeper:3.8.0
-    restart: always
-    expose:
-      - 2181
-    healthcheck:
-      test: ["CMD-SHELL", "echo srvr | nc localhost 2181"]
-      interval: 10s
-      timeout: 5s
-      retries: 3
-      start_period: 40s
-
-  nacos:
-    image: nacos/nacos-server:v2.2.3
-    environment:
-      - TZ=Asia/Shanghai
-      - MODE=standalone
-    expose:
-      - 8848
-      - 9848
-      - 9849
-    healthcheck:
-      test: ["CMD", "curl", "-f", 
"http://localhost:8848/nacos/actuator/health";]
-      interval: 10s
-      timeout: 5s
-      retries: 3
-      start_period: 30s
-
-  etcd:
-    image: bitnami/etcd:3.5
-    environment:
-      - TZ=Asia/Shanghai
-      - ALLOW_NONE_AUTHENTICATION=yes
-      - ETCD_ADVERTISE_CLIENT_URLS=http://etcd:2379
-    expose:
-      - 2379
-      - 2380
-    healthcheck:
-      test: [ "CMD", "etcdctl", "endpoint", "health" ]
-      interval: 10s
-      timeout: 5s
-      retries: 3
-      start_period: 30s
-
-  admin:
-    image: shenyu/admin:latest
-    expose:
-      - 9095
-    ports:
-      - "9095:9095"
-    depends_on:
-      zookeeper:
-        condition: service_healthy
-      nacos:
-        condition: service_healthy
-      mysql:
-        condition: service_healthy
-      etcd:
-        condition: service_healthy
-    volumes:
-      - 
../../target/test-classes/admin-application.yml:/opt/shenyu-admin/conf/application.yml
-      - 
/tmp/shenyu-e2e/mysql/mysql-connector.jar:/opt/shenyu-admin/ext-lib/mysql-connector.jar
-    environment:
-      - SPRING_PROFILES_ACTIVE=mysql
-      - spring.datasource.username=shenyue2e
-      - spring.datasource.password=123456
-      - 
spring.datasource.url=jdbc:mysql://mysql:3306/shenyu?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai&zeroDateTimeBehavior=convertToNull
-    healthcheck:
-      test: [ "CMD-SHELL", "wget -q -O - http://admin:9095/actuator/health | 
grep UP || exit 1" ]
-      timeout: 2s
-      retries: 3
-      start_period: 10s
-
-  grpc:
-    image: shenyu-examples-grpc:latest
-    restart: always
-    environment:
-      - shenyu.register.serverLists=http://admin:9095
-    healthcheck:
-      test: ["CMD", "nc", "-z", "localhost", "55290"]
-      timeout: 2s
-      retries: 3
-      start_period: 10s
-    expose:
-      - 55290
-      - 8080
-    ports:
-      - "55290:55290"
-      - "8080:8080"
-    depends_on:
-      gateway:
-        condition: service_healthy
-
-  gateway:
-    image: shenyu/bootstrap:latest
-    expose:
-      - 9195
-    ports:
-      - "9195:9195"
-    depends_on:
-      admin:
-        condition: service_healthy
-    volumes:
-      - 
../../target/test-classes/bootstrap-application.yml:/opt/shenyu-bootstrap/conf/application.yml
-    healthcheck:
-      test: [ "CMD", "wget", "-q", "-O", "-", 
"http://gateway:9195/actuator/health"; ]
-      timeout: 2s
-      retries: 3
-      start_period: 5s
-
-  mysql:
-    image: mysql:8
-    environment:
-      - MYSQL_ROOT_PASSWORD=123123
-      - MYSQL_USER=shenyue2e
-      - MYSQL_PASSWORD=123456
-    healthcheck:
-      test: "/usr/bin/mysql --user=root --password=123123 --execute \"SHOW 
DATABASES;\""
-      interval: 2s
-      timeout: 20s
-      retries: 10
-      start_period: 60s
-    volumes:
-      - /tmp/shenyu-e2e/mysql/schema.sql:/docker-entrypoint-initdb.d/schema.sql
diff --git 
a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-websocket/k8s/script/e2e-websocket-sync.sh
 b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-http/k8s/script/e2e-http-sync.sh
similarity index 81%
copy from 
shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-websocket/k8s/script/e2e-websocket-sync.sh
copy to 
shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-http/k8s/script/e2e-http-sync.sh
index 5d96dd4883..3c20a2c70a 100644
--- 
a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-websocket/k8s/script/e2e-websocket-sync.sh
+++ 
b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-http/k8s/script/e2e-http-sync.sh
@@ -16,7 +16,7 @@
 # limitations under the License.
 #
 
-docker save shenyu-example-spring-native-websocket:latest | sudo k3s ctr 
images import -
+docker save shenyu-examples-http:latest | sudo k3s ctr images import -
 
 # init kubernetes for mysql
 SHENYU_TESTCASE_DIR=$(dirname "$(dirname "$(dirname "$(dirname "$0")")")")
@@ -25,7 +25,6 @@ bash 
"${SHENYU_TESTCASE_DIR}"/k8s/script/storage/storage_init_mysql.sh
 # init register center
 CUR_PATH=$(readlink -f "$(dirname "$0")")
 PRGDIR=$(dirname "$CUR_PATH")
-echo "$PRGDIR"
 kubectl apply -f "${SHENYU_TESTCASE_DIR}"/k8s/sync/shenyu-cm.yml
 
 # init shenyu sync
@@ -36,24 +35,25 @@ for sync in ${SYNC_ARRAY[@]}; do
   echo -e "------------------\n"
   kubectl apply -f "$SHENYU_TESTCASE_DIR"/k8s/shenyu-mysql.yml
   sleep 30s
-  echo "[Start ${sync} synchronous] create shenyu-admin-${sync}.yml 
shenyu-bootstrap-${sync}.yml shenyu-examples-websocket.yml"
+  echo "[Start ${sync} synchronous] create shenyu-admin-${sync}.yml 
shenyu-bootstrap-${sync}.yml shenyu-examples-springcloud.yml"
   # shellcheck disable=SC2199
   # shellcheck disable=SC2076
+  # shellcheck disable=SC2154
   if [[ "${MIDDLEWARE_SYNC_ARRAY[@]}" =~ "${sync}" ]]; then
     kubectl apply -f "${SHENYU_TESTCASE_DIR}"/k8s/shenyu-"${sync}".yml
     sleep 10s
   fi
   kubectl apply -f "${SHENYU_TESTCASE_DIR}"/k8s/sync/shenyu-admin-"${sync}".yml
-  sh "${CUR_PATH}"/healthcheck.sh http://localhost:31095/actuator/health
+  sh "$SHENYU_TESTCASE_DIR"/k8s/script/healthcheck.sh 
http://localhost:31095/actuator/health
   kubectl apply -f 
"${SHENYU_TESTCASE_DIR}"/k8s/sync/shenyu-bootstrap-"${sync}".yml
-  sh "${CUR_PATH}"/healthcheck.sh http://localhost:31195/actuator/health
-  kubectl apply -f "${PRGDIR}"/shenyu-examples-websocket.yml
-  sh "${CUR_PATH}"/healthcheck.sh http://localhost:31191/actuator/health
+  sh "$SHENYU_TESTCASE_DIR"/k8s/script/healthcheck.sh 
http://localhost:31195/actuator/health
+  kubectl apply -f "${PRGDIR}"/shenyu-examples-http.yml
+  sh "$SHENYU_TESTCASE_DIR"/k8s/script/healthcheck.sh 
http://localhost:31189/actuator/health
   sleep 10s
   kubectl get pod -o wide
 
   ## run e2e-test
-  ./mvnw -B -f ./shenyu-e2e/pom.xml -pl 
shenyu-e2e-case/shenyu-e2e-case-websocket -am test
+  ./mvnw -B -f ./shenyu-e2e/pom.xml -pl shenyu-e2e-case/shenyu-e2e-case-http 
-am test
   # shellcheck disable=SC2181
   if (($?)); then
     echo "${sync}-sync-e2e-test failed"
@@ -68,11 +68,11 @@ for sync in ${SYNC_ARRAY[@]}; do
   kubectl delete -f "${SHENYU_TESTCASE_DIR}"/k8s/shenyu-mysql.yml
   kubectl delete -f 
"${SHENYU_TESTCASE_DIR}"/k8s/sync/shenyu-admin-"${sync}".yml
   kubectl delete -f 
"${SHENYU_TESTCASE_DIR}"/k8s/sync/shenyu-bootstrap-"${sync}".yml
-  kubectl delete -f "${PRGDIR}"/shenyu-examples-websocket.yml
+  kubectl delete -f "${PRGDIR}"/shenyu-examples-http.yml
   # shellcheck disable=SC2199
   # shellcheck disable=SC2076
   if [[ "${MIDDLEWARE_SYNC_ARRAY[@]}" =~ "${sync}" ]]; then
     kubectl delete -f "${SHENYU_TESTCASE_DIR}"/k8s/shenyu-"${sync}".yml
   fi
-  echo "[Remove ${sync} synchronous] delete shenyu-admin-${sync}.yml 
shenyu-bootstrap-${sync}.yml shenyu-examples-websocket.yml"
+  echo "[Remove ${sync} synchronous] delete shenyu-admin-${sync}.yml 
shenyu-bootstrap-${sync}.yml shenyu-examples-springcloud.yml"
 done
diff --git 
a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-http/k8s/shenyu-examples-http.yml 
b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-http/k8s/shenyu-examples-http.yml
new file mode 100644
index 0000000000..c96ceea19c
--- /dev/null
+++ 
b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-http/k8s/shenyu-examples-http.yml
@@ -0,0 +1,70 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you 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.
+
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: shenyu-examples-http
+  labels:
+    app: shenyu-examples-http
+spec:
+  replicas: 1
+  selector:
+    matchLabels:
+      app: shenyu-examples-http
+  strategy: {}
+  template:
+    metadata:
+      labels:
+        app: shenyu-examples-http
+    spec:
+      containers:
+        - image: shenyu-examples-http
+          name: shenyu-examples-http
+          livenessProbe:
+            exec:
+              command:
+                - wget -q -O - http://localhost:8189/actuator/health | grep UP 
|| exit 1
+            initialDelaySeconds: 10
+            failureThreshold: 3
+            timeoutSeconds: 2
+          env:
+            - name: shenyu.register.serverLists
+              value: http://shenyu-admin:9095
+          ports:
+            - containerPort: 8189
+          imagePullPolicy: IfNotPresent
+      restartPolicy: Always
+status: {}
+
+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: shenyu-examples-http
+  labels:
+    app: shenyu-examples-http
+spec:
+  selector:
+    app: shenyu-examples-http
+  type: NodePort
+  ports:
+    - name: "8189"
+      port: 8189
+      targetPort: 8189
+      nodePort: 31189
+status:
+  loadBalancer: {}
diff --git a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-http/pom.xml 
b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-http/pom.xml
index 911ac61b83..f326c86009 100644
--- a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-http/pom.xml
+++ b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-http/pom.xml
@@ -15,16 +15,14 @@
   ~ See the License for the specific language governing permissions and
   ~ limitations under the License.
   -->
-<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
https://maven.apache.org/xsd/maven-4.0.0.xsd";>
-    <modelVersion>4.0.0</modelVersion>
-
+<project xmlns="http://maven.apache.org/POM/4.0.0";
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
     <parent>
         <groupId>org.apache.shenyu</groupId>
         <artifactId>shenyu-e2e-case</artifactId>
         <version>0.0.1-SNAPSHOT</version>
     </parent>
-
+    <modelVersion>4.0.0</modelVersion>
     <artifactId>shenyu-e2e-case-http</artifactId>
-
 </project>
diff --git 
a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-http/src/test/java/org/apache/shenyu/e2e/testcase/http/DataSynTest.java
 
b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-http/src/test/java/org/apache/shenyu/e2e/testcase/http/DataSynTest.java
new file mode 100644
index 0000000000..14bf9da4f2
--- /dev/null
+++ 
b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-http/src/test/java/org/apache/shenyu/e2e/testcase/http/DataSynTest.java
@@ -0,0 +1,59 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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 org.apache.shenyu.e2e.testcase.http;
+
+import org.apache.shenyu.e2e.client.WaitDataSync;
+import org.apache.shenyu.e2e.client.admin.AdminClient;
+import org.apache.shenyu.e2e.client.gateway.GatewayClient;
+import org.apache.shenyu.e2e.engine.annotation.ShenYuTest;
+import org.apache.shenyu.e2e.enums.ServiceTypeEnum;
+import org.junit.jupiter.api.Test;
+
+/**
+ * Testing the correctness of etcd data synchronization method.
+ */
+@ShenYuTest(environments = {
+        @ShenYuTest.Environment(
+                serviceName = "shenyu-e2e-admin",
+                service = @ShenYuTest.ServiceConfigure(moduleName = 
"shenyu-e2e",
+                        baseUrl = "http://localhost:31095";,
+                        type = ServiceTypeEnum.SHENYU_ADMIN,
+                        parameters = {
+                                @ShenYuTest.Parameter(key = "username", value 
= "admin"),
+                                @ShenYuTest.Parameter(key = "password", value 
= "123456")
+                        }
+                )
+        ),
+        @ShenYuTest.Environment(
+                serviceName = "shenyu-e2e-gateway",
+                service = @ShenYuTest.ServiceConfigure(moduleName = 
"shenyu-e2e",
+                        baseUrl = "http://localhost:31195";,
+                        type = ServiceTypeEnum.SHENYU_GATEWAY
+                )
+        )
+})
+public class DataSynTest {
+
+    @Test
+    void testDataSyn(final AdminClient adminClient, final GatewayClient 
gatewayClient) throws Exception {
+        adminClient.login();
+        
WaitDataSync.waitAdmin2GatewayDataSyncEquals(adminClient::listAllSelectors, 
gatewayClient::getSelectorCache, adminClient);
+        
WaitDataSync.waitAdmin2GatewayDataSyncEquals(adminClient::listAllMetaData, 
gatewayClient::getMetaDataCache, adminClient);
+        
WaitDataSync.waitAdmin2GatewayDataSyncEquals(adminClient::listAllRules, 
gatewayClient::getRuleCache, adminClient);
+    }
+}
diff --git 
a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-http/src/test/java/org/apache/shenyu/e2e/testcase/http/DividePluginCases.java
 
b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-http/src/test/java/org/apache/shenyu/e2e/testcase/http/DividePluginCases.java
new file mode 100644
index 0000000000..25b469bdda
--- /dev/null
+++ 
b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-http/src/test/java/org/apache/shenyu/e2e/testcase/http/DividePluginCases.java
@@ -0,0 +1,49 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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 org.apache.shenyu.e2e.testcase.http;
+
+import com.google.common.collect.Lists;
+import org.apache.shenyu.e2e.engine.scenario.ShenYuScenarioProvider;
+import org.apache.shenyu.e2e.engine.scenario.specification.ScenarioSpec;
+import 
org.apache.shenyu.e2e.engine.scenario.specification.ShenYuBeforeEachSpec;
+import org.apache.shenyu.e2e.engine.scenario.specification.ShenYuCaseSpec;
+import org.apache.shenyu.e2e.engine.scenario.specification.ShenYuScenarioSpec;
+
+import java.util.List;
+import static 
org.apache.shenyu.e2e.engine.scenario.function.HttpCheckers.exists;
+
+public class DividePluginCases implements ShenYuScenarioProvider {
+    @Override
+    public List<ScenarioSpec> get() {
+        return Lists.newArrayList(
+                testDivideHello()
+        );
+    }
+    
+    private ShenYuScenarioSpec testDivideHello() {
+        return ShenYuScenarioSpec.builder()
+                .name("http client hello")
+                .beforeEachSpec(ShenYuBeforeEachSpec.builder()
+                        .checker(exists("/http/order/findById?id=123"))
+                        .build())
+                .caseSpec(ShenYuCaseSpec.builder()
+                        .addExists("/http/order/findById?id=123")
+                        .build())
+                .build();
+    }
+}
diff --git 
a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-http/src/test/java/org/apache/shenyu/e2e/testcase/divide/DividePluginTest.java
 
b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-http/src/test/java/org/apache/shenyu/e2e/testcase/http/DividePluginTest.java
similarity index 56%
copy from 
shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-http/src/test/java/org/apache/shenyu/e2e/testcase/divide/DividePluginTest.java
copy to 
shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-http/src/test/java/org/apache/shenyu/e2e/testcase/http/DividePluginTest.java
index 766b822f22..8d810e8da6 100644
--- 
a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-http/src/test/java/org/apache/shenyu/e2e/testcase/divide/DividePluginTest.java
+++ 
b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-http/src/test/java/org/apache/shenyu/e2e/testcase/http/DividePluginTest.java
@@ -15,26 +15,16 @@
  * limitations under the License.
  */
 
-package org.apache.shenyu.e2e.testcase.divide;
+package org.apache.shenyu.e2e.testcase.http;
 
-import com.google.common.collect.Lists;
+import org.apache.shenyu.e2e.client.WaitDataSync;
 import org.apache.shenyu.e2e.client.admin.AdminClient;
 import org.apache.shenyu.e2e.client.gateway.GatewayClient;
 import org.apache.shenyu.e2e.engine.annotation.ShenYuScenario;
-import org.apache.shenyu.e2e.engine.scenario.specification.AfterEachSpec;
-import org.apache.shenyu.e2e.engine.scenario.specification.BeforeEachSpec;
+import org.apache.shenyu.e2e.engine.annotation.ShenYuTest;
 import org.apache.shenyu.e2e.engine.scenario.specification.CaseSpec;
 import org.apache.shenyu.e2e.enums.ServiceTypeEnum;
-import org.apache.shenyu.e2e.engine.annotation.ShenYuTest;
-import org.apache.shenyu.e2e.model.ResourcesData;
-import org.apache.shenyu.e2e.model.ResourcesData.Resource;
-import org.apache.shenyu.e2e.model.response.SelectorDTO;
-import org.junit.jupiter.api.AfterAll;
-import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeAll;
-import org.junit.jupiter.api.BeforeEach;
-
-import java.util.List;
 
 @ShenYuTest(environments = {
         @ShenYuTest.Environment(
@@ -56,48 +46,18 @@ import java.util.List;
                 )
         )
 })
-
 public class DividePluginTest {
-    private List<String> selectorIds = Lists.newArrayList();
     
     @BeforeAll
-    void setup(final AdminClient client) {
-        client.login();
-        client.deleteAllSelectors();
-    }
-    
-    @BeforeEach
-    void before(final AdminClient client, final GatewayClient gateway, final 
BeforeEachSpec spec) {
-        spec.getChecker().check(gateway);
-        
-        ResourcesData resources = spec.getResources();
-        for (Resource res : resources.getResources()) {
-            SelectorDTO dto = client.create(res.getSelector());
-            selectorIds.add(dto.getId());
-            res.getRules().forEach(rule -> {
-                rule.setSelectorId(dto.getId());
-                client.create(rule);
-            });
-        }
-
-        spec.getWaiting().waitFor(gateway);
-    }
-    
-    @AfterEach
-    void after(final AdminClient client, final GatewayClient gateway, final 
AfterEachSpec spec) {
-        spec.getDeleter().delete(client, selectorIds);
-        spec.deleteWaiting().waitFor(gateway);
-        selectorIds = Lists.newArrayList();
+    void setup(final AdminClient adminClient, final GatewayClient 
gatewayClient) throws Exception {
+        adminClient.login();
+        
WaitDataSync.waitAdmin2GatewayDataSyncEquals(adminClient::listAllSelectors, 
gatewayClient::getSelectorCache, adminClient);
+        
WaitDataSync.waitAdmin2GatewayDataSyncEquals(adminClient::listAllMetaData, 
gatewayClient::getMetaDataCache, adminClient);
+        
WaitDataSync.waitAdmin2GatewayDataSyncEquals(adminClient::listAllRules, 
gatewayClient::getRuleCache, adminClient);
     }
     
-    @ShenYuScenario(provider = 
org.apache.shenyu.e2e.testcase.divide.DividePluginCases.class)
+    @ShenYuScenario(provider = DividePluginCases.class)
     void testDivide(final GatewayClient gateway, final CaseSpec spec) {
         spec.getVerifiers().forEach(verifier -> 
verifier.verify(gateway.getHttpRequesterSupplier().get()));
     }
-    
-    @AfterAll
-    static void teardown(final AdminClient client) {
-        client.deleteAllSelectors();
-    }
-    
 }
diff --git 
a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-http/src/test/resources/docker-compose.h2.yml
 
b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-http/src/test/resources/docker-compose.h2.yml
deleted file mode 100644
index bc7bcb1182..0000000000
--- 
a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-http/src/test/resources/docker-compose.h2.yml
+++ /dev/null
@@ -1,36 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-version: '2.3'
-
-services:
-  admin:
-    image: shenyu/admin:latest
-    expose:
-      - 9095
-
-  gateway:
-    image: shenyu/bootstrap:latest
-    environment:
-      - shenyu.sync.websocket.urls=ws://admin:9095/websocket
-    expose:
-      - 9095
-
-  httpbin:
-    image: kennethreitz/httpbin:latest
-    expose:
-      - 80
diff --git 
a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-http/src/test/resources/docker-compose.mysql.yml
 
b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-http/src/test/resources/docker-compose.mysql.yml
deleted file mode 100644
index 6a94925235..0000000000
--- 
a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-http/src/test/resources/docker-compose.mysql.yml
+++ /dev/null
@@ -1,60 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-version: '2.3'
-
-services:
-  admin:
-    image: shenyu/admin:latest
-    expose:
-      - 9095
-    volumes:
-      - 
/tmp/shenyu-e2e/mysql/mysql-connector.jar:/opt/shenyu-admin/ext-lib/mysql-connector.jar
-    environment:
-      - SPRING_PROFILES_ACTIVE=mysql
-      - spring.datasource.username=shenyue2e
-      - spring.datasource.password=123456
-      - 
spring.datasource.url=jdbc:mysql://mysql:3306/shenyu?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai&zeroDateTimeBehavior=convertToNull
-    depends_on:
-      mysql:
-        condition: service_healthy
-
-  gateway:
-    image: shenyu/bootstrap:latest
-    environment:
-      - shenyu.sync.websocket.urls=ws://admin:9095/websocket
-    expose:
-      - 9095
-
-  httpbin:
-    image: kennethreitz/httpbin:latest
-    expose:
-      - 80
-
-  mysql:
-    image: mysql:8
-    volumes:
-      - /tmp/shenyu-e2e/mysql/schema.sql:/docker-entrypoint-initdb.d/schema.sql
-    environment:
-      - MYSQL_ROOT_PASSWORD=123123
-      - MYSQL_USER=shenyue2e
-      - MYSQL_PASSWORD=123456
-    healthcheck:
-      test: "/usr/bin/mysql --user=root --password=123123 --execute \"SHOW 
DATABASES;\""
-      interval: 2s
-      timeout: 20s
-      retries: 10
diff --git 
a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-http/src/test/resources/docker-compose.postgres.yml
 
b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-http/src/test/resources/docker-compose.postgres.yml
deleted file mode 100644
index 5b122152d8..0000000000
--- 
a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-http/src/test/resources/docker-compose.postgres.yml
+++ /dev/null
@@ -1,62 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-version: '2.3'
-
-services:
-  admin:
-    image: shenyu/admin:latest
-    expose:
-      - 9095
-    volumes:
-      - 
/tmp/shenyu-e2e/pg/postgresql.jar:/opt/shenyu-admin/ext-lib/postgresql.jar
-    environment:
-      - SPRING_PROFILES_ACTIVE=pg
-      - spring.datasource.username=shenyue2e
-      - spring.datasource.password=123456
-      - 
spring.datasource.url=jdbc:postgresql://postgres:5432/shenyu?useUnicode=true&characterEncoding=utf-8&useSSL=false
-    depends_on:
-      postgres:
-        condition: service_healthy
-
-  gateway:
-    image: shenyu/bootstrap:latest
-    environment:
-      - shenyu.sync.websocket.urls=ws://admin:9095/websocket
-    expose:
-      - 9095
-
-  httpbin:
-    image: kennethreitz/httpbin:latest
-    expose:
-      - 80
-
-  postgres:
-    image: postgres:14
-    expose:
-      - 5432
-    environment:
-      - POSTGRES_USER=shenyue2e
-      - POSTGRES_PASSWORD=123456
-      - POSTGRES_DB=shenyu
-    volumes:
-      - 
/tmp/shenyu-e2e/pg/create-table.sql:/docker-entrypoint-initdb.d/initdb.sql
-    healthcheck:
-      test: [CMD, bash, -c, cat < /dev/null > /dev/tcp/127.0.0.1/5432]
-      interval: 5s
-      timeout: 60s
-      retries: 120
\ No newline at end of file
diff --git 
a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-http/src/test/resources/docker-compose.test.yml
 
b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-http/src/test/resources/docker-compose.test.yml
deleted file mode 100644
index a94ca4a904..0000000000
--- 
a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-http/src/test/resources/docker-compose.test.yml
+++ /dev/null
@@ -1,64 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-version: '2.3'
-
-services:
-  admin:
-    image: shenyu/admin:latest
-    expose:
-      - 9095
-    ports:
-      - 9095:9095
-    volumes:
-      - 
/tmp/shenyu-e2e/mysql/mysql-connector.jar:/opt/shenyu-admin/ext-lib/mysql-connector.jar
-    environment:
-      - SPRING_PROFILES_ACTIVE=mysql
-      - spring.datasource.username=shenyue2e
-      - spring.datasource.password=123456
-      - 
spring.datasource.url=jdbc:mysql://mysql:3306/shenyu?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai&zeroDateTimeBehavior=convertToNull
-    depends_on:
-      mysql:
-        condition: service_healthy
-
-  gateway:
-    image: shenyu/bootstrap:latest
-    environment:
-      - shenyu.sync.websocket.urls=ws://admin:9095/websocket
-    expose:
-      - 9095
-    ports:
-      - 9195:9195
-
-  httpbin:
-    image: kennethreitz/httpbin:latest
-    expose:
-      - 80
-
-  mysql:
-    image: mysql:8
-    volumes:
-      - /tmp/shenyu-e2e/mysql/schema.sql:/docker-entrypoint-initdb.d/schema.sql
-    environment:
-      - MYSQL_ROOT_PASSWORD=123123
-      - MYSQL_USER=shenyue2e
-      - MYSQL_PASSWORD=123456
-    healthcheck:
-      test: "/usr/bin/mysql --user=root --password=123123 --execute \"SHOW 
DATABASES;\""
-      interval: 2s
-      timeout: 20s
-      retries: 10
diff --git 
a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-spring-cloud/k8s/script/e2e-springcloud-sync.sh
 
b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-spring-cloud/k8s/script/e2e-springcloud-sync.sh
index ad21845e8b..c8d1a7b37d 100644
--- 
a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-spring-cloud/k8s/script/e2e-springcloud-sync.sh
+++ 
b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-spring-cloud/k8s/script/e2e-springcloud-sync.sh
@@ -45,12 +45,12 @@ for sync in ${SYNC_ARRAY[@]}; do
     sleep 10s
   fi
   kubectl apply -f "${SHENYU_TESTCASE_DIR}"/k8s/sync/shenyu-admin-"${sync}".yml
-  sh "${CUR_PATH}"/healthcheck.sh http://localhost:31095/actuator/health
-  sh "${CUR_PATH}"/healthcheck.sh http://localhost:30761/actuator/health
+  sh "$SHENYU_TESTCASE_DIR"/k8s/script/healthcheck.sh 
http://localhost:31095/actuator/health
+  sh "$SHENYU_TESTCASE_DIR"/k8s/script/healthcheck.sh 
http://localhost:30761/actuator/health
   kubectl apply -f 
"${SHENYU_TESTCASE_DIR}"/k8s/sync/shenyu-bootstrap-"${sync}".yml
-  sh "${CUR_PATH}"/healthcheck.sh http://localhost:31195/actuator/health
+  sh "$SHENYU_TESTCASE_DIR"/k8s/script/healthcheck.sh 
http://localhost:31195/actuator/health
   kubectl apply -f "${PRGDIR}"/shenyu-examples-springcloud.yml
-  sh "${CUR_PATH}"/healthcheck.sh http://localhost:30884/actuator/health
+  sh "$SHENYU_TESTCASE_DIR"/k8s/script/healthcheck.sh 
http://localhost:30884/actuator/health
   sleep 10s
   kubectl get pod -o wide
 
diff --git 
a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-spring-cloud/k8s/script/healthcheck.sh
 
b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-spring-cloud/k8s/script/healthcheck.sh
deleted file mode 100644
index 1159a0f417..0000000000
--- 
a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-spring-cloud/k8s/script/healthcheck.sh
+++ /dev/null
@@ -1,39 +0,0 @@
-#!/bin/bash
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-for loop in $(seq 1 30); do
-  status=$(curl -s -o /dev/null -w %{http_code} -X GET "${1}" -H "accept: */*")
-  echo -e "${loop} curl ${1} response $status"
-  if [ "$status" -eq 200 ]; then
-    break
-  fi
-  sleep 2s
-done
-
-status=$(curl -s -o /dev/null -w "%{http_code}" -X GET "${1}" -H "accept: */*")
-
-if [ "$status" -eq 200 ]; then
-  echo -e "\n-------------------"
-  echo -e "Success to ${1} send request: $status"
-  echo -e "\n-------------------"
-  exit 0
-fi
-echo -e "\n-------------------"
-echo -e "Failed to send request from shenyu-admin : $status"
-echo -e "\n-------------------"
-exit 1
diff --git 
a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-spring-cloud/src/test/resources/admin-application.yml
 
b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-spring-cloud/src/test/resources/admin-application.yml
deleted file mode 100755
index 146a1b43cd..0000000000
--- 
a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-spring-cloud/src/test/resources/admin-application.yml
+++ /dev/null
@@ -1,123 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-
-server:
-  port: 9095
-  address: 0.0.0.0
-
-spring:
-  profiles:
-    active: h2
-  thymeleaf:
-    cache: true
-    encoding: utf-8
-    enabled: true
-    prefix: classpath:/static/
-    suffix: .html
-  mvc:
-    pathmatch:
-      matching-strategy: ant_path_matcher
-  jackson:
-    time-zone: GMT+8 # GMT , Asia/Shanghai
-  messages:
-    basename: message/i18n
-
-management:
-  health:
-    mail:
-      enabled: off
-  endpoints:
-    web:
-      exposure:
-        include:
-          - 'health'
-          - 'prometheus'
-    enabled-by-default: true
-
-mybatis:
-  config-location: classpath:/mybatis/mybatis-config.xml
-  mapper-locations: classpath:/mappers/*.xml
-
-shenyu:
-  register:
-    registerType: http #http #zookeeper #etcd #nacos #consul
-    serverLists: #localhost:2181 #http://localhost:2379 #localhost:8848
-    props:
-      sessionTimeout: 5000
-      connectionTimeout: 2000
-      checked: true
-      zombieCheckThreads: 10
-      zombieCheckTimes: 5
-      scheduledTime: 10
-      nacosNameSpace: ShenyuRegisterCenter
-  sync:
-    websocket:
-      enabled: true
-      messageMaxSize: 10240
-      allowOrigins: ws://localhost:9095;ws://localhost:9195;
-  ldap:
-    enabled: false
-    url: ldap://xxxx:xxx
-    bind-dn: cn=xxx,dc=xxx,dc=xxx
-    password: xxxx
-    base-dn: ou=xxx,dc=xxx,dc=xxx
-    object-class: person
-    login-field: cn
-  jwt:
-    expired-seconds: 86400000
-  shiro:
-    white-list:
-      - /
-      - /favicon.*
-      - /static/**
-      - /index**
-      - /platform/login
-      - /websocket
-      - /error
-      - /actuator/health
-      - /actuator/health/** # /actuator/health/readiness 
/actuator/health/liveness
-      - /actuator/prometheus
-      - /swagger-ui.html
-      - /webjars/**
-      - /swagger-resources/**
-      - /v2/api-docs
-      - /csrf
-      - /alert/report
-  swagger:
-    enable: true
-  dashboard:
-    core:
-      onlySuperAdminPermission:
-        - system:manager:add
-        - system:manager:edit
-        - system:manager:delete
-        - system:role:add
-        - system:role:edit
-        - system:role:delete
-        - system:resource:addButton
-        - system:resource:addMenu
-        - system:resource:editButton
-        - system:resource:editMenu
-        - system:resource:deleteButton
-        - system:resource:deleteMenu
-
-logging:
-  level:
-    root: info
-    org.springframework.boot: info
-    org.apache.ibatis: info
-    org.apache.shenyu.bonuspoint: info
-    org.apache.shenyu.lottery: info
-    org.apache.shenyu: info
diff --git 
a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-spring-cloud/src/test/resources/bootstrap-application.yml
 
b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-spring-cloud/src/test/resources/bootstrap-application.yml
deleted file mode 100644
index 99f77eac1f..0000000000
--- 
a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-spring-cloud/src/test/resources/bootstrap-application.yml
+++ /dev/null
@@ -1,203 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-
-server:
-  port: 9195
-  address: 0.0.0.0
-
-spring:
-  main:
-    allow-bean-definition-overriding: true
-  application:
-    name: shenyu-bootstrap
-  codec:
-    max-in-memory-size: 2MB
-  cloud:
-    discovery:
-      enabled: false
-    nacos:
-      discovery:
-        server-addr: 127.0.0.1:8848 # Spring Cloud Alibaba Dubbo use this.
-        enabled: false
-        namespace: ShenyuRegisterCenter
-
-eureka:
-  client:
-    enabled: false
-    serviceUrl:
-      defaultZone: http://localhost:8761/eureka/
-  instance:
-    prefer-ip-address: true
-
-management:
-  health:
-    redis:
-      enabled: false
-    elasticsearch:
-      enabled: false
-  endpoint:
-    health:
-      enabled: true
-      show-details: always
-  endpoints:
-    web:
-      exposure:
-        include: "*" # or health,info
-        
-
-shenyu:
-  selectorMatchCache:
-    cache:
-      enabled: false
-      initialCapacity: 10000 # initial capacity in cache
-      maximumSize: 10000 # max size in cache
-    trie:
-      enabled: false
-      cacheSize: 128 # the number of plug-ins
-      matchMode: antPathMatch
-  ruleMatchCache:
-    cache:
-      enabled: true
-      initialCapacity: 10000 # initial capacity in cache
-      maximumSize: 65536 # max size in cache
-    trie:
-      enabled: false
-      cacheSize: 1024 # the number of selectors
-      matchMode: antPathMatch
-  netty:
-    http:
-      webServerFactoryEnabled: true
-      selectCount: 1
-      workerCount: 8
-      accessLog: false
-      serverSocketChannel:
-        soRcvBuf: 87380
-        soBackLog: 128
-        soReuseAddr: false
-        connectTimeoutMillis: 10000
-        writeBufferHighWaterMark: 65536
-        writeBufferLowWaterMark: 32768
-        writeSpinCount: 16
-        autoRead: false
-        allocType: "pooled"
-        messageSizeEstimator: 8
-        singleEventExecutorPerGroup: true
-      socketChannel:
-        soKeepAlive: false
-        soReuseAddr: false
-        soLinger: -1
-        tcpNoDelay: true
-        soRcvBuf: 87380
-        soSndBuf: 16384
-        ipTos: 0
-        allowHalfClosure: false
-        connectTimeoutMillis: 10000
-        writeBufferHighWaterMark: 65536
-        writeBufferLowWaterMark: 32768
-        writeSpinCount: 16
-        autoRead: false
-        allocType: "pooled"
-        messageSizeEstimator: 8
-        singleEventExecutorPerGroup: true
-      sni:
-        enabled: false
-        mod: k8s #manul
-        defaultK8sSecretNamespace: shenyu-ingress
-        defaultK8sSecretName: default-cert
-  register:
-    enabled: false
-    registerType: zookeeper #etcd #consul
-    serverLists: localhost:2181 #http://localhost:2379 #localhost:8848
-    props:
-  cross:
-    enabled: true
-    allowedHeaders:
-    allowedMethods: "*"
-    allowedAnyOrigin: true # the same of Access-Control-Allow-Origin: "*"
-    allowedExpose: ""
-    maxAge: "18000"
-    allowCredentials: true
-
-  switchConfig:
-    local: true
-    collapseSlashes: false
-  file:
-    enabled: true
-    maxSize : 10
-  sync:
-    websocket:
-      urls: ws://localhost:9095/websocket
-      allowOrigin: ws://localhost:9195
-  exclude:
-    enabled: false
-    paths:
-      - /favicon.ico
-  fallback:
-    enabled: false
-    paths:
-      - /fallback/hystrix
-      - /fallback/resilience4j
-      - /fallback/sentinel
-  health:
-    enabled: true
-    paths:
-      - /actuator
-      - /health_check
-  alert:
-    enabled: true
-    admins: localhost:9095
-  extPlugin:
-    path:
-    enabled: true
-    threads: 1
-    scheduleTime: 300
-    scheduleDelay: 30
-  scheduler:
-    enabled: false
-    type: fixed
-    threads: 16
-  upstreamCheck:
-    enabled: false
-    poolSize: 10
-    timeout: 3000
-    healthyThreshold: 1
-    unhealthyThreshold: 1
-    interval: 5000
-    printEnabled: true
-    printInterval: 60000
-  springCloudCache:
-    enabled: false
-  ribbon:
-    serverListRefreshInterval: 10000
-  metrics:
-    enabled: false
-    name : prometheus
-    host: 127.0.0.1
-    port: 8090
-    jmxConfig:
-    props:
-      jvm_enabled: true
-  local:
-    enabled: false
-    sha512Key: 
"BA3253876AED6BC22D4A6FF53D8406C6AD864195ED144AB5C87621B6C233B548BAEAE6956DF346EC8C17F5EA10F35EE3CBC514797ED7DDD3145464E2A0BAB413"
-
-logging:
-  level:
-    root: info
-    org.springframework.boot: info
-    org.apache.ibatis: info
-    org.apache.shenyu.bonuspoint: info
-    org.apache.shenyu.lottery: info
-    org.apache.shenyu: info
diff --git 
a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-spring-cloud/src/test/resources/docker-compose.mysql.yml
 
b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-spring-cloud/src/test/resources/docker-compose.mysql.yml
deleted file mode 100644
index 0985381376..0000000000
--- 
a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-spring-cloud/src/test/resources/docker-compose.mysql.yml
+++ /dev/null
@@ -1,154 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-version: '2.3'
-
-services:
-  zookeeper:
-    image: zookeeper:3.8.0
-    restart: always
-    expose:
-      - 2181
-    healthcheck:
-      test: ["CMD-SHELL", "echo srvr | nc localhost 2181"]
-      interval: 10s
-      timeout: 5s
-      retries: 3
-      start_period: 30s
-
-  nacos:
-    image: nacos/nacos-server:v2.2.3
-    environment:
-      - TZ=Asia/Shanghai
-      - MODE=standalone
-    expose:
-      -
-      - 8848
-      - 9848
-      - 9849
-    healthcheck:
-      test: ["CMD", "curl", "-f", 
"http://localhost:8848/nacos/actuator/health";]
-      interval: 10s
-      timeout: 5s
-      retries: 3
-      start_period: 30s
-
-  eureka:
-    image: shenyu-examples-eureka:latest
-    restart: always
-    expose:
-      - 8761
-    ports:
-      - "8761:8761"
-    healthcheck:
-      test: [ "CMD-SHELL", "wget -q -O - http://eureka:8761/actuator/health | 
grep UP || exit 1" ]
-      timeout: 5s
-      retries: 5
-      start_period: 60s
-
-  etcd:
-    image: bitnami/etcd:3.5
-    environment:
-      - TZ=Asia/Shanghai
-      - ALLOW_NONE_AUTHENTICATION=yes
-      - ETCD_ADVERTISE_CLIENT_URLS=http://etcd:2379
-    expose:
-      - 2379
-      - 2380
-    healthcheck:
-      test: [ "CMD", "etcdctl", "endpoint", "health" ]
-      interval: 10s
-      timeout: 5s
-      retries: 3
-      start_period: 30s
-
-  admin:
-    image: shenyu/admin:latest
-    expose:
-      - 9095
-    ports:
-      - "9095:9095"
-    environment:
-      - SPRING_PROFILES_ACTIVE=mysql
-      - spring.datasource.username=shenyue2e
-      - spring.datasource.password=123456
-      - 
spring.datasource.url=jdbc:mysql://mysql:3306/shenyu?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai&zeroDateTimeBehavior=convertToNull
-    healthcheck:
-      test: [ "CMD-SHELL", "wget -q -O - http://admin:9095/actuator/health | 
grep UP || exit 1" ]
-      timeout: 5s
-      retries: 3
-      start_period: 20s
-    depends_on:
-      mysql:
-        condition: service_healthy
-      nacos:
-        condition: service_healthy
-      zookeeper:
-        condition: service_healthy
-      etcd:
-        condition: service_healthy
-    volumes:
-      - 
../../target/test-classes/admin-application.yml:/opt/shenyu-admin/conf/application.yml
-      - 
/tmp/shenyu-e2e/mysql/mysql-connector.jar:/opt/shenyu-admin/ext-lib/mysql-connector.jar
-
-  springcloud:
-    image: shenyu-examples-springcloud:latest
-    restart: always
-    environment:
-      - shenyu.register.serverLists=http://admin:9095
-      - eureka.client.serviceUrl.defaultZone=http://eureka:8761/eureka/
-    expose:
-      - 8884
-    ports:
-      - "8884:8884"
-    depends_on:
-      eureka:
-        condition: service_healthy
-    healthcheck:
-      test: [ "CMD-SHELL", "wget -q -O - 
http://springcloud:8884/actuator/health | grep UP || exit 1" ]
-      timeout: 5s
-      retries: 3
-      start_period: 8s
-
-  gateway:
-    image: shenyu/bootstrap:latest
-    environment:
-      - eureka.client.serviceUrl.defaultZone=http://eureka:8761/eureka/
-    expose:
-      - 9195
-    ports:
-      - "9195:9195"
-    depends_on:
-      admin:
-        condition: service_healthy
-    volumes:
-      - 
../../target/test-classes/bootstrap-application.yml:/opt/shenyu-bootstrap/conf/application.yml
-
-  mysql:
-    image: mysql:8
-    environment:
-      - MYSQL_ROOT_PASSWORD=123123
-      - MYSQL_USER=shenyue2e
-      - MYSQL_PASSWORD=123456
-    healthcheck:
-      test: "/usr/bin/mysql --user=root --password=123123 --execute \"SHOW 
DATABASES;\""
-      interval: 5s
-      timeout: 40s
-      retries: 10
-      start_period: 60s
-    volumes:
-      - /tmp/shenyu-e2e/mysql/schema.sql:/docker-entrypoint-initdb.d/schema.sql
diff --git 
a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-spring-cloud/src/test/resources/log4j2.xml
 
b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-spring-cloud/src/test/resources/log4j2.xml
deleted file mode 100644
index 9383716aa2..0000000000
--- 
a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-spring-cloud/src/test/resources/log4j2.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one or more
-  ~ contributor license agreements.  See the NOTICE file distributed with
-  ~ this work for additional information regarding copyright ownership.
-  ~ The ASF licenses this file to You 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.
-  -->
-<Configuration status="INFO">
-    <Appenders>
-        <Console name="stdout" target="SYSTEM_OUT">
-            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %p 
%X{phase}/%X{operate} %m%n"/>
-        </Console>
-    </Appenders>
-
-    <Loggers>
-        <Root level="INFO">
-            <AppenderRef ref="stdout"/>
-        </Root>
-    </Loggers>
-</Configuration>
diff --git 
a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-http/k8s/script/e2e-http-h2.sh 
b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/k8s/script/e2e-h2.sh
similarity index 98%
rename from 
shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-http/k8s/script/e2e-http-h2.sh
rename to 
shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/k8s/script/e2e-h2.sh
index bd7f18ba1e..c5f39a9f04 100644
--- a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-http/k8s/script/e2e-http-h2.sh
+++ b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/k8s/script/e2e-h2.sh
@@ -35,4 +35,4 @@ sh "${curPath}"/healthcheck.sh h2 
http://localhost:31095/actuator/health http://
 
 curl -S "http://localhost:31195/actuator/pluginData";
 
-./mvnw -B -f ./shenyu-e2e/pom.xml -pl shenyu-e2e-case/shenyu-e2e-case-http -am 
test
+./mvnw -B -f ./shenyu-e2e/pom.xml -pl shenyu-e2e-case/shenyu-e2e-case-storage 
-am test
diff --git 
a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-http/k8s/script/e2e-http-mysql.sh 
b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/k8s/script/e2e-mysql.sh
similarity index 98%
rename from 
shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-http/k8s/script/e2e-http-mysql.sh
rename to 
shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/k8s/script/e2e-mysql.sh
index bbc7a8dc02..9df50edd11 100644
--- 
a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-http/k8s/script/e2e-http-mysql.sh
+++ b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/k8s/script/e2e-mysql.sh
@@ -40,5 +40,5 @@ sh "${curPath}"/healthcheck.sh mysql 
http://localhost:31095/actuator/health http
 
 curl -S "http://localhost:31195/actuator/pluginData";
 
-./mvnw -B -f ./shenyu-e2e/pom.xml -pl shenyu-e2e-case/shenyu-e2e-case-http -am 
test
+./mvnw -B -f ./shenyu-e2e/pom.xml -pl shenyu-e2e-case/shenyu-e2e-case-storage 
-am test
 
diff --git 
a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-http/k8s/script/e2e-http-postgres.sh
 b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/k8s/script/e2e-postgres.sh
similarity index 98%
rename from 
shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-http/k8s/script/e2e-http-postgres.sh
rename to 
shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/k8s/script/e2e-postgres.sh
index 5d61229a95..102a905a7b 100644
--- 
a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-http/k8s/script/e2e-http-postgres.sh
+++ 
b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/k8s/script/e2e-postgres.sh
@@ -40,5 +40,5 @@ sh "${curPath}"/healthcheck.sh postgres 
http://localhost:31095/actuator/health h
 
 curl -S "http://localhost:31195/actuator/pluginData";
 
-./mvnw -B -f ./shenyu-e2e/pom.xml -pl shenyu-e2e-case/shenyu-e2e-case-http -am 
test
+./mvnw -B -f ./shenyu-e2e/pom.xml -pl shenyu-e2e-case/shenyu-e2e-case-storage 
-am test
 
diff --git 
a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-http/k8s/script/healthcheck.sh 
b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/k8s/script/healthcheck.sh
similarity index 100%
rename from 
shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-http/k8s/script/healthcheck.sh
rename to 
shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/k8s/script/healthcheck.sh
diff --git 
a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-http/k8s/script/services-h2.list 
b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/k8s/script/services-h2.list
similarity index 100%
rename from 
shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-http/k8s/script/services-h2.list
rename to 
shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/k8s/script/services-h2.list
diff --git 
a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-http/k8s/script/services-mysql.list
 
b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/k8s/script/services-mysql.list
similarity index 100%
rename from 
shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-http/k8s/script/services-mysql.list
rename to 
shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/k8s/script/services-mysql.list
diff --git 
a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-http/k8s/script/services-postgres.list
 
b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/k8s/script/services-postgres.list
similarity index 100%
rename from 
shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-http/k8s/script/services-postgres.list
rename to 
shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/k8s/script/services-postgres.list
diff --git 
a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-http/k8s/shenyu-app-service-h2.yml 
b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/k8s/shenyu-app-service-h2.yml
similarity index 100%
rename from 
shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-http/k8s/shenyu-app-service-h2.yml
rename to 
shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/k8s/shenyu-app-service-h2.yml
diff --git 
a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-http/k8s/shenyu-app-service-mysql.yml
 
b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/k8s/shenyu-app-service-mysql.yml
similarity index 100%
rename from 
shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-http/k8s/shenyu-app-service-mysql.yml
rename to 
shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/k8s/shenyu-app-service-mysql.yml
diff --git 
a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-http/k8s/shenyu-app-service-postgres.yml
 
b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/k8s/shenyu-app-service-postgres.yml
similarity index 100%
rename from 
shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-http/k8s/shenyu-app-service-postgres.yml
rename to 
shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/k8s/shenyu-app-service-postgres.yml
diff --git 
a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-http/k8s/shenyu-deployment-h2.yml 
b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/k8s/shenyu-deployment-h2.yml
similarity index 100%
rename from 
shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-http/k8s/shenyu-deployment-h2.yml
rename to 
shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/k8s/shenyu-deployment-h2.yml
diff --git 
a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-http/k8s/shenyu-deployment-mysql.yml
 
b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/k8s/shenyu-deployment-mysql.yml
similarity index 100%
rename from 
shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-http/k8s/shenyu-deployment-mysql.yml
rename to 
shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/k8s/shenyu-deployment-mysql.yml
diff --git 
a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-http/k8s/shenyu-deployment-postgres.yml
 
b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/k8s/shenyu-deployment-postgres.yml
similarity index 100%
rename from 
shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-http/k8s/shenyu-deployment-postgres.yml
rename to 
shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/k8s/shenyu-deployment-postgres.yml
diff --git 
a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-http/src/test/resources/log4j2.xml 
b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/pom.xml
similarity index 64%
rename from 
shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-http/src/test/resources/log4j2.xml
rename to shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/pom.xml
index 9383716aa2..4a4944ea2f 100644
--- 
a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-http/src/test/resources/log4j2.xml
+++ b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/pom.xml
@@ -15,16 +15,16 @@
   ~ See the License for the specific language governing permissions and
   ~ limitations under the License.
   -->
-<Configuration status="INFO">
-    <Appenders>
-        <Console name="stdout" target="SYSTEM_OUT">
-            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %p 
%X{phase}/%X{operate} %m%n"/>
-        </Console>
-    </Appenders>
+<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
https://maven.apache.org/xsd/maven-4.0.0.xsd";>
+    <modelVersion>4.0.0</modelVersion>
 
-    <Loggers>
-        <Root level="INFO">
-            <AppenderRef ref="stdout"/>
-        </Root>
-    </Loggers>
-</Configuration>
+    <parent>
+        <groupId>org.apache.shenyu</groupId>
+        <artifactId>shenyu-e2e-case</artifactId>
+        <version>0.0.1-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>shenyu-e2e-case-storage</artifactId>
+
+</project>
diff --git 
a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-http/src/test/java/org/apache/shenyu/e2e/testcase/divide/DividePluginCases.java
 
b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/src/test/java/org/apache/shenyu/e2e/testcase/divide/DividePluginCases.java
similarity index 100%
rename from 
shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-http/src/test/java/org/apache/shenyu/e2e/testcase/divide/DividePluginCases.java
rename to 
shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/src/test/java/org/apache/shenyu/e2e/testcase/divide/DividePluginCases.java
diff --git 
a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-http/src/test/java/org/apache/shenyu/e2e/testcase/divide/DividePluginTest.java
 
b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/src/test/java/org/apache/shenyu/e2e/testcase/divide/DividePluginTest.java
similarity index 100%
rename from 
shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-http/src/test/java/org/apache/shenyu/e2e/testcase/divide/DividePluginTest.java
rename to 
shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/src/test/java/org/apache/shenyu/e2e/testcase/divide/DividePluginTest.java
diff --git 
a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-websocket/k8s/script/e2e-websocket-sync.sh
 
b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-websocket/k8s/script/e2e-websocket-sync.sh
index 5d96dd4883..e6277d1b06 100644
--- 
a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-websocket/k8s/script/e2e-websocket-sync.sh
+++ 
b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-websocket/k8s/script/e2e-websocket-sync.sh
@@ -44,11 +44,11 @@ for sync in ${SYNC_ARRAY[@]}; do
     sleep 10s
   fi
   kubectl apply -f "${SHENYU_TESTCASE_DIR}"/k8s/sync/shenyu-admin-"${sync}".yml
-  sh "${CUR_PATH}"/healthcheck.sh http://localhost:31095/actuator/health
+  sh "$SHENYU_TESTCASE_DIR"/k8s/script/healthcheck.sh 
http://localhost:31095/actuator/health
   kubectl apply -f 
"${SHENYU_TESTCASE_DIR}"/k8s/sync/shenyu-bootstrap-"${sync}".yml
-  sh "${CUR_PATH}"/healthcheck.sh http://localhost:31195/actuator/health
+  sh "$SHENYU_TESTCASE_DIR"/k8s/script/healthcheck.sh 
http://localhost:31195/actuator/health
   kubectl apply -f "${PRGDIR}"/shenyu-examples-websocket.yml
-  sh "${CUR_PATH}"/healthcheck.sh http://localhost:31191/actuator/health
+  sh "$SHENYU_TESTCASE_DIR"/k8s/script/healthcheck.sh 
http://localhost:31191/actuator/health
   sleep 10s
   kubectl get pod -o wide
 
diff --git 
a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-websocket/k8s/script/healthcheck.sh
 
b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-websocket/k8s/script/healthcheck.sh
deleted file mode 100644
index 1159a0f417..0000000000
--- 
a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-websocket/k8s/script/healthcheck.sh
+++ /dev/null
@@ -1,39 +0,0 @@
-#!/bin/bash
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-for loop in $(seq 1 30); do
-  status=$(curl -s -o /dev/null -w %{http_code} -X GET "${1}" -H "accept: */*")
-  echo -e "${loop} curl ${1} response $status"
-  if [ "$status" -eq 200 ]; then
-    break
-  fi
-  sleep 2s
-done
-
-status=$(curl -s -o /dev/null -w "%{http_code}" -X GET "${1}" -H "accept: */*")
-
-if [ "$status" -eq 200 ]; then
-  echo -e "\n-------------------"
-  echo -e "Success to ${1} send request: $status"
-  echo -e "\n-------------------"
-  exit 0
-fi
-echo -e "\n-------------------"
-echo -e "Failed to send request from shenyu-admin : $status"
-echo -e "\n-------------------"
-exit 1

Reply via email to