Example #1
0
    def test_version_position(self):
        """
    Our 'version' header must be in the second position if validated, but
    otherwise doesn't matter.
    """

        desc = BandwidthFile.from_str(WRONG_VERSION_POSITION)
        self.assertEqual('1.1.0', desc.version)

        self.assertRaisesWith(
            ValueError,
            "The 'version' header must be in the second position",
            BandwidthFile.from_str,
            WRONG_VERSION_POSITION,
            validate=True)

        content = BandwidthFile.content(
            collections.OrderedDict([
                ('timestamp', '1410723598'),
                ('file_created', '2019-01-14T05:35:06'),
                ('version', '1.1.0'),
                ('content', []),
            ]))

        self.assertEqual(RIGHT_VERSION_POSITION, content)
Example #2
0
    def test_minimal_bandwidth_file(self):
        """
    Basic sanity check that we can parse a bandwidth file with minimal
    attributes.
    """

        desc = BandwidthFile.create()

        self.assertEqual('1410723598', str(desc))

        self.assertEqual(datetime.datetime(2014, 9, 14, 19, 39, 58),
                         desc.timestamp)
        self.assertEqual('1.0.0', desc.version)

        self.assertEqual(None, desc.software)
        self.assertEqual(None, desc.software_version)

        self.assertEqual(None, desc.earliest_bandwidth)
        self.assertEqual(None, desc.latest_bandwidth)
        self.assertEqual(None, desc.created_at)
        self.assertEqual(None, desc.generated_at)

        self.assertEqual(None, desc.consensus_size)
        self.assertEqual(None, desc.eligible_count)
        self.assertEqual(None, desc.eligible_percent)
        self.assertEqual(None, desc.min_count)
        self.assertEqual(None, desc.min_percent)

        self.assertEqual({}, desc.header)
Example #3
0
  def test_new_header_attribute(self):
    """
    Include an unrecognized header field.
    """

    desc = BandwidthFile.create(collections.OrderedDict([('version', '1.1.0'), ('new_header', 'neat stuff')]))
    self.assertEqual(EXPECTED_NEW_HEADER_CONTENT, str(desc))
    self.assertEqual('1.1.0', desc.version)
    self.assertEqual({'version': '1.1.0', 'new_header': 'neat stuff'}, desc.header)
Example #4
0
  def test_header_alternate_div(self):
    """
    To support backward compatability four character dividers are allowed.
    """

    with open(get_resource('bandwidth_file_v1.2')) as desc_file:
      desc = BandwidthFile.from_str(desc_file.read().replace('=====', '===='))

    self.assertEqual(datetime.datetime(2019, 1, 14, 5, 34, 59), desc.timestamp)
    self.assertEqual('1.2.0', desc.version)
    self.assertEqual(81, len(desc.measurements))
Example #5
0
    def test_bandwidth_stats(self, stdout_mock, get_bandwidth_file_mock):
        get_bandwidth_file_mock().run.return_value = [
            BandwidthFile.create({
                'content': [
                    'bw=1 bw_mean=807445 bw_median=911047 consensus_bandwidth=1190000 node_id=$FDCF49562E65B1CC219410009BD48A9EED387C77',
                    'bw=1 bw_mean=631049 bw_median=622052 consensus_bandwidth=55000 node_id=$BD4172533C3F7271ABCCD9F057E06FD91547C42B',
                ],
            })
        ]

        import bandwidth_stats
        self.assertEqual(EXPECTED_BANDWIDTH_STATS, stdout_mock.getvalue())
Example #6
0
  def test_content_example(self):
    """
    Exercise the example in our content method's pydoc.
    """

    content = BandwidthFile.content(collections.OrderedDict([
      ('timestamp', '12345'),
      ('version', '1.2.0'),
      ('content', []),
    ]))

    self.assertEqual(b'12345\nversion=1.2.0\n=====', content)
Example #7
0
 def test_from_str(self):
     sig = BandwidthFile.create()
     self.assertEqual(sig, BandwidthFile.from_str(str(sig)))