Skip to content

Add support for request item pattern matching in API gateway flow control - #842

Merged
sczyh30 merged 2 commits into
masterfrom
feature/gateway-param-pattern
Jun 18, 2019
Merged

Add support for request item pattern matching in API gateway flow control#842
sczyh30 merged 2 commits into
masterfrom
feature/gateway-param-pattern

Conversation

@sczyh30

@sczyh30 sczyh30 commented Jun 17, 2019

Copy link
Copy Markdown
Member

Signed-off-by: Eric Zhao sczyh16@gmail.com

Describe what this PR does / why we need it

Support pattern matching for request items in API gateway flow control.

Does this pull request fix one issue?

Resolves #839

Describe how you did it

  • Update the GatewayParamParser to support matching the request item.
    • Till now three matching strategies has been supported: exact, contains and regex.
    • The items that are not matched will be unified as a constant parameter (SentinelGatewayConstants.GATEWAY_NOT_MATCH_PARAM)
  • Update the internal logic of converting gateway rules to parameter flow rules. The unified mismatched parameters (SentinelGatewayConstants.GATEWAY_NOT_MATCH_PARAM) will be configured as an exception item with a large threshold (indicating always pass).
  • Add a GatewayRegexCache to cache the compiled regex for performance.
  • Constant rename: separate URL matching strategy from parameter matching strategy

Describe how to verify it

Run the test cases and demo.

Special notes for reviews

NONE

- Update GatewayParamParser to support matching the request item.
- Update the internal logic of converting gateway rules to parameter flow rules.
- Add a GatewayRegexCache to cache the compiled regex for performance
- Update test cases and demo

Signed-off-by: Eric Zhao <sczyh16@gmail.com>
@sczyh30 sczyh30 added to-review To review kind/feature Category issues or prs related to feature request. labels Jun 17, 2019
@sczyh30
sczyh30 requested a review from CarpenterLee June 17, 2019 07:24
Signed-off-by: Eric Zhao <sczyh16@gmail.com>
@codecov-io

codecov-io commented Jun 17, 2019

Copy link
Copy Markdown

Codecov Report

Merging #842 into master will increase coverage by 0.21%.
The diff coverage is 74.35%.

Impacted file tree graph

@@             Coverage Diff              @@
##             master     #842      +/-   ##
============================================
+ Coverage     41.73%   41.95%   +0.21%     
- Complexity     1383     1400      +17     
============================================
  Files           305      306       +1     
  Lines          8807     8843      +36     
  Branches       1188     1196       +8     
============================================
+ Hits           3676     3710      +34     
  Misses         4677     4677              
- Partials        454      456       +2
Impacted Files Coverage Δ Complexity Δ
.../gateway/sc/api/matcher/WebExchangeApiMatcher.java 56.25% <ø> (ø) 6 <0> (ø) ⬇️
...way/zuul/api/matcher/RequestContextApiMatcher.java 0% <ø> (ø) 0 <0> (ø) ⬇️
...apter/gateway/common/api/ApiPathPredicateItem.java 23.52% <100%> (+4.77%) 2 <0> (ø) ⬇️
...apter/gateway/common/param/GatewayParamParser.java 74.66% <50%> (+6.09%) 27 <0> (+8) ⬆️
...pter/gateway/common/rule/GatewayRuleConverter.java 90.9% <66.66%> (-9.1%) 5 <1> (+2)
...dapter/gateway/common/param/GatewayRegexCache.java 85.71% <85.71%> (ø) 5 <5> (?)
...dapter/gateway/common/rule/GatewayRuleManager.java 69.35% <85.71%> (+0.97%) 13 <0> (ø) ⬇️
...ava/com/alibaba/csp/sentinel/node/ClusterNode.java 100% <0%> (+4.76%) 8% <0%> (+1%) ⬆️

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 254ccbb...267ead8. Read the comment docs.

1 similar comment
@codecov-io

Copy link
Copy Markdown

Codecov Report

Merging #842 into master will increase coverage by 0.21%.
The diff coverage is 74.35%.

Impacted file tree graph

@@             Coverage Diff              @@
##             master     #842      +/-   ##
============================================
+ Coverage     41.73%   41.95%   +0.21%     
- Complexity     1383     1400      +17     
============================================
  Files           305      306       +1     
  Lines          8807     8843      +36     
  Branches       1188     1196       +8     
============================================
+ Hits           3676     3710      +34     
  Misses         4677     4677              
- Partials        454      456       +2
Impacted Files Coverage Δ Complexity Δ
.../gateway/sc/api/matcher/WebExchangeApiMatcher.java 56.25% <ø> (ø) 6 <0> (ø) ⬇️
...way/zuul/api/matcher/RequestContextApiMatcher.java 0% <ø> (ø) 0 <0> (ø) ⬇️
...apter/gateway/common/api/ApiPathPredicateItem.java 23.52% <100%> (+4.77%) 2 <0> (ø) ⬇️
...apter/gateway/common/param/GatewayParamParser.java 74.66% <50%> (+6.09%) 27 <0> (+8) ⬆️
...pter/gateway/common/rule/GatewayRuleConverter.java 90.9% <66.66%> (-9.1%) 5 <1> (+2)
...dapter/gateway/common/param/GatewayRegexCache.java 85.71% <85.71%> (ø) 5 <5> (?)
...dapter/gateway/common/rule/GatewayRuleManager.java 69.35% <85.71%> (+0.97%) 13 <0> (ø) ⬇️
...ava/com/alibaba/csp/sentinel/node/ClusterNode.java 100% <0%> (+4.76%) 8% <0%> (+1%) ⬆️

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 254ccbb...267ead8. Read the comment docs.

@CarpenterLee CarpenterLee left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@sczyh30 sczyh30 added this to the 1.6.2 milestone Jun 18, 2019
@sczyh30
sczyh30 merged commit 56e463e into master Jun 18, 2019
@sczyh30
sczyh30 deleted the feature/gateway-param-pattern branch June 18, 2019 06:09
@sczyh30 sczyh30 removed the to-review To review label Jun 18, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

kind/feature Category issues or prs related to feature request.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Support pattern matching for request items in API gateway flow control

3 participants