コード例 #1
0
    def test_get_remote_products_and_components_encounters_301(self):
        def redirect_callback(request):
            new_url = request.url.replace("query.cgi", "newquery.cgi")
            return (301, {"Location": new_url}, "")

        lp_bugtracker = self.factory.makeBugTracker(
            title="fdo-example",
            name="fdo-example")
        transaction.commit()

        finder = BugzillaRemoteComponentFinder(logger=BufferLogger())
        responses.add_callback(
            "GET", re.compile(r".*/query\.cgi"), callback=redirect_callback)
        responses.add(
            "GET", re.compile(r".*/newquery\.cgi\?format=advanced"),
            match_querystring=True, content_type="text/html",
            body=read_test_file("bugzilla-fdo-advanced-query.html"))
        finder.getRemoteProductsAndComponents(bugtracker_name="fdo-example")

        self.assertEqual(
            109, len(list(lp_bugtracker.getAllRemoteComponentGroups())))
        comp_group = lp_bugtracker.getRemoteComponentGroup(u'xorg')
        self.assertIsNot(None, comp_group)
        self.assertEqual(146, len(list(comp_group.components)))
        comp = comp_group.getComponent(u'Driver/Radeon')
        self.assertIsNot(None, comp)
        self.assertEqual(u'Driver/Radeon', comp.name)
コード例 #2
0
    def main(self):
        start_time = time.time()
        finder = BugzillaRemoteComponentFinder(self.logger)
        finder.getRemoteProductsAndComponents(
            bugtracker_name=self.options.bugtracker)

        run_time = time.time() - start_time
        print("Time for this run: %.3f seconds." % run_time)
    def main(self):
        start_time = time.time()
        finder = BugzillaRemoteComponentFinder(
            self.logger)
        finder.getRemoteProductsAndComponents(
            bugtracker_name=self.options.bugtracker)

        run_time = time.time() - start_time
        print("Time for this run: %.3f seconds." % run_time)
コード例 #4
0
    def test_store(self):
        """Check that already-parsed data gets stored to database"""
        lp_bugtracker = self.factory.makeBugTracker()
        transaction.commit()

        # Set up remote bug tracker with synthetic data
        bz_bugtracker = BugzillaRemoteComponentScraper(
            base_url="http://bugzilla.example.org")
        bz_bugtracker.products = {
            u'alpha': {
                'name': u'alpha',
                'components': {
                    u'1': {
                        'name': u'1',
                    },
                    u'2': {
                        'name': u'2',
                    },
                    u'3': {
                        'name': u'3',
                    },
                },
                'versions': None,
            },
            u'beta': {
                'name': u'beta',
                'components': {
                    u'4': {
                        'name': u'4',
                    },
                },
                'versions': None,
            }
        }
        finder = BugzillaRemoteComponentFinder(logger=BufferLogger())
        finder.storeRemoteProductsAndComponents(bz_bugtracker, lp_bugtracker)

        # Verify the data got stored properly
        comp_groups = lp_bugtracker.getAllRemoteComponentGroups()
        self.assertEqual(2, len(list(comp_groups)))
        comp_group = lp_bugtracker.getRemoteComponentGroup(u'alpha')
        self.assertEqual(3, len(list(comp_group.components)))
        comp_group = lp_bugtracker.getRemoteComponentGroup(u'beta')
        self.assertEqual(1, len(list(comp_group.components)))
        comp = comp_group.getComponent(u'non-existant')
        self.assertIs(None, comp)
        comp = comp_group.getComponent(u'4')
        self.assertEqual(u'4', comp.name)
コード例 #5
0
    def test_get_remote_products_and_components_encounters_500(self):
        self.factory.makeBugTracker()
        transaction.commit()
        finder = BugzillaRemoteComponentFinder(logger=BufferLogger())

        responses.add("GET", re.compile(r".*/query\.cgi"), status=500)
        self.assertGetRemoteProductsAndComponentsDoesNotAssert(finder)
コード例 #6
0
    def test_get_remote_products_and_components_encounters_404(self):
        lp_bugtracker = self.factory.makeBugTracker()
        transaction.commit()
        bz_scraper = FaultyBugzillaRemoteComponentScraper(error=HTTPError(
            "http://bugzilla.example.com", 404, 'Not Found', {}, None))
        finder = BugzillaRemoteComponentFinder(
            logger=BufferLogger(), static_bugzilla_scraper=bz_scraper)

        self.assertGetRemoteProductsAndComponentsDoesNotAssert(finder)
コード例 #7
0
    def test_get_remote_products_and_components(self):
        """Does a full retrieve and storing of data."""
        lp_bugtracker = self.factory.makeBugTracker(title="fdo-example",
                                                    name="fdo-example")
        transaction.commit()
        bz_scraper = StaticTextBugzillaRemoteComponentScraper()

        finder = BugzillaRemoteComponentFinder(
            logger=BufferLogger(), static_bugzilla_scraper=bz_scraper)
        finder.getRemoteProductsAndComponents(bugtracker_name="fdo-example")

        self.assertEqual(
            109, len(list(lp_bugtracker.getAllRemoteComponentGroups())))
        comp_group = lp_bugtracker.getRemoteComponentGroup(u'xorg')
        self.assertIsNot(None, comp_group)
        self.assertEqual(146, len(list(comp_group.components)))
        comp = comp_group.getComponent(u'Driver/Radeon')
        self.assertIsNot(None, comp)
        self.assertEqual(u'Driver/Radeon', comp.name)
コード例 #8
0
    def test_store(self):
        """Check that already-parsed data gets stored to database"""
        lp_bugtracker = self.factory.makeBugTracker()
        transaction.commit()

        # Set up remote bug tracker with synthetic data
        bz_bugtracker = BugzillaRemoteComponentScraper(
            base_url="http://bugzilla.example.org")
        bz_bugtracker.products = {
            u'alpha': {
                'name': u'alpha',
                'components': {
                    u'1': {'name': u'1', },
                    u'2': {'name': u'2', },
                    u'3': {'name': u'3', },
                    },
                'versions': None,
                },
            u'beta': {
                'name': u'beta',
                'components': {
                    u'4': {'name': u'4', },
                    },
                'versions': None,
                }
            }
        finder = BugzillaRemoteComponentFinder(
            logger=BufferLogger())
        finder.storeRemoteProductsAndComponents(
            bz_bugtracker, lp_bugtracker)

        # Verify the data got stored properly
        comp_groups = lp_bugtracker.getAllRemoteComponentGroups()
        self.assertEqual(2, len(list(comp_groups)))
        comp_group = lp_bugtracker.getRemoteComponentGroup(u'alpha')
        self.assertEqual(3, len(list(comp_group.components)))
        comp_group = lp_bugtracker.getRemoteComponentGroup(u'beta')
        self.assertEqual(1, len(list(comp_group.components)))
        comp = comp_group.getComponent(u'non-existant')
        self.assertIs(None, comp)
        comp = comp_group.getComponent(u'4')
        self.assertEqual(u'4', comp.name)
コード例 #9
0
    def test_get_remote_products_and_components(self):
        """Does a full retrieve and storing of data."""
        lp_bugtracker = self.factory.makeBugTracker(
            title="fdo-example",
            name="fdo-example")
        transaction.commit()
        bz_scraper = StaticTextBugzillaRemoteComponentScraper()

        finder = BugzillaRemoteComponentFinder(
            logger=BufferLogger(),
            static_bugzilla_scraper=bz_scraper)
        finder.getRemoteProductsAndComponents(bugtracker_name="fdo-example")

        self.assertEqual(
            109, len(list(lp_bugtracker.getAllRemoteComponentGroups())))
        comp_group = lp_bugtracker.getRemoteComponentGroup(u'xorg')
        self.assertIsNot(None, comp_group)
        self.assertEqual(146, len(list(comp_group.components)))
        comp = comp_group.getComponent(u'Driver/Radeon')
        self.assertIsNot(None, comp)
        self.assertEqual(u'Driver/Radeon', comp.name)
コード例 #10
0
    def test_get_remote_products_and_components(self):
        """Does a full retrieve and storing of data."""
        lp_bugtracker = self.factory.makeBugTracker(
            title="fdo-example",
            name="fdo-example")
        transaction.commit()

        finder = BugzillaRemoteComponentFinder(logger=BufferLogger())
        responses.add(
            "GET", re.compile(r".*/query\.cgi\?format=advanced"),
            match_querystring=True, content_type="text/html",
            body=read_test_file("bugzilla-fdo-advanced-query.html"))
        finder.getRemoteProductsAndComponents(bugtracker_name="fdo-example")

        self.assertEqual(
            109, len(list(lp_bugtracker.getAllRemoteComponentGroups())))
        comp_group = lp_bugtracker.getRemoteComponentGroup(u'xorg')
        self.assertIsNot(None, comp_group)
        self.assertEqual(146, len(list(comp_group.components)))
        comp = comp_group.getComponent(u'Driver/Radeon')
        self.assertIsNot(None, comp)
        self.assertEqual(u'Driver/Radeon', comp.name)