def test_segments_megaquery_not_detectably_malformed(): exp = Experiment("slug", "2019-01-01", 8) tl = TimeLimits.for_ts( first_enrollment_date="2019-01-01", last_date_full_data="2019-03-01", time_series_period="weekly", num_dates_enrollment=8, ) enrollments_sql = exp.build_enrollments_query( time_limits=tl, segment_list=[s for s in msd.__dict__.values() if isinstance(s, msd.Segment)], enrollments_query_type="normandy", ) sql_lint(enrollments_sql) metrics_sql = exp.build_metrics_query( metric_list=[m for m in mad.__dict__.values() if isinstance(m, mad.Metric)], time_limits=tl, enrollments_table="enrollments", ) sql_lint(metrics_sql)
def test_metrics_query_based_on_exposure(): exp = Experiment("slug", "2019-01-01", 8) tl = TimeLimits.for_ts( first_enrollment_date="2019-01-01", last_date_full_data="2019-03-01", time_series_period="weekly", num_dates_enrollment=8, ) enrollments_sql = exp.build_enrollments_query( time_limits=tl, enrollments_query_type="fenix-fallback") sql_lint(enrollments_sql) metrics_sql = exp.build_metrics_query( metric_list=[ m for m in mozanalysis.metrics.fenix.__dict__.values() if isinstance(m, Metric) ], time_limits=tl, enrollments_table="enrollments", analysis_basis=AnalysisBasis.EXPOSURES, ) sql_lint(metrics_sql) assert "e.exposure_date" in metrics_sql
def test_firefox_ios_klar_app_id_propagation(): exp = Experiment("slug", "2019-01-01", 8, app_id="my_cool_app") tl = TimeLimits.for_ts( first_enrollment_date="2019-01-01", last_date_full_data="2019-03-01", time_series_period="weekly", num_dates_enrollment=8, ) sds = SegmentDataSource( name="cool_data_source", from_expr="`moz-fx-data-shared-prod`.{dataset}.cool_table", default_dataset="org_mozilla_ios_klar", ) segment = Segment( name="cool_segment", select_expr="COUNT(*)", data_source=sds, ) enrollments_sql = exp.build_enrollments_query( time_limits=tl, segment_list=[segment], enrollments_query_type="glean-event", ) sql_lint(enrollments_sql) metrics_sql = exp.build_metrics_query( metric_list=[ m for m in mozanalysis.metrics.klar_ios.__dict__.values() if isinstance(m, Metric) ], time_limits=tl, enrollments_table="enrollments", ) sql_lint(metrics_sql) assert "org_mozilla_ios_klar" not in enrollments_sql assert "my_cool_app" in enrollments_sql sql_lint(metrics_sql)
def test_query_not_detectably_malformed_fenix_fallback(): exp = Experiment("slug", "2019-01-01", 8) tl = TimeLimits.for_ts( first_enrollment_date="2019-01-01", last_date_full_data="2019-03-01", time_series_period="weekly", num_dates_enrollment=8, ) enrollments_sql = exp.build_enrollments_query( time_limits=tl, enrollments_query_type="fenix-fallback") sql_lint(enrollments_sql) metrics_sql = exp.build_metrics_query( metric_list=[], time_limits=tl, enrollments_table="enrollments", ) sql_lint(metrics_sql)
def test_metrics_query_with_exposure_signal_custom_windows(): exp = Experiment("slug", "2019-01-01", 8) tl = TimeLimits.for_ts( first_enrollment_date="2019-01-01", last_date_full_data="2019-03-01", time_series_period="weekly", num_dates_enrollment=8, ) enrollments_sql = exp.build_enrollments_query( time_limits=tl, enrollments_query_type="fenix-fallback") sql_lint(enrollments_sql) metrics_sql = exp.build_metrics_query( metric_list=[ m for m in mozanalysis.metrics.fenix.__dict__.values() if isinstance(m, Metric) ], time_limits=tl, enrollments_table="enrollments", analysis_basis=AnalysisBasis.EXPOSURES, exposure_signal=ExposureSignal( name="exposures", data_source=mozanalysis.metrics.fenix.baseline, select_expr="metrics.counter.events_total_uri_count > 0", friendly_name="URI visited exposure", description="Exposed when URI visited", window_start=1, window_end=3, ), ) sql_lint(metrics_sql) assert "DATE_ADD('2019-01-01', INTERVAL 1 DAY)" in metrics_sql assert "DATE_ADD('2019-01-01', INTERVAL 3 DAY)" in metrics_sql