commit 13e166b54eb3b7c1c8d4e4960d08df6571f93f00 Author: Damian Johnson atagar@torproject.org Date: Sun Nov 17 14:46:38 2019 -0800
Resume hidden service tests
Resuming our HSv3 tests, with blinding mocked out so we don't negatively impact runtime (without these mocks the unit tests jump from 6s => 51s). --- test/unit/descriptor/hidden_service_v3.py | 41 ++++++++++++++----------------- 1 file changed, 19 insertions(+), 22 deletions(-)
diff --git a/test/unit/descriptor/hidden_service_v3.py b/test/unit/descriptor/hidden_service_v3.py index 34108188..6a838c8a 100644 --- a/test/unit/descriptor/hidden_service_v3.py +++ b/test/unit/descriptor/hidden_service_v3.py @@ -80,14 +80,21 @@ with open(get_resource('hidden_service_v3_intro_point')) as intro_point_file: INTRO_POINT_STR = intro_point_file.read()
-# TODO: Blinded key creation and signing are horribly slow. 1.5 seconds each, -# making each call to HiddenServiceDescriptorV3.create() take over three -# seconds. -# -# Obviously we need to address this, but for the moment skipping the slow tests -# don't slow branch development. +def disable_blinding(func): + """ + Blinded key creation and signing are horribly slow. 1.5 seconds each, + making each call to HiddenServiceDescriptorV3.create() take over three + seconds.
-SKIP_SLOW_TESTS = True + As such disabling it in most tests. + """ + + def wrapped(*args, **kwargs): + with patch('stem.descriptor.hidden_service._blinded_pubkey', Mock(return_value = b'k' * 32)): + with patch('stem.descriptor.hidden_service._blinded_sign', Mock(return_value = b'a' * 64)): + return func(*args, **kwargs) + + return wrapped
class TestHiddenServiceDescriptorV3(unittest.TestCase): @@ -171,15 +178,13 @@ class TestHiddenServiceDescriptorV3(unittest.TestCase): self.assertEqual(None, intro_point.legacy_key_raw) self.assertEqual(None, intro_point.legacy_key_cert)
+ @disable_blinding @test.require.ed25519_support def test_required_fields(self): """ Check that we require the mandatory fields. """
- if SKIP_SLOW_TESTS: - return - line_to_attr = { 'hs-descriptor': 'version', 'descriptor-lifetime': 'lifetime', @@ -193,15 +198,13 @@ class TestHiddenServiceDescriptorV3(unittest.TestCase): desc_text = HiddenServiceDescriptorV3.content(exclude = (line,)) expect_invalid_attr_for_text(self, desc_text, line_to_attr[line], None)
+ @disable_blinding @test.require.ed25519_support def test_invalid_version(self): """ Checks that our version field expects a numeric value. """
- if SKIP_SLOW_TESTS: - return - test_values = ( '', '-10', @@ -211,15 +214,13 @@ class TestHiddenServiceDescriptorV3(unittest.TestCase): for test_value in test_values: expect_invalid_attr(self, {'hs-descriptor': test_value}, 'version')
+ @disable_blinding @test.require.ed25519_support def test_invalid_lifetime(self): """ Checks that our lifetime field expects a numeric value. """
- if SKIP_SLOW_TESTS: - return - test_values = ( '', '-10', @@ -229,15 +230,13 @@ class TestHiddenServiceDescriptorV3(unittest.TestCase): for test_value in test_values: expect_invalid_attr(self, {'descriptor-lifetime': test_value}, 'lifetime')
+ @disable_blinding @test.require.ed25519_support def test_invalid_revision_counter(self): """ Checks that our revision counter field expects a numeric value. """
- if SKIP_SLOW_TESTS: - return - test_values = ( '', '-10', @@ -428,15 +427,13 @@ class TestHiddenServiceDescriptorV3(unittest.TestCase): self.assertEqual(1, len(inner_layer.introduction_points)) self.assertEqual('1.1.1.1', inner_layer.introduction_points[0].link_specifiers[0].address)
+ @disable_blinding @test.require.ed25519_support def test_descriptor_creation(self): """ HiddenServiceDescriptorV3 creation. """
- if SKIP_SLOW_TESTS: - return - # minimal descriptor
self.assertTrue(HiddenServiceDescriptorV3.content().startswith('hs-descriptor 3\ndescriptor-lifetime 180\n'))