-
Notifications
You must be signed in to change notification settings - Fork 361
/
Copy pathtest_commit_weights.py
134 lines (112 loc) · 3.92 KB
/
test_commit_weights.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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
from bittensor_wallet import Wallet
from bittensor.core.extrinsics.commit_weights import (
_do_commit_weights,
_do_reveal_weights,
)
from bittensor.core.settings import version_as_int
def test_do_commit_weights(subtensor, mocker):
"""Successful _do_commit_weights call."""
# Preps
fake_wallet = mocker.MagicMock()
netuid = 1
commit_hash = "fake_commit_hash"
wait_for_inclusion = True
wait_for_finalization = True
subtensor.substrate.submit_extrinsic.return_value.is_success = None
mocked_format_error_message = mocker.Mock()
mocker.patch(
"bittensor.core.subtensor.format_error_message",
mocked_format_error_message,
)
# Call
result = _do_commit_weights(
subtensor=subtensor,
wallet=fake_wallet,
netuid=netuid,
commit_hash=commit_hash,
wait_for_inclusion=wait_for_inclusion,
wait_for_finalization=wait_for_finalization,
)
# Assertions
subtensor.substrate.compose_call.assert_called_once_with(
call_module="SubtensorModule",
call_function="commit_weights",
call_params={
"netuid": netuid,
"commit_hash": commit_hash,
},
)
subtensor.substrate.create_signed_extrinsic.assert_called_once()
_, kwargs = subtensor.substrate.create_signed_extrinsic.call_args
assert kwargs["call"] == subtensor.substrate.compose_call.return_value
assert kwargs["keypair"] == fake_wallet.hotkey
subtensor.substrate.submit_extrinsic.assert_called_once_with(
subtensor.substrate.create_signed_extrinsic.return_value,
wait_for_inclusion=wait_for_inclusion,
wait_for_finalization=wait_for_finalization,
)
mocked_format_error_message.assert_called_once_with(
subtensor.substrate.submit_extrinsic.return_value.error_message,
)
assert result == (
False,
mocked_format_error_message.return_value,
)
def test_do_reveal_weights(subtensor, mocker):
"""Verifies that the `_do_reveal_weights` method interacts with the right substrate methods."""
# Preps
fake_wallet = mocker.MagicMock(autospec=Wallet)
fake_wallet.hotkey.ss58_address = "hotkey"
netuid = 1
uids = [1, 2, 3, 4]
values = [1, 2, 3, 4]
salt = [4, 2, 2, 1]
wait_for_inclusion = True
wait_for_finalization = True
subtensor.substrate.submit_extrinsic.return_value.is_success = None
mocked_format_error_message = mocker.Mock()
mocker.patch(
"bittensor.core.subtensor.format_error_message",
mocked_format_error_message,
)
# Call
result = _do_reveal_weights(
subtensor=subtensor,
wallet=fake_wallet,
netuid=netuid,
uids=uids,
values=values,
salt=salt,
version_key=version_as_int,
wait_for_inclusion=wait_for_inclusion,
wait_for_finalization=wait_for_finalization,
)
# Asserts
subtensor.substrate.compose_call.assert_called_once_with(
call_module="SubtensorModule",
call_function="reveal_weights",
call_params={
"netuid": netuid,
"uids": uids,
"values": values,
"salt": salt,
"version_key": version_as_int,
},
)
subtensor.substrate.create_signed_extrinsic.assert_called_once_with(
call=subtensor.substrate.compose_call.return_value,
keypair=fake_wallet.hotkey,
nonce=subtensor.substrate.get_account_next_index.return_value,
)
subtensor.substrate.submit_extrinsic.assert_called_once_with(
subtensor.substrate.create_signed_extrinsic.return_value,
wait_for_inclusion=wait_for_inclusion,
wait_for_finalization=wait_for_finalization,
)
mocked_format_error_message.assert_called_once_with(
subtensor.substrate.submit_extrinsic.return_value.error_message,
)
assert result == (
False,
mocked_format_error_message.return_value,
)