Skip to content

Commit d9e0eef

Browse files
committed
fix: use python3.6
1 parent 90020d4 commit d9e0eef

File tree

6 files changed

+59
-33
lines changed

6 files changed

+59
-33
lines changed

pyJoules/energy_meter.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,6 @@
1717
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
1818
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
1919
# SOFTWARE.
20-
from __future__ import annotations
21-
2220
import time
2321
import operator
2422
import functools
@@ -77,7 +75,7 @@ def __init__(self, devices: List[EnergyDevice], default_tag: str = ''):
7775
self._first_state = None
7876

7977
def _measure_new_state(self, tag):
80-
timestamp = time.time_ns()
78+
timestamp = time.time()
8179
values = [device.get_energy() for device in self.devices]
8280

8381
return EnergyState(timestamp, tag if tag is not None else self.default_tag, values)
@@ -264,7 +262,7 @@ def compute_energy(self, domains) -> List[float]:
264262
values_dict[str(key)] = value
265263
return values_dict
266264

267-
def add_next_state(self, state: EnergyState):
265+
def add_next_state(self, state: 'EnergyState'):
268266
"""
269267
:param previous: next state for the same energy trace
270268
:raise StateIsNotFinalError: if there are already a next state

pyJoules/energy_sample.py

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,11 @@
1717
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
1818
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
1919
# SOFTWARE.
20-
from dataclasses import dataclass
2120
from typing import Dict, Any, List, Callable
2221
from functools import reduce
2322
from operator import and_
2423

2524

26-
@dataclass
2725
class EnergySample:
2826
"""
2927
:var timestamp: begining timestamp
@@ -35,10 +33,11 @@ class EnergySample:
3533
:var energy: dictionary that contains the energy consumed during this sample
3634
:vartype: Dict[str, float]
3735
"""
38-
timestamp: float
39-
tag: str
40-
duration: float
41-
energy: Dict[str, float]
36+
def __init__(self, timestamp: float, tag: str, duration: float, energy: Dict[str, float]):
37+
self.timestamp = timestamp
38+
self.tag = tag
39+
self.duration = duration
40+
self.energy = energy
4241

4342

4443
class EnergyTrace:

tests/acceptation/test_measure_trace_with_class.py

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,17 @@
3434
from ..utils.sample import assert_sample_are_equals
3535

3636

37-
TIMESTAMP_TRACE = [1.1, 2.2, 3.3, 4.4, 5.5]
37+
# We mock time.time function that is used by pyfakefs each time an operation on filesystem is done. we have to give
38+
# consistant time return value to time.time that will be used by pyfakefs
39+
INIT_TS = [0] * 5
40+
FIRST_TS = [1.1] * 7
41+
SECOND_TS = [2.2] * 7
42+
THIRD_TS = [3.3] * 7
43+
MOCKED_TIMESTAMP_TRACE = INIT_TS + FIRST_TS + SECOND_TS + THIRD_TS
44+
TIMESTAMP_TRACE = [1.1, 2.2, 3.3]
3845

3946

40-
@patch('time.time_ns', side_effect=TIMESTAMP_TRACE)
47+
@patch('time.time', side_effect=MOCKED_TIMESTAMP_TRACE)
4148
def test_measure_rapl_device_all_domains(_mocked_time_ns, fs_pkg_dram_one_socket, one_gpu_api):
4249
domains = [RaplPackageDomain(0), RaplDramDomain(0), NvidiaGPUDomain(0)]
4350

@@ -48,7 +55,7 @@ def test_measure_rapl_device_all_domains(_mocked_time_ns, fs_pkg_dram_one_socket
4855

4956
nvidia = NvidiaGPUDevice()
5057
nvidia.configure(domains=[NvidiaGPUDomain(0)])
51-
58+
5259
meter = EnergyMeter([rapl, nvidia])
5360

5461
correct_trace.add_new_sample('foo') # test

tests/acceptation/test_measure_trace_with_decorator.py

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,19 @@
3333
from .. utils.fake_api import CorrectTrace
3434
from ..utils.sample import assert_sample_are_equals
3535

36-
TIMESTAMP_TRACE = [1.1, 2.2, 3.3, 4.4, 5.5]
36+
37+
# We mock time.time function that is used by pyfakefs each time an operation on filesystem is done. we have to give
38+
# consistant time return value to time.time that will be used by pyfakefs
39+
INIT_TS = [0] * 5
40+
FIRST_TS = [1.1] * 7
41+
SECOND_TS = [2.2] * 3
42+
MOCKED_TIMESTAMP_TRACE = INIT_TS + FIRST_TS + SECOND_TS
43+
TIMESTAMP_TRACE = [1.1, 2.2]
44+
3745

3846
@patch('pyJoules.energy_handler.EnergyHandler')
39-
@patch('time.time_ns', side_effect=TIMESTAMP_TRACE)
40-
def test_measure_rapl_device_all_domains(mocked_handler, _mocked_time_ns, fs_pkg_dram_one_socket, one_gpu_api):
47+
@patch('time.time', side_effect=MOCKED_TIMESTAMP_TRACE)
48+
def test_measure_rapl_device_all_domains(mocked_handler, _mocked_time, fs_pkg_dram_one_socket, one_gpu_api):
4149

4250
domains = [RaplPackageDomain(0), RaplDramDomain(0), NvidiaGPUDomain(0)]
4351

tests/acceptation/test_measure_trace_with_energy_context.py

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# MIT License
1+
# MIT License
22
# Copyright (c) 2019, INRIA
33
# Copyright (c) 2019, University of Lille
44
# All rights reserved.
@@ -33,11 +33,18 @@
3333
from .. utils.fake_api import CorrectTrace
3434
from ..utils.sample import assert_sample_are_equals
3535

36-
TIMESTAMP_TRACE = [1.1, 2.2, 3.3, 4.4, 5.5]
36+
37+
# We mock time.time function that is used by pyfakefs each time an operation on filesystem is done. we have to give
38+
# consistant time return value to time.time that will be used by pyfakefs
39+
FIRST_TS = [1.1] * 16
40+
SECOND_TS = [2.2] * 7
41+
THIRD_TS = [3.3] * 7
42+
MOCKED_TIMESTAMP_TRACE = FIRST_TS + SECOND_TS + THIRD_TS
43+
TIMESTAMP_TRACE = [1.1, 2.2, 3.3]
3744

3845
@patch('pyJoules.energy_handler.EnergyHandler')
39-
@patch('time.time_ns', side_effect=TIMESTAMP_TRACE)
40-
def test_measure_rapl_device_all_domains(mocked_handler, _mocked_time_ns, fs_pkg_dram_one_socket, one_gpu_api):
46+
@patch('time.time', side_effect=MOCKED_TIMESTAMP_TRACE)
47+
def test_measure_rapl_device_all_domains(mocked_handler, _mocked_time, fs_pkg_dram_one_socket, one_gpu_api):
4148

4249
domains = [RaplPackageDomain(0), RaplDramDomain(0), NvidiaGPUDomain(0)]
4350

@@ -56,18 +63,25 @@ def test_measure_rapl_device_all_domains(mocked_handler, _mocked_time_ns, fs_pkg
5663

5764
assert_sample_are_equals(correct_sample, measured_sample) # test
5865

66+
5967
@patch('pyJoules.energy_handler.EnergyHandler')
60-
@patch('time.time_ns', side_effect=TIMESTAMP_TRACE)
61-
def test_measure_rapl_device_default_values(mocked_handler, _mocked_time_ns, fs_pkg_dram_one_socket, one_gpu_api):
68+
@patch('time.time', side_effect=MOCKED_TIMESTAMP_TRACE)
69+
def test_measure_rapl_device_default_values(mocked_handler, _mocked_time, fs_pkg_dram_one_socket, one_gpu_api):
6270

6371
correct_trace = CorrectTrace([RaplPackageDomain(0), RaplDramDomain(0), NvidiaGPUDomain(0)],
6472
[fs_pkg_dram_one_socket, one_gpu_api], TIMESTAMP_TRACE) # test
6573

74+
print('==================')
6675
correct_trace.add_new_sample('start') # test
76+
print('--------------------')
6777
with EnergyContext(mocked_handler) as energy_context:
78+
print('=====================')
6879
correct_trace.add_new_sample('second_tag') # test
80+
print('--------------------')
6981
energy_context.record(tag='second_tag')
82+
print('=====================')
7083
correct_trace.add_new_sample('') # test
84+
print('--------------------')
7185

7286
assert mocked_handler.process.call_count == 2 # test
7387

tests/unit/energy_meter/test_EnergyMeter.py

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -176,15 +176,15 @@ def test_get_trace_on_a_non_started_energy_meter_return_empty_trace(energy_meter
176176
assert len(energy_meter.get_trace()) == 0
177177

178178

179-
@patch('time.time_ns', side_effect=TIMESTAMP_TRACE)
179+
@patch('time.time', side_effect=TIMESTAMP_TRACE)
180180
def test_start_and_stop_EnergyMeter_should_return_one_sample_trace(_mocked_fun, energy_meter):
181181
energy_meter.start()
182182
energy_meter.stop()
183183

184184
assert len(energy_meter.get_trace()) == 1
185185

186186

187-
@patch('time.time_ns', side_effect=TIMESTAMP_TRACE)
187+
@patch('time.time', side_effect=TIMESTAMP_TRACE)
188188
def test_start_and_stop_EnergyMeter_should_return_correct_values(_mocked_fun, energy_meter, sample1):
189189
energy_meter.start()
190190
energy_meter.stop()
@@ -193,15 +193,15 @@ def test_start_and_stop_EnergyMeter_should_return_correct_values(_mocked_fun, en
193193
assert_sample_are_equals(sample, sample1)
194194

195195

196-
@patch('time.time_ns', side_effect=TIMESTAMP_TRACE)
196+
@patch('time.time', side_effect=TIMESTAMP_TRACE)
197197
def test_resume_and_stop_EnergyMeter_should_return_one_sample_trace(_mocked_fun, energy_meter):
198198
energy_meter.resume()
199199
energy_meter.stop()
200200

201201
assert len(energy_meter.get_trace()) == 1
202202

203203

204-
@patch('time.time_ns', side_effect=TIMESTAMP_TRACE)
204+
@patch('time.time', side_effect=TIMESTAMP_TRACE)
205205
def test_resume_and_stop_EnergyMeter_should_return_correct_values(_mocked_fun, energy_meter, sample1):
206206
energy_meter.resume()
207207
energy_meter.stop()
@@ -210,7 +210,7 @@ def test_resume_and_stop_EnergyMeter_should_return_correct_values(_mocked_fun, e
210210
assert_sample_are_equals(sample, sample1)
211211

212212

213-
@patch('time.time_ns', side_effect=TIMESTAMP_TRACE)
213+
@patch('time.time', side_effect=TIMESTAMP_TRACE)
214214
def test_start_record_and_stop_EnergyMeter_should_return_two_sample_trace(_mocked_fun, energy_meter):
215215
energy_meter.start()
216216
energy_meter.record()
@@ -219,7 +219,7 @@ def test_start_record_and_stop_EnergyMeter_should_return_two_sample_trace(_mocke
219219
assert len(energy_meter.get_trace())
220220

221221

222-
@patch('time.time_ns', side_effect=TIMESTAMP_TRACE)
222+
@patch('time.time', side_effect=TIMESTAMP_TRACE)
223223
def test_start_record_and_stop_EnergyMeter_should_return_correct_values(_mocked_fun, energy_meter, sample1, sample2):
224224
energy_meter.start()
225225
energy_meter.record()
@@ -229,7 +229,7 @@ def test_start_record_and_stop_EnergyMeter_should_return_correct_values(_mocked_
229229
assert_sample_are_equals(sample, correct_sample)
230230

231231

232-
@patch('time.time_ns', side_effect=TIMESTAMP_TRACE)
232+
@patch('time.time', side_effect=TIMESTAMP_TRACE)
233233
def test_start_stop_resume_stop_EnergyMeter_should_return_two_sample_trace(_mocked_fun, energy_meter):
234234
energy_meter.start()
235235
energy_meter.stop()
@@ -239,7 +239,7 @@ def test_start_stop_resume_stop_EnergyMeter_should_return_two_sample_trace(_mock
239239
assert len(energy_meter.get_trace()) == 2
240240

241241

242-
@patch('time.time_ns', side_effect=TIMESTAMP_TRACE)
242+
@patch('time.time', side_effect=TIMESTAMP_TRACE)
243243
def test_start_stop_resume_and_stop_EnergyMeter_should_return_correct_values(_mocked_fun, energy_meter, sample1, sample2_5):
244244
energy_meter.start()
245245
energy_meter.stop()
@@ -250,7 +250,7 @@ def test_start_stop_resume_and_stop_EnergyMeter_should_return_correct_values(_mo
250250
assert_sample_are_equals(sample, correct_sample)
251251

252252

253-
@patch('time.time_ns', side_effect=TIMESTAMP_TRACE)
253+
@patch('time.time', side_effect=TIMESTAMP_TRACE)
254254
def test_start_record_stop_resume_stop_EnergyMeter_should_return_three_sample_trace(_mocked_fun, energy_meter):
255255
energy_meter.start()
256256
energy_meter.record()
@@ -261,7 +261,7 @@ def test_start_record_stop_resume_stop_EnergyMeter_should_return_three_sample_tr
261261
assert len(energy_meter.get_trace()) == 3
262262

263263

264-
@patch('time.time_ns', side_effect=TIMESTAMP_TRACE)
264+
@patch('time.time', side_effect=TIMESTAMP_TRACE)
265265
def test_start_record_stop_resume_and_stop_EnergyMeter_should_return_correct_values(_mocked_fun, energy_meter, sample1, sample2, sample3):
266266
energy_meter.start()
267267
energy_meter.record()
@@ -273,7 +273,7 @@ def test_start_record_stop_resume_and_stop_EnergyMeter_should_return_correct_val
273273
assert_sample_are_equals(sample, correct_sample)
274274

275275

276-
@patch('time.time_ns', side_effect=TIMESTAMP_TRACE)
276+
@patch('time.time', side_effect=TIMESTAMP_TRACE)
277277
def test_second_start_on_an_energy_meter_should_restart_the_trace(_mocked_fun, energy_meter, sample3):
278278
energy_meter.start()
279279
energy_meter.record()

0 commit comments

Comments
 (0)