Esempio n. 1
0
class TestTrackerState(TriblerCoreTest):
    """
    Contains various tests for the TrackerState class.
    """
    async def setUp(self):
        await super(TestTrackerState, self).setUp()
        self.my_key = default_eccrypto.generate_key(u"curve25519")
        self.mds = MetadataStore(":memory:", self.session_base_dir,
                                 self.my_key)

    async def tearDown(self):
        self.mds.shutdown()
        await super(TestTrackerState, self).tearDown()

    @db_session
    def test_create_tracker_state(self):
        ts = self.mds.TrackerState(
            url='http://tracker.tribler.org:80/announce')
        self.assertEqual(list(self.mds.TrackerState.select())[0], ts)

    @db_session
    def test_canonicalize_tracker_state(self):
        ts = self.mds.TrackerState(
            url='http://tracker.tribler.org:80/announce/')
        self.assertEqual(
            self.mds.TrackerState.get(
                url='http://tracker.tribler.org/announce'), ts)

    @db_session
    def test_canonicalize_raise_on_malformed_url(self):
        self.assertRaises(MalformedTrackerURLException,
                          self.mds.TrackerState,
                          url='udp://tracker.tribler.org/announce/')
Esempio n. 2
0
class TestUpgradeDB72ToPony(TriblerCoreTest):

    async def setUp(self):
        await super(TestUpgradeDB72ToPony, self).setUp()

        self.my_key = default_eccrypto.generate_key(u"curve25519")
        mds_db = self.session_base_dir / 'test.db'
        mds_channels_dir = self.session_base_dir

        self.mds = MetadataStore(mds_db, mds_channels_dir, self.my_key)
        self.m = DispersyToPonyMigration(OLD_DB_SAMPLE)
        self.m.initialize(self.mds)

    async def tearDown(self):
        self.mds.shutdown()
        await super(TestUpgradeDB72ToPony, self).tearDown()

    def test_get_personal_channel_title(self):
        self.assertTrue(self.m.personal_channel_title)

    def test_get_old_torrents_count(self):
        self.assertEqual(self.m.get_old_torrents_count(), 19)

    def test_get_personal_torrents_count(self):
        self.assertEqual(self.m.get_personal_channel_torrents_count(), 2)

    async def test_convert_personal_channel(self):
        async def check_channel():
            await self.m.convert_personal_channel()
            with db_session:
                my_channel = self.mds.ChannelMetadata.get_my_channels().first()

            self.assertEqual(len(my_channel.contents_list), 2)
            self.assertEqual(my_channel.num_entries, 2)
            for t in my_channel.contents_list:
                self.assertTrue(t.has_valid_signature())
            self.assertTrue(my_channel.has_valid_signature())
            self.assertEqual(self.m.personal_channel_title[:200], my_channel.title)

        await check_channel()

        # Now check the case where previous conversion of the personal channel had failed
        with db_session:
            self.mds.MiscData.get_for_update(name=CONVERSION_FROM_72_PERSONAL).value = CONVERSION_STARTED
        await check_channel()

    @db_session
    async def test_convert_legacy_channels(self):
        async def check_conversion():
            await self.m.convert_discovered_torrents()
            self.m.convert_discovered_channels()
            chans = self.mds.ChannelMetadata.get_entries()

            self.assertEqual(len(chans), 2)
            for c in chans:
                self.assertNotEqual(self.m.personal_channel_title[:200], c.title[:200])
                self.assertEqual(c.status, LEGACY_ENTRY)
                self.assertTrue(c.contents_list)
                for t in c.contents_list:
                    self.assertEqual(t.status, COMMITTED)
        await check_conversion()

        # Now check the case where the previous conversion failed at channels conversion
        with db_session:
            self.mds.MiscData.get_for_update(name=CONVERSION_FROM_72_CHANNELS).value = CONVERSION_STARTED
        await check_conversion()

        # Now check the case where the previous conversion stopped at torrents conversion
        with db_session:
            self.mds.MiscData.get_for_update(name=CONVERSION_FROM_72_CHANNELS).delete()
            self.mds.MiscData.get_for_update(name=CONVERSION_FROM_72_DISCOVERED).value = CONVERSION_STARTED
            for d in self.mds.TorrentMetadata.select()[:10][:10]:
                d.delete()
        await check_conversion()

    @db_session
    def test_update_trackers(self):
        tr = self.mds.TrackerState(url="http://ipv6.torrent.ubuntu.com:6969/announce")
        self.m.update_trackers_info()
        self.assertEqual(tr.failures, 2)
        self.assertEqual(tr.alive, True)
        self.assertEqual(tr.last_check, 1548776649)