def test_fetch_buildbot_data_failure(self):
        try:
            fetched_urls = []

            def fake_fetch_json(url):
                fetched_urls.append(url)

                if url == 'http://chrome-build-extract.appspot.com/get_master/chromium.webkit':
                    return None

                if url == 'http://chrome-build-extract.appspot.com/get_master/chromium.gpu':
                    return {
                        'builders': {
                            'Win GPU': None, 'Win Empty': None,
                        }
                    }

                if url == 'http://chrome-build-extract.appspot.com/get_master/chromium.fyi':
                    return {
                        'builders': {
                            'Mac FYI': None,
                        }
                    }

                if (url == 'http://chrome-build-extract.appspot.com/get_builds?builder=Win%20Empty&master=chromium.gpu&num_builds=1'
                    or url == 'http://chrome-build-extract.appspot.com/get_builds?builder=Win%20GPU&master=chromium.gpu&num_builds=1'):
                    return {
                        'builds': [
                            {'steps': []},
                        ],
                    }

                logging.error('Cannot fetch fake url: %s' % url)

            old_fetch_json = buildershandler.fetch_json
            buildershandler.fetch_json = fake_fetch_json

            masters = [
                {'name': 'ChromiumGPU', 'url_name': 'chromium.gpu'},
                {'name': 'ChromiumWebkit', 'url_name': 'chromium.webkit'},
                {'name': 'ChromiumFYI', 'url_name': 'chromium.fyi'},
            ]

            expected_fetched_urls = [
                'http://chrome-build-extract.appspot.com/get_master/chromium.webkit',
                'http://chrome-build-extract.appspot.com/get_master/chromium.gpu',
                'http://chrome-build-extract.appspot.com/get_builds?builder=Win%20GPU&master=chromium.gpu&num_builds=1',
                'http://chrome-build-extract.appspot.com/get_builds?builder=Win%20Empty&master=chromium.gpu&num_builds=1',
            ]
            with self.assertRaises(buildershandler.FetchBuildersException):
                buildbot_data = buildershandler.fetch_buildbot_data([m['url_name'] for m in masters])
            self.assertEqual(set(expected_fetched_urls), set(fetched_urls))

        finally:
            buildershandler.fetch_json = old_fetch_json
    def test_fetch_buildbot_data_failure(self):
        try:
            fetched_urls = []

            def fake_fetch_json(url):
                fetched_urls.append(url)

                if url == 'http://chrome-build-extract.appspot.com/get_master/chromium.webkit':
                    return None

                if url == 'http://chrome-build-extract.appspot.com/get_master/chromium.gpu':
                    return {
                        'builders': {
                            'Win GPU': None, 'Win Empty': None,
                        }
                    }

                if url == 'http://chrome-build-extract.appspot.com/get_master/chromium.fyi':
                    return {
                        'builders': {
                            'Mac FYI': None,
                        }
                    }

                if (url == 'http://chrome-build-extract.appspot.com/get_builds?builder=Win%20Empty&master=chromium.gpu&num_builds=1'
                    or url == 'http://chrome-build-extract.appspot.com/get_builds?builder=Win%20GPU&master=chromium.gpu&num_builds=1'):
                    return {
                        'builds': [
                            {'steps': []},
                        ],
                    }

                logging.error('Cannot fetch fake url: %s' % url)

            old_fetch_json = buildershandler.fetch_json
            buildershandler.fetch_json = fake_fetch_json

            masters = [
                {'name': 'ChromiumGPU', 'url_name': 'chromium.gpu'},
                {'name': 'ChromiumWebkit', 'url_name': 'chromium.webkit'},
                {'name': 'ChromiumFYI', 'url_name': 'chromium.fyi'},
            ]

            expected_fetched_urls = [
                'http://chrome-build-extract.appspot.com/get_master/chromium.webkit',
                'http://chrome-build-extract.appspot.com/get_master/chromium.gpu',
                'http://chrome-build-extract.appspot.com/get_builds?builder=Win%20GPU&master=chromium.gpu&num_builds=1',
                'http://chrome-build-extract.appspot.com/get_builds?builder=Win%20Empty&master=chromium.gpu&num_builds=1',
            ]
            with self.assertRaises(buildershandler.FetchBuildersException):
                buildbot_data = buildershandler.fetch_buildbot_data(masters)
            self.assertEqual(set(expected_fetched_urls), set(fetched_urls))

        finally:
            buildershandler.fetch_json = old_fetch_json
    def test_fetch_buildbot_data(self):
        try:
            fetched_urls = []

            def fake_fetch_json(url):
                fetched_urls.append(url)

                if url == 'http://chrome-build-extract.appspot.com/get_master/chromium.webkit':
                    return {
                        'builders': {
                            'WebKit Win': None, 'WebKit Linux': None, 'WebKit Mac': None, 'WebKit Empty': None,
                        }
                    }

                if url == 'http://chrome-build-extract.appspot.com/get_builds?builder=WebKit%20Linux&master=chromium.webkit&num_builds=1':
                    return {
                        'builds': [
                            {'steps': [{'name': 'foo_tests_only'}, {'name': 'webkit_tests'}, {'name': 'browser_tests'}, {'name': 'mini_installer_test'}, {'name': 'archive_test_results'}, {'name': 'compile'}]},
                        ],
                    }

                if url == 'http://chrome-build-extract.appspot.com/get_builds?builder=WebKit%20Win&master=chromium.webkit&num_builds=1':
                    return {
                        'builds': [
                            {'steps': [{'name': 'foo_tests_ignore'}, {'name': 'webkit_tests'}, {'name': 'mini_installer_test'}, {'name': 'archive_test_results'}, {'name': 'compile'}]},
                        ],
                    }

                if url == 'http://chrome-build-extract.appspot.com/get_builds?builder=WebKit%20Mac&master=chromium.webkit&num_builds=1':
                    return {
                        'builds': [
                            {'steps': [{'name': 'foo_tests_perf'}, {'name': 'browser_tests'}, {'name': 'mini_installer_test'}, {'name': 'archive_test_results'}, {'name': 'compile'}]},
                        ],
                    }

                if url == 'http://chrome-build-extract.appspot.com/get_builds?builder=WebKit%20Empty&master=chromium.webkit&num_builds=1':
                    return {'builds': []}

                logging.error('Cannot fetch fake url: %s' % url)

            old_fetch_json = buildershandler.fetch_json
            buildershandler.fetch_json = fake_fetch_json

            masters = [
                {'name': 'ChromiumWebkit', 'url_name': 'chromium.webkit'},
            ]

            buildbot_data = buildershandler.fetch_buildbot_data([m['url_name'] for m in masters])

            expected_fetched_urls = [
                'http://chrome-build-extract.appspot.com/get_master/chromium.webkit',
                'http://chrome-build-extract.appspot.com/get_builds?builder=WebKit%20Win&master=chromium.webkit&num_builds=1',
                'http://chrome-build-extract.appspot.com/get_builds?builder=WebKit%20Mac&master=chromium.webkit&num_builds=1',
                'http://chrome-build-extract.appspot.com/get_builds?builder=WebKit%20Empty&master=chromium.webkit&num_builds=1',
                'http://chrome-build-extract.appspot.com/get_builds?builder=WebKit%20Linux&master=chromium.webkit&num_builds=1',
            ]
            self.assertEqual(set(fetched_urls), set(expected_fetched_urls))

            expected_masters = {
                'masters': [{
                    'tests': {
                        'browser_tests': {'builders': ['WebKit Linux', 'WebKit Mac']},
                        'mini_installer_test': {'builders': ['WebKit Linux', 'WebKit Mac', 'WebKit Win']},
                        'layout-tests': {'builders': ['WebKit Linux', 'WebKit Win']}},
                    'name': 'ChromiumWebkit',
                    'url_name': 'chromium.webkit',
                    'groups': ['@ToT Chromium', '@ToT Blink'],
                }],
                "no_upload_test_types": buildershandler.TEST_STEPS_THAT_DO_NOT_UPLOAD_YET,
            }
            expected_json = buildershandler.dump_json(expected_masters)

            self.assertEqual(buildbot_data, expected_json)
        finally:
            buildershandler.fetch_json = old_fetch_json
Ejemplo n.º 4
0
    def test_fetch_buildbot_data(self):
        try:
            fetched_urls = []

            def fake_fetch_json(url):
                fetched_urls.append(url)
                if url == 'http://build.chromium.org/p/chromium.webkit/json/builders':
                    return {
                        'WebKit Win': None,
                        'WebKit Linux': None,
                        'WebKit Mac': None,
                        'WebKit Empty': None
                    }

                if url == 'http://build.chromium.org/p/chromium.webkit/json/builders/WebKit%20Linux':
                    return {'cachedBuilds': [1, 2], 'currentBuilds': []}
                if url == 'http://build.chromium.org/p/chromium.webkit/json/builders/WebKit%20Win':
                    return {'cachedBuilds': [1, 2], 'currentBuilds': []}
                if url == 'http://build.chromium.org/p/chromium.webkit/json/builders/WebKit%20Mac':
                    return {'cachedBuilds': [1, 2], 'currentBuilds': []}
                if url == 'http://build.chromium.org/p/chromium.webkit/json/builders/WebKit%20Empty':
                    return {'cachedBuilds': [], 'currentBuilds': []}

                if url == 'http://build.chromium.org/p/chromium.webkit/json/builders/WebKit%20Linux/builds/2':
                    return {
                        'steps': [{
                            'name': 'webkit_tests'
                        }, {
                            'name': 'browser_tests'
                        }, {
                            'name': 'mini_installer_test'
                        }, {
                            'name': 'archive_test_results'
                        }, {
                            'name': 'compile'
                        }]
                    }
                if url == 'http://build.chromium.org/p/chromium.webkit/json/builders/WebKit%20Win/builds/2':
                    return {
                        'steps': [{
                            'name': 'webkit_tests'
                        }, {
                            'name': 'mini_installer_test'
                        }, {
                            'name': 'archive_test_results'
                        }, {
                            'name': 'compile'
                        }]
                    }
                if url == 'http://build.chromium.org/p/chromium.webkit/json/builders/WebKit%20Mac/builds/2':
                    return {
                        'steps': [{
                            'name': 'browser_tests'
                        }, {
                            'name': 'mini_installer_test'
                        }, {
                            'name': 'archive_test_results'
                        }, {
                            'name': 'compile'
                        }]
                    }

                logging.error('Cannot fetch fake url: %s' % url)

            old_fetch_json = buildershandler.fetch_json
            buildershandler.fetch_json = fake_fetch_json

            masters = [
                {
                    'name': 'ChromiumWebkit',
                    'url': 'http://build.chromium.org/p/chromium.webkit'
                },
            ]

            buildbot_data = buildershandler.fetch_buildbot_data(masters, True)

            expected_fetched_urls = [
                'http://build.chromium.org/p/chromium.webkit/json/builders',
                'http://build.chromium.org/p/chromium.webkit/json/builders/WebKit%20Linux',
                'http://build.chromium.org/p/chromium.webkit/json/builders/WebKit%20Linux/builds/2',
                'http://build.chromium.org/p/chromium.webkit/json/builders/WebKit%20Mac',
                'http://build.chromium.org/p/chromium.webkit/json/builders/WebKit%20Mac/builds/2',
                'http://build.chromium.org/p/chromium.webkit/json/builders/WebKit%20Win',
                'http://build.chromium.org/p/chromium.webkit/json/builders/WebKit%20Win/builds/2',
                'http://build.chromium.org/p/chromium.webkit/json/builders/WebKit%20Empty',
            ]
            self.assertEqual(set(fetched_urls), set(expected_fetched_urls))

            expected_masters = {
                'masters': [{
                    'url': 'http://build.chromium.org/p/chromium.webkit',
                    'tests': {
                        'browser_tests': {
                            'builders': ['WebKit Linux', 'WebKit Mac']
                        },
                        'mini_installer_test': {
                            'builders':
                            ['WebKit Linux', 'WebKit Mac', 'WebKit Win']
                        },
                        'layout-tests': {
                            'builders': ['WebKit Linux', 'WebKit Win']
                        }
                    },
                    'name': 'ChromiumWebkit'
                }]
            }
            expected_json = buildershandler.dump_json(expected_masters)

            self.assertEqual(buildbot_data, expected_json)
        finally:
            buildershandler.fetch_json = old_fetch_json
Ejemplo n.º 5
0
    def test_fetch_buildbot_data_failure(self):
        try:
            fetched_urls = []

            def fake_fetch_json(url):
                fetched_urls.append(url)
                if url == 'http://build.chromium.org/p/chromium.webkit/json/builders':
                    return None

                if url.endswith('chromium.gpu/json/builders'):
                    return {'Win GPU': None, 'Win Empty': None}
                if url.endswith('Win%20GPU'):
                    return {'cachedBuilds': [1, 2], 'currentBuilds': []}
                if url.endswith('Win%20Empty'):
                    return {'cachedBuilds': [], 'currentBuilds': []}
                if url.endswith('Win%20GPU/builds/2'):
                    return {
                        'steps': [{
                            'name': 'gpu_unittests'
                        }, {
                            'name': 'archive_test_results'
                        }, {
                            'name': 'compile'
                        }]
                    }

                if url.endswith('chromium.fyi/json/builders'):
                    return {'Mac FYI': None}
                if url.endswith('Mac%20FYI'):
                    return {'cachedBuilds': [1, 2], 'currentBuilds': []}
                if url.endswith('Mac%20FYI/builds/2'):
                    return {
                        'steps': [{
                            'name': 'fyi_tests'
                        }, {
                            'name': 'archive_test_results'
                        }, {
                            'name': 'compile'
                        }]
                    }

            old_fetch_json = buildershandler.fetch_json
            buildershandler.fetch_json = fake_fetch_json

            masters = [
                {
                    'name': 'ChromiumGPU',
                    'url': 'http://build.chromium.org/p/chromium.gpu'
                },
                {
                    'name': 'ChromiumWebkit',
                    'url': 'http://build.chromium.org/p/chromium.webkit'
                },
                {
                    'name': 'ChromiumFYI',
                    'url': 'http://build.chromium.org/p/chromium.fyi'
                },
            ]

            expected_fetched_urls = [
                'http://build.chromium.org/p/chromium.gpu/json/builders',
                'http://build.chromium.org/p/chromium.gpu/json/builders/Win%20Empty',
                'http://build.chromium.org/p/chromium.gpu/json/builders/Win%20GPU',
                'http://build.chromium.org/p/chromium.gpu/json/builders/Win%20GPU/builds/2',
                'http://build.chromium.org/p/chromium.webkit/json/builders',
                'http://build.chromium.org/p/chromium.fyi/json/builders',
                'http://build.chromium.org/p/chromium.fyi/json/builders/Mac%20FYI',
                'http://build.chromium.org/p/chromium.fyi/json/builders/Mac%20FYI/builds/2',
            ]
            # Should not throw any exception.
            buildbot_data = buildershandler.fetch_buildbot_data(masters, True)
            self.assertEqual(set(expected_fetched_urls), set(fetched_urls))

            fetched_urls_all = fetched_urls[:]
            fetched_urls = []
            expected_fetched_urls = [
                'http://build.chromium.org/p/chromium.gpu/json/builders',
                'http://build.chromium.org/p/chromium.gpu/json/builders/Win%20Empty',
                'http://build.chromium.org/p/chromium.gpu/json/builders/Win%20GPU',
                'http://build.chromium.org/p/chromium.gpu/json/builders/Win%20GPU/builds/2',
                'http://build.chromium.org/p/chromium.webkit/json/builders',
            ]
            with self.assertRaises(buildershandler.FetchBuildersException):
                buildbot_data = buildershandler.fetch_buildbot_data(masters)
            self.assertEqual(set(expected_fetched_urls), set(fetched_urls))
            self.assertNotEqual(set(fetched_urls), set(fetched_urls_all))

        finally:
            buildershandler.fetch_json = old_fetch_json
    def test_fetch_buildbot_data(self):
        try:
            fetched_urls = []

            def fake_fetch_json(url):
                fetched_urls.append(url)

                if url == 'http://chrome-build-extract.appspot.com/get_master/chromium.webkit':
                    return {
                        'builders': {
                            'WebKit Win': None, 'WebKit Linux': None, 'WebKit Mac': None, 'WebKit Empty': None,
                        }
                    }

                if url == 'http://chrome-build-extract.appspot.com/get_builds?builder=WebKit%20Linux&master=chromium.webkit&num_builds=1':
                    return {
                        'builds': [
                            {'steps': [{'name': 'foo_tests_only'}, {'name': 'webkit_tests'}, {'name': 'browser_tests'}, {'name': 'mini_installer_test'}, {'name': 'archive_test_results'}, {'name': 'compile'}]},
                        ],
                    }

                if url == 'http://chrome-build-extract.appspot.com/get_builds?builder=WebKit%20Win&master=chromium.webkit&num_builds=1':
                    return {
                        'builds': [
                            {'steps': [{'name': 'foo_tests_ignore'}, {'name': 'webkit_tests'}, {'name': 'mini_installer_test'}, {'name': 'archive_test_results'}, {'name': 'compile'}]},
                        ],
                    }

                if url == 'http://chrome-build-extract.appspot.com/get_builds?builder=WebKit%20Mac&master=chromium.webkit&num_builds=1':
                    return {
                        'builds': [
                            {'steps': [{'name': 'foo_tests_perf'}, {'name': 'browser_tests'}, {'name': 'mini_installer_test'}, {'name': 'archive_test_results'}, {'name': 'compile'}]},
                        ],
                    }

                if url == 'http://chrome-build-extract.appspot.com/get_builds?builder=WebKit%20Empty&master=chromium.webkit&num_builds=1':
                    return {'builds': []}

                logging.error('Cannot fetch fake url: %s' % url)

            old_fetch_json = buildershandler.fetch_json
            buildershandler.fetch_json = fake_fetch_json

            masters = [
                {'name': 'ChromiumWebkit', 'url_name': 'chromium.webkit'},
            ]

            buildbot_data = buildershandler.fetch_buildbot_data(masters)

            expected_fetched_urls = [
                'http://chrome-build-extract.appspot.com/get_master/chromium.webkit',
                'http://chrome-build-extract.appspot.com/get_builds?builder=WebKit%20Win&master=chromium.webkit&num_builds=1',
                'http://chrome-build-extract.appspot.com/get_builds?builder=WebKit%20Mac&master=chromium.webkit&num_builds=1',
                'http://chrome-build-extract.appspot.com/get_builds?builder=WebKit%20Empty&master=chromium.webkit&num_builds=1',
                'http://chrome-build-extract.appspot.com/get_builds?builder=WebKit%20Linux&master=chromium.webkit&num_builds=1',
            ]
            self.assertEqual(set(fetched_urls), set(expected_fetched_urls))

            expected_masters = {
                'masters': [{
                    'tests': {
                        'browser_tests': {'builders': ['WebKit Linux', 'WebKit Mac']},
                        'mini_installer_test': {'builders': ['WebKit Linux', 'WebKit Mac', 'WebKit Win']},
                        'layout-tests': {'builders': ['WebKit Linux', 'WebKit Win']}},
                    'name': 'ChromiumWebkit',
                    'url_name': 'chromium.webkit',
                }],
                "no_upload_test_types": buildershandler.TEST_STEPS_THAT_DO_NOT_UPLOAD_YET,
            }
            expected_json = buildershandler.dump_json(expected_masters)

            self.assertEqual(buildbot_data, expected_json)
        finally:
            buildershandler.fetch_json = old_fetch_json
Ejemplo n.º 7
0
    def test_fetch_buildbot_data(self):
        try:
            fetched_urls = []

            def fake_fetch_json(url):
                fetched_urls.append(url)
                if url == 'http://build.chromium.org/p/chromium.webkit/json/builders':
                    return {'WebKit Win': None, 'WebKit Linux': None, 'WebKit Mac': None, 'WebKit Empty': None}

                if url == 'http://build.chromium.org/p/chromium.webkit/json/builders/WebKit%20Linux':
                    return {'cachedBuilds': [1, 2], 'currentBuilds': []}
                if url == 'http://build.chromium.org/p/chromium.webkit/json/builders/WebKit%20Win':
                    return {'cachedBuilds': [1, 2], 'currentBuilds': []}
                if url == 'http://build.chromium.org/p/chromium.webkit/json/builders/WebKit%20Mac':
                    return {'cachedBuilds': [1, 2], 'currentBuilds': []}
                if url == 'http://build.chromium.org/p/chromium.webkit/json/builders/WebKit%20Empty':
                    return {'cachedBuilds': [], 'currentBuilds': []}

                if url == 'http://build.chromium.org/p/chromium.webkit/json/builders/WebKit%20Linux/builds/2':
                    return {'steps': [{'name': 'webkit_tests'}, {'name': 'browser_tests'}, {'name': 'mini_installer_test'}, {'name': 'archive_test_results'}, {'name': 'compile'}]}
                if url == 'http://build.chromium.org/p/chromium.webkit/json/builders/WebKit%20Win/builds/2':
                    return {'steps': [{'name': 'webkit_tests'}, {'name': 'mini_installer_test'}, {'name': 'archive_test_results'}, {'name': 'compile'}]}
                if url == 'http://build.chromium.org/p/chromium.webkit/json/builders/WebKit%20Mac/builds/2':
                    return {'steps': [{'name': 'browser_tests'}, {'name': 'mini_installer_test'}, {'name': 'archive_test_results'}, {'name': 'compile'}]}

                logging.error('Cannot fetch fake url: %s' % url)

            old_fetch_json = buildershandler.fetch_json
            buildershandler.fetch_json = fake_fetch_json

            masters = [
                {'name': 'ChromiumWebkit', 'url': 'http://build.chromium.org/p/chromium.webkit'},
            ]

            buildbot_data = buildershandler.fetch_buildbot_data(masters)

            expected_fetched_urls = [
                'http://build.chromium.org/p/chromium.webkit/json/builders',
                'http://build.chromium.org/p/chromium.webkit/json/builders/WebKit%20Linux',
                'http://build.chromium.org/p/chromium.webkit/json/builders/WebKit%20Linux/builds/2',
                'http://build.chromium.org/p/chromium.webkit/json/builders/WebKit%20Mac',
                'http://build.chromium.org/p/chromium.webkit/json/builders/WebKit%20Mac/builds/2',
                'http://build.chromium.org/p/chromium.webkit/json/builders/WebKit%20Win',
                'http://build.chromium.org/p/chromium.webkit/json/builders/WebKit%20Win/builds/2',
                'http://build.chromium.org/p/chromium.webkit/json/builders/WebKit%20Empty',
            ]
            self.assertEqual(fetched_urls, expected_fetched_urls)

            expected_masters = {
                'masters': [{
                    'url': 'http://build.chromium.org/p/chromium.webkit',
                    'tests': {
                        'browser_tests': {'builders': ['WebKit Linux', 'WebKit Mac']},
                        'mini_installer_test': {'builders': ['WebKit Linux', 'WebKit Mac', 'WebKit Win']},
                        'layout-tests': {'builders': ['WebKit Linux', 'WebKit Win']}},
                    'name': 'ChromiumWebkit'}]}
            expected_json = buildershandler.dump_json(expected_masters)

            self.assertEqual(buildbot_data, expected_json)

        finally:
            buildershandler.fetch_json = old_fetch_json
Ejemplo n.º 8
0
    def test_fetch_buildbot_data(self):
        try:
            fetched_urls = []

            def fake_fetch_json(url):
                fetched_urls.append(url)
                if url == "http://build.chromium.org/p/chromium.webkit/json/builders":
                    return {"WebKit Win": None, "WebKit Linux": None, "WebKit Mac": None, "WebKit Empty": None}

                if url == "http://build.chromium.org/p/chromium.webkit/json/builders/WebKit%20Linux":
                    return {"cachedBuilds": [1, 2], "currentBuilds": []}
                if url == "http://build.chromium.org/p/chromium.webkit/json/builders/WebKit%20Win":
                    return {"cachedBuilds": [1, 2], "currentBuilds": []}
                if url == "http://build.chromium.org/p/chromium.webkit/json/builders/WebKit%20Mac":
                    return {"cachedBuilds": [1, 2], "currentBuilds": []}
                if url == "http://build.chromium.org/p/chromium.webkit/json/builders/WebKit%20Empty":
                    return {"cachedBuilds": [], "currentBuilds": []}

                if url == "http://build.chromium.org/p/chromium.webkit/json/builders/WebKit%20Linux/builds/2":
                    return {
                        "steps": [
                            {"name": "webkit_tests"},
                            {"name": "browser_tests"},
                            {"name": "mini_installer_test"},
                            {"name": "archive_test_results"},
                            {"name": "compile"},
                        ]
                    }
                if url == "http://build.chromium.org/p/chromium.webkit/json/builders/WebKit%20Win/builds/2":
                    return {
                        "steps": [
                            {"name": "webkit_tests"},
                            {"name": "mini_installer_test"},
                            {"name": "archive_test_results"},
                            {"name": "compile"},
                        ]
                    }
                if url == "http://build.chromium.org/p/chromium.webkit/json/builders/WebKit%20Mac/builds/2":
                    return {
                        "steps": [
                            {"name": "browser_tests"},
                            {"name": "mini_installer_test"},
                            {"name": "archive_test_results"},
                            {"name": "compile"},
                        ]
                    }

                logging.error("Cannot fetch fake url: %s" % url)

            old_fetch_json = buildershandler.fetch_json
            buildershandler.fetch_json = fake_fetch_json

            masters = [{"name": "ChromiumWebkit", "url": "http://build.chromium.org/p/chromium.webkit"}]

            buildbot_data = buildershandler.fetch_buildbot_data(masters)

            expected_fetched_urls = [
                "http://build.chromium.org/p/chromium.webkit/json/builders",
                "http://build.chromium.org/p/chromium.webkit/json/builders/WebKit%20Linux",
                "http://build.chromium.org/p/chromium.webkit/json/builders/WebKit%20Linux/builds/2",
                "http://build.chromium.org/p/chromium.webkit/json/builders/WebKit%20Mac",
                "http://build.chromium.org/p/chromium.webkit/json/builders/WebKit%20Mac/builds/2",
                "http://build.chromium.org/p/chromium.webkit/json/builders/WebKit%20Win",
                "http://build.chromium.org/p/chromium.webkit/json/builders/WebKit%20Win/builds/2",
                "http://build.chromium.org/p/chromium.webkit/json/builders/WebKit%20Empty",
            ]
            self.assertEqual(fetched_urls, expected_fetched_urls)

            expected_masters = {
                "masters": [
                    {
                        "url": "http://build.chromium.org/p/chromium.webkit",
                        "tests": {
                            "browser_tests": {"builders": ["WebKit Linux", "WebKit Mac"]},
                            "mini_installer_test": {"builders": ["WebKit Linux", "WebKit Mac", "WebKit Win"]},
                            "layout-tests": {"builders": ["WebKit Linux", "WebKit Win"]},
                        },
                        "name": "ChromiumWebkit",
                    }
                ]
            }
            expected_json = buildershandler.dump_json(expected_masters)

            self.assertEqual(buildbot_data, expected_json)

        finally:
            buildershandler.fetch_json = old_fetch_json
Ejemplo n.º 9
0
    def test_fetch_buildbot_data_failure(self):
        try:
            fetched_urls = []

            def fake_fetch_json(url):
                fetched_urls.append(url)
                if url == 'http://build.chromium.org/p/chromium.webkit/json/builders':
                    return None

                if url.endswith('chromium.gpu/json/builders'):
                    return {'Win GPU': None, 'Win Empty': None}
                if url.endswith('Win%20GPU'):
                    return {'cachedBuilds': [1, 2], 'currentBuilds': []}
                if url.endswith('Win%20Empty'):
                    return {'cachedBuilds': [], 'currentBuilds': []}
                if url.endswith('Win%20GPU/builds/2'):
                    return {'steps': [{'name': 'gpu_unittests'}, {'name': 'archive_test_results'}, {'name': 'compile'}]}

                if url.endswith('chromium.fyi/json/builders'):
                    return {'Mac FYI': None}
                if url.endswith('Mac%20FYI'):
                    return {'cachedBuilds': [1, 2], 'currentBuilds': []}
                if url.endswith('Mac%20FYI/builds/2'):
                    return {'steps': [{'name': 'fyi_tests'}, {'name': 'archive_test_results'}, {'name': 'compile'}]}

            old_fetch_json = buildershandler.fetch_json
            buildershandler.fetch_json = fake_fetch_json

            masters = [
                {'name': 'ChromiumGPU', 'url': 'http://build.chromium.org/p/chromium.gpu'},
                {'name': 'ChromiumWebkit', 'url': 'http://build.chromium.org/p/chromium.webkit'},
                {'name': 'ChromiumFYI', 'url': 'http://build.chromium.org/p/chromium.fyi'},
            ]

            expected_fetched_urls = [
                'http://build.chromium.org/p/chromium.gpu/json/builders',
                'http://build.chromium.org/p/chromium.gpu/json/builders/Win%20Empty',
                'http://build.chromium.org/p/chromium.gpu/json/builders/Win%20GPU',
                'http://build.chromium.org/p/chromium.gpu/json/builders/Win%20GPU/builds/2',
                'http://build.chromium.org/p/chromium.webkit/json/builders',
                'http://build.chromium.org/p/chromium.fyi/json/builders',
                'http://build.chromium.org/p/chromium.fyi/json/builders/Mac%20FYI',
                'http://build.chromium.org/p/chromium.fyi/json/builders/Mac%20FYI/builds/2',
            ]
            # Should not throw any exception.
            buildbot_data = buildershandler.fetch_buildbot_data(masters, True)
            self.assertEqual(set(expected_fetched_urls), set(fetched_urls))

            fetched_urls_all = fetched_urls[:]
            fetched_urls = []
            expected_fetched_urls = [
                'http://build.chromium.org/p/chromium.gpu/json/builders',
                'http://build.chromium.org/p/chromium.gpu/json/builders/Win%20Empty',
                'http://build.chromium.org/p/chromium.gpu/json/builders/Win%20GPU',
                'http://build.chromium.org/p/chromium.gpu/json/builders/Win%20GPU/builds/2',
                'http://build.chromium.org/p/chromium.webkit/json/builders',
            ]
            with self.assertRaises(buildershandler.FetchBuildersException):
                buildbot_data = buildershandler.fetch_buildbot_data(masters)
            self.assertEqual(set(expected_fetched_urls), set(fetched_urls))
            self.assertNotEqual(set(fetched_urls), set(fetched_urls_all))

        finally:
            buildershandler.fetch_json = old_fetch_json