コード例 #1
0
    def setup_webserver(cls, app, redis=StrictRedis, cassandra=CassandraContext):
        with URLFactoryTest.mock(), MockModelFactory.safari(), MockModelFactory.webkit():
            cassandra.drop_keyspace(keyspace=cls.KEYSPACE)
            model = MockModelFactory.create(redis=redis(), cassandra=cassandra(keyspace=cls.KEYSPACE, create_keyspace=True))
            model.ci_context.add_url_factory(BuildbotURLFactory(master='build.webkit.org', redis=model.redis))
            app.register_blueprint(APIRoutes(model))

            with model.upload_context:
                # Mock results are more complicated because we want to attach results to builders
                for configuration in [
                    Configuration(platform='Mac', version_name='Catalina', version='10.15.0', sdk='19A500', is_simulator=False, architecture='x86_64', style='Release', flavor='wk1'),
                    Configuration(platform='Mac', version_name='Catalina', version='10.15.0', sdk='19A500', is_simulator=False, architecture='x86_64', style='Release', flavor='wk2'),
                    Configuration(platform='Mac', version_name='Mojave', version='10.14.0', sdk='18A500', is_simulator=False, architecture='x86_64', style='Release', flavor='wk1'),
                    Configuration(platform='Mac', version_name='Mojave', version='10.14.0', sdk='18A500', is_simulator=False, architecture='x86_64', style='Release', flavor='wk2'),
                ]:
                    build_count = [1]

                    def callback(commits, model=model, configuration=configuration, count=build_count):
                        results = MockModelFactory.layout_test_results()
                        results['details'] = {
                            'buildbot-master': URLFactoryTest.BUILD_MASTER,
                            'builder-name': f'{configuration.version_name}-{configuration.style}-{configuration.flavor.upper()}-Tests',
                            'build-number': str(count[0]),
                            'buildbot-worker': {
                                'Mojave': 'bot1',
                                'Catalina': 'bot2',
                            }.get(configuration.version_name, None),
                        }
                        model.upload_context.upload_test_results(configuration, commits, suite='layout-tests', timestamp=time.time(), test_results=results)
                        count[0] += 1

                    MockModelFactory.iterate_all_commits(model, callback)
                    MockModelFactory.process_results(model, configuration)
コード例 #2
0
 def setup_webserver(cls, app, redis=StrictRedis, cassandra=CassandraContext):
     with MockModelFactory.safari(), MockModelFactory.webkit():
         cassandra.drop_keyspace(keyspace=cls.KEYSPACE)
         model = MockModelFactory.create(redis=redis(), cassandra=cassandra(keyspace=cls.KEYSPACE, create_keyspace=True))
         model.upload_context.register_upload_callback('python-tests', lambda **kwargs: dict(status='ok'))
         MockModelFactory.add_mock_results(model)
         app.register_blueprint(APIRoutes(model))
コード例 #3
0
    def setup_webserver(cls,
                        app,
                        redis=StrictRedis,
                        cassandra=CassandraContext):
        cassandra.drop_keyspace(keyspace=cls.KEYSPACE)
        model = MockModelFactory.create(redis=redis(),
                                        cassandra=cassandra(
                                            keyspace=cls.KEYSPACE,
                                            create_keyspace=True))
        app.register_blueprint(APIRoutes(model))

        MockModelFactory.add_mock_results(model)
        MockModelFactory.process_results(model)
コード例 #4
0
    def setup_webserver(cls,
                        app,
                        redis=StrictRedis,
                        cassandra=CassandraContext):
        redis_instance = redis()
        safari = MockStashRepository.safari(redis_instance)
        webkit = MockSVNRepository.webkit(redis_instance)

        cassandra.drop_keyspace(keyspace=cls.KEYSPACE)
        cassandra_instance = cassandra(keyspace=cls.KEYSPACE,
                                       create_keyspace=True)

        app.register_blueprint(
            APIRoutes(
                Model(redis=redis_instance,
                      cassandra=cassandra_instance,
                      repositories=[safari, webkit])))
コード例 #5
0
    def setup_webserver(cls, app, redis=StrictRedis, cassandra=CassandraContext):
        with MockModelFactory.safari(), MockModelFactory.webkit():
            cassandra.drop_keyspace(keyspace=cls.KEYSPACE)
            redis_instance = redis()

            model = Model(
                redis=redis_instance, cassandra=cassandra(keyspace=cls.KEYSPACE, create_keyspace=True),
                repositories=[
                    WebKitRepository(),
                    StashRepository('https://bitbucket.example.com/projects/SAFARI/repos/safari'),
                ],
            )
            api_routes = APIRoutes(model=model, import_name=__name__)
            view_routes = ViewRoutes(model=model, controller=api_routes, import_name=__name__)

            app.register_blueprint(api_routes)
            app.register_blueprint(view_routes)
コード例 #6
0
    def setup_webserver(cls,
                        app,
                        redis=StrictRedis,
                        cassandra=CassandraContext):
        with MockModelFactory.safari(), MockModelFactory.webkit():
            redis_instance = redis()
            safari = StashRepository(
                'https://bitbucket.example.com/projects/SAFARI/repos/safari')
            webkit = WebKitRepository()

            cassandra.drop_keyspace(keyspace=cls.KEYSPACE)
            cassandra_instance = cassandra(keyspace=cls.KEYSPACE,
                                           create_keyspace=True)

            app.register_blueprint(
                APIRoutes(
                    Model(redis=redis_instance,
                          cassandra=cassandra_instance,
                          repositories=[safari, webkit])))
コード例 #7
0
    def setup_webserver(cls, app, redis=StrictRedis, cassandra=CassandraContext):
        cassandra.drop_keyspace(keyspace=cls.KEYSPACE)
        model = MockModelFactory.create(redis=redis(), cassandra=cassandra(keyspace=cls.KEYSPACE, create_keyspace=True))
        app.register_blueprint(APIRoutes(model))

        MockModelFactory.add_mock_results(model, test_results=dict(
            details=dict(link='dummy-link'),
            run_stats=dict(tests_skipped=0),
            results={
                'fast': {
                    'encoding': {
                        'css-cached-bom.html': dict(expected='PASS', actual='FAIL', time=1.2),
                        'css-charset-default.xhtml': dict(expected='FAIL', actual='FAIL', time=1.2),
                        'css-charset.html': dict(expected='FAIL', actual='PASS', time=1.2),
                        'css-link-charset.html': dict(expected='PASS', actual='PAS', time=1.2),
                    }
                }
            },
        ))
        MockModelFactory.process_results(model)
コード例 #8
0
import hashlib
import json

from example.environment import Environment, ModelFromEnvironment
from flask import abort, Flask, request
from resultsdbpy.controller.api_routes import APIRoutes
from resultsdbpy.view.view_routes import ViewRoutes

environment = Environment()
print(f'Environment for web-app:\n{environment}')

model = ModelFromEnvironment(environment)
app = Flask(__name__)

api_routes = APIRoutes(model=model, import_name=__name__)
view_routes = ViewRoutes(
    title='Example Results Database',
    model=model,
    controller=api_routes,
    import_name=__name__,
)


@app.route('/__health', methods=('GET', ))
def health():
    if not model.healthy(writable=True):
        abort(503,
              description='Health check failed, invalid database connections')
    return 'ok'