Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
juga
sbws
Commits
58d5a4a5
Commit
58d5a4a5
authored
Feb 07, 2019
by
juga
Browse files
new: v3bwfile: Add measurement attempts, failures
and priority list counters Part of #28567.
parent
1fa8a324
Changes
1
Hide whitespace changes
Inline
Side-by-side
sbws/lib/v3bwfile.py
View file @
58d5a4a5
...
...
@@ -114,6 +114,9 @@ BANDWIDTH_LINE_KEY_VALUES_MONITOR = [
# 1.2 relay: the number of different consensuses, that sbws has seen,
# since the last 5 days, that have this relay
'relay_in_recent_consensus_count'
,
# 2.6 relay: the number of times a relay was "prioritized" to be measured
# in the recent days (by default 5).
'relay_recent_priority_list_count'
,
# 3.8 relay: the number of times that sbws has tried to measure
# this relay, since the last 5 days
# This would be the number of times a relay was in a priority list (2.6)
...
...
@@ -244,6 +247,35 @@ class V3BWHeader(object):
kwargs
[
'destinations_countries'
]
=
destinations_countries
if
recent_consensus_count
is
not
None
:
kwargs
[
'recent_consensus_count'
]
=
str
(
recent_consensus_count
)
recent_measurement_attempt_count
=
\
cls
.
recent_measurement_attempt_count_from_file
(
state_fpath
)
if
recent_measurement_attempt_count
is
not
None
:
kwargs
[
'recent_measurement_attempt_count'
]
=
\
str
(
recent_measurement_attempt_count
)
# If it is a failure that is not a ResultError, then
# failures = attempts - all mesaurements
# Works only in the case that old measurements files already had
# measurements count
if
recent_measurement_attempt_count
is
not
None
:
all_measurements
=
0
for
result_list
in
results
.
values
():
all_measurements
+=
len
(
result_list
)
measurement_failures
=
(
recent_measurement_attempt_count
-
all_measurements
)
kwargs
[
'recent_measurement_failure_count'
]
=
\
str
(
measurement_failures
)
priority_lists
=
cls
.
recent_priority_list_count_from_file
(
state_fpath
)
if
priority_lists
is
not
None
:
kwargs
[
'recent_priority_list_count'
]
=
str
(
priority_lists
)
priority_relays
=
\
cls
.
recent_priority_relay_count_from_file
(
state_fpath
)
if
priority_relays
is
not
None
:
kwargs
[
'recent_priority_relay_count'
]
=
str
(
priority_relays
)
h
=
cls
(
timestamp
,
**
kwargs
)
return
h
...
...
@@ -308,6 +340,36 @@ class V3BWHeader(object):
else
:
return
None
# NOTE: in future refactor store state in the class
@
staticmethod
def
recent_measurement_attempt_count_from_file
(
state_fpath
):
"""
Returns the number of times any relay was queued to be measured
in the recent (by default 5) days from the state file.
"""
state
=
State
(
state_fpath
)
return
state
.
get
(
'recent_measurement_attempt_count'
,
None
)
@
staticmethod
def
recent_priority_list_count_from_file
(
state_fpath
):
"""
Returns the number of times
:meth:`~sbws.lib.relayprioritizer.RelayPrioritizer.best_priority`
was run
in the recent (by default 5) days from the state file.
"""
state
=
State
(
state_fpath
)
return
state
.
get
(
'recent_priority_list_count'
,
None
)
@
staticmethod
def
recent_priority_relay_count_from_file
(
state_fpath
):
"""
Returns the number of times any relay was "prioritized" to be measured
in the recent (by default 5) days from the state file.
"""
state
=
State
(
state_fpath
)
return
state
.
get
(
'recent_priority_relay_count'
,
None
)
@
staticmethod
def
latest_bandwidth_from_results
(
results
):
return
round
(
max
([
r
.
time
for
fp
in
results
for
r
in
results
[
fp
]]))
...
...
@@ -423,6 +485,20 @@ class V3BWLine(object):
consensus_count
=
max
(
consensuses_count
)
kwargs
[
'relay_in_recent_consensus_count'
]
=
consensus_count
measurements_attempts
=
\
[
r
.
relay_recent_measurement_attempt_count
for
r
in
results
if
getattr
(
r
,
'relay_recent_measurement_attempt_count'
,
None
)]
if
measurements_attempts
:
kwargs
[
'relay_recent_measurement_attempt_count'
]
=
\
str
(
max
(
measurements_attempts
))
relay_recent_priority_list_counts
=
\
[
r
.
relay_recent_priority_list_count
for
r
in
results
if
getattr
(
r
,
'relay_recent_priority_list_count'
,
None
)]
if
relay_recent_priority_list_counts
:
kwargs
[
'relay_recent_priority_list_count'
]
=
\
str
(
max
(
relay_recent_priority_list_counts
))
success_results
=
[
r
for
r
in
results
if
isinstance
(
r
,
ResultSuccess
)]
if
not
success_results
:
return
None
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment