[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[tor-commits] [sbws/m12] chg: v3bwfile: Stop scaling with consensus weight
commit 6ecb3948efd1d13416cdf1460453ad12c9e6313e
Author: juga0 <juga@xxxxxxxxxx>
Date: Fri Jun 11 13:02:03 2021 +0000
chg: v3bwfile: Stop scaling with consensus weight
because when the observed bandwidth is higher than the consensus (for
example when the relay is new or was some time down), it's limited by
the previous consensus, not allowing it to grow.
Since the size of the data to download depends also on the consensus
weight, this results on lower measured bandwidth too.
Closes #40091.
---
docs/source/activity_aggr_lines.puml | 8 +++---
docs/source/activity_scaling_as_torflow.puml | 3 +--
docs/source/images/activity_aggr_lines.svg | 18 ++++++-------
docs/source/images/activity_scaling_as_torflow.svg | 11 ++++----
sbws/lib/v3bwfile.py | 30 +++++-----------------
tests/unit/lib/test_v3bwfile.py | 4 +--
6 files changed, 27 insertions(+), 47 deletions(-)
diff --git a/docs/source/activity_aggr_lines.puml b/docs/source/activity_aggr_lines.puml
index b9b9e42..a6112f1 100644
--- a/docs/source/activity_aggr_lines.puml
+++ b/docs/source/activity_aggr_lines.puml
@@ -19,13 +19,13 @@ if (not results_recent?) then (yes)
stop
endif
if (node_id in router_statuses_d?) then (yes)
- :consensus_bandwidth;
+ :consensus_bandwidth from router statuses;
else (no)
- :consensus_bandwidth;
+ :consensus_bandwidth from results;
endif
:obs_last;
-if (obs_last is None and consensus_bandwidth is None?) then (yes)
- :return(cls(node_id, 1), "no_consensus_no_observed_bw");
+if (obs_last is None?) then (yes)
+ :return(cls(node_id, 1), "no_observed_bw");
stop
endif
:bw;
diff --git a/docs/source/activity_scaling_as_torflow.puml b/docs/source/activity_scaling_as_torflow.puml
index 65a4457..1789dff 100644
--- a/docs/source/activity_scaling_as_torflow.puml
+++ b/docs/source/activity_scaling_as_torflow.puml
@@ -10,11 +10,10 @@ start
while (for l in bw_lines?)
:bw_obs;
:desc_bw = min(desc_bw_obs, l.desc_bw_bur, l.desc_bw_avg);
- :min_bandwidth = min(desc_bw, l.consensus_bandwidth);
:ratio_stream = l.bw_mean / mu;
:ratio_stream_filtered = l.bw_filt / muf;
:ratio = max(ratio_stream, ratio_stream_filtered);
- :l.bw = ratio * min_bandwidth;
+ :l.bw = ratio * desc_bw;
if (router_statuses_d?) then (yes)
if (l.node_id in router_statuses_d?) then (yes)
:sum_bw += l.bw;
diff --git a/docs/source/images/activity_aggr_lines.svg b/docs/source/images/activity_aggr_lines.svg
index 789a97b..6774533 100644
--- a/docs/source/images/activity_aggr_lines.svg
+++ b/docs/source/images/activity_aggr_lines.svg
@@ -1,7 +1,7 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="1285px" preserveAspectRatio="none" style="width:430px;height:1285px;" version="1.1" viewBox="0 0 430 1285" width="430px" zoomAndPan="magnify"><defs><filter height="300%" id="fsu3zpce5sdbv" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacingAndGlyphs" textLength="406" x="12" y="26.708">Activity diagram sbws V3BWLine.from_results</text><ellipse cx="203" cy="40.9531" fill="#000000" filter="url(#fsu3zpce5sdbv)" rx="10" ry
="10" style="stroke: none; stroke-width: 1.0;"/><rect fill="#FEFECE" filter="url(#fsu3zpce5sdbv)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="120" x="143" y="70.9531"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="100" x="153" y="92.0918">success_results</text><rect fill="#FEFECE" filter="url(#fsu3zpce5sdbv)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="189" x="108.5" y="173.3242"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="169" x="118.5" y="194.4629">return (, exclusion_reason)</text><ellipse cx="203" cy="244.8086" fill="none" filter="url(#fsu3zpce5sdbv)" rx="10" ry="10" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="203.5" cy="245.3086" fill="#000000" filter="url(#fsu3zpce5sdbv)" rx="6" ry="6" style="stroke: none; stroke-width: 1.0;"/><polygon fill="#FEFECE" filter=
"url(#fsu3zpce5sdbv)" points="142.5,124.9219,263.5,124.9219,275.5,136.9219,263.5,148.9219,142.5,148.9219,130.5,136.9219,142.5,124.9219" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="207" y="159.1323">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="121" x="142.5" y="140.73">not success_results?</text><rect fill="#FEFECE" filter="url(#fsu3zpce5sdbv)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="100" x="153" y="296.8086"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="80" x="163" y="317.9473">results_away</text><rect fill="#FEFECE" filter="url(#fsu3zpce5sdbv)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="189" x="108.5" y="399.1797"/><text fill="#000000" font-family="san
s-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="169" x="118.5" y="420.3184">return (, exclusion_reason)</text><ellipse cx="203" cy="470.6641" fill="none" filter="url(#fsu3zpce5sdbv)" rx="10" ry="10" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="203.5" cy="471.1641" fill="#000000" filter="url(#fsu3zpce5sdbv)" rx="6" ry="6" style="stroke: none; stroke-width: 1.0;"/><polygon fill="#FEFECE" filter="url(#fsu3zpce5sdbv)" points="151.5,350.7773,254.5,350.7773,266.5,362.7773,254.5,374.7773,151.5,374.7773,139.5,362.7773,151.5,350.7773" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="207" y="384.9878">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="103" x="151.5" y="366.5854">not results_away?</text><rect fill="#FEFECE" filter="url(#fsu3zpce5sdbv)" height="33.9688" rx="12.5" ry="12.5" sty
le="stroke: #A80036; stroke-width: 1.5;" width="110" x="148" y="522.6641"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="90" x="158" y="543.8027">results_recent</text><rect fill="#FEFECE" filter="url(#fsu3zpce5sdbv)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="189" x="108.5" y="625.0352"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="169" x="118.5" y="646.1738">return (, exclusion_reason)</text><ellipse cx="203" cy="696.5195" fill="none" filter="url(#fsu3zpce5sdbv)" rx="10" ry="10" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="203.5" cy="697.0195" fill="#000000" filter="url(#fsu3zpce5sdbv)" rx="6" ry="6" style="stroke: none; stroke-width: 1.0;"/><polygon fill="#FEFECE" filter="url(#fsu3zpce5sdbv)" points="148,576.6328,258,576.6328,270,588.6328,258,600.6328,148,600.6328,136,588.6328,148,576.6328" style="stroke: #
A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="207" y="610.8433">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="110" x="148" y="592.4409">not results_recent?</text><polygon fill="#FEFECE" filter="url(#fsu3zpce5sdbv)" points="117,748.5195,289,748.5195,301,760.5195,289,772.5195,117,772.5195,105,760.5195,117,748.5195" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="172" x="117" y="764.3276">node_id in router_statuses_d?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="85" y="757.9253">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="301" y="757.9253">no</text><rect fill="#FEFECE" filter=
"url(#fsu3zpce5sdbv)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="159" x="15.5" y="782.5195"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="139" x="25.5" y="803.6582">consensus_bandwidth</text><rect fill="#FEFECE" filter="url(#fsu3zpce5sdbv)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="159" x="231.5" y="782.5195"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="139" x="241.5" y="803.6582">consensus_bandwidth</text><polygon fill="#FEFECE" filter="url(#fsu3zpce5sdbv)" points="203,822.4883,215,834.4883,203,846.4883,191,834.4883,203,822.4883" style="stroke: #A80036; stroke-width: 1.5;"/><rect fill="#FEFECE" filter="url(#fsu3zpce5sdbv)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="72" x="167" y="866.4883"/><text fill="#000000" font-family="sans-
serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="52" x="177" y="887.627">obs_last</text><rect fill="#FEFECE" filter="url(#fsu3zpce5sdbv)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="378" x="14" y="968.8594"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="358" x="24" y="989.998">return(cls(node_id, 1), "no_consensus_no_observed_bw")</text><ellipse cx="203" cy="1040.3438" fill="none" filter="url(#fsu3zpce5sdbv)" rx="10" ry="10" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="203.5" cy="1040.8438" fill="#000000" filter="url(#fsu3zpce5sdbv)" rx="6" ry="6" style="stroke: none; stroke-width: 1.0;"/><polygon fill="#FEFECE" filter="url(#fsu3zpce5sdbv)" points="51.5,920.457,354.5,920.457,366.5,932.457,354.5,944.457,51.5,944.457,39.5,932.457,51.5,920.457" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" length
Adjust="spacingAndGlyphs" textLength="20" x="207" y="954.6675">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="303" x="51.5" y="936.2651">obs_last is None and consensus_bandwidth is None?</text><rect fill="#FEFECE" filter="url(#fsu3zpce5sdbv)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="37" x="184.5" y="1092.3438"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="17" x="194.5" y="1113.4824">bw</text><rect fill="#FEFECE" filter="url(#fsu3zpce5sdbv)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="86" x="160" y="1146.3125"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="66" x="170" y="1167.4512">kwargs[...]</text><rect fill="#FEFECE" filter="url(#fsu3zpce5sdbv)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; st
roke-width: 1.5;" width="252" x="77" y="1200.2813"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="232" x="87" y="1221.4199">return (node_id, bw, **kwargs), None</text><ellipse cx="203" cy="1264.25" fill="none" filter="url(#fsu3zpce5sdbv)" rx="10" ry="10" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="203.5" cy="1264.75" fill="#000000" filter="url(#fsu3zpce5sdbv)" rx="6" ry="6" style="stroke: none; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="203" x2="203" y1="50.9531" y2="70.9531"/><polygon fill="#A80036" points="199,60.9531,203,70.9531,207,60.9531,203,64.9531" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="203" x2="203" y1="207.293" y2="234.8086"/><polygon fill="#A80036" points="199,224.8086,203,234.8086,207,224.8086,203,228.8086" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="203"
x2="203" y1="148.9219" y2="173.3242"/><polygon fill="#A80036" points="199,163.3242,203,173.3242,207,163.3242,203,167.3242" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="275.5" x2="307.5" y1="136.9219" y2="136.9219"/><polygon fill="#A80036" points="303.5,204.8086,307.5,214.8086,311.5,204.8086,307.5,208.8086" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="307.5" x2="307.5" y1="136.9219" y2="276.8086"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="307.5" x2="203" y1="276.8086" y2="276.8086"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="203" x2="203" y1="276.8086" y2="296.8086"/><polygon fill="#A80036" points="199,286.8086,203,296.8086,207,286.8086,203,290.8086" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="203" x2="203" y1="104.9219" y2="124.9219"/><polygon fill="#A80036" points="199,114.9219,203,124.9219,207,114
.9219,203,118.9219" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="203" x2="203" y1="433.1484" y2="460.6641"/><polygon fill="#A80036" points="199,450.6641,203,460.6641,207,450.6641,203,454.6641" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="203" x2="203" y1="374.7773" y2="399.1797"/><polygon fill="#A80036" points="199,389.1797,203,399.1797,207,389.1797,203,393.1797" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="266.5" x2="307.5" y1="362.7773" y2="362.7773"/><polygon fill="#A80036" points="303.5,430.6641,307.5,440.6641,311.5,430.6641,307.5,434.6641" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="307.5" x2="307.5" y1="362.7773" y2="502.6641"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="307.5" x2="203" y1="502.6641" y2="502.6641"/><line style="stroke: #A80036; stroke-wi
dth: 1.5;" x1="203" x2="203" y1="502.6641" y2="522.6641"/><polygon fill="#A80036" points="199,512.6641,203,522.6641,207,512.6641,203,516.6641" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="203" x2="203" y1="330.7773" y2="350.7773"/><polygon fill="#A80036" points="199,340.7773,203,350.7773,207,340.7773,203,344.7773" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="203" x2="203" y1="659.0039" y2="686.5195"/><polygon fill="#A80036" points="199,676.5195,203,686.5195,207,676.5195,203,680.5195" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="203" x2="203" y1="600.6328" y2="625.0352"/><polygon fill="#A80036" points="199,615.0352,203,625.0352,207,615.0352,203,619.0352" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="270" x2="307.5" y1="588.6328" y2="588.6328"/><polygon fill="#A80036" point
s="303.5,656.5195,307.5,666.5195,311.5,656.5195,307.5,660.5195" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="307.5" x2="307.5" y1="588.6328" y2="728.5195"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="307.5" x2="203" y1="728.5195" y2="728.5195"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="203" x2="203" y1="728.5195" y2="748.5195"/><polygon fill="#A80036" points="199,738.5195,203,748.5195,207,738.5195,203,742.5195" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="203" x2="203" y1="556.6328" y2="576.6328"/><polygon fill="#A80036" points="199,566.6328,203,576.6328,207,566.6328,203,570.6328" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="105" x2="95" y1="760.5195" y2="760.5195"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="95" x2="95" y1="760.5195" y2="782.5195"/><polygon fill="#A80036" points="91,772.5195
,95,782.5195,99,772.5195,95,776.5195" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="301" x2="311" y1="760.5195" y2="760.5195"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="311" x2="311" y1="760.5195" y2="782.5195"/><polygon fill="#A80036" points="307,772.5195,311,782.5195,315,772.5195,311,776.5195" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="95" x2="95" y1="816.4883" y2="834.4883"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="95" x2="191" y1="834.4883" y2="834.4883"/><polygon fill="#A80036" points="181,830.4883,191,834.4883,181,838.4883,185,834.4883" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="311" x2="311" y1="816.4883" y2="834.4883"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="311" x2="215" y1="834.4883" y2="834.4883"/><polygon fill="#A80036" points="225,830.4883,215,834.4883,225,838.4883,221,
834.4883" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="203" x2="203" y1="846.4883" y2="866.4883"/><polygon fill="#A80036" points="199,856.4883,203,866.4883,207,856.4883,203,860.4883" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="203" x2="203" y1="1002.8281" y2="1030.3438"/><polygon fill="#A80036" points="199,1020.3438,203,1030.3438,207,1020.3438,203,1024.3438" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="203" x2="203" y1="944.457" y2="968.8594"/><polygon fill="#A80036" points="199,958.8594,203,968.8594,207,958.8594,203,962.8594" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="366.5" x2="402" y1="932.457" y2="932.457"/><polygon fill="#A80036" points="398,1000.3438,402,1010.3438,406,1000.3438,402,1004.3438" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80
036; stroke-width: 1.5;" x1="402" x2="402" y1="932.457" y2="1072.3438"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="402" x2="203" y1="1072.3438" y2="1072.3438"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="203" x2="203" y1="1072.3438" y2="1092.3438"/><polygon fill="#A80036" points="199,1082.3438,203,1092.3438,207,1082.3438,203,1086.3438" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="203" x2="203" y1="900.457" y2="920.457"/><polygon fill="#A80036" points="199,910.457,203,920.457,207,910.457,203,914.457" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="203" x2="203" y1="1126.3125" y2="1146.3125"/><polygon fill="#A80036" points="199,1136.3125,203,1146.3125,207,1136.3125,203,1140.3125" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="203" x2="203" y1="1180.2813" y2="1200.2813"/><polygon fill="#A80036" points="199,1190
.2813,203,1200.2813,207,1190.2813,203,1194.2813" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="203" x2="203" y1="1234.25" y2="1254.25"/><polygon fill="#A80036" points="199,1244.25,203,1254.25,207,1244.25,203,1248.25" style="stroke: #A80036; stroke-width: 1.0;"/><!--
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="1285px" preserveAspectRatio="none" style="width:754px;height:1285px;" version="1.1" viewBox="0 0 754 1285" width="754px" zoomAndPan="magnify"><defs><filter height="300%" id="f1dflwv7yky46f" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacingAndGlyphs" textLength="730" x="12" y="26.708">Activity diagram sbws results exclussion and aggregation (V3BWLine.from_results)</text><ellipse cx="391.25" cy="40.9531" fill="#000000
" filter="url(#f1dflwv7yky46f)" rx="10" ry="10" style="stroke: none; stroke-width: 1.0;"/><rect fill="#FEFECE" filter="url(#f1dflwv7yky46f)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="120" x="331.25" y="70.9531"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="100" x="341.25" y="92.0918">success_results</text><rect fill="#FEFECE" filter="url(#f1dflwv7yky46f)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="189" x="296.75" y="173.3242"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="169" x="306.75" y="194.4629">return (, exclusion_reason)</text><ellipse cx="391.25" cy="244.8086" fill="none" filter="url(#f1dflwv7yky46f)" rx="10" ry="10" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="391.75" cy="245.3086" fill="#000000" filter="url(#f1dflwv7yky46f)" rx="6" ry="6" style="stroke:
none; stroke-width: 1.0;"/><polygon fill="#FEFECE" filter="url(#f1dflwv7yky46f)" points="330.75,124.9219,451.75,124.9219,463.75,136.9219,451.75,148.9219,330.75,148.9219,318.75,136.9219,330.75,124.9219" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="395.25" y="159.1323">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="121" x="330.75" y="140.73">not success_results?</text><rect fill="#FEFECE" filter="url(#f1dflwv7yky46f)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="100" x="341.25" y="296.8086"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="80" x="351.25" y="317.9473">results_away</text><rect fill="#FEFECE" filter="url(#f1dflwv7yky46f)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1
.5;" width="189" x="296.75" y="399.1797"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="169" x="306.75" y="420.3184">return (, exclusion_reason)</text><ellipse cx="391.25" cy="470.6641" fill="none" filter="url(#f1dflwv7yky46f)" rx="10" ry="10" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="391.75" cy="471.1641" fill="#000000" filter="url(#f1dflwv7yky46f)" rx="6" ry="6" style="stroke: none; stroke-width: 1.0;"/><polygon fill="#FEFECE" filter="url(#f1dflwv7yky46f)" points="339.75,350.7773,442.75,350.7773,454.75,362.7773,442.75,374.7773,339.75,374.7773,327.75,362.7773,339.75,350.7773" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="395.25" y="384.9878">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="103" x="339.75" y="366.5854">not results_away
?</text><rect fill="#FEFECE" filter="url(#f1dflwv7yky46f)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="110" x="336.25" y="522.6641"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="90" x="346.25" y="543.8027">results_recent</text><rect fill="#FEFECE" filter="url(#f1dflwv7yky46f)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="189" x="296.75" y="625.0352"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="169" x="306.75" y="646.1738">return (, exclusion_reason)</text><ellipse cx="391.25" cy="696.5195" fill="none" filter="url(#f1dflwv7yky46f)" rx="10" ry="10" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="391.75" cy="697.0195" fill="#000000" filter="url(#f1dflwv7yky46f)" rx="6" ry="6" style="stroke: none; stroke-width: 1.0;"/><polygon fill="#FEFECE" filter="url(#f1dflwv7yky46f)" p
oints="336.25,576.6328,446.25,576.6328,458.25,588.6328,446.25,600.6328,336.25,600.6328,324.25,588.6328,336.25,576.6328" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="395.25" y="610.8433">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="110" x="336.25" y="592.4409">not results_recent?</text><polygon fill="#FEFECE" filter="url(#f1dflwv7yky46f)" points="305.25,748.5195,477.25,748.5195,489.25,760.5195,477.25,772.5195,305.25,772.5195,293.25,760.5195,305.25,748.5195" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="172" x="305.25" y="764.3276">node_id in router_statuses_d?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="273.25" y="757.9253">yes</t
ext><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="489.25" y="757.9253">no</text><rect fill="#FEFECE" filter="url(#f1dflwv7yky46f)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="293" x="102" y="782.5195"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="273" x="112" y="803.6582">consensus_bandwidth from router statuses</text><rect fill="#FEFECE" filter="url(#f1dflwv7yky46f)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="238" x="415" y="782.5195"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="218" x="425" y="803.6582">consensus_bandwidth from results</text><polygon fill="#FEFECE" filter="url(#f1dflwv7yky46f)" points="391.25,822.4883,403.25,834.4883,391.25,846.4883,379.25,834.4883,391.25,822.4883" style="stroke: #A80036; stro
ke-width: 1.5;"/><rect fill="#FEFECE" filter="url(#f1dflwv7yky46f)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="72" x="355.25" y="866.4883"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="52" x="365.25" y="887.627">obs_last</text><rect fill="#FEFECE" filter="url(#f1dflwv7yky46f)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="282" x="250.25" y="968.8594"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="262" x="260.25" y="989.998">return(cls(node_id, 1), "no_observed_bw")</text><ellipse cx="391.25" cy="1040.3438" fill="none" filter="url(#f1dflwv7yky46f)" rx="10" ry="10" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="391.75" cy="1040.8438" fill="#000000" filter="url(#f1dflwv7yky46f)" rx="6" ry="6" style="stroke: none; stroke-width: 1.0;"/><polygon fill="#FEFECE" filter="url(#f1
dflwv7yky46f)" points="340.75,920.457,441.75,920.457,453.75,932.457,441.75,944.457,340.75,944.457,328.75,932.457,340.75,920.457" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="395.25" y="954.6675">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="101" x="340.75" y="936.2651">obs_last is None?</text><rect fill="#FEFECE" filter="url(#f1dflwv7yky46f)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="37" x="372.75" y="1092.3438"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="17" x="382.75" y="1113.4824">bw</text><rect fill="#FEFECE" filter="url(#f1dflwv7yky46f)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="86" x="348.25" y="1146.3125"/><text fill="#000000" font-family="sans-se
rif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="66" x="358.25" y="1167.4512">kwargs[...]</text><rect fill="#FEFECE" filter="url(#f1dflwv7yky46f)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="252" x="265.25" y="1200.2813"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="232" x="275.25" y="1221.4199">return (node_id, bw, **kwargs), None</text><ellipse cx="391.25" cy="1264.25" fill="none" filter="url(#f1dflwv7yky46f)" rx="10" ry="10" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="391.75" cy="1264.75" fill="#000000" filter="url(#f1dflwv7yky46f)" rx="6" ry="6" style="stroke: none; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="391.25" x2="391.25" y1="50.9531" y2="70.9531"/><polygon fill="#A80036" points="387.25,60.9531,391.25,70.9531,395.25,60.9531,391.25,64.9531" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A8003
6; stroke-width: 1.5;" x1="391.25" x2="391.25" y1="207.293" y2="234.8086"/><polygon fill="#A80036" points="387.25,224.8086,391.25,234.8086,395.25,224.8086,391.25,228.8086" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="391.25" x2="391.25" y1="148.9219" y2="173.3242"/><polygon fill="#A80036" points="387.25,163.3242,391.25,173.3242,395.25,163.3242,391.25,167.3242" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="463.75" x2="495.75" y1="136.9219" y2="136.9219"/><polygon fill="#A80036" points="491.75,204.8086,495.75,214.8086,499.75,204.8086,495.75,208.8086" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="495.75" x2="495.75" y1="136.9219" y2="276.8086"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="495.75" x2="391.25" y1="276.8086" y2="276.8086"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="391.25" x2="391.25" y1="276.80
86" y2="296.8086"/><polygon fill="#A80036" points="387.25,286.8086,391.25,296.8086,395.25,286.8086,391.25,290.8086" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="391.25" x2="391.25" y1="104.9219" y2="124.9219"/><polygon fill="#A80036" points="387.25,114.9219,391.25,124.9219,395.25,114.9219,391.25,118.9219" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="391.25" x2="391.25" y1="433.1484" y2="460.6641"/><polygon fill="#A80036" points="387.25,450.6641,391.25,460.6641,395.25,450.6641,391.25,454.6641" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="391.25" x2="391.25" y1="374.7773" y2="399.1797"/><polygon fill="#A80036" points="387.25,389.1797,391.25,399.1797,395.25,389.1797,391.25,393.1797" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="454.75" x2="495.75" y1="362.7773" y2="362.7773"
/><polygon fill="#A80036" points="491.75,430.6641,495.75,440.6641,499.75,430.6641,495.75,434.6641" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="495.75" x2="495.75" y1="362.7773" y2="502.6641"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="495.75" x2="391.25" y1="502.6641" y2="502.6641"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="391.25" x2="391.25" y1="502.6641" y2="522.6641"/><polygon fill="#A80036" points="387.25,512.6641,391.25,522.6641,395.25,512.6641,391.25,516.6641" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="391.25" x2="391.25" y1="330.7773" y2="350.7773"/><polygon fill="#A80036" points="387.25,340.7773,391.25,350.7773,395.25,340.7773,391.25,344.7773" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="391.25" x2="391.25" y1="659.0039" y2="686.5195"/><polygon fill="#A80036" points="387.25,676.5195,391.25
,686.5195,395.25,676.5195,391.25,680.5195" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="391.25" x2="391.25" y1="600.6328" y2="625.0352"/><polygon fill="#A80036" points="387.25,615.0352,391.25,625.0352,395.25,615.0352,391.25,619.0352" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="458.25" x2="495.75" y1="588.6328" y2="588.6328"/><polygon fill="#A80036" points="491.75,656.5195,495.75,666.5195,499.75,656.5195,495.75,660.5195" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="495.75" x2="495.75" y1="588.6328" y2="728.5195"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="495.75" x2="391.25" y1="728.5195" y2="728.5195"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="391.25" x2="391.25" y1="728.5195" y2="748.5195"/><polygon fill="#A80036" points="387.25,738.5195,391.25,748.5195,395.25,738.5195,391.25,742.5195" style="stroke
: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="391.25" x2="391.25" y1="556.6328" y2="576.6328"/><polygon fill="#A80036" points="387.25,566.6328,391.25,576.6328,395.25,566.6328,391.25,570.6328" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="293.25" x2="248.5" y1="760.5195" y2="760.5195"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="248.5" x2="248.5" y1="760.5195" y2="782.5195"/><polygon fill="#A80036" points="244.5,772.5195,248.5,782.5195,252.5,772.5195,248.5,776.5195" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="489.25" x2="534" y1="760.5195" y2="760.5195"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="534" x2="534" y1="760.5195" y2="782.5195"/><polygon fill="#A80036" points="530,772.5195,534,782.5195,538,772.5195,534,776.5195" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1
="248.5" x2="248.5" y1="816.4883" y2="834.4883"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="248.5" x2="379.25" y1="834.4883" y2="834.4883"/><polygon fill="#A80036" points="369.25,830.4883,379.25,834.4883,369.25,838.4883,373.25,834.4883" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="534" x2="534" y1="816.4883" y2="834.4883"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="534" x2="403.25" y1="834.4883" y2="834.4883"/><polygon fill="#A80036" points="413.25,830.4883,403.25,834.4883,413.25,838.4883,409.25,834.4883" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="391.25" x2="391.25" y1="846.4883" y2="866.4883"/><polygon fill="#A80036" points="387.25,856.4883,391.25,866.4883,395.25,856.4883,391.25,860.4883" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="391.25" x2="391.25" y1="1002.8281" y2="1030.3438"/><polygon fill="
#A80036" points="387.25,1020.3438,391.25,1030.3438,395.25,1020.3438,391.25,1024.3438" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="391.25" x2="391.25" y1="944.457" y2="968.8594"/><polygon fill="#A80036" points="387.25,958.8594,391.25,968.8594,395.25,958.8594,391.25,962.8594" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="453.75" x2="542.25" y1="932.457" y2="932.457"/><polygon fill="#A80036" points="538.25,1000.3438,542.25,1010.3438,546.25,1000.3438,542.25,1004.3438" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="542.25" x2="542.25" y1="932.457" y2="1072.3438"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="542.25" x2="391.25" y1="1072.3438" y2="1072.3438"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="391.25" x2="391.25" y1="1072.3438" y2="1092.3438"/><polygon fill="#A80036" points="387.25,1082.3438,391.25,1092.3
438,395.25,1082.3438,391.25,1086.3438" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="391.25" x2="391.25" y1="900.457" y2="920.457"/><polygon fill="#A80036" points="387.25,910.457,391.25,920.457,395.25,910.457,391.25,914.457" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="391.25" x2="391.25" y1="1126.3125" y2="1146.3125"/><polygon fill="#A80036" points="387.25,1136.3125,391.25,1146.3125,395.25,1136.3125,391.25,1140.3125" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="391.25" x2="391.25" y1="1180.2813" y2="1200.2813"/><polygon fill="#A80036" points="387.25,1190.2813,391.25,1200.2813,395.25,1190.2813,391.25,1194.2813" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="391.25" x2="391.25" y1="1234.25" y2="1254.25"/><polygon fill="#A80036" points="387.25,1244.25,391.25,1254.25,395.25,12
44.25,391.25,1248.25" style="stroke: #A80036; stroke-width: 1.0;"/><!--
@startuml
-title Activity diagram sbws V3BWLine.from_results
+title Activity diagram sbws results exclussion and aggregation (V3BWLine.from_results)
start
:success_results;
@@ -20,13 +20,13 @@ if (not results_recent?) then (yes)
stop
endif
if (node_id in router_statuses_d?) then (yes)
- :consensus_bandwidth;
+ :consensus_bandwidth from router statuses;
else (no)
- :consensus_bandwidth;
+ :consensus_bandwidth from results;
endif
:obs_last;
-if (obs_last is None and consensus_bandwidth is None?) then (yes)
- :return(cls(node_id, 1), "no_consensus_no_observed_bw");
+if (obs_last is None?) then (yes)
+ :return(cls(node_id, 1), "no_observed_bw");
stop
endif
:bw;
@@ -36,13 +36,13 @@ stop
@enduml
-PlantUML version 1.2018.13(Mon Nov 26 17:11:51 GMT 2018)
+PlantUML version 1.2018.13(Mon Nov 26 17:11:51 UTC 2018)
(GPL source distribution)
Java Runtime: OpenJDK Runtime Environment
JVM: OpenJDK 64-Bit Server VM
-Java Version: 11.0.9.1+1-post-Debian-1deb10u2
+Java Version: 11.0.11+9-post-Debian-1deb10u1
Operating System: Linux
-OS Version: 4.19.0-13-amd64
+OS Version: 4.19.0-16-amd64
Default Encoding: UTF-8
Language: en
Country: US
diff --git a/docs/source/images/activity_scaling_as_torflow.svg b/docs/source/images/activity_scaling_as_torflow.svg
index 822bd75..cb1529d 100644
--- a/docs/source/images/activity_scaling_as_torflow.svg
+++ b/docs/source/images/activity_scaling_as_torflow.svg
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="1237px" preserveAspectRatio="none" style="width:483px;height:1237px;" version="1.1" viewBox="0 0 483 1237" width="483px" zoomAndPan="magnify"><defs><filter height="300%" id="fq8tw0sgtkabn" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacingAndGlyphs" textLength="352" x="64.75" y="26.708">Activity diagram sbws bw_torflow_scale</text><ellipse cx="244.5" cy="40.9531" fill="#000000" filter="url(#fq8tw0sgtkabn)" rx="10" ry
="10" style="stroke: none; stroke-width: 1.0;"/><rect fill="#FEFECE" filter="url(#fq8tw0sgtkabn)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="276" x="106.5" y="70.9531"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="256" x="116.5" y="92.0918">mu = mean([l.bw_mean for l in bw_lines])</text><rect fill="#FEFECE" filter="url(#fq8tw0sgtkabn)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="260" x="114.5" y="124.9219"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="240" x="124.5" y="146.0605">muf = mean([l.bw_filt for l in bw_lines])</text><rect fill="#FEFECE" filter="url(#fq8tw0sgtkabn)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="95" x="197" y="178.8906"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs"
textLength="75" x="207" y="200.0293">sum_bw = 0</text><rect fill="#FEFECE" filter="url(#fq8tw0sgtkabn)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="66" x="211.5" y="276.8594"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="46" x="221.5" y="297.998">bw_obs</text><rect fill="#FEFECE" filter="url(#fq8tw0sgtkabn)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="396" x="46.5" y="330.8281"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="376" x="56.5" y="351.9668">desc_bw = min(desc_bw_obs, l.desc_bw_bur, l.desc_bw_avg)</text><rect fill="#FEFECE" filter="url(#fq8tw0sgtkabn)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="370" x="59.5" y="384.7969"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="
350" x="69.5" y="405.9355">min_bandwidth = min(desc_bw, l.consensus_bandwidth)</text><rect fill="#FEFECE" filter="url(#fq8tw0sgtkabn)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="213" x="138" y="438.7656"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="193" x="148" y="459.9043">ratio_stream = l.bw_mean / mu</text><rect fill="#FEFECE" filter="url(#fq8tw0sgtkabn)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="247" x="121" y="492.7344"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="227" x="131" y="513.873">ratio_stream_filtered = l.bw_filt / muf</text><rect fill="#FEFECE" filter="url(#fq8tw0sgtkabn)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="318" x="85.5" y="558.7695"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust
="spacingAndGlyphs" textLength="298" x="95.5" y="579.9082">ratio = max(ratio_stream, ratio_stream_filtered)</text><rect fill="#FEFECE" filter="url(#fq8tw0sgtkabn)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="198" x="145.5" y="612.7383"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="178" x="155.5" y="633.877">l.bw = ratio * min_bandwidth</text><polygon fill="#FEFECE" filter="url(#fq8tw0sgtkabn)" points="189.5,666.707,299.5,666.707,311.5,678.707,299.5,690.707,189.5,690.707,177.5,678.707,189.5,666.707" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="110" x="189.5" y="682.5151">router_statuses_d?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="157.5" y="676.1128">yes</text><text fill="#000000" font-family="sans-serif
" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="311.5" y="676.1128">no</text><rect fill="#FEFECE" filter="url(#fq8tw0sgtkabn)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="121" x="87" y="749.1094"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="101" x="97" y="770.248">sum_bw += l.bw</text><polygon fill="#FEFECE" filter="url(#fq8tw0sgtkabn)" points="58,700.707,237,700.707,249,712.707,237,724.707,58,724.707,46,712.707,58,700.707" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="151.5" y="734.9175">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="179" x="58" y="716.5151">l.node_id in router_statuses_d?</text><polygon fill="#FEFECE" filter="url(#fq8tw0sgtkabn)" points="147.5,803.0781,159.5,815.078
1,147.5,827.0781,135.5,815.0781,147.5,803.0781" style="stroke: #A80036; stroke-width: 1.5;"/><rect fill="#FEFECE" filter="url(#fq8tw0sgtkabn)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="121" x="281" y="700.707"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="101" x="291" y="721.8457">sum_bw += l.bw</text><polygon fill="#FEFECE" filter="url(#fq8tw0sgtkabn)" points="244.5,833.0781,256.5,845.0781,244.5,857.0781,232.5,845.0781,244.5,833.0781" style="stroke: #A80036; stroke-width: 1.5;"/><polygon fill="#FEFECE" filter="url(#fq8tw0sgtkabn)" points="196.5,232.8594,292.5,232.8594,304.5,244.8594,292.5,256.8594,196.5,256.8594,184.5,244.8594,196.5,232.8594" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="96" x="196.5" y="248.6675">for l in bw_lines?</text><rect fill="#FEFECE" filter="url(#fq8
tw0sgtkabn)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="157" x="166" y="899.0781"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="137" x="176" y="920.2168">hlimit = sum_bw * cap</text><rect fill="#FEFECE" filter="url(#fq8tw0sgtkabn)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="199" x="145" y="997.0469"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="179" x="155" y="1018.1855">bw_scaled = min(hlimit, l.bw)</text><rect fill="#FEFECE" filter="url(#fq8tw0sgtkabn)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="402" x="43.5" y="1066.0156"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="382" x="53.5" y="1087.1543">l.bw = kb_round_x_sig_dig(bw_scaled, digits=num_round_dig)</text><polygon fil
l="#FEFECE" filter="url(#fq8tw0sgtkabn)" points="196.5,953.0469,292.5,953.0469,304.5,965.0469,292.5,977.0469,196.5,977.0469,184.5,965.0469,196.5,953.0469" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="96" x="196.5" y="968.855">for l in bw_lines?</text><rect fill="#FEFECE" filter="url(#fq8tw0sgtkabn)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="423" x="33" y="1141.9844"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="403" x="43" y="1163.123">return sorted(bw_lines_tf, key=lambda x: x.bw, reverse=reverse)</text><ellipse cx="244.5" cy="1205.9531" fill="none" filter="url(#fq8tw0sgtkabn)" rx="10" ry="10" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="245" cy="1206.4531" fill="#000000" filter="url(#fq8tw0sgtkabn)" rx="6" ry="6" style="stroke: none; stroke-width: 1.0;"/><line
style="stroke: #A80036; stroke-width: 1.5;" x1="244.5" x2="244.5" y1="50.9531" y2="70.9531"/><polygon fill="#A80036" points="240.5,60.9531,244.5,70.9531,248.5,60.9531,244.5,64.9531" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="244.5" x2="244.5" y1="104.9219" y2="124.9219"/><polygon fill="#A80036" points="240.5,114.9219,244.5,124.9219,248.5,114.9219,244.5,118.9219" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="244.5" x2="244.5" y1="158.8906" y2="178.8906"/><polygon fill="#A80036" points="240.5,168.8906,244.5,178.8906,248.5,168.8906,244.5,172.8906" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="244.5" x2="244.5" y1="310.8281" y2="330.8281"/><polygon fill="#A80036" points="240.5,320.8281,244.5,330.8281,248.5,320.8281,244.5,324.8281" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1=
"244.5" x2="244.5" y1="364.7969" y2="384.7969"/><polygon fill="#A80036" points="240.5,374.7969,244.5,384.7969,248.5,374.7969,244.5,378.7969" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="244.5" x2="244.5" y1="418.7656" y2="438.7656"/><polygon fill="#A80036" points="240.5,428.7656,244.5,438.7656,248.5,428.7656,244.5,432.7656" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="244.5" x2="244.5" y1="472.7344" y2="492.7344"/><polygon fill="#A80036" points="240.5,482.7344,244.5,492.7344,248.5,482.7344,244.5,486.7344" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="244.5" x2="244.5" y1="526.7031" y2="558.7695"/><polygon fill="#A80036" points="240.5,548.7695,244.5,558.7695,248.5,548.7695,244.5,552.7695" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="244.5" x2="244.5" y1="592.7383" y2="612.
7383"/><polygon fill="#A80036" points="240.5,602.7383,244.5,612.7383,248.5,602.7383,244.5,606.7383" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="147.5" x2="147.5" y1="724.707" y2="749.1094"/><polygon fill="#A80036" points="143.5,739.1094,147.5,749.1094,151.5,739.1094,147.5,743.1094" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="249" x2="261" y1="712.707" y2="712.707"/><polygon fill="#A80036" points="257,756.0938,261,766.0938,265,756.0938,261,760.0938" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="261" x2="261" y1="712.707" y2="815.0781"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="261" x2="159.5" y1="815.0781" y2="815.0781"/><polygon fill="#A80036" points="169.5,811.0781,159.5,815.0781,169.5,819.0781,165.5,815.0781" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="14
7.5" x2="147.5" y1="783.0781" y2="803.0781"/><polygon fill="#A80036" points="143.5,793.0781,147.5,803.0781,151.5,793.0781,147.5,797.0781" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="177.5" x2="147.5" y1="678.707" y2="678.707"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="147.5" x2="147.5" y1="678.707" y2="700.707"/><polygon fill="#A80036" points="143.5,690.707,147.5,700.707,151.5,690.707,147.5,694.707" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="311.5" x2="341.5" y1="678.707" y2="678.707"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="341.5" x2="341.5" y1="678.707" y2="700.707"/><polygon fill="#A80036" points="337.5,690.707,341.5,700.707,345.5,690.707,341.5,694.707" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="147.5" x2="147.5" y1="827.0781" y2="845.0781"/><line style="stroke: #A80036; stroke-width: 1.5;"
x1="147.5" x2="232.5" y1="845.0781" y2="845.0781"/><polygon fill="#A80036" points="222.5,841.0781,232.5,845.0781,222.5,849.0781,226.5,845.0781" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="341.5" x2="341.5" y1="734.6758" y2="845.0781"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="341.5" x2="256.5" y1="845.0781" y2="845.0781"/><polygon fill="#A80036" points="266.5,841.0781,256.5,845.0781,266.5,849.0781,262.5,845.0781" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="244.5" x2="244.5" y1="646.707" y2="666.707"/><polygon fill="#A80036" points="240.5,656.707,244.5,666.707,248.5,656.707,244.5,660.707" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="244.5" x2="244.5" y1="256.8594" y2="276.8594"/><polygon fill="#A80036" points="240.5,266.8594,244.5,276.8594,248.5,266.8594,244.5,270.8594" style="stroke: #A80036; stroke-width: 1.
0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="244.5" x2="244.5" y1="857.0781" y2="867.0781"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="244.5" x2="454.5" y1="867.0781" y2="867.0781"/><polygon fill="#A80036" points="450.5,550.7031,454.5,540.7031,458.5,550.7031,454.5,546.7031" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="454.5" x2="454.5" y1="244.8594" y2="867.0781"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="454.5" x2="304.5" y1="244.8594" y2="244.8594"/><polygon fill="#A80036" points="314.5,240.8594,304.5,244.8594,314.5,248.8594,310.5,244.8594" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="184.5" x2="24" y1="244.8594" y2="244.8594"/><polygon fill="#A80036" points="20,536.7031,24,546.7031,28,536.7031,24,540.7031" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="24" x2="24" y1="244.8594" y2="879.
0781"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="24" x2="244.5" y1="879.0781" y2="879.0781"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="244.5" x2="244.5" y1="879.0781" y2="899.0781"/><polygon fill="#A80036" points="240.5,889.0781,244.5,899.0781,248.5,889.0781,244.5,893.0781" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="244.5" x2="244.5" y1="212.8594" y2="232.8594"/><polygon fill="#A80036" points="240.5,222.8594,244.5,232.8594,248.5,222.8594,244.5,226.8594" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="244.5" x2="244.5" y1="1031.0156" y2="1066.0156"/><polygon fill="#A80036" points="240.5,1056.0156,244.5,1066.0156,248.5,1056.0156,244.5,1060.0156" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="244.5" x2="244.5" y1="977.0469" y2="997.0469"/><polygon fill="#A80036" points="240.5,987.0469,244.5,997.0469,248.5,
987.0469,244.5,991.0469" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="244.5" x2="244.5" y1="1099.9844" y2="1109.9844"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="244.5" x2="457.5" y1="1109.9844" y2="1109.9844"/><polygon fill="#A80036" points="453.5,1046.5156,457.5,1036.5156,461.5,1046.5156,457.5,1042.5156" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="457.5" x2="457.5" y1="965.0469" y2="1109.9844"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="457.5" x2="304.5" y1="965.0469" y2="965.0469"/><polygon fill="#A80036" points="314.5,961.0469,304.5,965.0469,314.5,969.0469,310.5,965.0469" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="184.5" x2="31.5" y1="965.0469" y2="965.0469"/><polygon fill="#A80036" points="27.5,1032.5156,31.5,1042.5156,35.5,1032.5156,31.5,1036.5156" style="stroke: #A80036; stroke-width: 1.5;"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="31.5" x2="31.5" y1="965.0469" y2="1121.9844"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="31.5" x2="244.5" y1="1121.9844" y2="1121.9844"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="244.5" x2="244.5" y1="1121.9844" y2="1141.9844"/><polygon fill="#A80036" points="240.5,1131.9844,244.5,1141.9844,248.5,1131.9844,244.5,1135.9844" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="244.5" x2="244.5" y1="933.0469" y2="953.0469"/><polygon fill="#A80036" points="240.5,943.0469,244.5,953.0469,248.5,943.0469,244.5,947.0469" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="244.5" x2="244.5" y1="1175.9531" y2="1195.9531"/><polygon fill="#A80036" points="240.5,1185.9531,244.5,1195.9531,248.5,1185.9531,244.5,1189.9531" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#888888" font-family="sans-serif" font-size="10" lengt
hAdjust="spacingAndGlyphs" textLength="119" x="181.25" y="1224.2354">last updated 2021-01-08</text><!--
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="1171px" preserveAspectRatio="none" style="width:483px;height:1171px;" version="1.1" viewBox="0 0 483 1171" width="483px" zoomAndPan="magnify"><defs><filter height="300%" id="fufbnejl6losm" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacingAndGlyphs" textLength="352" x="64.75" y="26.708">Activity diagram sbws bw_torflow_scale</text><ellipse cx="244.5" cy="40.9531" fill="#000000" filter="url(#fufbnejl6losm)" rx="10" ry
="10" style="stroke: none; stroke-width: 1.0;"/><rect fill="#FEFECE" filter="url(#fufbnejl6losm)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="276" x="106.5" y="70.9531"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="256" x="116.5" y="92.0918">mu = mean([l.bw_mean for l in bw_lines])</text><rect fill="#FEFECE" filter="url(#fufbnejl6losm)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="260" x="114.5" y="124.9219"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="240" x="124.5" y="146.0605">muf = mean([l.bw_filt for l in bw_lines])</text><rect fill="#FEFECE" filter="url(#fufbnejl6losm)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="95" x="197" y="178.8906"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs"
textLength="75" x="207" y="200.0293">sum_bw = 0</text><rect fill="#FEFECE" filter="url(#fufbnejl6losm)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="66" x="211.5" y="276.8594"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="46" x="221.5" y="297.998">bw_obs</text><rect fill="#FEFECE" filter="url(#fufbnejl6losm)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="396" x="46.5" y="330.8281"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="376" x="56.5" y="351.9668">desc_bw = min(desc_bw_obs, l.desc_bw_bur, l.desc_bw_avg)</text><rect fill="#FEFECE" filter="url(#fufbnejl6losm)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="213" x="138" y="384.7969"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="1
93" x="148" y="405.9355">ratio_stream = l.bw_mean / mu</text><rect fill="#FEFECE" filter="url(#fufbnejl6losm)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="247" x="121" y="438.7656"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="227" x="131" y="459.9043">ratio_stream_filtered = l.bw_filt / muf</text><rect fill="#FEFECE" filter="url(#fufbnejl6losm)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="318" x="85.5" y="492.7344"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="298" x="95.5" y="513.873">ratio = max(ratio_stream, ratio_stream_filtered)</text><rect fill="#FEFECE" filter="url(#fufbnejl6losm)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="158" x="165.5" y="546.7031"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="
spacingAndGlyphs" textLength="138" x="175.5" y="567.8418">l.bw = ratio * desc_bw</text><polygon fill="#FEFECE" filter="url(#fufbnejl6losm)" points="189.5,600.6719,299.5,600.6719,311.5,612.6719,299.5,624.6719,189.5,624.6719,177.5,612.6719,189.5,600.6719" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="110" x="189.5" y="616.48">router_statuses_d?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="157.5" y="610.0776">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="311.5" y="610.0776">no</text><rect fill="#FEFECE" filter="url(#fufbnejl6losm)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="121" x="87" y="683.0742"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" te
xtLength="101" x="97" y="704.2129">sum_bw += l.bw</text><polygon fill="#FEFECE" filter="url(#fufbnejl6losm)" points="58,634.6719,237,634.6719,249,646.6719,237,658.6719,58,658.6719,46,646.6719,58,634.6719" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="151.5" y="668.8823">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="179" x="58" y="650.48">l.node_id in router_statuses_d?</text><polygon fill="#FEFECE" filter="url(#fufbnejl6losm)" points="147.5,737.043,159.5,749.043,147.5,761.043,135.5,749.043,147.5,737.043" style="stroke: #A80036; stroke-width: 1.5;"/><rect fill="#FEFECE" filter="url(#fufbnejl6losm)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="121" x="281" y="634.6719"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" text
Length="101" x="291" y="655.8105">sum_bw += l.bw</text><polygon fill="#FEFECE" filter="url(#fufbnejl6losm)" points="244.5,767.043,256.5,779.043,244.5,791.043,232.5,779.043,244.5,767.043" style="stroke: #A80036; stroke-width: 1.5;"/><polygon fill="#FEFECE" filter="url(#fufbnejl6losm)" points="196.5,232.8594,292.5,232.8594,304.5,244.8594,292.5,256.8594,196.5,256.8594,184.5,244.8594,196.5,232.8594" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="96" x="196.5" y="248.6675">for l in bw_lines?</text><rect fill="#FEFECE" filter="url(#fufbnejl6losm)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="157" x="166" y="833.043"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="137" x="176" y="854.1816">hlimit = sum_bw * cap</text><rect fill="#FEFECE" filter="url(#fufbnejl6losm)" height="33.9688" rx="12
.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="199" x="145" y="931.0117"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="179" x="155" y="952.1504">bw_scaled = min(hlimit, l.bw)</text><rect fill="#FEFECE" filter="url(#fufbnejl6losm)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="402" x="43.5" y="999.9805"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="382" x="53.5" y="1021.1191">l.bw = kb_round_x_sig_dig(bw_scaled, digits=num_round_dig)</text><polygon fill="#FEFECE" filter="url(#fufbnejl6losm)" points="196.5,887.0117,292.5,887.0117,304.5,899.0117,292.5,911.0117,196.5,911.0117,184.5,899.0117,196.5,887.0117" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="96" x="196.5" y="902.8198">for l in bw_lines?</text><rect
fill="#FEFECE" filter="url(#fufbnejl6losm)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="423" x="33" y="1075.9492"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="403" x="43" y="1097.0879">return sorted(bw_lines_tf, key=lambda x: x.bw, reverse=reverse)</text><ellipse cx="244.5" cy="1139.918" fill="none" filter="url(#fufbnejl6losm)" rx="10" ry="10" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="245" cy="1140.418" fill="#000000" filter="url(#fufbnejl6losm)" rx="6" ry="6" style="stroke: none; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="244.5" x2="244.5" y1="50.9531" y2="70.9531"/><polygon fill="#A80036" points="240.5,60.9531,244.5,70.9531,248.5,60.9531,244.5,64.9531" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="244.5" x2="244.5" y1="104.9219" y2="124.9219"/><polygon fill="#A80036" points="24
0.5,114.9219,244.5,124.9219,248.5,114.9219,244.5,118.9219" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="244.5" x2="244.5" y1="158.8906" y2="178.8906"/><polygon fill="#A80036" points="240.5,168.8906,244.5,178.8906,248.5,168.8906,244.5,172.8906" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="244.5" x2="244.5" y1="310.8281" y2="330.8281"/><polygon fill="#A80036" points="240.5,320.8281,244.5,330.8281,248.5,320.8281,244.5,324.8281" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="244.5" x2="244.5" y1="364.7969" y2="384.7969"/><polygon fill="#A80036" points="240.5,374.7969,244.5,384.7969,248.5,374.7969,244.5,378.7969" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="244.5" x2="244.5" y1="418.7656" y2="438.7656"/><polygon fill="#A80036" points="240.5,428.7656,244.5,438.7656,248.5,428.765
6,244.5,432.7656" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="244.5" x2="244.5" y1="472.7344" y2="492.7344"/><polygon fill="#A80036" points="240.5,482.7344,244.5,492.7344,248.5,482.7344,244.5,486.7344" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="244.5" x2="244.5" y1="526.7031" y2="546.7031"/><polygon fill="#A80036" points="240.5,536.7031,244.5,546.7031,248.5,536.7031,244.5,540.7031" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="147.5" x2="147.5" y1="658.6719" y2="683.0742"/><polygon fill="#A80036" points="143.5,673.0742,147.5,683.0742,151.5,673.0742,147.5,677.0742" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="249" x2="261" y1="646.6719" y2="646.6719"/><polygon fill="#A80036" points="257,690.0586,261,700.0586,265,690.0586,261,694.0586" style="stroke: #A80036; stroke-widt
h: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="261" x2="261" y1="646.6719" y2="749.043"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="261" x2="159.5" y1="749.043" y2="749.043"/><polygon fill="#A80036" points="169.5,745.043,159.5,749.043,169.5,753.043,165.5,749.043" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="147.5" x2="147.5" y1="717.043" y2="737.043"/><polygon fill="#A80036" points="143.5,727.043,147.5,737.043,151.5,727.043,147.5,731.043" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="177.5" x2="147.5" y1="612.6719" y2="612.6719"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="147.5" x2="147.5" y1="612.6719" y2="634.6719"/><polygon fill="#A80036" points="143.5,624.6719,147.5,634.6719,151.5,624.6719,147.5,628.6719" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="311.5" x2="341.5" y1="612.6719" y
2="612.6719"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="341.5" x2="341.5" y1="612.6719" y2="634.6719"/><polygon fill="#A80036" points="337.5,624.6719,341.5,634.6719,345.5,624.6719,341.5,628.6719" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="147.5" x2="147.5" y1="761.043" y2="779.043"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="147.5" x2="232.5" y1="779.043" y2="779.043"/><polygon fill="#A80036" points="222.5,775.043,232.5,779.043,222.5,783.043,226.5,779.043" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="341.5" x2="341.5" y1="668.6406" y2="779.043"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="341.5" x2="256.5" y1="779.043" y2="779.043"/><polygon fill="#A80036" points="266.5,775.043,256.5,779.043,266.5,783.043,262.5,779.043" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="244.5" x2="244.5" y1="580
.6719" y2="600.6719"/><polygon fill="#A80036" points="240.5,590.6719,244.5,600.6719,248.5,590.6719,244.5,594.6719" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="244.5" x2="244.5" y1="256.8594" y2="276.8594"/><polygon fill="#A80036" points="240.5,266.8594,244.5,276.8594,248.5,266.8594,244.5,270.8594" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="244.5" x2="244.5" y1="791.043" y2="801.043"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="244.5" x2="454.5" y1="801.043" y2="801.043"/><polygon fill="#A80036" points="450.5,519.1523,454.5,509.1523,458.5,519.1523,454.5,515.1523" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="454.5" x2="454.5" y1="244.8594" y2="801.043"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="454.5" x2="304.5" y1="244.8594" y2="244.8594"/><polygon fill="#A80036" points="314.5,240.8594,304.5,244.8594
,314.5,248.8594,310.5,244.8594" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="184.5" x2="24" y1="244.8594" y2="244.8594"/><polygon fill="#A80036" points="20,505.1523,24,515.1523,28,505.1523,24,509.1523" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="24" x2="24" y1="244.8594" y2="813.043"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="24" x2="244.5" y1="813.043" y2="813.043"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="244.5" x2="244.5" y1="813.043" y2="833.043"/><polygon fill="#A80036" points="240.5,823.043,244.5,833.043,248.5,823.043,244.5,827.043" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="244.5" x2="244.5" y1="212.8594" y2="232.8594"/><polygon fill="#A80036" points="240.5,222.8594,244.5,232.8594,248.5,222.8594,244.5,226.8594" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stro
ke-width: 1.5;" x1="244.5" x2="244.5" y1="964.9805" y2="999.9805"/><polygon fill="#A80036" points="240.5,989.9805,244.5,999.9805,248.5,989.9805,244.5,993.9805" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="244.5" x2="244.5" y1="911.0117" y2="931.0117"/><polygon fill="#A80036" points="240.5,921.0117,244.5,931.0117,248.5,921.0117,244.5,925.0117" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="244.5" x2="244.5" y1="1033.9492" y2="1043.9492"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="244.5" x2="457.5" y1="1043.9492" y2="1043.9492"/><polygon fill="#A80036" points="453.5,980.4805,457.5,970.4805,461.5,980.4805,457.5,976.4805" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="457.5" x2="457.5" y1="899.0117" y2="1043.9492"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="457.5" x2="304.5" y1="899.0117" y2="899.0117"/><polyg
on fill="#A80036" points="314.5,895.0117,304.5,899.0117,314.5,903.0117,310.5,899.0117" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="184.5" x2="31.5" y1="899.0117" y2="899.0117"/><polygon fill="#A80036" points="27.5,966.4805,31.5,976.4805,35.5,966.4805,31.5,970.4805" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="31.5" x2="31.5" y1="899.0117" y2="1055.9492"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="31.5" x2="244.5" y1="1055.9492" y2="1055.9492"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="244.5" x2="244.5" y1="1055.9492" y2="1075.9492"/><polygon fill="#A80036" points="240.5,1065.9492,244.5,1075.9492,248.5,1065.9492,244.5,1069.9492" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="244.5" x2="244.5" y1="867.0117" y2="887.0117"/><polygon fill="#A80036" points="240.5,877.0117,244.5,887.0117,248.5,877.0117,244.5,
881.0117" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="244.5" x2="244.5" y1="1109.918" y2="1129.918"/><polygon fill="#A80036" points="240.5,1119.918,244.5,1129.918,248.5,1119.918,244.5,1123.918" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#888888" font-family="sans-serif" font-size="10" lengthAdjust="spacingAndGlyphs" textLength="119" x="181.25" y="1158.2002">last updated 2021-01-08</text><!--
@startuml
title Activity diagram sbws bw_torflow_scale
@@ -10,11 +10,10 @@ start
while (for l in bw_lines?)
:bw_obs;
:desc_bw = min(desc_bw_obs, l.desc_bw_bur, l.desc_bw_avg);
- :min_bandwidth = min(desc_bw, l.consensus_bandwidth);
:ratio_stream = l.bw_mean / mu;
:ratio_stream_filtered = l.bw_filt / muf;
:ratio = max(ratio_stream, ratio_stream_filtered);
- :l.bw = ratio * min_bandwidth;
+ :l.bw = ratio * desc_bw;
if (router_statuses_d?) then (yes)
if (l.node_id in router_statuses_d?) then (yes)
:sum_bw += l.bw;
@@ -34,13 +33,13 @@ stop
footer last updated 2021-01-08
@enduml
-PlantUML version 1.2018.13(Mon Nov 26 17:11:51 GMT 2018)
+PlantUML version 1.2018.13(Mon Nov 26 17:11:51 UTC 2018)
(GPL source distribution)
Java Runtime: OpenJDK Runtime Environment
JVM: OpenJDK 64-Bit Server VM
-Java Version: 11.0.9.1+1-post-Debian-1deb10u2
+Java Version: 11.0.11+9-post-Debian-1deb10u1
Operating System: Linux
-OS Version: 4.19.0-13-amd64
+OS Version: 4.19.0-16-amd64
Default Encoding: UTF-8
Language: en
Country: US
diff --git a/sbws/lib/v3bwfile.py b/sbws/lib/v3bwfile.py
index 2784620..dafd7cf 100644
--- a/sbws/lib/v3bwfile.py
+++ b/sbws/lib/v3bwfile.py
@@ -840,12 +840,12 @@ class V3BWLine(object):
# If there is no last observed bandwidth, there won't be mean either.
desc_bw_obs_last = cls.desc_bw_obs_last_from_results(results_recent)
- # Exclude also relays without consensus bandwidth nor observed
- # bandwidth, since they can't be scaled
- if desc_bw_obs_last is None and consensus_bandwidth is None:
+ # Exclude also relays without observed bandwidth, since they can't be
+ # scaled
+ if desc_bw_obs_last is None:
# This reason is not counted, not added in the file, but it will
# have vote = 0
- return (cls(node_id, 1), "no_consensus_no_observed_bw")
+ return (cls(node_id, 1), "no_observed_bw")
# For any line not excluded, do not include vote and unmeasured
# KeyValues
@@ -1379,10 +1379,6 @@ class V3BWFile(object):
# Generators SHOULD NOT limit measured bandwidths based on
# descriptors' bandwidth-observed, because that penalises new
# relays.
- # See https://gitlab.torproject.org/tpo/core/tor/-/issues/8494
- # If the observed bandwidth is None, it is not possible to
- # calculate the minimum with the other descriptors.
- # Only in this case, take the consensus bandwidth.
# In the case that descriptor average or burst are None,
# ignore them since it must be a bug in ``Resultdump``, already
# logged in x_bw/bandwidth_x_from_results, but scale.
@@ -1399,22 +1395,8 @@ class V3BWFile(object):
desc_bw = min(desc_bw_obs, l.desc_bw_avg)
else:
desc_bw = desc_bw_obs
- # If the relay is unmeasured and consensus bandwidth is None or
- # 0, use the descriptor bandwidth
- if (
- l.consensus_bandwidth_is_unmeasured
- or not l.consensus_bandwidth
- ):
- min_bandwidth = desc_bw_obs
- else:
- min_bandwidth = min(desc_bw, l.consensus_bandwidth)
- elif l.consensus_bandwidth is not None:
- min_bandwidth = l.consensus_bandwidth
else:
- log.warning(
- "Can not scale relay missing descriptor and"
- " consensus bandwidth."
- )
+ log.warning("Can not scale relay missing descriptor.")
continue
# Torflow's scaling
@@ -1424,7 +1406,7 @@ class V3BWFile(object):
# Assign it to an attribute, so it's not lost before capping and
# rounding
- l.bw = ratio * min_bandwidth
+ l.bw = ratio * desc_bw
# If the consensus is available, sum only the bw for the relays
# that are in the consensus
diff --git a/tests/unit/lib/test_v3bwfile.py b/tests/unit/lib/test_v3bwfile.py
index 6841e8f..0a311a8 100644
--- a/tests/unit/lib/test_v3bwfile.py
+++ b/tests/unit/lib/test_v3bwfile.py
@@ -426,7 +426,7 @@ def test_torflow_scale_no_desc_bw_obs(datadir, conf, caplog):
results = load_result_file(str(datadir.join("results_no_desc_bw_obs.txt")))
caplog.set_level(logging.DEBUG)
v3bwfile = V3BWFile.from_results(results, "", "", state_fpath)
- assert v3bwfile.bw_lines[0].bw == 30
+ assert v3bwfile.bw_lines[0].bw == 1
def test_torflow_scale_no_desc_bw_avg_obs(datadir, conf, caplog):
@@ -436,7 +436,7 @@ def test_torflow_scale_no_desc_bw_avg_obs(datadir, conf, caplog):
)
caplog.set_level(logging.DEBUG)
v3bwfile = V3BWFile.from_results(results, "", "", state_fpath)
- assert v3bwfile.bw_lines[0].bw == 30
+ assert v3bwfile.bw_lines[0].bw == 1
def test_torflow_scale_no_consensus_bw(datadir, conf, caplog):
_______________________________________________
tor-commits mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits