Commit d4eb0118 authored by Damian Johnson's avatar Damian Johnson
Browse files

Set NodeFamily to a random fingerprint

Each 'SETCONF NodeFamily' needed a unique fingerprint. What we had was well and
good, but it would be handy if new tests didn't need to take into consideration
which fingerprints had/hadn't been used yet.

Timestamps python provides are precise enough that we can just hash it to get
something unique.
parent fd4e8f53
Loading
Loading
Loading
Loading
+16 −7
Original line number Diff line number Diff line
@@ -2,6 +2,7 @@
Integration tests for the stem.control.Controller class.
"""

import hashlib
import os
import shutil
import socket
@@ -38,6 +39,14 @@ from test.runner import (
TEST_ROUTER_STATUS_ENTRY = None


def random_fingerprint():
  """
  Provides a random 40 character hex string.
  """

  return hashlib.sha1(str(time.time())).hexdigest().upper()


class TestController(unittest.TestCase):
  def test_from_port(self):
    """
@@ -123,7 +132,7 @@ class TestController(unittest.TestCase):
      controller.add_event_listener(listener2, EventType.CONF_CHANGED, EventType.DEBUG)

      # The NodeFamily is a harmless option we can toggle
      controller.set_conf('NodeFamily', 'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF')
      controller.set_conf('NodeFamily', random_fingerprint())

      # Wait for the event. Assert that we get it within 10 seconds
      self.assertTrue(event_notice1.wait(10))
@@ -140,7 +149,7 @@ class TestController(unittest.TestCase):

      buffer2_size = len(event_buffer2)

      controller.set_conf('NodeFamily', 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA')
      controller.set_conf('NodeFamily', random_fingerprint())
      self.assertTrue(event_notice1.wait(10))
      self.assertEqual(len(event_buffer1), 2)
      event_notice1.clear()
@@ -173,7 +182,7 @@ class TestController(unittest.TestCase):
    with runner.get_tor_controller() as controller:
      controller.add_event_listener(listener, EventType.CONF_CHANGED)

      controller.set_conf('NodeFamily', 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA')
      controller.set_conf('NodeFamily', random_fingerprint())
      self.assertTrue(event_notice.wait(10))
      self.assertEqual(len(event_buffer), 1)
      event_notice.clear()
@@ -187,7 +196,7 @@ class TestController(unittest.TestCase):
      # Spawn a second controller and trigger an event

      with runner.get_tor_controller() as controller2:
        controller2.set_conf('NodeFamily', 'BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB')
        controller2.set_conf('NodeFamily', random_fingerprint())

      self.assertEqual(len(event_buffer), 0)

@@ -196,7 +205,7 @@ class TestController(unittest.TestCase):
      controller.connect()
      controller.authenticate(password = test.runner.CONTROL_PASSWORD)

      controller.set_conf('NodeFamily', 'CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC')
      controller.set_conf('NodeFamily', random_fingerprint())
      self.assertTrue(event_notice.wait(10))
      self.assertEqual(len(event_buffer), 1)
      event_notice.clear()
@@ -211,7 +220,7 @@ class TestController(unittest.TestCase):
      controller.connect()
      stem.connection.authenticate(controller, password = test.runner.CONTROL_PASSWORD)

      controller.set_conf('NodeFamily', 'DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD')
      controller.set_conf('NodeFamily', random_fingerprint())
      self.assertTrue(event_notice.wait(10))
      self.assertEqual(len(event_buffer), 1)
      event_notice.clear()
@@ -234,7 +243,7 @@ class TestController(unittest.TestCase):
        else:
          controller.msg('AUTHENTICATE')

        controller.set_conf('NodeFamily', 'EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE')
        controller.set_conf('NodeFamily', random_fingerprint())
        self.assertTrue(event_notice.wait(10))
        self.assertEqual(len(event_buffer), 1)
        event_notice.clear()