Index: tools/telemetry/third_party/webpagereplay/documentation/Rules.md |
diff --git a/tools/telemetry/third_party/webpagereplay/documentation/Rules.md b/tools/telemetry/third_party/webpagereplay/documentation/Rules.md |
deleted file mode 100644 |
index 35176357d588cf858c0e7609c9604f39d359bf90..0000000000000000000000000000000000000000 |
--- a/tools/telemetry/third_party/webpagereplay/documentation/Rules.md |
+++ /dev/null |
@@ -1,95 +0,0 @@ |
-WebPageReplay Rule Language |
-=========================== |
- |
-WebPageReplay rules allows developers to customize record/replay handling. |
- |
-Motiviation |
------------ |
- |
-Web sites often require custom replay logic, e.g.: |
- |
- 1. The recording uploads various metrics/logs to: |
- |
- http://example.com/gen_204?emsg=foo |
- |
- but, during replay, it uploads different parameters: |
- |
- http://example.com/gen_204?emsg=bar |
- |
- so (as-is) our replay fails. We want "*/gen_204" to always respond |
- "HTTP 204 No Change". |
- |
- 2. The recording fetches data from one server: |
- |
- http://mirrorA.example.com/stuff |
- |
- but replay selects a different server: |
- |
- http://mirrorB.example.com/stuff |
- |
- which breaks replay. We want "mirror*.example.com/stuff" to be equivalent. |
- |
- 3. The recorded URL + response contains a UID, e.g.: |
- |
- http://example.com?q=foo --> "you sent foo." |
- |
- but the replay asks for: |
- |
- http://example.com?q=bar --> replay error! |
- |
- We want it to reply "you sent bar." |
- |
-We could hack all the above rules into the code, but that can''t be (cleanly) extended or open sourced. |
- |
-Instead, we want a simple config file of "predicate --> action" rules. |
- |
- |
-Format |
------- |
- |
-The JSON-formatted rule file is specified on the command line: |
- |
- replay.py ... --rules_path my_rules ... |
- |
-The rules file must contain an array of single-item objects, e.g.: |
- |
- [{"comment": "ignore me"}, |
- {"LogUrl": {"url": "example\\.com/logme.*"}}, |
- {"LogUrl": {"url": "example\\.com/someotherpath"}} |
- ] |
- |
-All "comment" items are ignored and support arbitrary values, e.g., a string |
-or commented-out rule(s). |
- |
-All other items must specify a string TYPE key and object ARGS value, e.g.: |
- |
- {"LogUrl": {"url": "example\\.com/test", "stop": false}} |
- |
-The default TYPE package is "rules" and the default rule_parser |
-"allowed_imports" is similarly restricted to only allow "rules" classes. |
- |
-The TYPE implementation class must match the Rule API defined in |
-"rules/rule.py": |
- |
- class Rule(object): |
- def IsType(self, rule_type_name): ... |
- def ApplyRule(self, return_value, request, response): ... |
- |
-The ARGS must match the rule-specific constructor, e.g.: |
- |
- class LogUrl(rule.Rule): |
- def __init__(self, url, stop=False): |
- self._url_re = re.compile(url) |
- self._stop = stop |
- ... |
- |
-All rules of the same rule_type_name are chained together and applied in the |
-same order as they appear in the input JSON file. |
- |
- |
-Rules |
-------- |
- |
-### rules.LogUrl: |
- |
-If the url pattern matches then log the request URL. |