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
The Tor Project
Network Health
sbws
Commits
b1d591c2
Commit
b1d591c2
authored
Jun 21, 2018
by
Matt Traudt
Committed by
Matt Traudt
Jun 23, 2018
Browse files
Add integration test for RelayPrioritizer
parent
cf3e4785
Changes
2
Hide whitespace changes
Inline
Side-by-side
tests/integration/conftest.py
View file @
b1d591c2
...
...
@@ -4,6 +4,7 @@ from sbws.util.parser import create_parser
from
sbws.util.config
import
get_config
from
sbws.util.stem
import
launch_tor
import
sbws.core.init
import
os
@
pytest
.
fixture
(
scope
=
'session'
)
...
...
@@ -14,13 +15,14 @@ def parser():
@
pytest
.
fixture
(
scope
=
'session'
)
def
persistent_empty_dotsbws
(
parser
):
'''
Creates a ~/.sbws with nothing in it but a config.ini
Creates a ~/.sbws with nothing in it but a config.ini
and a datadir/
'''
d
=
TemporaryDirectory
()
args
=
parser
.
parse_args
(
'-d {} --log-level DEBUG init'
.
format
(
d
.
name
).
split
())
conf
=
get_config
(
args
)
sbws
.
core
.
init
.
main
(
args
,
conf
)
os
.
makedirs
(
os
.
path
.
join
(
d
.
name
,
'datadir'
))
return
d
...
...
tests/integration/lib/test_relayprioritizer.py
0 → 100644
View file @
b1d591c2
from
sbws.lib.resultdump
import
ResultDump
from
sbws.lib.resultdump
import
(
Result
,
ResultSuccess
,
ResultErrorCircuit
)
from
sbws.lib.relaylist
import
RelayList
from
sbws.lib.relayprioritizer
import
RelayPrioritizer
from
sbws.util.config
import
get_config
from
threading
import
Event
from
unittest.mock
import
patch
def
static_time
(
value
):
while
True
:
yield
value
def
get_global_stuff
(
dotsbws
,
cont
,
parser
):
args
=
parser
.
parse_args
(
'-d {} --log-level DEBUG'
.
format
(
dotsbws
).
split
())
conf
=
get_config
(
args
)
rl
=
RelayList
(
args
,
conf
,
cont
)
return
{
'args'
:
args
,
'conf'
:
conf
,
'rl'
:
rl
,
'end'
:
Event
(),
}
def
_build_result_for_relay
(
relay_nick
,
result_type
,
timestamp
,
rl
):
relay
=
[
r
for
r
in
rl
.
relays
if
r
.
nickname
==
relay_nick
]
assert
len
(
relay
)
==
1
relay
=
relay
[
0
]
other
=
[
r
for
r
in
rl
.
relays
if
r
.
nickname
!=
relay_nick
][
0
]
circ
=
[
relay
.
fingerprint
,
other
.
fingerprint
]
url
=
'http://example.com/sbws.bin'
nick
=
'sbws_scanner'
if
result_type
==
ResultSuccess
:
rtts
=
[
0.5
,
0.5
,
0.5
]
dls
=
[
{
'amount'
:
1024
,
'duration'
:
1
},
{
'amount'
:
1024
,
'duration'
:
1
},
{
'amount'
:
1024
,
'duration'
:
1
},
]
return
ResultSuccess
(
rtts
,
dls
,
relay
,
circ
,
url
,
nick
,
t
=
timestamp
)
elif
result_type
==
ResultErrorCircuit
:
return
ResultErrorCircuit
(
relay
,
circ
,
url
,
nick
,
msg
=
'Test error circ message'
,
t
=
timestamp
)
@
patch
(
'time.time'
)
def
test_relayprioritizer_general
(
time_mock
,
persistent_empty_dotsbws
,
parser
,
persistent_launch_tor
):
now
=
1000000
time_mock
.
side_effect
=
static_time
(
now
)
cont
=
persistent_launch_tor
dotsbws
=
persistent_empty_dotsbws
.
name
d
=
get_global_stuff
(
dotsbws
,
cont
,
parser
)
args
=
d
[
'args'
]
conf
=
d
[
'conf'
]
end_event
=
d
[
'end'
]
rl
=
d
[
'rl'
]
rd
=
ResultDump
(
args
,
conf
,
end_event
)
try
:
rp
=
RelayPrioritizer
(
args
,
conf
,
rl
,
rd
)
results
=
[
_build_result_for_relay
(
'relay1'
,
ResultSuccess
,
now
-
100
,
rl
),
_build_result_for_relay
(
'relay2'
,
ResultSuccess
,
now
-
200
,
rl
),
_build_result_for_relay
(
'relay3'
,
ResultSuccess
,
now
-
300
,
rl
),
_build_result_for_relay
(
'relay4'
,
ResultSuccess
,
now
-
400
,
rl
),
_build_result_for_relay
(
'relay5'
,
ResultSuccess
,
now
-
500
,
rl
),
]
for
result
in
results
:
rd
.
store_result
(
result
)
best_list
=
[
_
for
_
in
rp
.
best_priority
()]
# Of the relays for which we have added results to the ResultDump,
# relay1 has the lowest priority (it has the most recent result) and
# relay5 has the highest prioirty. The relays that we didn't add
# results for will have the highest priority, but don't test the order
# of them. Skip to the end of the list and check those guys since they
# should have a defined order.
for
i
in
range
(
1
,
5
+
1
):
nick
=
'relay{}'
.
format
(
i
)
pos
=
i
*
-
1
relay
=
best_list
[
pos
]
assert
relay
.
nickname
==
nick
finally
:
end_event
.
set
()
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