#!/usr/bin/env python from sentry.runner import configure configure() import datetime import pathlib import click import requests from django.conf import settings from sentry.models import File, Organization, Project from sentry.replays.models import ReplayRecordingSegment from sentry.replays.testutils import mock_replay def store_replay(replay): response = requests.post( settings.SENTRY_SNUBA + "/tests/entities/replays/insert", json=[replay] ) assert response.status_code == 200 def create_recording_segment(replay_id, project_id, filename, segment_id): with open(filename, "rb") as f: file = File.objects.create(name=filename, type="application/octet-stream") file.putfile(f) ReplayRecordingSegment.objects.create( replay_id=replay_id.replace("-", ""), project_id=project_id, segment_id=segment_id, file_id=file.id, ) def make_filename(filename: str) -> str: parent_dir = pathlib.Path(__file__).parent.resolve() return f"{parent_dir}/rrweb-output/{filename}" def main(): project_name = "Replay Test" if settings.SENTRY_SINGLE_ORGANIZATION: org = Organization.get_default() click.echo(f"Mocking org {org.name}") else: click.echo("Mocking org {}".format("Default")) org, _ = Organization.objects.get_or_create(slug="default") click.echo(f" > Mocking project {project_name}") project, _ = Project.objects.get_or_create( name=project_name, defaults={ "organization": org, "flags": Project.flags.has_releases, }, ) replay_id = "44c586f7-bd12-4c1b-b609-189344a19e92" seq1_timestamp = datetime.datetime.now() - datetime.timedelta(seconds=22) seq2_timestamp = datetime.datetime.now() - datetime.timedelta(seconds=5) click.echo("Creating Clickhouse entries...") store_replay(mock_replay(seq1_timestamp, project.id, replay_id, segment_id=0)) store_replay(mock_replay(seq2_timestamp, project.id, replay_id, segment_id=1)) click.echo("Creating Postgres entries...") create_recording_segment(replay_id, project.id, make_filename("rrweb-1658770770892.json"), 0) create_recording_segment(replay_id, project.id, make_filename("rrweb-1658770772903.json"), 1) if __name__ == "__main__": main()