#
# 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.
#
name: pixiu
description: pixiu sample
resources:
  - path: '/api/v1/test-dubbo/user'
    type: restful
    description: user
    timeout: 100ms
    methods:
      - httpVerb: GET
        onAir: true
        timeout: 1000ms
        inboundRequest:
          requestType: http
          queryStrings:
            - name: name
              required: true
        integrationRequest:
          requestType: http
          host: 127.0.0.1:8889
          path: /UserProvider/GetUserByName
          mappingParams:
            - name: queryStrings.name
              mapTo: queryStrings.name
          group: "test"
          version: 1.0.0
      - httpVerb: POST
        onAir: true
        timeout: 1000ms
        inboundRequest:
          requestType: http
          queryStrings:
            - name: name
              required: true
        integrationRequest:
          requestType: http
          host: 127.0.0.1:8889
          path: /UserProvider/CreateUser
          group: "test"
          version: 1.0.0
rateLimit:
  resources:
    - name: test-dubbo
      items:
        #Exact
        - matchStrategy: 0
          pattern: "/api/v1/test-dubbo/user"
        #Regex
        - matchStrategy: 1
          pattern: "/api/v1/test-dubbo/user/*"
    - name: test-http
      items:
        #Exact
        - matchStrategy: 0
          pattern: "/api/v1/http/foo"
        - matchStrategy: 0
          pattern: "/api/v1/http/bar"
        #Regex
        - matchStrategy: 1
          pattern: "/api/v1/http/foo/*"
        - matchStrategy: 1
          pattern: "/api/v1/http/bar/*"

  rules:
    #qps sample At most 100 requests can be passed in 1000ms, so qps is 100
    - enable: true
      flowRule:
        #the resource's name
        resource: "test-dubbo"
        threshold: 100
        statintervalinms: 1000