Skip to content

Commit

Permalink
refactored to use itertools.repeat and dict.copy()
Browse files Browse the repository at this point in the history
  • Loading branch information
BuzzCutNorman committed Nov 20, 2023
1 parent be41a6a commit d49ce6f
Showing 1 changed file with 16 additions and 17 deletions.
33 changes: 16 additions & 17 deletions tests/core/sinks/test_validation.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
from __future__ import annotations

import datetime
import itertools

import pytest

Expand Down Expand Up @@ -62,41 +63,39 @@ def bench_sink() -> BatchSinkMock:
)


def test_bench_parse_timestamps_in_record(benchmark, bench_sink):
"""Run benchmark for Sink method _parse_timestamps_in_record."""
number_of_runs = 10000

sink: BatchSinkMock = bench_sink
record: dict = {
@pytest.fixture
def bench_record():
return {
"id": 1,
"created_at": "2021-01-01T00:08:00-07:00",
"updated_at": "2022-01-02T00:09:00-07:00",
"deleted_at": "2023-01-03T00:10:00.0000",
}


def test_bench_parse_timestamps_in_record(benchmark, bench_sink, bench_record):
"""Run benchmark for Sink method _parse_timestamps_in_record."""
number_of_runs = 10000

sink: BatchSinkMock = bench_sink

def run_parse_timestamps_in_record():
for _ in range(number_of_runs):
for record in itertools.repeat(bench_record, number_of_runs):
_ = sink._parse_timestamps_in_record(
record, sink.schema, sink.datetime_error_treatment
record.copy(), sink.schema, sink.datetime_error_treatment
)

benchmark(run_parse_timestamps_in_record)


def test_bench_validate_and_parse(benchmark, bench_sink):
def test_bench_validate_and_parse(benchmark, bench_sink, bench_record):
"""Run benchmark for Sink method _validate_and_parse."""
number_of_runs = 10000

sink: BatchSinkMock = bench_sink
record: dict = {
"id": 1,
"created_at": "2021-01-01T00:08:00-07:00",
"updated_at": "2022-01-02T00:09:00-07:00",
"deleted_at": "2023-01-03T00:10:00.0000",
}

def run_validate_and_parse():
for _ in range(number_of_runs):
_ = sink._validate_and_parse(record)
for record in itertools.repeat(bench_record, number_of_runs):
_ = sink._validate_and_parse(record.copy())

benchmark(run_validate_and_parse)

0 comments on commit d49ce6f

Please sign in to comment.