42 lines
1.0 KiB
Python
42 lines
1.0 KiB
Python
import json
|
|
import time
|
|
from bexproof.policy import Policy, load_policy, evaluate_policy
|
|
|
|
|
|
def test_policy_load_and_eval_pass():
|
|
policy_text = json.dumps({
|
|
"version": 1,
|
|
"rules": {
|
|
"price_improvement_min": 0.001,
|
|
"latency_budget_ms": 10,
|
|
},
|
|
})
|
|
policy = load_policy(policy_text)
|
|
log = {
|
|
"order_id": "ORD1",
|
|
"venue": "VENUE1",
|
|
"price": 100.5,
|
|
"latency_ms": 5,
|
|
"price_improvement": 0.002,
|
|
"timestamp": int(time.time() * 1000),
|
|
}
|
|
assert evaluate_policy(log, policy) is True
|
|
|
|
|
|
def test_policy_eval_fail_due_to_latency():
|
|
policy_text = json.dumps({
|
|
"version": 1,
|
|
"rules": {
|
|
"latency_budget_ms": 2,
|
|
},
|
|
})
|
|
policy = load_policy(policy_text)
|
|
log = {
|
|
"order_id": "ORD2",
|
|
"venue": "VENUE1",
|
|
"latency_ms": 5,
|
|
"price_improvement": 0.0005,
|
|
"timestamp": int(time.time() * 1000),
|
|
}
|
|
assert evaluate_policy(log, policy) is False
|