mirror of
https://github.com/plausible/analytics.git
synced 2024-12-25 02:24:55 +03:00
a6d4786959
* Create a worker to clean clickhouse deleted sites data The plan is to run this weekly, but going to trigger it manually the first few times on cloud * Make asserting count more reliable * credo * PR feedback * Fixes
70 lines
2.1 KiB
Elixir
70 lines
2.1 KiB
Elixir
defmodule Plausible.Workers.ClickhouseCleanSitesTest do
|
|
use Plausible.DataCase
|
|
use Plausible.TestUtils
|
|
use Plausible
|
|
import Plausible.Factory
|
|
|
|
alias Plausible.Workers.ClickhouseCleanSites
|
|
|
|
test "deletes data from events and sessions tables" do
|
|
site = insert(:site)
|
|
deleted_site = insert(:site)
|
|
|
|
populate_stats(site, [
|
|
build(:pageview)
|
|
])
|
|
|
|
populate_stats(deleted_site, [
|
|
build(:pageview),
|
|
build(:pageview),
|
|
build(:imported_visitors),
|
|
build(:imported_sources),
|
|
build(:imported_pages),
|
|
build(:imported_entry_pages),
|
|
build(:imported_exit_pages),
|
|
build(:imported_locations),
|
|
build(:imported_devices),
|
|
build(:imported_browsers),
|
|
build(:imported_operating_systems)
|
|
])
|
|
|
|
Repo.delete!(deleted_site)
|
|
|
|
assert Enum.member?(
|
|
ClickhouseCleanSites.get_deleted_sites_with_clickhouse_data(),
|
|
deleted_site.id
|
|
)
|
|
|
|
assert not Enum.member?(
|
|
ClickhouseCleanSites.get_deleted_sites_with_clickhouse_data(),
|
|
site.id
|
|
)
|
|
|
|
ClickhouseCleanSites.perform(nil)
|
|
|
|
assert_count(deleted_site, "events_v2", 0)
|
|
assert_count(deleted_site, "sessions_v2", 0)
|
|
assert_count(deleted_site, "imported_visitors", 0)
|
|
assert_count(deleted_site, "imported_sources", 0)
|
|
assert_count(deleted_site, "imported_pages", 0)
|
|
assert_count(deleted_site, "imported_entry_pages", 0)
|
|
assert_count(deleted_site, "imported_exit_pages", 0)
|
|
assert_count(deleted_site, "imported_locations", 0)
|
|
assert_count(deleted_site, "imported_devices", 0)
|
|
assert_count(deleted_site, "imported_browsers", 0)
|
|
assert_count(deleted_site, "imported_operating_systems", 0)
|
|
assert_count(site, "events_v2", 1)
|
|
assert_count(site, "sessions_v2", 1)
|
|
|
|
assert not Enum.member?(
|
|
ClickhouseCleanSites.get_deleted_sites_with_clickhouse_data(),
|
|
deleted_site.id
|
|
)
|
|
end
|
|
|
|
def assert_count(site, table, expected_count) do
|
|
q = from(e in table, select: %{count: fragment("count()")}, where: e.site_id == ^site.id)
|
|
await_clickhouse_count(q, expected_count)
|
|
end
|
|
end
|