Пример #1
0
def update_channels(apps, schema_editor):
    Crash = apps.get_model("crash", "Crash")
    crashes = Crash.objects.all().exclude(build_number='')
    crashes = crashes.exclude(os='').iterator()
    for obj in crashes:
        obj.channel = get_channel(obj.build_number, obj.os)
        obj.save()
def update_channels(apps, schema_editor):
    Crash = apps.get_model("crash", "Crash")
    crashes = Crash.objects.all().exclude(build_number='')
    crashes = crashes.exclude(os='').iterator()
    for obj in crashes:
        obj.channel = get_channel(obj.build_number, obj.os)
        obj.save()
Пример #3
0
def processing_crash_dump(self, crash_pk):
    try:
        crash = Crash.objects.get(pk=crash_pk)
        url = furl(crash.upload_file_minidump.url)
        path = url.pathstr
        crash_dump_path = os.path.join(S3_MOUNT_PATH, *path.split('/'))
        stacktrace, errors = get_stacktrace(crash_dump_path)
        crash.stacktrace = stacktrace
        crash.stacktrace_json = parse_stacktrace(stacktrace)
        crash.signature = get_signature(crash.stacktrace_json)
        _os = get_os(crash.stacktrace_json)
        meta = crash.meta or {}
        build_number = meta.get('ver', '')
        channel = meta.get('channel', '') or get_channel(build_number, _os)
        crash.os = _os
        crash.build_number = build_number
        crash.channel = channel
        crash.save()
        send_stacktrace_sentry(crash)
    except FileNotFoundError as exc:
        logger.error('Failed processing_crash_dump',
                     exc_info=True,
                     extra=dict(crash_pk=crash_pk,
                                crash_dump_path=crash_dump_path))
        raise self.retry(exc=exc,
                         countdown=2**processing_crash_dump.request.retries)
    except CommandError as exc:
        logger.error('Failed processing_crash_dump',
                     exc_info=True,
                     extra=dict(crash_pk=crash_pk,
                                crash_dump_path=crash_dump_path))
        raise exc
Пример #4
0
def processing_crash_dump(self, crash_pk):
    try:
        crash = Crash.objects.get(pk=crash_pk)

        # assemble crash_dump_path
        url = furl(crash.upload_file_minidump.url)
        path = url.pathstr
        crash_dump_path = os.path.join(S3_MOUNT_PATH, *path.split('/'))

        # Set various values in the crash object.
        stacktrace = get_stacktrace(crash_dump_path)
        crash.stacktrace = stacktrace
        crash.stacktrace_json = parse_stacktrace(stacktrace)
        crash.signature = get_signature(crash.stacktrace_json)
        _os = get_os(crash.stacktrace_json)
        meta = crash.meta or {}
        build_number = meta.get('ver', '')
        channel = meta.get('channel', '') or get_channel(build_number, _os)
        crash.os = _os
        crash.build_number = build_number
        crash.channel = channel
        crash.save()

        # Send the crash to the configured logger.
        send_stacktrace(crash)

    except FileNotFoundError as exc:
        logger.error('Failed processing_crash_dump',
                     exc_info=True,
                     extra=dict(crash_pk=crash_pk,
                                crash_dump_path=crash_dump_path))
        raise self.retry(exc=exc, countdown=2 ** processing_crash_dump.request.retries)
    except CommandError as exc:
        logger.error('Failed processing_crash_dump',
                     exc_info=True,
                     extra=dict(crash_pk=crash_pk,
                                crash_dump_path=crash_dump_path))
        raise exc
Пример #5
0
 def test_invalid_build_number(self):
     version = self.factory()
     build_number = "%s-devel" % self.get_number_version(version)
     channel = get_channel(build_number, self.os)
     self.assertEqual(channel, 'undefined')
Пример #6
0
 def test_not_version(self):
     build_number = '0.0.0.1'
     channel = get_channel(build_number, self.os)
     self.assertEqual(channel, 'undefined')
Пример #7
0
 def test_ambiguity(self):
     version = self.factory.create_batch(2)[0]
     build_number = self.get_number_version(version)
     channel = get_channel(build_number, self.os)
     self.assertEqual(channel, 'undefined')
Пример #8
0
 def test_version(self):
     version = self.factory()
     build_number = self.get_number_version(version)
     channel = get_channel(build_number, self.os)
     self.assertEqual(channel, version.channel.name)
Пример #9
0
 def test_invalid_build_number(self):
     version = self.factory()
     build_number = "%s-devel" % self.get_number_version(version)
     channel = get_channel(build_number, self.os)
     self.assertEqual(channel, 'undefined')
Пример #10
0
 def test_not_version(self):
     build_number = '0.0.0.1'
     channel = get_channel(build_number, self.os)
     self.assertEqual(channel, 'undefined')
Пример #11
0
 def test_ambiguity(self):
     version = self.factory.create_batch(2)[0]
     build_number = self.get_number_version(version)
     channel = get_channel(build_number, self.os)
     self.assertEqual(channel, 'undefined')
Пример #12
0
 def test_version(self):
     version = self.factory()
     build_number = self.get_number_version(version)
     channel = get_channel(build_number, self.os)
     self.assertEqual(channel, version.channel.name)