Revision 45bc5e4a
b/lib/utils.py | ||
---|---|---|
1168 | 1168 |
return None |
1169 | 1169 |
|
1170 | 1170 |
|
1171 |
def SplitTime(seconds):
|
|
1171 |
def SplitTime(value):
|
|
1172 | 1172 |
"""Splits time as floating point number into a tuple. |
1173 | 1173 |
|
1174 |
@param seconds: Time in seconds
|
|
1175 |
@type seconds: int or float
|
|
1176 |
@return: Tuple containing (seconds, milliseconds)
|
|
1174 |
@param value: Time in seconds
|
|
1175 |
@type value: int or float
|
|
1176 |
@return: Tuple containing (seconds, microseconds)
|
|
1177 | 1177 |
|
1178 | 1178 |
""" |
1179 |
seconds = round(seconds, 3) |
|
1180 |
(seconds, fraction) = divmod(seconds, 1.0) |
|
1181 |
return (int(seconds), int(round(fraction * 1000, 0))) |
|
1179 |
(seconds, microseconds) = divmod(int(value * 1000000), 1000000) |
|
1180 |
|
|
1181 |
assert 0 <= seconds, \ |
|
1182 |
"Seconds must be larger than or equal to 0, but are %s" % seconds |
|
1183 |
assert 0 <= microseconds <= 999999, \ |
|
1184 |
"Microseconds must be 0-999999, but are %s" % microseconds |
|
1185 |
|
|
1186 |
return (int(seconds), int(microseconds)) |
|
1182 | 1187 |
|
1183 | 1188 |
|
1184 | 1189 |
def MergeTime(timetuple): |
1185 | 1190 |
"""Merges a tuple into time as a floating point number. |
1186 | 1191 |
|
1187 |
@param timetuple: Time as tuple, (seconds, milliseconds)
|
|
1192 |
@param timetuple: Time as tuple, (seconds, microseconds)
|
|
1188 | 1193 |
@type timetuple: tuple |
1189 | 1194 |
@return: Time as a floating point number expressed in seconds |
1190 | 1195 |
|
1191 | 1196 |
""" |
1192 |
(seconds, milliseconds) = timetuple
|
|
1197 |
(seconds, microseconds) = timetuple
|
|
1193 | 1198 |
|
1194 |
assert 0 <= seconds, "Seconds must be larger than 0" |
|
1195 |
assert 0 <= milliseconds <= 999, "Milliseconds must be 0-999" |
|
1199 |
assert 0 <= seconds, \ |
|
1200 |
"Seconds must be larger than or equal to 0, but are %s" % seconds |
|
1201 |
assert 0 <= microseconds <= 999999, \ |
|
1202 |
"Microseconds must be 0-999999, but are %s" % microseconds |
|
1196 | 1203 |
|
1197 |
return float(seconds) + (float(1) / 1000 * milliseconds)
|
|
1204 |
return float(seconds) + (float(microseconds) * 0.000001)
|
|
1198 | 1205 |
|
1199 | 1206 |
|
1200 | 1207 |
def LockedMethod(fn): |
b/test/ganeti.utils_unittest.py | ||
---|---|---|
783 | 783 |
|
784 | 784 |
def runTest(self): |
785 | 785 |
self.assertEqual(utils.SplitTime(1), (1, 0)) |
786 |
self.assertEqual(utils.SplitTime(1.5), (1, 500)) |
|
787 |
self.assertEqual(utils.SplitTime(1218448917.4809151), (1218448917, 481)) |
|
788 |
self.assertEqual(utils.SplitTime(123.48012), (123, 480)) |
|
789 |
self.assertEqual(utils.SplitTime(123.9995), (124, 0)) |
|
790 |
self.assertEqual(utils.SplitTime(123.999999999), (124, 0)) |
|
786 |
self.assertEqual(utils.SplitTime(1.5), (1, 500000)) |
|
787 |
self.assertEqual(utils.SplitTime(1218448917.4809151), (1218448917, 480915)) |
|
788 |
self.assertEqual(utils.SplitTime(123.48012), (123, 480120)) |
|
789 |
self.assertEqual(utils.SplitTime(123.9996), (123, 999600)) |
|
790 |
self.assertEqual(utils.SplitTime(123.9995), (123, 999500)) |
|
791 |
self.assertEqual(utils.SplitTime(123.9994), (123, 999400)) |
|
792 |
self.assertEqual(utils.SplitTime(123.999999999), (123, 999999)) |
|
793 |
|
|
794 |
self.assertRaises(AssertionError, utils.SplitTime, -1) |
|
791 | 795 |
|
792 | 796 |
self.assertEqual(utils.MergeTime((1, 0)), 1.0) |
793 |
self.assertEqual(utils.MergeTime((1, 500)), 1.5) |
|
794 |
self.assertEqual(utils.MergeTime((1218448917, 500)), 1218448917.5) |
|
797 |
self.assertEqual(utils.MergeTime((1, 500000)), 1.5)
|
|
798 |
self.assertEqual(utils.MergeTime((1218448917, 500000)), 1218448917.5)
|
|
795 | 799 |
|
796 |
self.assertEqual(round(utils.MergeTime((1218448917, 481)), 3), 1218448917.481) |
|
797 |
self.assertEqual(round(utils.MergeTime((1, 801)), 3), 1.801) |
|
800 |
self.assertEqual(round(utils.MergeTime((1218448917, 481000)), 3), 1218448917.481)
|
|
801 |
self.assertEqual(round(utils.MergeTime((1, 801000)), 3), 1.801)
|
|
798 | 802 |
|
799 | 803 |
self.assertRaises(AssertionError, utils.MergeTime, (0, -1)) |
800 |
self.assertRaises(AssertionError, utils.MergeTime, (0, 1000)) |
|
801 |
self.assertRaises(AssertionError, utils.MergeTime, (0, 9999)) |
|
804 |
self.assertRaises(AssertionError, utils.MergeTime, (0, 1000000))
|
|
805 |
self.assertRaises(AssertionError, utils.MergeTime, (0, 9999999))
|
|
802 | 806 |
self.assertRaises(AssertionError, utils.MergeTime, (-1, 0)) |
803 | 807 |
self.assertRaises(AssertionError, utils.MergeTime, (-9999, 0)) |
804 | 808 |
|
Also available in: Unified diff