Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* added first task for creating clickhouse tables * events are now saved on clickhouse * preparing tests for clickhouse and cleaned up the code a bit * fixed format * moving more metrics to clickhouse * fixed worker to use clickhouse * format * more clickhouse fixes moved all metrics to period metric class fixed classes for event and session for clickhouse moved all to clickhouse * format fix * updated shard * fixed some bugs in time worker when creating events and sessions * fixed tests for clickhouse * forgot format * fixed ci for clickhouse * adding env for clickhouse in tests * added env to clickhouse task * fixed nillable variables on clickhouse column * let's use utc
- Loading branch information
Showing
30 changed files
with
730 additions
and
369 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,4 @@ | ||
system_check: script/system_check && sleep 100000 | ||
web: lucky watch --reload-browser | ||
assets: yarn watch | ||
worker: crystal run src/start_worker.cr |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,53 +1,69 @@ | ||
require "../spec_helper" | ||
|
||
describe EventHandler do | ||
after_each do | ||
AddClickhouse.clean_database | ||
end | ||
it "is current session" do | ||
session = SessionBox.create &.user_id("test_id").length(nil) | ||
user_id = "event1212461" | ||
AddClickhouse.session_insert(user_id: user_id, length: nil, is_bounce: 1, referrer: "indiehacker.com", url: "https://kindmetrics.com/aaadsad", referrer_source: "indiehacker.com", path: "/asadasd", device: "Desktop", operative_system: "Mac OS", referrer_domain: "indiehacker.com", browser_name: "Chrome", country: "SE", domain_id: DomainBox.create.id) | ||
session = AddClickhouse.get_session(user_id) | ||
AddClickhouse.event_insert(session_id: session.not_nil!.id, name: "pageview", user_id: user_id, referrer: "indiehacker.com", url: "https://kindmetrics.com/aaadsad", referrer_source: "indiehacker.com", path: "/asadasd", device: "Desktop", operative_system: "Mac OS", referrer_domain: "indiehacker.com", browser_name: "Chrome", country: "SE", domain_id: session.not_nil!.domain_id) | ||
|
||
response = EventHandler.is_current_session?(session.user_id) | ||
response = EventHandler.is_current_session?(user_id) | ||
response.should eq(true) | ||
end | ||
|
||
it "is current session with events" do | ||
event = EventBox.create &.user_id("test_id") | ||
event.domain_id = event.session!.not_nil!.domain_id | ||
id = Random.new.rand(Int64) | ||
user_id = "event12332112" | ||
AddClickhouse.session_insert(user_id: user_id, length: nil, is_bounce: 1, referrer: "indiehacker.com", url: "https://kindmetrics.com/aaadsad", referrer_source: "indiehacker.com", path: "/asadasd", device: "Desktop", operative_system: "Mac OS", referrer_domain: "indiehacker.com", browser_name: "Chrome", country: "SE", domain_id: DomainBox.create.id) | ||
session = AddClickhouse.get_session(user_id) | ||
|
||
SaveSession.update!(event.session!.not_nil!, length: nil) | ||
event = event.reload | ||
AddClickhouse.event_insert(session_id: session.not_nil!.id, name: "pageview", user_id: user_id, referrer: "indiehacker.com", url: "https://kindmetrics.com/aaadsad", referrer_source: "indiehacker.com", path: "/asadasd", device: "Desktop", operative_system: "Mac OS", referrer_domain: "indiehacker.com", browser_name: "Chrome", country: "SE", domain_id: session.not_nil!.domain_id) | ||
|
||
response = EventHandler.is_current_session?(event.session!.not_nil!.user_id) | ||
response = EventHandler.is_current_session?(user_id) | ||
response.should eq(true) | ||
end | ||
|
||
it "is old session" do | ||
session = SessionBox.create &.created_at(80.minutes.ago).length(nil) | ||
user_id = "event3463421" | ||
AddClickhouse.session_insert(user_id: user_id, length: nil, is_bounce: 1, referrer: "indiehacker.com", url: "https://kindmetrics.com/aaadsad", referrer_source: "indiehacker.com", path: "/asadasd", device: "Desktop", operative_system: "Mac OS", referrer_domain: "indiehacker.com", browser_name: "Chrome", country: "SE", domain_id: DomainBox.create.id, created_at: 80.minutes.ago) | ||
session = AddClickhouse.get_session(user_id) | ||
|
||
response = EventHandler.is_current_session?(session.user_id) | ||
response = EventHandler.is_current_session?(session.not_nil!.user_id) | ||
response.should eq(false) | ||
end | ||
|
||
it "is current session with events" do | ||
event = EventBox.create &.created_at(50.minutes.ago) | ||
event.domain_id = event.session!.not_nil!.domain_id | ||
user_id = "event8673353" | ||
EventHandler.create_session(user_id: user_id, name: "pageview", length: 0, is_bounce: 1, referrer: "indiehacker.com", url: "https://kindmetrics.com/aaadsad", referrer_source: "indiehacker.com", path: "/asadasd", device: "Desktop", operative_system: "Mac OS", referrer_domain: "indiehacker.com", browser_name: "Chrome", country: "SE", domain_id: DomainBox.create.id) | ||
session = AddClickhouse.get_session(user_id) | ||
|
||
response = EventHandler.is_current_session?(event.session!.not_nil!.user_id) | ||
response = EventHandler.is_current_session?(user_id) | ||
response.should eq(false) | ||
end | ||
|
||
it "already done session" do | ||
session = SessionBox.create &.created_at(80.minutes.ago).length(23.to_i64) | ||
user_id = "event78945322" | ||
AddClickhouse.session_insert(user_id: user_id, length: 23.to_i64, is_bounce: 1, referrer: "indiehacker.com", url: "https://kindmetrics.com/aaadsad", referrer_source: "indiehacker.com", path: "/asadasd", device: "Desktop", operative_system: "Mac OS", referrer_domain: "indiehacker.com", browser_name: "Chrome", country: "SE", domain_id: DomainBox.create.id, created_at: 80.minutes.ago) | ||
session = AddClickhouse.get_session(user_id) | ||
|
||
AddClickhouse.event_insert(session_id: session.not_nil!.id, name: "pageview", user_id: user_id, referrer: "indiehacker.com", url: "https://kindmetrics.com/aaadsad", referrer_source: "indiehacker.com", path: "/asadasd", device: "Desktop", operative_system: "Mac OS", referrer_domain: "indiehacker.com", browser_name: "Chrome", country: "SE", domain_id: session.not_nil!.domain_id) | ||
|
||
response = EventHandler.is_current_session?(session.user_id) | ||
response = EventHandler.is_current_session?(user_id) | ||
response.should eq(false) | ||
end | ||
|
||
it "add event to current session" do | ||
session = SessionBox.create &.length(nil) | ||
domain = DomainBox.create | ||
user_id = "event679831441" | ||
|
||
EventQuery.new.session_id(session.id).select_count.should eq(0) | ||
EventHandler.create_session(user_id: user_id, name: "pageview", referrer: "https://indiehackers.com/amazing", referrer_domain: "indiehackers.com", url: "https://test.com/test/rrr", path: "/test/rrr", referrer_source: nil, device: "Android", browser_name: "Chrome", operative_system: "Android", country: "SE", length: nil, is_bounce: 0, domain_id: domain.id) | ||
session = AddClickhouse.get_session(user_id) | ||
|
||
EventHandler.add_event(session.user_id, name: "pageview", referrer: "https://indiehackers.com/amazing", referrer_domain: "indiehackers.com", url: "https://test.com/test/rrr", path: "/test/rrr", referrer_source: nil, device: "Android", browser_name: "Chrome", operative_system: "Android", domain_id: session.domain_id) | ||
events = AddClickhouse.get_last_event(session.not_nil!) | ||
|
||
EventQuery.new.session_id(session.id).select_count.should eq(1) | ||
events.size.should eq(1) | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.