Mock datetime instead of redefining standard library
This fixes up the test to mock the datetime calls specifically in the test that needs to mock them, rather than the prior approach which was redefining the behavior of the standard library function globally. Additionally, to fix the py310 unit tests, jsonschema is pinned to the latest version that doesn't depend (indirectly) on Rust. This is not part of the cherry-pick but is needed in this change in order to fix py310 unit tests. This is not needed for stable/2023.1 and above, where commitda0f33c95b
(Fix charm for tox4 compatibility) fixed this issue. Stable branches prior to stable/2023.1 pinned tox to < 4.0.0. Closes-Bug: #2045588 Change-Id: I9c585c91c5527a61e4a8dbcba0a8a01108cd9b2e (cherry picked from commit72e22a94ed
)
This commit is contained in:
parent
6167af0d40
commit
dccb9c4ad0
|
@ -29,3 +29,6 @@ git+https://opendev.org/openstack/tempest.git#egg=tempest
|
|||
croniter # needed for charm-rabbitmq-server unit tests
|
||||
|
||||
pyopenssl<=22.0.0
|
||||
|
||||
# newer jsonschema needs rustc and cargo
|
||||
jsonschema<4.18.0
|
||||
|
|
|
@ -40,24 +40,6 @@ STATUS_CRIT = 2
|
|||
STATUS_UNKNOWN = 3
|
||||
|
||||
|
||||
class NewDate(datetime.datetime):
|
||||
@classmethod
|
||||
def now(cls):
|
||||
"""
|
||||
Mock for builtin datetime.datetime.now(), to test repl_last_timestamp()
|
||||
Non-defined methods are inherited from real class
|
||||
"""
|
||||
return cls(2017, 4, 27,
|
||||
13, 25, 46, 629282)
|
||||
|
||||
@classmethod
|
||||
def fromtimestamp(cls, timestamp):
|
||||
return cls.utcfromtimestamp(timestamp)
|
||||
|
||||
|
||||
datetime.datetime = NewDate
|
||||
|
||||
|
||||
class CheckSwiftStorageTestCase(unittest.TestCase):
|
||||
def test_generate_md5(self):
|
||||
"""
|
||||
|
@ -398,12 +380,20 @@ class CheckSwiftStorageTestCase(unittest.TestCase):
|
|||
result = check_replication(base_url, [4, 10, 4, 10])
|
||||
self.assertEqual(result, [(STATUS_OK, 'OK')])
|
||||
|
||||
def test_repl_last_timestamp(self):
|
||||
@patch('check_swift_storage.datetime')
|
||||
def test_repl_last_timestamp(self, mock_datetime):
|
||||
"""
|
||||
Calculates delta between NOW and last replication date
|
||||
Also gathers the number of failures
|
||||
"""
|
||||
# 1493299546.629282
|
||||
mock_datetime.datetime.now.return_value = (
|
||||
datetime.datetime(2017, 4, 27, 13, 25, 46, 629282)
|
||||
)
|
||||
mock_datetime.datetime.fromtimestamp.side_effect = (
|
||||
datetime.datetime.utcfromtimestamp
|
||||
)
|
||||
|
||||
jdata = {u'replication_last': 1493299546.629282, u'replication_stats':
|
||||
{u'no_change': 0, u'rsync': 0, u'success': 0, u'start':
|
||||
1493299546.621624, u'attempted': 0, u'ts_repl': 0, u'remove':
|
||||
|
|
Loading…
Reference in New Issue