-
Notifications
You must be signed in to change notification settings - Fork 2
/
conftest.py
66 lines (50 loc) · 1.65 KB
/
conftest.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
import pytest
from mock import sentinel
import mock
class MockSock(object):
def __init__(self, sequence):
self.sequence = sequence
AF_INET = sentinel.AF_INET
SOCK_STREAM = sentinel.SOCK_STREAM
def socket(self, arg1, arg2):
assert arg1 is self.AF_INET
assert arg2 is self.SOCK_STREAM
return self
def connect_ex(self, ip):
next = self.sequence[0]
if next is None:
return -1 # Loop forever with None
self.sequence = self.sequence[1:]
return next
@pytest.fixture(scope="module")
def MockSocket(request):
return MockSock
class MockTimeClass(object):
def __init__(self):
self.wallclock = 42
def sleep(self, shift):
self.wallclock += shift
def time(self):
self.wallclock += 1
return self.wallclock
@pytest.fixture(scope="module")
def MockTime(request):
return MockTimeClass
@pytest.fixture
def quick_commands(MockSocket, MockTime):
def full_read(ignore_self, filename):
return open(filename, 'rb', buffering=65536).read()
from dibctl import commands
with mock.patch.object(commands.prepare_os, "time", MockTime()):
with mock.patch.object(commands.prepare_os, "socket", MockSocket([0])):
with mock.patch.object(
commands.prepare_os.uuid,
"uuid4",
return_value='deadbeaf-4078-11e7-8228-000000000000'
):
with mock.patch.object(
commands.do_tests.prepare_os.osclient.OSClient,
'_file_to_upload',
full_read
):
yield commands