From 196c7320b86cefc620b670ccdf1ae13387732466 Mon Sep 17 00:00:00 2001 From: martosaur Date: Thu, 10 Jul 2025 20:33:17 -0700 Subject: [PATCH 01/12] =?UTF-8?q?Library=20known=20as=20LogHog=20moves=20i?= =?UTF-8?q?n=20=F0=9F=98=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 4 + .tool-versions | 2 +- CHANGELOG.md | 4 +- MIGRATION.md | 26 +- README.md | 318 ++---- assets/screenshot.png | Bin 0 -> 696299 bytes config/config.exs | 4 +- config/integration.example.exs | 8 + config/integration.exs | 8 + config/test.exs | 5 + examples/.gitignore | 31 - examples/feature_flag_demo/.tool-versions | 2 - examples/feature_flag_demo/README.md | 50 - examples/feature_flag_demo/bin/setup | 9 - examples/feature_flag_demo/config/config.exs | 9 - .../lib/feature_flag_demo.ex | 112 -- .../lib/feature_flag_demo/application.ex | 12 - examples/feature_flag_demo/mix.exs | 27 - examples/feature_flag_demo/mix.lock | 18 - examples/feature_flag_demo/run.exs | 1 - guides/advanced-configuration.md | 85 ++ lib/posthog.ex | 335 +++--- lib/posthog/api.ex | 10 + lib/posthog/api/client.ex | 79 ++ lib/posthog/application.ex | 116 +- lib/posthog/client.ex | 443 -------- lib/posthog/config.ex | 239 ++-- lib/posthog/context.ex | 45 + lib/posthog/event.ex | 178 --- lib/posthog/feature_flag.ex | 243 ---- lib/posthog/handler.ex | 157 +++ lib/posthog/http_client.ex | 68 -- lib/posthog/integrations/plug.ex | 69 ++ lib/posthog/registry.ex | 16 + lib/posthog/sender.ex | 86 ++ lib/posthog/supervisor.ex | 46 + mix.exs | 55 +- mix.lock | 22 + test/integration_test.exs | 90 ++ test/log_hog_test.exs | 264 +++++ test/posthog/client_test.exs | 323 ------ test/posthog/context_test.exs | 62 + test/posthog/event_test.exs | 132 --- test/posthog/handler_test.exs | 1004 +++++++++++++++++ test/posthog/integrations/plug_test.exs | 213 ++++ test/posthog/sender_test.exs | 112 ++ test/posthog_test.exs | 116 -- test/support/api/mocks.ex | 1 + test/support/api/stub.ex | 42 + test/support/case.ex | 50 + test/support/fixtures/decide-v3.json | 24 - test/support/fixtures/decide.json | 90 -- test/support/hackney_stub.ex | 95 -- test/test_helper.exs | 6 +- 54 files changed, 2893 insertions(+), 2673 deletions(-) create mode 100644 assets/screenshot.png create mode 100644 config/integration.example.exs create mode 100644 config/integration.exs create mode 100644 config/test.exs delete mode 100644 examples/.gitignore delete mode 100644 examples/feature_flag_demo/.tool-versions delete mode 100644 examples/feature_flag_demo/README.md delete mode 100755 examples/feature_flag_demo/bin/setup delete mode 100644 examples/feature_flag_demo/config/config.exs delete mode 100644 examples/feature_flag_demo/lib/feature_flag_demo.ex delete mode 100644 examples/feature_flag_demo/lib/feature_flag_demo/application.ex delete mode 100644 examples/feature_flag_demo/mix.exs delete mode 100644 examples/feature_flag_demo/mix.lock delete mode 100644 examples/feature_flag_demo/run.exs create mode 100644 guides/advanced-configuration.md create mode 100644 lib/posthog/api.ex create mode 100644 lib/posthog/api/client.ex delete mode 100644 lib/posthog/client.ex create mode 100644 lib/posthog/context.ex delete mode 100644 lib/posthog/event.ex delete mode 100644 lib/posthog/feature_flag.ex create mode 100644 lib/posthog/handler.ex delete mode 100644 lib/posthog/http_client.ex create mode 100644 lib/posthog/integrations/plug.ex create mode 100644 lib/posthog/registry.ex create mode 100644 lib/posthog/sender.ex create mode 100644 lib/posthog/supervisor.ex create mode 100644 test/integration_test.exs create mode 100644 test/log_hog_test.exs delete mode 100644 test/posthog/client_test.exs create mode 100644 test/posthog/context_test.exs delete mode 100644 test/posthog/event_test.exs create mode 100644 test/posthog/handler_test.exs create mode 100644 test/posthog/integrations/plug_test.exs create mode 100644 test/posthog/sender_test.exs delete mode 100644 test/posthog_test.exs create mode 100644 test/support/api/mocks.ex create mode 100644 test/support/api/stub.ex create mode 100644 test/support/case.ex delete mode 100644 test/support/fixtures/decide-v3.json delete mode 100644 test/support/fixtures/decide.json delete mode 100644 test/support/hackney_stub.ex diff --git a/.gitignore b/.gitignore index 7c288a7..41c4b58 100644 --- a/.gitignore +++ b/.gitignore @@ -28,3 +28,7 @@ posthog-*.tar # Ignore .DS_Store .DS_Store + +# Local Config +config/dev.exs +config/integration.exs diff --git a/.tool-versions b/.tool-versions index cf4dd14..3be0b2c 100644 --- a/.tool-versions +++ b/.tool-versions @@ -1,2 +1,2 @@ -elixir 1.18.3 +elixir 1.18.3-otp-27 erlang 27.3.3 diff --git a/CHANGELOG.md b/CHANGELOG.md index 0c7c5d9..c629903 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,10 +24,10 @@ - Elixir v1.14+ is now a requirement - Feature Flags now return a key called `payload` rather than `value` to better align with the other SDKs -- PostHog now requires you to initialize `Posthog.Application` alongside your supervisor tree. This is required because of our `Cachex` system to properly track your FF usage. +- PostHog now requires you to initialize `PostHog.Application` alongside your supervisor tree. This is required because of our `Cachex` system to properly track your FF usage. - We'll also include local evaluation in the near term, which will also require a GenServer, therefore, requiring us to use a Supervisor. - Added `enabled_capture` configuration option to disable PostHog tracking in development/test environments -- `Posthog.capture` now requires `distinct_id` as a required second argument +- `PostHog.capture` now requires `distinct_id` as a required second argument ## 0.4.4 - 2025-04-14 diff --git a/MIGRATION.md b/MIGRATION.md index 2d51cd9..f847486 100644 --- a/MIGRATION.md +++ b/MIGRATION.md @@ -2,6 +2,10 @@ This is a migration guide for all major version bumps +## v2.0 + +TODO: New library + ## v0-v1 When we stabilized our library, we decided to pull some breaking changes, here are they and how you can migrate: @@ -17,12 +21,12 @@ The library previously supported Elixir v1.12+. You'll need to migrate to Elixir PostHog is consistently upgrading our internal data representation so that's better for customers each and every time. We've recently launched a new version of our `/decide` endpoint called `v4`. This endpoint is slightly different, which caused a small change in behavior for our flags. -`Posthog.FeatureFlag` previously included a key `value` that to represent the internal structure of a flag. It was renamed to `payload` to: +`PostHog.FeatureFlag` previously included a key `value` that to represent the internal structure of a flag. It was renamed to `payload` to: 1. better represent the fact that it can be both an object and a boolean 2. align it more closely with our other SDKs -### Posthog.Application +### PostHog.Application This library now depends on `Cachex`, and includes a supervision tree. There are 2 options: @@ -39,7 +43,7 @@ def application do end ``` -2. Or, if you're already using an Application, you can add add `Posthog.Application` to your own supervision tree: +2. Or, if you're already using an Application, you can add add `PostHog.Application` to your own supervision tree: ```elixir # lib/my_app/application.ex @@ -49,7 +53,7 @@ defmodule MyApp.Application do def start(_type, _args) do children = [ # Your other children... - {Posthog.Application, []} + {PostHog.Application, []} ] opts = [strategy: :one_for_one, name: MyApp.Supervisor] @@ -58,32 +62,32 @@ defmodule MyApp.Application do end ``` -### `Posthog.capture` new signature +### `PostHog.capture` new signature -The signature to `Posthog.capture` has changed. `distinct_id` is now a required argument. +The signature to `PostHog.capture` has changed. `distinct_id` is now a required argument. Here are some examples on how the method is now used: ```elixir # Basic event with `event` and `distinct_id`, both required -Posthog.capture("page_view", "user_123") +PostHog.capture("page_view", "user_123") # Event with properties -Posthog.capture("purchase", "user_123", %{ +PostHog.capture("purchase", "user_123", %{ product_id: "prod_123", price: 99.99, currency: "USD" }) # Event with custom timestamp -Posthog.capture("signup_completed", "user_123", %{}, timestamp: DateTime.utc_now()) +PostHog.capture("signup_completed", "user_123", %{}, timestamp: DateTime.utc_now()) # Event with custom UUID uuid = "..." -Posthog.capture("signup_completed", "user_123", %{}, uuid: uuid) +PostHog.capture("signup_completed", "user_123", %{}, uuid: uuid) # Event with custom headers -Posthog.capture( +PostHog.capture( "login", "user_123", %{}, diff --git a/README.md b/README.md index 117eef2..d0d6bd4 100644 --- a/README.md +++ b/README.md @@ -1,293 +1,169 @@ -# PostHog Elixir Client +# PostHog Elixir SDK [![Hex.pm](https://img.shields.io/hexpm/v/posthog.svg)](https://hex.pm/packages/posthog) [![Documentation](https://img.shields.io/badge/documentation-gray)](https://hexdocs.pm/posthog) -A powerful Elixir client for [PostHog](https://posthog.com), providing seamless integration with PostHog's analytics and feature flag APIs. +A powerful Elixir SDK for [PostHog](https://posthog.com) ## Features -- Event Capture: Track user actions and custom events -- Feature Flags: Manage feature flags and multivariate tests -- Batch Processing: Send multiple events efficiently -- Custom Properties: Support for user, group, and person properties -- Flexible Configuration: Customizable JSON library and API version -- Environment Control: Disable tracking in development/test environments -- Configurable HTTP Client: Customizable timeouts, retries, and HTTP client implementation +* Analytics and Feature Flags support +* Error tracking support +* Powerful process-based context propagation +* Asynchronous event sending with built-in batching +* Overridable HTTP client +* Support for multiple PostHog projects -## Installation +## Getting Started -Add `posthog` to your list of dependencies in `mix.exs`: +Add `PostHog` to your dependencies: ```elixir def deps do [ - {:posthog, "~> 1.0"} + {:posthog, "~> 0.3"} ] end ``` -## Configuration - -Add your PostHog configuration to your application's config: - -```elixir -# config/config.exs -config :posthog, - api_url: "https://us.posthog.com", # Or `https://eu.posthog.com` or your self-hosted PostHog instance URL - api_key: "phc_your_project_api_key" - -# Optional configurations -config :posthog, - json_library: Jason, # Default JSON parser (optional) - capture_enabled: true, # Whether to enable PostHog tracking (optional, defaults to true) - http_client: Posthog.HTTPClient.Hackney, # Default HTTP client (optional) - http_client_opts: [ # HTTP client options (optional) - timeout: 5_000, # Request timeout in milliseconds (default: 5_000) - retries: 3, # Number of retries on failure (default: 3) - retry_delay: 1_000 # Delay between retries in milliseconds (default: 1_000) - ] -``` - -### HTTP Client Configuration - -The library uses Hackney as the default HTTP client, but you can configure its behavior or even swap it for a different implementation by simply implementing the `Posthog.HTTPClient` behavior: - -```elixir -# config/config.exs -config :posthog, - # Use a different HTTP client implementation - http_client: MyCustomHTTPClient, - - # Configure HTTP client options - http_client_opts: [ - timeout: 10_000, # 10 seconds timeout - retries: 5, # 5 retries - retry_delay: 2_000 # 2 seconds between retries - ] -``` - -For testing, you might want to use a mock HTTP client: +Configure the `PostHog` application environment: ```elixir -# test/support/mocks.ex -defmodule Posthog.HTTPClient.Test do - @behaviour Posthog.HTTPClient - - def post(url, body, headers, _opts) do - # Return mock responses for testing - {:ok, %{status: 200, headers: [], body: %{}}} - end -end - -# config/test.exs config :posthog, - http_client: Posthog.HTTPClient.Test + enable: true, + enable_error_tracking: true, + public_url: "https://us.i.posthog.com", + api_key: "phc_my_api_key", + in_app_otp_apps: [:my_app] ``` -### Disabling PostHog capture - -You can disable PostHog tracking by setting `enabled_capture: false` in your configuration. This is particularly useful in development or test environments where you don't want to send actual events to PostHog. - -When `enabled_capture` is set to `false`: - -- All `Posthog.capture/3` and `Posthog.batch/2` calls will succeed silently -- PostHog will still communicate with the server for Feature Flags +Optionally, enable [Plug integration](`PostHog.Integrations.Plug`) for better Error Tracking -This is useful for: +You're all set! 🎉 For more information on configuration, check the `PostHog.Config` module +documentation and the [advanced configuration guide](advanced-configuration.md). -- Development and test environments where you don't want to pollute your PostHog instance -- Situations where you need to temporarily disable tracking +## Capturing Events -Example configuration for development: +To capture an event, use `PostHog.capture/2`: ```elixir -# config/dev.exs -config :posthog, - enabled_capture: false # Disable tracking in development +iex> PostHog.capture("user_signed_up", %{distinct_id: "distinct_id_of_the_user"}) ``` -Example configuration for test: +You can pass additional properties in the last argument: ```elixir -# config/test.exs -config :posthog, - enabled_capture: false # Disable tracking in test environment +iex> PostHog.capture("user_signed_up", %{ + distinct_id: "distinct_id_of_the_user", + login_type: "email", + is_free_trial: true +}) ``` -## Usage +## Special Events -### Capturing Events +`PostHog.capture/2` is very powerful and allows you to send events that have +special meaning. For example: -Simple event capture: +### Create Alias ```elixir -# Basic event with `event` and `distinct_id`, both required -Posthog.capture("page_view", "user_123") - -# Event with properties -Posthog.capture("purchase", "user_123", %{ - product_id: "prod_123", - price: 99.99, - currency: "USD" -}) - -# Event with custom timestamp -Posthog.capture("signup_completed", "user_123", %{}, timestamp: DateTime.utc_now()) - -# Event with custom UUID -uuid = "..." -Posthog.capture("signup_completed", "user_123", %{}, uuid: uuid) - -# Event with custom headers -Posthog.capture( - "login", - "user_123", - %{}, - headers: [{"x-forwarded-for", "127.0.0.1"}] -) +iex> PostHog.capture("$create_alias", %{distinct_id: "frontend_id", alias: "backend_id"}) ``` -### Batch Processing - -Send multiple events in a single request: +### Group Analytics ```elixir -events = [ - {"page_view", "user_123", %{}}, - {"button_click", "user_123", %{button_id: "signup"}} -] - -Posthog.batch(events) +iex> PostHog.capture("$groupidentify", %{ + distinct_id: "static_string_used_for_all_group_events", + "$group_type": "company", + "$group_key": "company_id_in_your_db" +}) ``` -### Feature Flags +## Context -Get all feature flags for a user: +Carrying `distinct_id` around all the time might not be the most convenient +approach, so `PostHog` lets you store it and other properties in a _context_. +The context is stored in the `Logger` metadata, and PostHog will automatically +attach these properties to any events you capture with `PostHog.capture/3`, as long as they +happen in the same process. ```elixir -{:ok, flags} = Posthog.feature_flags("user_123") - -# Response format: -# %{ -# "featureFlags" => %{"flag-1" => true, "flag-2" => "variant-b"}, -# "featureFlagPayloads" => %{ -# "flag-1" => true, -# "flag-2" => %{"color" => "blue", "size" => "large"} -# } -# } +iex> PostHog.set_context(%{distinct_id: "distinct_id_of_the_user"}) +iex> PostHog.capture("page_opened") ``` -Check specific feature flag: +You can scope context by event name. In this case, it will only be attached to a specific event: ```elixir -# Boolean feature flag -{:ok, flag} = Posthog.feature_flag("new-dashboard", "user_123") -# Returns: %Posthog.FeatureFlag{name: "new-dashboard", payload: true, enabled: true} - -# Multivariate feature flag -{:ok, flag} = Posthog.feature_flag("pricing-test", "user_123") -# Returns: %Posthog.FeatureFlag{ -# name: "pricing-test", -# payload: %{"price" => 99, "period" => "monthly"}, -# enabled: "variant-a" -# } - -# Quick boolean check -if Posthog.feature_flag_enabled?("new-dashboard", "user_123") do - # Show new dashboard -end +iex> PostHog.set_event_context("sensitive_event", %{"$process_person_profile": false}) ``` -Feature flags with group properties: +You can always inspect the context: ```elixir -Posthog.feature_flags("user_123", - groups: %{company: "company_123"}, - group_properties: %{company: %{industry: "tech"}}, - person_properties: %{email: "user@example.com"} -) +iex> PostHog.get_context() +%{distinct_id: "distinct_id_of_the_user"} +iex> PostHog.get_event_context("sensitive_event") +%{distinct_id: "distinct_id_of_the_user", "$process_person_profile": true} ``` -#### Stop sending `$feature_flag_called` +## Feature Flags -We automatically send `$feature_flag_called` events so that you can properly keep track of which feature flags you're accessing via `Posthog.feature_flag()` calls. If you wanna save some events, you can disable this by adding `send_feature_flag_event: false` to the call: +`PostHog.get_feature_flag/2` is a thin wrapper over the `/flags` API request: ```elixir -# Boolean feature flag -{:ok, flag} = Posthog.feature_flag("new-dashboard", "user_123", send_feature_flag_event: false) -``` - -## Local Development - -Run `bin/setup` to install development dependencies or run the following commands manually: - -We recommend using `asdf` to manage Elixir and Erlang versions: - -```sh -# Install required versions -asdf install - -# Install dependencies -mix deps.get -mix compile -``` - -Run tests: - -```sh -bin/test -``` - -(This runs `mix test`). +# With just distinct_id +iex> PostHog.get_feature_flag("distinct_id_of_the_user") +{:ok, %Req.Response{status: 200, body: %{"flags" => %{...}}}} -Format code: - -```sh -bin/fmt +# With group id for group-based feature flags +iex> PostHog.get_feature_flag(%{distinct_id: "distinct_id_of_the_user", groups: %{group_type: "group_id"}}) +{:ok, %Req.Response{status: 200, body: %{"flags" => %{}}}} ``` -### Troubleshooting - -If you encounter WX library issues during Erlang installation: +Checking for a feature flag is not a trivial operation and comes in all shapes +and sizes, so users are encouraged to write their own helper function for that. +Here's an example of what it might look like: -```sh -# Disable WX during installation -export KERL_CONFIGURE_OPTIONS="--without-wx" +```elixir +defmodule MyApp.PostHogHelper do + def feature_flag(flag_name, distinct_id \\ nil) do + distinct_id = distinct_id || PostHog.get_context() |> Map.fetch!(:distinct_id) + + response = + case PostHog.get_feature_flag(distinct_id) do + {:ok, %{status: 200, body: %{"flags" => %{^flag_name => %{"variant" => variant}}}}} when not is_nil(variant) -> variant + {:ok, %{status: 200, body: %{"flags" => %{^flag_name => %{"enabled" => true}}}}} -> true + _ -> false + end + + PostHog.capture("$feature_flag_called", %{ + distinct_id: distinct_id, + "$feature_flag": flag_name, + "$feature_flag_response": response + }) + + PostHog.set_context(%{"$feature/#{flag_name}" => response}) + response + end +end ``` -To persist this setting, add it to your shell configuration file (`~/.bashrc`, `~/.zshrc`, or `~/.profile`). - -## Examples - -There's an example console project in `examples/feature_flag_demo` that shows how to use the client. Follow the instructions in [the README](examples/feature_flag_demo/README.md) to run it. - -## Development Tools +## Error Tracking -This project uses several development tools to maintain code quality and security: +Error Tracking is enabled by default. -### Credo +![](assets/screenshot.png) -Credo is a static code analysis tool that helps enforce coding standards and catch potential issues. Run it with: +You can always disable it by setting `enable_error_tracking` to false: -```bash -mix credo --strict -``` - -For more detailed output: - -```bash -mix credo --strict --verbose +```elixir +config :posthog, enable_error_tracking: false ``` -## Contributing - -When contributing to this project, please ensure your code passes all the development tool checks: - -1. Run Credo to ensure code style consistency -2. Run Mix Unused to identify any unused code -3. Run the test suite with `mix test` - -## License +## Multiple PostHog Projects -This project is licensed under the MIT License - see the [LICENSE](./LICENSE) file for details. +If your app works with multiple PostHog projects, PostHog can accommodate you. For +setup instructions, consult the [advanced configuration guide](advanced-configuration.md). diff --git a/assets/screenshot.png b/assets/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..4477eb7892aeb1b008fa0257edce3126e0654e78 GIT binary patch literal 696299 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∓SdlH2Ql=2*Qv;r>>7kfB>1oB+rj<1du|wW{S_ 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

VI^%x?6UfbpF4AW-JXlF@oPi_IuP7)m54318; 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

W#6FxmA@6Yeja0HksO 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

2;!(I*Sb48>I&dZSgOKpc{u<9eft(X9dOPTi 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 BfF1w< literal 0 HcmV?d00001 diff --git a/config/config.exs b/config/config.exs index ecc53c8..d1186fe 100644 --- a/config/config.exs +++ b/config/config.exs @@ -1,5 +1,3 @@ import Config -if config_env() == :test do - config :posthog, api_key: "phc_randomrandomrandom", api_url: "https://us.posthog.com" -end +import_config "#{config_env()}.exs" diff --git a/config/integration.example.exs b/config/integration.example.exs new file mode 100644 index 0000000..1d41692 --- /dev/null +++ b/config/integration.example.exs @@ -0,0 +1,8 @@ +import Config + +config :posthog, :integration_config, + public_url: "https://us.i.posthog.com", + api_key: "phc_mykey", + metadata: [:extra], + capture_level: :info, + in_app_otp_apps: [:logger_handler_kit] diff --git a/config/integration.exs b/config/integration.exs new file mode 100644 index 0000000..5f0db85 --- /dev/null +++ b/config/integration.exs @@ -0,0 +1,8 @@ +import Config + +config :posthog, :integration_config, + public_url: "https://us.i.posthog.com", + api_key: "phc_tEQ8UGRHdPBaT42yocd714aoiW4mBkmx6nTNrxjqLpf", + metadata: [:extra], + capture_level: :info, + in_app_otp_apps: [:logger_handler_kit] diff --git a/config/test.exs b/config/test.exs new file mode 100644 index 0000000..88d6cb8 --- /dev/null +++ b/config/test.exs @@ -0,0 +1,5 @@ +import Config + +config :posthog, enable: false + +if File.exists?("config/integration.exs"), do: import_config("integration.exs") diff --git a/examples/.gitignore b/examples/.gitignore deleted file mode 100644 index 41b44f5..0000000 --- a/examples/.gitignore +++ /dev/null @@ -1,31 +0,0 @@ -# The directory Mix will write compiled artifacts to. -/_build/ -**/_build/ - -# If you run "mix test --cover", coverage assets end up here. -**/cover/ - -# The directory Mix downloads your dependencies sources to. -**/deps/ - -# Where third-party dependencies like ExDoc output generated docs. -**/doc/ - -# Ignore .fetch files in case you like to edit your project deps locally. -**/.fetch - -# If the VM crashes, it generates a dump, let's ignore it too. -erl_crash.dump - -# Also ignore archive artifacts (built via "mix archive.build"). -*.ez - -# Ignore package tarball (built via "mix hex.build"). -**/*.tar - - -# Ignore .env used for local development -.env - -# Ignore .DS_Store -.DS_Store diff --git a/examples/feature_flag_demo/.tool-versions b/examples/feature_flag_demo/.tool-versions deleted file mode 100644 index cf4dd14..0000000 --- a/examples/feature_flag_demo/.tool-versions +++ /dev/null @@ -1,2 +0,0 @@ -elixir 1.18.3 -erlang 27.3.3 diff --git a/examples/feature_flag_demo/README.md b/examples/feature_flag_demo/README.md deleted file mode 100644 index e67bfe1..0000000 --- a/examples/feature_flag_demo/README.md +++ /dev/null @@ -1,50 +0,0 @@ -# Feature Flag Demo - -A simple console application to demonstrate PostHog feature flag functionality. - -## Setup - -1. Install dependencies: - ```bash - bin/setup - ``` - -2. Set your PostHog API key and URL: - ```bash - export POSTHOG_API_KEY="your_project_api_key" - export POSTHOG_API_URL="https://us.i.posthog.com" # Or your self-hosted instance - ``` - -## Usage - -Run the demo with: -```bash -mix run run.exs --flag FLAG_NAME --distinct-id USER_ID [options] -``` - -Options: -- `--flag FLAG_NAME` - The name of the feature flag to check -- `--distinct-id USER_ID` - The distinct ID of the user -- `--groups GROUPS` - JSON string of group properties (optional) -- `--group_properties PROPERTIES` - JSON string of group properties (optional) -- `--person_properties PROPERTIES` - JSON string of person properties (optional) - -Example: -```bash -mix run run.exs --flag "test-flag" --distinct-id "user123" -``` - -## Example Output - -If the feature flag is enabled: - -```bash -Feature flag 'your-feature-flag' is ENABLED -Payload: true -``` - -If the feature flag is disabled: - -```bash -Feature flag 'your-feature-flag' is DISABLED -``` diff --git a/examples/feature_flag_demo/bin/setup b/examples/feature_flag_demo/bin/setup deleted file mode 100755 index 52e94ee..0000000 --- a/examples/feature_flag_demo/bin/setup +++ /dev/null @@ -1,9 +0,0 @@ -#!/usr/bin/env bash -set -e - -cd "$(dirname "$0")/.." - -echo "Installing dependencies..." -mix deps.get - -echo "Setup complete!" \ No newline at end of file diff --git a/examples/feature_flag_demo/config/config.exs b/examples/feature_flag_demo/config/config.exs deleted file mode 100644 index a8bc44b..0000000 --- a/examples/feature_flag_demo/config/config.exs +++ /dev/null @@ -1,9 +0,0 @@ -import Config - -# Remove trailing slash from API URL if present -api_url = System.get_env("POSTHOG_API_URL", "https://us.posthog.com") -api_url = if String.ends_with?(api_url, "/"), do: String.slice(api_url, 0..-2//-1), else: api_url - -config :posthog, - api_url: api_url, - api_key: System.get_env("POSTHOG_API_KEY") diff --git a/examples/feature_flag_demo/lib/feature_flag_demo.ex b/examples/feature_flag_demo/lib/feature_flag_demo.ex deleted file mode 100644 index 3ee8dc5..0000000 --- a/examples/feature_flag_demo/lib/feature_flag_demo.ex +++ /dev/null @@ -1,112 +0,0 @@ -defmodule FeatureFlagDemo do - @moduledoc """ - A simple console application to demonstrate PostHog feature flag functionality. - """ - - @default_api_url "https://us.i.posthog.com" - - def main(args) do - print_info(:config) - args - |> parse_args() - |> process() - end - - defp print_info(:config) do - api_url = System.get_env("POSTHOG_API_URL", @default_api_url) - api_key = System.get_env("POSTHOG_API_KEY") - - IO.puts("Using API URL: #{api_url}") - IO.puts("Using API Key: #{String.slice(api_key || "", 0, 8)}...") - end - - defp print_info(:usage) do - IO.puts(""" - Usage: mix run run.exs --flag FLAG_NAME --distinct-id USER_ID [options] - - Options: - --flag FLAG_NAME The name of the feature flag to check - --distinct-id USER_ID The distinct ID of the user - --groups GROUPS JSON string of group properties (optional) - --group_properties PROPERTIES JSON string of group properties (optional) - --person_properties PROPERTIES JSON string of person properties (optional) - """) - end - - defp parse_args(args) do - {opts, _, _} = OptionParser.parse(args, - switches: [ - flag: :string, - distinct_id: :string, - groups: :string, - group_properties: :string, - person_properties: :string - ], - aliases: [ - d: :distinct_id - ] - ) - opts - end - - defp process([]), do: print_info(:usage) - - defp process([flag: flag, distinct_id: distinct_id] = opts) do - IO.puts("Checking feature flag '#{flag}' for user '#{distinct_id}'...") - - with {:ok, response} <- call_feature_flag(flag, distinct_id, opts), - {:ok, message} <- format_response(flag, response) do - IO.puts(message) - else - {:error, %{status: 403}} -> print_auth_error() - {:error, %{status: status, body: body}} -> IO.puts("Error: Received status #{status}\nResponse body: #{inspect(body)}") - {:error, reason} -> IO.puts("Error: #{inspect(reason)}") - end - end - - defp process(_), do: print_info(:usage) - - defp call_feature_flag(flag, distinct_id, opts) do - Posthog.feature_flag(flag, distinct_id, - groups: parse_json(opts[:groups]), - group_properties: parse_json(opts[:group_properties]), - person_properties: parse_json(opts[:person_properties]) - ) - end - - defp format_response(flag, %{enabled: enabled, payload: payload}) do - message = case enabled do - true -> "Feature flag '#{flag}' is ENABLED" - false -> "Feature flag '#{flag}' is DISABLED" - variant when is_binary(variant) -> "Feature flag '#{flag}' is ENABLED with variant: #{variant}" - end - - message = if payload, do: message <> "\nPayload: #{inspect(payload)}", else: message - {:ok, message} - end - - defp print_auth_error do - IO.puts(""" - Error: Authentication failed (403 Forbidden) - - Please check that: - 1. Your POSTHOG_API_KEY is set correctly - 2. Your POSTHOG_API_URL is set correctly (if using a self-hosted instance) - 3. The API key has the necessary permissions - 4. Your local PostHog instance is running and accessible - - You can set these environment variables: - export POSTHOG_API_KEY="your_project_api_key" - export POSTHOG_API_URL="http://localhost:8000" # Note: no trailing slash - """) - end - - defp parse_json(value) do - case value do - nil -> nil - "" -> nil - json when is_binary(json) -> Jason.decode!(json) - other -> other - end - end -end diff --git a/examples/feature_flag_demo/lib/feature_flag_demo/application.ex b/examples/feature_flag_demo/lib/feature_flag_demo/application.ex deleted file mode 100644 index f8a02ee..0000000 --- a/examples/feature_flag_demo/lib/feature_flag_demo/application.ex +++ /dev/null @@ -1,12 +0,0 @@ -defmodule FeatureFlagDemo.Application do - @moduledoc false - - use Application - - def start(_type, _args) do - children = [] - - opts = [strategy: :one_for_one, name: FeatureFlagDemo.Supervisor] - Supervisor.start_link(children, opts) - end -end diff --git a/examples/feature_flag_demo/mix.exs b/examples/feature_flag_demo/mix.exs deleted file mode 100644 index ad940c1..0000000 --- a/examples/feature_flag_demo/mix.exs +++ /dev/null @@ -1,27 +0,0 @@ -defmodule FeatureFlagDemo.MixProject do - use Mix.Project - - def project do - [ - app: :feature_flag_demo, - version: "0.1.0", - elixir: "~> 1.16", - start_permanent: Mix.env() == :prod, - deps: deps() - ] - end - - def application do - [ - extra_applications: [:logger, :posthog], - mod: {FeatureFlagDemo.Application, []} - ] - end - - defp deps do - [ - {:posthog, path: "../.."}, - {:jason, "~> 1.4"} - ] - end -end diff --git a/examples/feature_flag_demo/mix.lock b/examples/feature_flag_demo/mix.lock deleted file mode 100644 index 62f7b4f..0000000 --- a/examples/feature_flag_demo/mix.lock +++ /dev/null @@ -1,18 +0,0 @@ -%{ - "cachex": {:hex, :cachex, "4.0.4", "192b5a34ae7f2c866cf835d796005c31ccf65e50ee973fbbbda6c773c0f40322", [:mix], [{:eternal, "~> 1.2", [hex: :eternal, repo: "hexpm", optional: false]}, {:ex_hash_ring, "~> 6.0", [hex: :ex_hash_ring, repo: "hexpm", optional: false]}, {:jumper, "~> 1.0", [hex: :jumper, repo: "hexpm", optional: false]}, {:sleeplocks, "~> 1.1", [hex: :sleeplocks, repo: "hexpm", optional: false]}, {:unsafe, "~> 1.0", [hex: :unsafe, repo: "hexpm", optional: false]}], "hexpm", "a0417593fcca4b6bd0330bb3bbd507c379d5287213ab990dbc0dd704cedede0a"}, - "certifi": {:hex, :certifi, "2.14.0", "ed3bef654e69cde5e6c022df8070a579a79e8ba2368a00acf3d75b82d9aceeed", [:rebar3], [], "hexpm", "ea59d87ef89da429b8e905264fdec3419f84f2215bb3d81e07a18aac919026c3"}, - "eternal": {:hex, :eternal, "1.2.2", "d1641c86368de99375b98d183042dd6c2b234262b8d08dfd72b9eeaafc2a1abd", [:mix], [], "hexpm", "2c9fe32b9c3726703ba5e1d43a1d255a4f3f2d8f8f9bc19f094c7cb1a7a9e782"}, - "ex_hash_ring": {:hex, :ex_hash_ring, "6.0.4", "bef9d2d796afbbe25ab5b5a7ed746e06b99c76604f558113c273466d52fa6d6b", [:mix], [], "hexpm", "89adabf31f7d3dfaa36802ce598ce918e9b5b33bae8909ac1a4d052e1e567d18"}, - "hackney": {:hex, :hackney, "1.23.0", "55cc09077112bcb4a69e54be46ed9bc55537763a96cd4a80a221663a7eafd767", [:rebar3], [{:certifi, "~> 2.14.0", [hex: :certifi, repo: "hexpm", optional: false]}, {:idna, "~> 6.1.0", [hex: :idna, repo: "hexpm", optional: false]}, {:metrics, "~> 1.0.0", [hex: :metrics, repo: "hexpm", optional: false]}, {:mimerl, "~> 1.1", [hex: :mimerl, repo: "hexpm", optional: false]}, {:parse_trans, "3.4.1", [hex: :parse_trans, repo: "hexpm", optional: false]}, {:ssl_verify_fun, "~> 1.1.0", [hex: :ssl_verify_fun, repo: "hexpm", optional: false]}, {:unicode_util_compat, "~> 0.7.0", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "6cd1c04cd15c81e5a493f167b226a15f0938a84fc8f0736ebe4ddcab65c0b44e"}, - "idna": {:hex, :idna, "6.1.1", "8a63070e9f7d0c62eb9d9fcb360a7de382448200fbbd1b106cc96d3d8099df8d", [:rebar3], [{:unicode_util_compat, "~> 0.7.0", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "92376eb7894412ed19ac475e4a86f7b413c1b9fbb5bd16dccd57934157944cea"}, - "jason": {:hex, :jason, "1.4.4", "b9226785a9aa77b6857ca22832cffa5d5011a667207eb2a0ad56adb5db443b8a", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "c5eb0cab91f094599f94d55bc63409236a8ec69a21a67814529e8d5f6cc90b3b"}, - "jumper": {:hex, :jumper, "1.0.2", "68cdcd84472a00ac596b4e6459a41b3062d4427cbd4f1e8c8793c5b54f1406a7", [:mix], [], "hexpm", "9b7782409021e01ab3c08270e26f36eb62976a38c1aa64b2eaf6348422f165e1"}, - "metrics": {:hex, :metrics, "1.0.1", "25f094dea2cda98213cecc3aeff09e940299d950904393b2a29d191c346a8486", [:rebar3], [], "hexpm", "69b09adddc4f74a40716ae54d140f93beb0fb8978d8636eaded0c31b6f099f16"}, - "mimerl": {:hex, :mimerl, "1.3.0", "d0cd9fc04b9061f82490f6581e0128379830e78535e017f7780f37fea7545726", [:rebar3], [], "hexpm", "a1e15a50d1887217de95f0b9b0793e32853f7c258a5cd227650889b38839fe9d"}, - "parse_trans": {:hex, :parse_trans, "3.4.1", "6e6aa8167cb44cc8f39441d05193be6e6f4e7c2946cb2759f015f8c56b76e5ff", [:rebar3], [], "hexpm", "620a406ce75dada827b82e453c19cf06776be266f5a67cff34e1ef2cbb60e49a"}, - "sleeplocks": {:hex, :sleeplocks, "1.1.3", "96a86460cc33b435c7310dbd27ec82ca2c1f24ae38e34f8edde97f756503441a", [:rebar3], [], "hexpm", "d3b3958552e6eb16f463921e70ae7c767519ef8f5be46d7696cc1ed649421321"}, - "ssl_verify_fun": {:hex, :ssl_verify_fun, "1.1.7", "354c321cf377240c7b8716899e182ce4890c5938111a1296add3ec74cf1715df", [:make, :mix, :rebar3], [], "hexpm", "fe4c190e8f37401d30167c8c405eda19469f34577987c76dde613e838bbc67f8"}, - "unicode_util_compat": {:hex, :unicode_util_compat, "0.7.0", "bc84380c9ab48177092f43ac89e4dfa2c6d62b40b8bd132b1059ecc7232f9a78", [:rebar3], [], "hexpm", "25eee6d67df61960cf6a794239566599b09e17e668d3700247bc498638152521"}, - "uniq": {:hex, :uniq, "0.6.1", "369660ecbc19051be526df3aa85dc393af5f61f45209bce2fa6d7adb051ae03c", [:mix], [{:ecto, "~> 3.0", [hex: :ecto, repo: "hexpm", optional: true]}], "hexpm", "6426c34d677054b3056947125b22e0daafd10367b85f349e24ac60f44effb916"}, - "unsafe": {:hex, :unsafe, "1.0.2", "23c6be12f6c1605364801f4b47007c0c159497d0446ad378b5cf05f1855c0581", [:mix], [], "hexpm", "b485231683c3ab01a9cd44cb4a79f152c6f3bb87358439c6f68791b85c2df675"}, -} diff --git a/examples/feature_flag_demo/run.exs b/examples/feature_flag_demo/run.exs deleted file mode 100644 index 9bf00cd..0000000 --- a/examples/feature_flag_demo/run.exs +++ /dev/null @@ -1 +0,0 @@ -FeatureFlagDemo.main(System.argv()) \ No newline at end of file diff --git a/guides/advanced-configuration.md b/guides/advanced-configuration.md new file mode 100644 index 0000000..f04007e --- /dev/null +++ b/guides/advanced-configuration.md @@ -0,0 +1,85 @@ +# Advanced Configuration + +By default, PostHog starts its own supervision tree and attaches a logger handler. +This behavior is configured by the `:posthog` option in your global configuration: + +```elixir +config :posthog, + enable: true, + enable_error_tracking: true, + public_url: "https://us.i.posthog.com", + api_key: "phc_asdf" + ... +``` + +However, in certain cases you might want to run this supervision tree yourself. +You can do this by disabling the default supervisor and adding `PostHog.Supervisor` +to your application tree with its own configuration: + +```elixir +# config.exs + +config :posthog, enable: false + +config :my_app, :posthog, + public_url: "https://us.i.posthog.com", + api_key: "phc_asdf" + +# application.ex + +defmodule MyApp.Application do + use Application + + def start(_type, _args) do + posthog_config = Application.fetch_env!(:my_app, :posthog) |> PostHog.Config.validate!() + + :logger.add_handler(:posthog, PostHog.Handler, %{config: posthog_config}) + + children = [ + {PostHog.Supervisor, posthog_config} + ] + + Supervisor.start_link(children, strategy: :one_for_one) + end +end +``` + +## Multiple Instances + +In even more advanced cases, you might want to interact with more than one +PostHog project. In this case, you can run multiple PostHog supervision trees, +one of which can be the default one: + +```elixir +# config.exs +config :posthog, + public_url: "https://us.i.posthog.com", + api_key: "phc_key1" + +config :my_app, :another_posthog, + public_url: "https://us.i.posthog.com", + api_key: "phc_key2", + supervisor_name: AnotherPostHog + +# application.ex +defmodule MyApp.Application do + use Application + + def start(_type, _args) do + posthog_config = Application.fetch_env!(:my_app, :another_posthog) |> PostHog.Config.validate!() + + children = [ + {PostHog.Supervisor, posthog_config} + ] + + Supervisor.start_link(children, strategy: :one_for_one) + end +end +``` + +Then, each function in the `PostHog` module accepts an optional first argument with +the name of the PostHog supervisor tree that will process the capture: + +```elixir +iex> PostHog.capture(AnotherPostHog, "user_signed_up", %{distinct_id: "user123"}) +``` diff --git a/lib/posthog.ex b/lib/posthog.ex index de413b7..ad0f04c 100644 --- a/lib/posthog.ex +++ b/lib/posthog.ex @@ -1,251 +1,202 @@ -defmodule Posthog do - @moduledoc """ - A comprehensive Elixir client for PostHog's analytics and feature flag APIs. +defmodule PostHog do + @typedoc "Name under which an instance of PostHog supervision tree is registered." + @type supervisor_name() :: atom() - This module provides a high-level interface to PostHog's APIs, allowing you to: - - Track user events and actions - - Manage and evaluate feature flags - - Handle multivariate testing - - Process events in batch - - Work with user, group, and person properties + @typedoc "Event name, such as `\"user_signed_up\"` or `\"$create_alias\"`" + @type event() :: String.t() - ## Configuration + @typedoc "string representing distinct ID" + @type distinct_id() :: String.t() - Add your PostHog configuration to your application config: + @typedoc """ + Map representing event properties. - config :posthog, - api_url: "https://us.i.posthog.com", # Or your self-hosted instance - api_key: "phc_your_project_api_key" + Note that it __must__ be JSON-serializable. + """ + @type properties() :: %{optional(String.t()) => any(), optional(atom()) => any()} - Optional configuration: + @doc """ + Returns the configuration map for a named `PostHog` supervisor. - config :posthog, - json_library: Jason, # Default JSON parser (optional) - enabled_capture: true # Whether to enable PostHog tracking (optional, defaults to true) - # Set to false in development/test environments to disable tracking + ## Examples - ### Disabling PostHog + Retrieve the default `PostHog` instance config: - You can disable PostHog tracking by setting `enabled: false` in your configuration. - This is particularly useful in development or test environments where you don't want - to send actual events to PostHog. + %{supervisor_name: PostHog} = PostHog.config() + + Retrieve named instance config: - When `enabled_capture` is set to `false`: - - All `Posthog.capture/3` and `Posthog.batch/2` calls will succeed silently - - PostHog will still communicate with the server for Feature Flags + %{supervisor_name: MyPostHog} = PostHog.config(MyPostHog) + """ + @spec config(supervisor_name()) :: PostHog.Config.config() + def config(name \\ __MODULE__), do: PostHog.Registry.config(name) - This is useful for: - - Development and test environments where you don't want to pollute your PostHog instance - - Situations where you need to temporarily disable tracking + @doc false + def bare_capture(event, distinct_id, %{} = properties), + do: bare_capture(__MODULE__, event, distinct_id, properties) - Example configuration for development: + @doc """ + Captures a single event without retrieving properties from context. - # config/dev.exs - config :posthog, - enabled_capture: false # Disable tracking in development + Capture is a relatively lightweight operation. The event is prepared + synchronously and then sent to PostHog workers to be batched together with + other events and sent over the wire. - Example configuration for test: + ## Examples - # config/test.exs - config :posthog, - enabled_capture: false # Disable tracking in test environment + Capture a simple event: - ## Event Tracking + PostHog.bare_capture("event_captured", "user123") + + Capture an event with properties: - Events can be tracked with various levels of detail: + PostHog.bare_capture("event_captured", "user123", %{backend: "Phoenix"}) + + Capture through a named PostHog instance: - # Basic event - Posthog.capture("page_view", distinct_id: "user_123") + PostHog.bare_capture(MyPostHog, "event_captured", "user123") + """ + @spec bare_capture(supervisor_name(), event(), distinct_id(), properties()) :: :ok + def bare_capture(name \\ __MODULE__, event, distinct_id, properties \\ %{}) do + config = PostHog.Registry.config(name) + properties = Map.merge(properties, config.global_properties) + + event = %{ + event: event, + distinct_id: distinct_id, + timestamp: DateTime.utc_now() |> DateTime.to_iso8601(), + properties: properties + } + + PostHog.Sender.send(event, name) + end - # Event with properties - Posthog.capture("purchase", %{ - distinct_id: "user_123", - product_id: "prod_123", - price: 99.99 - }) + @doc false + def capture(event, %{} = properties), + do: capture(__MODULE__, event, properties) - # Event with custom timestamp - Posthog.capture("signup", "user_123", %{}, timestamp: DateTime.utc_now()) + @doc """ + Captures a single event. - # Event with custom headers (e.g., for IP forwarding) - Posthog.capture("login", "user_123", %{}, headers: [{"x-forwarded-for", "127.0.0.1"}]) + Any context previously set will be included in the event properties. Note that + `distinct_id` is still required. - ## Feature Flags + ## Examples - PostHog feature flags can be used for feature management and A/B testing: + Set context and capture an event: - # Get all feature flags for a user - {:ok, flags} = Posthog.feature_flags("user_123") + PostHog.set_context(%{distinct_id: "user123", "$feature/my-feature-flag": true}) + PostHog.capture("job_started", %{job_name: "JobName"}) + + Set context and capture an event through a named PostHog instance: - # Check specific feature flag - {:ok, flag} = Posthog.feature_flag("new-dashboard", "user_123") + PostHog.set_context(MyPostHog, %{distinct_id: "user123", "$feature/my-feature-flag": true}) + PostHog.capture(MyPostHog, "job_started", %{job_name: "JobName"}) + """ + @spec capture(supervisor_name(), event(), properties()) :: :ok | {:error, :missing_distinct_id} + def capture(name \\ __MODULE__, event, properties \\ %{}) do + context = + name + |> get_event_context(event) + |> Map.merge(properties) + + case Map.pop(context, :distinct_id) do + {nil, _} -> {:error, :missing_distinct_id} + {distinct_id, properties} -> bare_capture(name, event, distinct_id, properties) + end + end - # Quick boolean check - if Posthog.feature_flag_enabled?("new-feature", "user_123") do - # Show new feature + @spec get_feature_flag(supervisor_name(), distinct_id() | map()) :: + PostHog.API.Client.response() + def get_feature_flag(name \\ __MODULE__, distinct_id_or_body) do + body = + case distinct_id_or_body do + %{} = body -> body + distinct_id -> %{distinct_id: distinct_id} end - # Feature flags with group/person properties - Posthog.feature_flags("user_123", - groups: %{company: "company_123"}, - group_properties: %{company: %{industry: "tech"}}, - person_properties: %{email: "user@example.com"} - ) - - ## Batch Processing - - Multiple events can be sent in a single request for better performance: - - events = [ - {"page_view", [distinct_id: "user_123"], nil}, - {"button_click", [distinct_id: "user_123", button: "signup"], nil} - ] - - Posthog.batch(events) - - Each event in the batch is a tuple of `{event_name, properties, timestamp}`. - """ + config = config(name) + PostHog.API.flags(config.api_client, body) + end @doc """ - Captures an event in PostHog. - - ## Parameters - - * `event` - The name of the event (string or atom) - * `params` - Required parameters including `:distinct_id` and optional properties - * `opts` - Optional parameters that can be either a timestamp or a keyword list of options - - ## Options - - * `:headers` - Additional HTTP headers for the request - * `:groups` - Group properties for the event - * `:group_properties` - Additional properties for groups - * `:person_properties` - Properties for the person - * `:timestamp` - Custom timestamp for the event + Sets context for the current process. ## Examples - # Basic event - Posthog.capture("page_view", "user_123") + Set and retrieve context for the current process: - # Event with properties - Posthog.capture("purchase", "user_123", %{ - product_id: "prod_123", - price: 99.99 - }) + > PostHog.set_context(%{foo: "bar"}) + > PostHog.get_context() + %{foo: "bar"} - # Event with timestamp - Posthog.capture("signup", "user_123", %{}, timestamp: DateTime.utc_now()) + Set and retrieve context for a named PostHog instance: - # Event with custom headers - Posthog.capture("login", "user_123", %{}, headers: [{"x-forwarded-for", "127.0.0.1"}]) + > PostHog.set_context(MyPostHog, %{foo: "bar"}) + > PostHog.get_context(MyPostHog) + %{foo: "bar"} """ - alias Posthog.{Client, FeatureFlag} - - @spec capture(Client.event(), Client.distinct_id(), Client.properties(), Client.opts()) :: - Client.result() - defdelegate capture(event, distinct_id, properties \\ %{}, opts \\ []), to: Client + @spec set_context(supervisor_name(), properties()) :: :ok + defdelegate set_context(name \\ __MODULE__, context), to: PostHog.Context, as: :set @doc """ - Sends multiple events to PostHog in a single request. - - ## Parameters - - * `events` - List of event tuples in the format `{event_name, distinct_id, properties}` - * `opts` - Optional parameters for the batch request + Sets context for the current process scoped to a specific event. ## Examples - events = [ - {"page_view", "user_123", %{}}, - {"button_click", "user_123", %{button: "signup"}} - ] - - Posthog.batch(events) - """ - @spec batch(list(tuple()), keyword()) :: Client.result() - defdelegate batch(events, opts \\ []), to: Client - - @doc """ - Retrieves all feature flags for a given distinct ID. - - ## Parameters - - * `distinct_id` - The unique identifier for the user - * `opts` - Optional parameters for the feature flag request - - ## Options + Set and retrieve context scoped to an event: - * `:groups` - Group properties for feature flag evaluation - * `:group_properties` - Additional properties for groups - * `:person_properties` - Properties for the person + > PostHog.set_event_context("$exception", %{foo: "bar"}) + > PostHog.get_event_context("$exception") + %{foo: "bar"} + + Set and retrieve context for a specific event through a named PostHog instance: - ## Examples - - # Basic feature flags request - {:ok, flags} = Posthog.feature_flags("user_123") - - # With group properties - {:ok, flags} = Posthog.feature_flags("user_123", - groups: %{company: "company_123"}, - group_properties: %{company: %{industry: "tech"}} - ) + > PostHog.set_event_context(MyPostHog, "$exception", %{foo: "bar"}) + > PostHog.get_event_context(MyPostHog, "$exception") + %{foo: "bar"} """ - @spec feature_flags(binary(), keyword()) :: Client.result() - defdelegate feature_flags(distinct_id, opts \\ []), to: Client + @spec set_event_context(supervisor_name(), event(), properties()) :: :ok + def set_event_context(name \\ __MODULE__, event, context), + do: PostHog.Context.set(name, event, context) @doc """ - Retrieves information about a specific feature flag for a given distinct ID. + Retrieves context for the current process. - ## Parameters + ## Examples - * `flag` - The name of the feature flag - * `distinct_id` - The unique identifier for the user - * `opts` - Optional parameters for the feature flag request + Set and retrieve context for current process: - ## Examples + > PostHog.set_context(%{foo: "bar"}) + > PostHog.get_context() + %{foo: "bar"} + + Set and retrieve context for a named PostHog instance: - # Boolean feature flag - {:ok, flag} = Posthog.feature_flag("new-dashboard", "user_123") - # Returns: %Posthog.FeatureFlag{name: "new-dashboard", payload: true, enabled: true} - - # Multivariate feature flag - {:ok, flag} = Posthog.feature_flag("pricing-test", "user_123") - # Returns: %Posthog.FeatureFlag{ - # name: "pricing-test", - # payload: %{"price" => 99, "period" => "monthly"}, - # enabled: "variant-a" - # } + > PostHog.set_context(MyPostHog, %{foo: "bar"}) + > PostHog.get_context(MyPostHog) + %{foo: "bar"} """ - @spec feature_flag(binary(), binary(), Client.feature_flag_opts()) :: Client.result() - defdelegate feature_flag(flag, distinct_id, opts \\ []), to: Client + @spec get_context(supervisor_name()) :: properties() + defdelegate get_context(name \\ __MODULE__), to: PostHog.Context, as: :get @doc """ - Checks if a feature flag is enabled for a given distinct ID. - - This is a convenience function that returns a boolean instead of a result tuple. - For multivariate flags, returns true if the flag has any value set. + Retrieves context for the current process scoped to a specific event. - ## Parameters + ## Examples - * `flag` - The name of the feature flag - * `distinct_id` - The unique identifier for the user - * `opts` - Optional parameters for the feature flag request + Set and retrieve context scoped to an event: - ## Examples + > PostHog.set_event_context("$exception", %{foo: "bar"}) + > PostHog.get_event_context("$exception") + %{foo: "bar"} + + Set and retrieve context for a specific event through a named PostHog instance: - if Posthog.feature_flag_enabled?("new-dashboard", "user_123") do - # Show new dashboard - end + > PostHog.set_event_context(MyPostHog, "$exception", %{foo: "bar"}) + > PostHog.get_event_context(MyPostHog, "$exception") + %{foo: "bar"} """ - @spec feature_flag_enabled?(binary(), binary(), keyword()) :: boolean() - def feature_flag_enabled?(flag, distinct_id, opts \\ []) do - flag - |> feature_flag(distinct_id, opts) - |> case do - {:ok, %FeatureFlag{enabled: false}} -> false - {:ok, %FeatureFlag{}} -> true - _ -> false - end - end + @spec get_event_context(supervisor_name()) :: properties() + def get_event_context(name \\ __MODULE__, event), do: PostHog.Context.get(name, event) end diff --git a/lib/posthog/api.ex b/lib/posthog/api.ex new file mode 100644 index 0000000..2d4e5dc --- /dev/null +++ b/lib/posthog/api.ex @@ -0,0 +1,10 @@ +defmodule PostHog.API do + @moduledoc false + def post_batch(%__MODULE__.Client{} = client, batch) do + client.module.request(client.client, :post, "/batch", json: %{batch: batch}) + end + + def flags(%__MODULE__.Client{} = client, event) do + client.module.request(client.client, :post, "/flags", json: event, params: %{v: 2}) + end +end diff --git a/lib/posthog/api/client.ex b/lib/posthog/api/client.ex new file mode 100644 index 0000000..a13c791 --- /dev/null +++ b/lib/posthog/api/client.ex @@ -0,0 +1,79 @@ +defmodule PostHog.API.Client do + @moduledoc """ + Behaviour and the default implementation of a PostHog API client. Uses `Req`. + + Users are unlikely to interact with this module directly, but here's an + example just in case: + + ## Example + + > client = PostHog.API.Client.client("phc_abcdedfgh", "https://us.i.posthog.com") + %PostHog.API.Client{ + client: %Req.Request{...}, + module: PostHog.API.Client + } + + > client.module.request(client.client, :post, "/flags", json: %{distinct_id: "user123"}, params: %{v: 2, config: true}) + {:ok, %Req.Response{status: 200, body: %{...}}} + """ + @behaviour __MODULE__ + + defstruct [:client, :module] + + @type t() :: %__MODULE__{ + client: client(), + module: atom() + } + @typedoc """ + Arbitrary term that is passed as the first argument to the `c:request/4` callback. + + For the default client, this is a `t:Req.Request.t/0` struct. + """ + @type client() :: any() + @type response() :: {:ok, %{status: non_neg_integer(), body: any()}} | {:error, Exception.t()} + + @doc """ + Creates a struct that encapsulates all information required for making requests to PostHog's public endpoints. + """ + @callback client(api_key :: String.t(), cloud :: String.t()) :: t() + + @doc """ + Sends an API request. + + Things such as the API token are expected to be baked into the `client` argument. + """ + @callback request(client :: client(), method :: atom(), url :: String.t(), opts :: keyword()) :: + response() + + @impl __MODULE__ + def client(api_key, public_url) do + client = + Req.new(base_url: public_url) + |> Req.Request.put_private(:api_key, api_key) + + %__MODULE__{client: client, module: __MODULE__} + end + + @impl __MODULE__ + def request(client, method, url, opts) do + client + |> Req.merge( + method: method, + url: url + ) + |> Req.merge(opts) + |> then(fn req -> + req + |> Req.Request.fetch_option(:json) + |> case do + {:ok, json} -> + api_key = Req.Request.get_private(req, :api_key) + Req.merge(req, json: Map.put_new(json, :api_key, api_key)) + + :error -> + req + end + end) + |> Req.request() + end +end diff --git a/lib/posthog/application.ex b/lib/posthog/application.ex index 4d27717..ac877b9 100644 --- a/lib/posthog/application.ex +++ b/lib/posthog/application.ex @@ -1,110 +1,22 @@ -defmodule Posthog.Application do - @moduledoc """ - The main application module for PostHog Elixir client. - - This module handles the application lifecycle and supervises the necessary processes - for the PostHog client to function properly. It primarily manages the Cachex instance - used for feature flag event deduplication. - - ## Features - - * Validates configuration before starting - * Manages a Cachex instance for feature flag event deduplication - * Implements LRU (Least Recently Used) caching strategy - * Automatically prunes cache entries to maintain size limits - - ## Cache Configuration - - The Cachex instance is configured with: - * Maximum of 50,000 entries (matching posthog-python's limit) - * LRU (Least Recently Used) eviction policy - * Automatic pruning every 10 seconds - * Access tracking for LRU implementation - - ## Usage - - The application is automatically started by the Elixir runtime when included - in your application's supervision tree. You don't need to start it manually. - - To access the cache name in your code: - - Posthog.Application.cache_name() - # Returns: :posthog_feature_flag_cache - """ +defmodule PostHog.Application do + @moduledoc false use Application - import Cachex.Spec - - @cache_name :posthog_feature_flag_cache - - @doc """ - Returns the name of the Cachex instance used for feature flag event deduplication. - - ## Returns - - * `atom()` - The cache name, always `:posthog_feature_flag_cache` at the moment - - ## Examples - - iex> Posthog.Application.cache_name() - :posthog_feature_flag_cache - """ - def cache_name, do: @cache_name - - @doc """ - Starts the PostHog application. - - This callback is called by the Elixir runtime when the application starts. - It performs the following tasks: - 1. Validates the PostHog configuration - 2. Sets up the Cachex instance for feature flag event deduplication - 3. Starts the supervision tree - - ## Parameters - - * `_type` - The type of start (ignored) - * `args` - Keyword list of arguments, can include: - - ## Returns - - * `{:ok, pid()}` on successful start - * `{:error, term()}` on failure - - ## Examples - - # Start with default configuration - Posthog.Application.start(:normal, []) - """ - def start(_type, args) do - # Validate configuration before starting - Posthog.Config.validate_config!() - cache_name = Keyword.get(args, :cache_name, @cache_name) + def start(_type, _args) do + children = + case PostHog.Config.read!() do + {%{enable: true, enable_error_tracking: error_tracking}, config} -> + if error_tracking do + :logger.add_handler(:posthog, PostHog.Handler, %{config: config}) + end - children = [ - # Start Cachex for feature flag event deduplication. - # The 50,000 entries limit is the same used for `posthog-python`, but otherwise arbitrary. - {Cachex, - name: cache_name, - hooks: [ - # Turns this into a LRU cache by writing to the log when an item is accessed - hook(module: Cachex.Limit.Accessed), + [{PostHog.Supervisor, config}] - # Runs a `Cachex.prune/3` call every X seconds (see below) to keep it under the entries limit - hook( - module: Cachex.Limit.Scheduled, - args: { - 50_000, - # options for `Cachex.prune/3` - [], - # options for `Cachex.Limit.Scheduled`, run every 10 seconds - [frequency: 10_000] - } - ) - ]} - ] + _ -> + [] + end - opts = [strategy: :one_for_one, name: Posthog.Supervisor] - Supervisor.start_link(children, opts) + Supervisor.start_link(children, strategy: :one_for_one, name: __MODULE__) end end diff --git a/lib/posthog/client.ex b/lib/posthog/client.ex deleted file mode 100644 index 2b47781..0000000 --- a/lib/posthog/client.ex +++ /dev/null @@ -1,443 +0,0 @@ -require Logger - -defmodule Posthog.Client do - @moduledoc """ - Low-level HTTP client for interacting with PostHog's API. - - This module handles the direct HTTP communication with PostHog's API endpoints. - It provides functions for: - - Sending event capture requests - - Processing batch events - - Retrieving feature flag information - - While this module can be used directly, it's recommended to use the higher-level - functions in the `Posthog` module instead. - - ## Configuration - - The client uses the following configuration from your application: - - config :posthog, - api_url: "https://us.i.posthog.com", # Required - api_key: "phc_your_project_api_key", # Required - json_library: Jason, # Optional (default: Jason) - enabled_capture: true, # Optional (default: true) - http_client: Posthog.HTTPClient.Hackney, # Optional (default: Posthog.HTTPClient.Hackney) - http_client_opts: [ # Optional - timeout: 5_000, # 5 seconds - retries: 3, # Number of retries - retry_delay: 1_000 # 1 second between retries - ] - - ### Disabling capture - - When `enabled_capture` is set to `false`: - - All `Posthog.capture/3` and `Posthog.batch/2` calls will succeed silently - - PostHog will still communicate with the server for Feature Flags - - This is useful for: - - Development and test environments where you don't want to pollute your PostHog instance - - Situations where you need to temporarily disable tracking - - Example configuration for disabling the client: - - # config/dev.exs or config/test.exs - config :posthog, - enabled_capture: false - - ## API Endpoints - - The client interacts with the following PostHog API endpoints: - - `/capture` - For sending individual and batch events - - `/decide` - For retrieving feature flag information - - ## Error Handling - - All functions return a result tuple: - - `{:ok, response}` for successful requests - - `{:error, response}` for failed requests with a response - - `{:error, term()}` for other errors (network issues, etc.) - - ## Examples - - # Capture an event - Posthog.Client.capture("page_view", "user_123") - - # Send batch events - events = [ - {"page_view", "user_123", %{}}, - {"click", "user_123", %{}} - ] - Posthog.Client.batch(events, timestamp: DateTime.utc_now()) - - # Get feature flags - Posthog.Client.feature_flags("user_123", groups: %{team: "engineering"}) - """ - - alias Posthog.FeatureFlag - - @typedoc """ - Result of a PostHog operation. - """ - @type result() :: {:ok, response()} | {:error, response() | term()} - - @typedoc """ - HTTP headers in the format expected by :hackney. - """ - @type headers :: [{binary(), binary()}] - - @typedoc """ - Response from the PostHog API. - Contains the status code, headers, and parsed JSON body (if any). - """ - @type response :: %{status: pos_integer(), headers: headers(), body: map() | nil} - - @typedoc """ - Event name, can be either an atom or a binary string. - """ - @type event :: atom() | binary() - - @typedoc """ - Distinct ID for the person or group. - """ - @type distinct_id :: binary() - - @typedoc """ - Properties that can be attached to events or feature flag requests. - """ - @type properties :: %{optional(atom() | String.t()) => term()} - - @typedoc """ - Timestamp for events. Can be a DateTime, NaiveDateTime, or ISO8601 string. - """ - @type timestamp :: String.t() - - @typedoc """ - Options that can be passed to API requests. - - * `:headers` - Additional HTTP headers to include in the request - * `:groups` - Group properties for feature flag evaluation - * `:group_properties` - Additional properties for groups - * `:person_properties` - Properties for the person - * `:timestamp` - Custom timestamp for events - * `:uuid` - Custom UUID for the event - """ - @type opts :: [ - headers: headers(), - groups: map(), - group_properties: map(), - person_properties: map(), - timestamp: timestamp(), - uuid: Uniq.UUID.t() - ] - - @typedoc """ - Feature flag specific options that should not be passed to capture events. - - * `:send_feature_flag_event` - Whether to capture the `$feature_flag_called` event (default: true) - """ - @type feature_flag_opts :: opts() | [send_feature_flag_event: boolean()] - - @typedoc """ - Cache key for the `$feature_flag_called` event. - """ - @type cache_key() :: {:feature_flag_called, binary(), binary()} - - @typep feature_flag_called_event_properties_key() :: - :"$feature_flag" - | :"$feature_flag_response" - | :"$feature_flag_id" - | :"$feature_flag_version" - | :"$feature_flag_reason" - | :"$feature_flag_request_id" - | :distinct_id - @typep feature_flag_called_event_properties() :: %{ - feature_flag_called_event_properties_key() => any() | nil - } - - # Adds default headers to the request. - # - # ## Parameters - # - # * `additional_headers` - List of additional headers to include - # - # ## Examples - # - # headers([{"x-forwarded-for", "127.0.0.1"}]) - @spec headers(headers()) :: headers() - defp headers(additional_headers) do - Enum.concat(additional_headers || [], [{"content-type", "application/json"}]) - end - - @doc """ - Captures a single event in PostHog. - - ## Parameters - - * `event` - The name of the event (string or atom) - * `params` - Event properties including `:distinct_id` - * `opts` - Additional options (see `t:opts/0`) - - ## Examples - - # Basic event - Posthog.Client.capture("page_view", "user_123") - - # Event with properties and timestamp - Posthog.Client.capture("purchase", "user_123", %{ - product_id: "123", - price: 99.99 - }, timestamp: DateTime.utc_now()) - - # Event with custom headers - Posthog.Client.capture("login", "user_123", %{}, headers: [{"x-forwarded-for", "127.0.0.1"}]) - """ - @spec capture(event(), distinct_id(), properties(), opts()) :: result() - def capture(event, distinct_id, properties \\ %{}, opts \\ []) when is_list(opts) do - if Posthog.Config.enabled_capture?() do - posthog_event = Posthog.Event.new(event, distinct_id, properties, opts) - post!("/capture", Posthog.Event.to_api_payload(posthog_event), headers(opts[:headers])) - else - disabled_capture_response() - end - end - - @doc """ - Sends multiple events to PostHog in a single request. - - ## Parameters - - * `events` - List of event tuples in the format `{event_name, distinct_id, properties}` - * `opts` - Additional options (see `t:opts/0`) - * `headers` - Additional HTTP headers - - ## Examples - - events = [ - {"page_view", "user_123", %{}}, - {"click", "user_123", %{button: "signup"}} - ] - - Posthog.Client.batch(events, %{timestamp: DateTime.utc_now()}) - """ - @spec batch([{event(), distinct_id(), properties()}], opts(), headers()) :: result() - def batch(events, opts) when is_list(opts) do - batch(events, opts, headers(opts[:headers])) - end - - def batch(events, opts, headers) do - if Posthog.Config.enabled_capture?() do - timestamp = Keyword.get_lazy(opts, :timestamp, fn -> DateTime.utc_now() end) - - posthog_events = - for {event, distinct_id, properties} <- events do - Posthog.Event.new(event, distinct_id, properties, timestamp: timestamp) - end - - post!("/capture", Posthog.Event.batch_payload(posthog_events), headers) - else - disabled_capture_response() - end - end - - @doc """ - Retrieves feature flags for a given distinct ID. - - ## Parameters - - * `distinct_id` - The unique identifier for the user - * `opts` - Additional options (see `t:opts/0`) - - ## Examples - - # Basic feature flags request - Posthog.Client.feature_flags("user_123") - - # With group properties - Posthog.Client.feature_flags("user_123", - groups: %{company: "company_123"}, - group_properties: %{company: %{industry: "tech"}} - ) - """ - @spec feature_flags(binary(), opts()) :: result() - def feature_flags(distinct_id, opts) do - case _decide_request(distinct_id, opts) do - {:ok, response} -> - {:ok, - %{ - feature_flags: response.feature_flags, - feature_flag_payloads: response.feature_flag_payloads - }} - - err -> - err - end - end - - @doc """ - Retrieves information about a specific feature flag for a given distinct ID. - - ## Parameters - - * `flag` - The name of the feature flag - * `distinct_id` - The unique identifier for the user - * `opts` - Optional parameters for the feature flag request - - ## Examples - - # Boolean feature flag - {:ok, flag} = Posthog.feature_flag("new-dashboard", "user_123") - # Returns: %Posthog.FeatureFlag{name: "new-dashboard", payload: true, enabled: true} - - # Multivariate feature flag - {:ok, flag} = Posthog.feature_flag("pricing-test", "user_123") - # Returns: %Posthog.FeatureFlag{ - # name: "pricing-test", - # payload: %{"price" => 99, "period" => "monthly"}, - # enabled: "variant-a" - # } - """ - @spec feature_flag(binary(), binary(), feature_flag_opts()) :: result() - def feature_flag(flag, distinct_id, opts \\ []) do - with {:ok, response} <- _decide_request(distinct_id, opts), - enabled when not is_nil(enabled) <- response.feature_flags[flag] do - # Only capture if send_feature_flag_event is true (default) - if Keyword.get(opts, :send_feature_flag_event, true), - do: - capture_feature_flag_called_event( - distinct_id, - %{ - "$feature_flag" => flag, - "$feature_flag_response" => enabled - }, - response - ) - - {:ok, FeatureFlag.new(flag, enabled, Map.get(response.feature_flag_payloads, flag))} - else - {:error, _} = err -> err - nil -> {:error, :not_found} - end - end - - @spec capture_feature_flag_called_event( - distinct_id(), - feature_flag_called_event_properties(), - map() - ) :: - :ok - defp capture_feature_flag_called_event(distinct_id, properties, response) do - # Create a unique key for this distinct_id and flag combination - cache_key = {:feature_flag_called, distinct_id, properties["$feature_flag"]} - - # Check if we've seen this combination before using Cachex - case Cachex.exists?(Posthog.Application.cache_name(), cache_key) do - {:ok, false} -> - do_capture_feature_flag_called_event(cache_key, distinct_id, properties, response) - - # Should be `{:error, :no_cache}` but Dyalixir is wrongly assuming that doesn't exist - {:error, _} -> - # Cache doesn't exist, let's capture the event PLUS notify user they should be initing it - do_capture_feature_flag_called_event(cache_key, distinct_id, properties, response) - - Logger.error(""" - [posthog] Cachex process `#{inspect(Posthog.Application.cache_name())}` is not running. - - ➤ This likely means you forgot to include `posthog` as an application dependency (mix.exs): - - Example: - - extra_applications: [..., :posthog] - - - ➤ Or, add `Posthog.Application` to your supervision tree (lib/my_lib/application.ex). - - Example: - {Posthog.Application, []} - """) - - {:ok, true} -> - # Entry already exists, no need to do anything - :ok - end - end - - @spec do_capture_feature_flag_called_event( - cache_key(), - distinct_id(), - feature_flag_called_event_properties(), - map() - ) :: :ok - defp do_capture_feature_flag_called_event(cache_key, distinct_id, properties, response) do - flag = properties["$feature_flag"] - - properties = - if Map.has_key?(response, :flags) do - Map.merge(properties, %{ - "$feature_flag_id" => response.flags[flag]["metadata"]["id"], - "$feature_flag_version" => response.flags[flag]["metadata"]["version"], - "$feature_flag_reason" => response.flags[flag]["reason"]["description"] - }) - else - properties - end - - properties = - if Map.get(response, :request_id) do - Map.put(properties, "$feature_flag_request_id", response.request_id) - else - properties - end - - # Send the event to our server - # NOTE: Calling this with `Posthog.Client.capture/4` rather than `capture/4` - # because mocks won't work properly unless we use the fully defined function - Posthog.Client.capture("$feature_flag_called", distinct_id, properties, []) - - # Add new entry to cache using Cachex - Cachex.put(Posthog.Application.cache_name(), cache_key, true) - - :ok - end - - @doc false - def _decide_request(distinct_id, opts) do - body = - opts - |> Keyword.take(~w[groups group_properties person_properties]a) - |> Enum.reduce(%{distinct_id: distinct_id}, fn {k, v}, acc -> Map.put(acc, k, v) end) - - case post!("/decide?v=4", body, headers(opts[:headers])) do - {:ok, %{body: body}} -> {:ok, Posthog.FeatureFlag.process_response(body)} - err -> err - end - end - - @doc false - @spec post!(binary(), map(), headers()) :: {:ok, response()} | {:error, response() | term()} - defp post!(path, %{} = body, headers) do - body = - body - |> Map.put(:api_key, Posthog.Config.api_key()) - |> encode(Posthog.Config.json_library()) - - url = Posthog.Config.api_url() <> path - - Posthog.Config.http_client().post( - url, - body, - headers, - Posthog.Config.http_client_opts() - ) - end - - @doc false - defp disabled_capture_response do - {:ok, %{status: 200, headers: [], body: nil}} - end - - @doc false - @spec encode(term(), module()) :: iodata() - defp encode(data, Jason), do: Jason.encode_to_iodata!(data) - defp encode(data, library), do: library.encode!(data) -end diff --git a/lib/posthog/config.ex b/lib/posthog/config.ex index 057eaf0..4388d85 100644 --- a/lib/posthog/config.ex +++ b/lib/posthog/config.ex @@ -1,153 +1,138 @@ -defmodule Posthog.Config do +defmodule PostHog.Config do + @configuration_schema [ + public_url: [ + type: :string, + required: true, + doc: "`https://us.i.posthog.com` for US cloud or `https://eu.i.posthog.com` for EU cloud" + ], + api_key: [ + type: :string, + required: true, + doc: """ + Your PostHog Project API key. Find it in your project's settings under the Project ID section. + """ + ], + api_client_module: [ + type: :atom, + default: PostHog.API.Client, + doc: "API client to use" + ], + supervisor_name: [ + type: :atom, + default: PostHog, + doc: "Name of the supervisor process running PostHog" + ], + metadata: [ + type: {:list, :atom}, + default: [], + doc: "List of metadata keys to include in event properties" + ], + capture_level: [ + type: {:or, [{:in, Logger.levels()}, nil]}, + default: :error, + doc: + "Minimum level for logs that should be captured as errors. Errors with `crash_reason` are always captured." + ], + in_app_otp_apps: [ + type: {:list, :atom}, + default: [], + doc: + "List of OTP app names of your applications. Stacktrace entries that belong to these apps will be marked as \"in_app\"." + ] + ] + + @convenience_schema [ + enable: [ + type: :boolean, + default: true, + doc: "Automatically start PostHog?" + ], + enable_error_tracking: [ + type: :boolean, + default: true, + doc: "Automatically start the logger handler for error tracking?" + ] + ] + + @compiled_configuration_schema NimbleOptions.new!(@configuration_schema) + @compiled_convenience_schema NimbleOptions.new!(@convenience_schema) + @moduledoc """ - Handles configuration validation and defaults for the PostHog client. + PostHog configuration - This module validates the configuration at compile time and provides - sensible defaults for optional values. - """ + ## Configuration Schema - @app :posthog + ### Application Configuration - @doc """ - Validates and returns the API URL from the configuration. + These are convenience options that only affect how PostHog's own application behaves. - Raises a helpful error message if the URL is missing or invalid. - """ - def api_url do - case Application.get_env(@app, :api_url) do - url when is_binary(url) and url != "" -> - url - - nil -> - raise """ - PostHog API URL is not configured. Please add it to your config: - - config :posthog, - api_url: "https://us.i.posthog.com" # or your self-hosted instance - """ - - url -> - raise """ - Invalid PostHog API URL: #{inspect(url)} - - Expected a non-empty string URL, for example: - config :posthog, - api_url: "https://us.i.posthog.com" # or your self-hosted instance - """ - end - end + #{NimbleOptions.docs(@compiled_convenience_schema)} - @doc """ - Validates and returns the API key from the configuration. + ### Supervisor Configuration + + This is the main options block that configures each supervision tree instance. - Raises a helpful error message if the key is missing or invalid. + #{NimbleOptions.docs(@compiled_configuration_schema)} """ - def api_key do - case Application.get_env(@app, :api_key) do - key when is_binary(key) and key != "" -> - key - - nil -> - raise """ - PostHog API key is not configured. Please add it to your config: - - config :posthog, - api_key: "phc_your_project_api_key" - """ - - key -> - raise """ - Invalid PostHog API key: #{inspect(key)} - - Expected a non-empty string API key, for example: - config :posthog, - api_key: "phc_your_project_api_key" - """ - end - end - @doc """ - Returns whether event capture is enabled. + @typedoc """ + Map containing valid configuration. - Defaults to true if not configured. + It mostly follows `t:options/0`, but the internal structure shouldn't be relied upon. """ - def enabled_capture? do - Application.get_env(@app, :enabled_capture, true) - end + @opaque config() :: map() - @doc """ - Returns the JSON library to use for encoding/decoding. + @type options() :: unquote(NimbleOptions.option_typespec(@compiled_configuration_schema)) - Defaults to Jason if not configured. - """ - def json_library do - Application.get_env(@app, :json_library, Jason) - end + @doc false + def read!() do + configuration_options = + Application.get_all_env(:posthog) |> Keyword.take(Keyword.keys(@configuration_schema)) - @doc """ - Returns the HTTP client module to use. + convenience_options = + Application.get_all_env(:posthog) |> Keyword.take(Keyword.keys(@convenience_schema)) - Defaults to Posthog.HTTPClient.Hackney if not configured. - """ - def http_client do - Application.get_env(@app, :http_client, Posthog.HTTPClient.Hackney) + with %{enable: true} = conv <- + convenience_options + |> NimbleOptions.validate!(@compiled_convenience_schema) + |> Map.new() do + config = validate!(configuration_options) + {conv, config} + end end @doc """ - Returns the HTTP client options. - - Defaults to: - - timeout: 5_000 (5 seconds) - - retries: 3 - - retry_delay: 1_000 (1 second) + See `validate/1`. """ - def http_client_opts do - Application.get_env(@app, :http_client_opts, - timeout: 5_000, - retries: 3, - retry_delay: 1_000 - ) + @spec validate!(options()) :: config() + def validate!(options) do + {:ok, config} = validate(options) + config end @doc """ - Validates the entire PostHog configuration at compile time. - - This ensures that all required configuration is present and valid - before the application starts. + Validates configuration against the schema. """ - def validate_config! do - # Validate required config - api_url() - api_key() - - # Validate optional config - if json_library() != Jason do - unless Code.ensure_loaded?(json_library()) do - raise """ - Configured JSON library #{inspect(json_library())} is not available. - - Make sure to add it to your dependencies in mix.exs: - defp deps do - [{#{inspect(json_library())}, "~> x.x"}] - end - """ - end + @spec validate(options()) :: + {:ok, config()} | {:error, NimbleOptions.ValidationError.t()} + def validate(options) do + with {:ok, validated} <- NimbleOptions.validate(options, @compiled_configuration_schema) do + config = Map.new(validated) + client = config.api_client_module.client(config.api_key, config.public_url) + + final_config = + config + |> Map.put(:api_client, client) + |> Map.put( + :in_app_modules, + config.in_app_otp_apps |> Enum.flat_map(&Application.spec(&1, :modules)) |> MapSet.new() + ) + |> Map.put(:global_properties, %{ + "$lib": "posthog-elixir", + "$lib_version": Application.spec(:posthog, :vsn) |> to_string() + }) + + {:ok, final_config} end - - # Validate HTTP client - http_client = http_client() - - unless Code.ensure_loaded?(http_client) do - raise """ - Configured HTTP client #{inspect(http_client)} is not available. - - Make sure to add it to your dependencies in mix.exs: - defp deps do - [{:hackney, "~> x.x"}] - end - """ - end - - :ok end end diff --git a/lib/posthog/context.ex b/lib/posthog/context.ex new file mode 100644 index 0000000..d83c8ac --- /dev/null +++ b/lib/posthog/context.ex @@ -0,0 +1,45 @@ +defmodule PostHog.Context do + @moduledoc false + + @logger_metadata_key :__posthog__ + + def set(name_scope, event_scope \\ :all, context) do + metadata = + with :undefined <- :logger.get_process_metadata(), do: %{} + + current_context = Map.get(metadata, @logger_metadata_key, %{}) + + new_value = + case get_in(current_context, [name_scope, event_scope]) do + %{} = existing -> Map.merge(existing, context) + nil -> context + end + + updated_context = + put_in( + current_context, + [Access.key(name_scope, %{}), Access.key(event_scope, %{})], + new_value + ) + + :logger.update_process_metadata(%{@logger_metadata_key => updated_context}) + end + + def get(name_scope, event_scope \\ :all) do + case :logger.get_process_metadata() do + %{@logger_metadata_key => context} -> + get_in(context, [key_and_all(name_scope), key_and_all(event_scope)]) |> Map.new() + + _ -> + %{} + end + end + + defp key_and_all(key) do + fn :get, data, next -> + scoped = Map.get(data, key, %{}) + all = Map.get(data, :all, %{}) + Enum.flat_map([all, scoped], next) + end + end +end diff --git a/lib/posthog/event.ex b/lib/posthog/event.ex deleted file mode 100644 index 403a1ed..0000000 --- a/lib/posthog/event.ex +++ /dev/null @@ -1,178 +0,0 @@ -defmodule Posthog.Event do - @moduledoc """ - Represents a PostHog event with all its properties and metadata. - - This struct encapsulates all the information needed to send an event to PostHog, - including the event name, distinct ID, properties, timestamp, and UUID. - - ## Examples - - # Create a basic event - iex> event = Posthog.Event.new("page_view", "user_123") - iex> event.event - "page_view" - iex> event.distinct_id - "user_123" - iex> event.properties - %{} - iex> is_binary(event.uuid) - true - iex> is_binary(event.timestamp) - true - - # Create an event with properties - iex> event = Posthog.Event.new("purchase", "user_123", %{price: 99.99}) - iex> event.properties - %{price: 99.99} - - # Create an event with custom timestamp - iex> timestamp = "2023-01-01T00:00:00Z" - iex> event = Posthog.Event.new("login", "user_123", %{}, timestamp: timestamp) - iex> event.timestamp - "2023-01-01T00:00:00Z" - - # Create an event with custom UUID - iex> uuid = "123e4567-e89b-12d3-a456-426614174000" - iex> event = Posthog.Event.new("signup", "user_123", %{}, uuid: uuid) - iex> event.uuid - "123e4567-e89b-12d3-a456-426614174000" - - # Convert event to API payload - iex> event = Posthog.Event.new("page_view", "user_123", %{page: "home"}) - iex> payload = Posthog.Event.to_api_payload(event) - iex> payload.event - "page_view" - iex> payload.distinct_id - "user_123" - iex> payload.properties["page"] - "home" - iex> payload.properties["$lib"] - "posthog-elixir" - iex> is_binary(payload.uuid) - true - iex> is_binary(payload.timestamp) - true - - # Create batch payload - iex> events = [ - ...> Posthog.Event.new("page_view", "user_123", %{page: "home"}), - ...> Posthog.Event.new("click", "user_123", %{button: "signup"}) - ...> ] - iex> batch = Posthog.Event.batch_payload(events) - iex> length(batch.batch) - 2 - iex> [first, second] = batch.batch - iex> first.event - "page_view" - iex> second.event - "click" - """ - - @type t :: %__MODULE__{ - event: String.t(), - distinct_id: String.t(), - properties: map(), - uuid: String.t(), - timestamp: String.t() - } - - @type event_name :: atom() | String.t() - @type distinct_id :: String.t() - @type properties :: map() - @type timestamp :: String.t() | DateTime.t() | NaiveDateTime.t() - - defstruct [:event, :distinct_id, :properties, :uuid, :timestamp] - - @lib_name "posthog-elixir" - @lib_version Mix.Project.config()[:version] - - @doc """ - Creates a new PostHog event. - - ## Parameters - - * `event` - The name of the event (string or atom) - * `distinct_id` - The distinct ID for the person or group - * `properties` - Event properties (optional, defaults to empty map) - * `timestamp` - Optional timestamp for the event (defaults to current UTC time) - * `uuid` - Optional UUID for the event (defaults to a new UUID7) - - ## Examples - - # Basic event - Posthog.Event.new("page_view", "user_123") - - # Event with properties - Posthog.Event.new("purchase", "user_123", %{price: 99.99}) - - # Event with custom timestamp - Posthog.Event.new("login", "user_123", %{}, timestamp: DateTime.utc_now()) - """ - @spec new(event_name(), distinct_id(), properties(), keyword()) :: t() - def new(event, distinct_id, properties \\ %{}, opts \\ []) do - timestamp = - Keyword.get_lazy(opts, :timestamp, fn -> - DateTime.utc_now() |> DateTime.to_iso8601() - end) - - uuid = Keyword.get(opts, :uuid) || Uniq.UUID.uuid7() - - %__MODULE__{ - event: to_string(event), - distinct_id: distinct_id, - properties: properties, - uuid: uuid, - timestamp: timestamp - } - end - - @doc """ - Converts the event struct to a map suitable for sending to the PostHog API. - """ - @spec to_api_payload(t()) :: map() - def to_api_payload(%__MODULE__{} = event) do - %{ - event: event.event, - distinct_id: event.distinct_id, - properties: deep_stringify_keys(Map.merge(lib_properties(), Map.new(event.properties))), - uuid: event.uuid, - timestamp: event.timestamp - } - end - - @doc """ - Creates a batch payload from a list of events. - """ - @spec batch_payload([t()]) :: map() - def batch_payload(events) do - %{batch: Enum.map(events, &to_api_payload/1)} - end - - @doc false - defp deep_stringify_keys(term) when is_struct(term) do - term |> Map.from_struct() |> deep_stringify_keys - end - - defp deep_stringify_keys(term) when is_map(term) do - term - |> Enum.map(fn {k, v} -> {to_string(k), deep_stringify_keys(v)} end) - |> Enum.into(%{}) - end - - defp deep_stringify_keys([{key, _value} | _] = term) when is_atom(key) do - term - |> Enum.map(fn {k, v} -> {to_string(k), deep_stringify_keys(v)} end) - |> Enum.into(%{}) - end - - defp deep_stringify_keys(term) when is_list(term), do: Enum.map(term, &deep_stringify_keys/1) - defp deep_stringify_keys(term), do: term - - @doc false - defp lib_properties do - %{ - "$lib" => @lib_name, - "$lib_version" => @lib_version - } - end -end diff --git a/lib/posthog/feature_flag.ex b/lib/posthog/feature_flag.ex deleted file mode 100644 index b6a81d7..0000000 --- a/lib/posthog/feature_flag.ex +++ /dev/null @@ -1,243 +0,0 @@ -defmodule Posthog.FeatureFlag do - @moduledoc """ - Represents a PostHog feature flag with its evaluation state. - - This module provides a struct and helper functions for working with PostHog feature flags. - Feature flags can be either boolean (on/off) or multivariate (multiple variants). - - ## Structure - - The `FeatureFlag` struct contains: - * `name` - The name of the feature flag - * `payload` - The payload value associated with the flag (can be any term) - * `enabled` - The evaluation result (boolean for on/off flags, string for multivariate flags) - - ## Examples - - # Boolean feature flag - %Posthog.FeatureFlag{ - name: "new-dashboard", - payload: true, - enabled: true - } - - # Multivariate feature flag - %Posthog.FeatureFlag{ - name: "pricing-test", - payload: %{"price" => 99, "period" => "monthly"}, - enabled: "variant-a" - } - """ - defstruct [:name, :payload, :enabled] - - @typedoc """ - Represents the enabled state of a feature flag. - Can be either a boolean for on/off flags or a string for multivariate flags. - """ - @type variant :: binary() | boolean() - - @typedoc """ - A map of properties that can be associated with a feature flag. - """ - @type properties :: %{optional(binary()) => term()} - - @typedoc """ - The response format from PostHog's feature flag API. - Contains both the flag states and their associated payloads. - """ - @type flag_response :: %{ - feature_flags: %{optional(binary()) => variant()}, - feature_flag_payloads: %{optional(binary()) => term()} - } - - @typedoc """ - The FeatureFlag struct type. - - Fields: - * `name` - The name of the feature flag (string) - * `payload` - The payload value associated with the flag (any term) - * `enabled` - The evaluation result (boolean or string) - """ - @type t :: %__MODULE__{ - name: binary(), - payload: term(), - enabled: variant() - } - - @doc """ - Creates a new FeatureFlag struct. - - ## Parameters - - * `name` - The name of the feature flag - * `enabled` - The evaluation result (boolean or string) - * `payload` - The payload value associated with the flag - - ## Examples - - # Create a boolean feature flag - Posthog.FeatureFlag.new("new-dashboard", true, true) - - # Create a multivariate feature flag - Posthog.FeatureFlag.new("pricing-test", "variant-a", - %{"price" => 99, "period" => "monthly"}) - """ - @spec new(binary(), variant(), term()) :: t() - def new(name, enabled, payload) do - struct!(__MODULE__, name: name, enabled: enabled, payload: payload) - end - - @doc """ - Checks if a feature flag is a boolean flag. - - Returns `true` if the flag is a boolean (on/off) flag, `false` if it's a multivariate flag. - - ## Examples - - flag = Posthog.FeatureFlag.new("new-dashboard", true, true) - Posthog.FeatureFlag.boolean?(flag) - # Returns: true - - flag = Posthog.FeatureFlag.new("pricing-test", "variant-a", %{}) - Posthog.FeatureFlag.boolean?(flag) - # Returns: false - """ - @spec boolean?(t()) :: boolean() - def boolean?(%__MODULE__{enabled: value}), do: is_boolean(value) - - @doc """ - Processes a feature flag response from the PostHog API. - Handles both v3 and v4 API response formats. - - ## Parameters - - * `response` - The raw response from the API - - ## Examples - - # v4 API response - response = %{ - "flags" => %{ - "my-flag" => %{ - "enabled" => true, - "variant" => nil, - "metadata" => %{"payload" => "{\"color\": \"blue\"}"} - } - }, - "requestId" => "123" - } - Posthog.FeatureFlag.process_response(response) - # Returns: %{ - # flags: %{"my-flag" => %{"enabled" => true, "variant" => nil, "metadata" => %{"payload" => "{\"color\": \"blue\"}"}}}, - # feature_flags: %{"my-flag" => true}, - # feature_flag_payloads: %{"my-flag" => %{"color" => "blue"}}, - # request_id: "123" - # } - - # v3 API response - response = %{ - "featureFlags" => %{"my-flag" => true}, - "featureFlagPayloads" => %{"my-flag" => "{\"color\": \"blue\"}"}, - "requestId" => "123" - } - Posthog.FeatureFlag.process_response(response) - # Returns: %{ - # feature_flags: %{"my-flag" => true}, - # feature_flag_payloads: %{"my-flag" => %{"color" => "blue"}}, - # request_id: "123" - # } - """ - @spec process_response(map()) :: %{ - flags: map() | nil, - feature_flags: %{optional(binary()) => variant()}, - feature_flag_payloads: %{optional(binary()) => term()}, - request_id: binary() | nil - } - def process_response(%{"flags" => flags} = response) do - feature_flags = - Map.new(flags, fn {k, v} -> - {k, if(v["variant"], do: v["variant"], else: v["enabled"])} - end) - - feature_flag_payloads = - Map.new(flags, fn {k, v} -> - {k, - if(v["metadata"]["payload"], - do: decode_payload(v["metadata"]["payload"]), - else: nil - )} - end) - - %{ - flags: flags, - feature_flags: feature_flags, - feature_flag_payloads: feature_flag_payloads, - request_id: response["requestId"] - } - end - - def process_response(response) do - %{ - flags: nil, - feature_flags: Map.get(response, "featureFlags", %{}), - feature_flag_payloads: decode_payloads(Map.get(response, "featureFlagPayloads", %{})), - request_id: response["requestId"] - } - end - - @doc """ - Decodes a map of feature flag payloads. - - ## Parameters - - * `payloads` - Map of feature flag names to their payload values - - ## Examples - - payloads = %{ - "my-flag" => "{\"color\": \"blue\"}", - "other-flag" => "plain-text" - } - Posthog.FeatureFlag.decode_payloads(payloads) - # Returns: %{ - # "my-flag" => %{"color" => "blue"}, - # "other-flag" => "plain-text" - # } - """ - @spec decode_payloads(%{optional(binary()) => term()}) :: %{optional(binary()) => term()} - def decode_payloads(payloads) do - Enum.reduce(payloads, %{}, fn {k, v}, map -> - Map.put(map, k, decode_payload(v)) - end) - end - - @doc """ - Decodes a feature flag payload from JSON string to Elixir term. - Returns the original payload if it's not a valid JSON string. - - ## Examples - - # JSON string payload - Posthog.FeatureFlag.decode_payload("{\"color\": \"blue\"}") - # Returns: %{"color" => "blue"} - - # Non-JSON string payload - Posthog.FeatureFlag.decode_payload("plain-text") - # Returns: "plain-text" - - # Nil payload - Posthog.FeatureFlag.decode_payload(nil) - # Returns: nil - """ - @spec decode_payload(term()) :: term() - def decode_payload(nil), do: nil - - def decode_payload(payload) when is_binary(payload) do - case Posthog.Config.json_library().decode(payload) do - {:ok, decoded} -> decoded - {:error, _} -> payload - end - end - - def decode_payload(payload), do: payload -end diff --git a/lib/posthog/handler.ex b/lib/posthog/handler.ex new file mode 100644 index 0000000..85e22b9 --- /dev/null +++ b/lib/posthog/handler.ex @@ -0,0 +1,157 @@ +defmodule PostHog.Handler do + @moduledoc """ + A [`logger handler`](https://www.erlang.org/doc/apps/kernel/logger_chapter.html#handlers). + """ + @behaviour :logger_handler + + alias PostHog.Context + + @impl :logger_handler + def log(log_event, %{config: config}) do + maybe_properties = + cond do + get_in(log_event, [:meta, :crash_reason]) -> + properties(log_event, config) + + is_nil(config.capture_level) -> + nil + + Logger.compare_levels(log_event.level, config.capture_level) in [:gt, :eq] -> + properties(log_event, config) + + true -> + nil + end + + with %{} = properties <- maybe_properties do + PostHog.bare_capture( + config.supervisor_name, + "$exception", + Map.get(properties, :distinct_id, "unknown"), + properties + ) + end + + :ok + end + + defp properties(log_event, config) do + exception = + Enum.reduce( + [&type/1, &value/1, &stacktrace(&1, config.in_app_modules)], + %{ + mechanism: %{handled: not Map.has_key?(log_event.meta, :crash_reason), type: "generic"} + }, + fn fun, acc -> + Map.merge(acc, fun.(log_event)) + end + ) + + metadata = + log_event.meta + |> Map.take([:distinct_id | config.metadata]) + |> Map.drop(["$exception_list"]) + |> LoggerJSON.Formatter.RedactorEncoder.encode([]) + + Context.get(config.supervisor_name, "$exception") + |> enrich_context(log_event) + |> Map.put(:"$exception_list", [exception]) + |> Map.merge(metadata) + end + + defp type(log_event) do + log_event + |> do_type() + |> String.split("\n") + |> then(fn [type | _] -> %{type: type} end) + end + + defp do_type(%{meta: %{crash_reason: {reason, _}}}) when is_exception(reason), + do: inspect(reason.__struct__) + + defp do_type(%{meta: %{crash_reason: {{:nocatch, throw}, _}}}), + do: Exception.format_banner(:throw, throw) + + defp do_type(%{meta: %{crash_reason: {reason, _}}}), + do: Exception.format_banner(:exit, reason) + + defp do_type(%{msg: {:string, chardata}}), do: IO.iodata_to_binary(chardata) + + defp do_type(%{msg: {:report, report}, meta: %{report_cb: report_cb}}) + when is_function(report_cb, 1) do + {io_format, data} = report_cb.(report) + + io_format + |> :io_lib.format(data) + |> IO.iodata_to_binary() + end + + defp do_type(%{msg: {:report, report}}), do: inspect(report) + + defp do_type(%{msg: {io_format, data}}), + do: io_format |> :io_lib.format(data) |> IO.iodata_to_binary() + + defp value(%{meta: %{crash_reason: {reason, stacktrace}}}) when is_exception(reason), + do: %{value: Exception.format_banner(:error, reason, stacktrace)} + + defp value(%{meta: %{crash_reason: {{:nocatch, throw}, stacktrace}}}), + do: %{value: Exception.format_banner(:throw, throw, stacktrace)} + + defp value(%{meta: %{crash_reason: {reason, stacktrace}}}), + do: %{value: Exception.format_banner(:exit, reason, stacktrace)} + + defp value(%{msg: {:string, chardata}}), do: %{value: IO.iodata_to_binary(chardata)} + + defp value(%{msg: {:report, report}, meta: %{report_cb: report_cb}}) + when is_function(report_cb, 1) do + {io_format, data} = report_cb.(report) + io_format |> :io_lib.format(data) |> IO.iodata_to_binary() |> then(&%{value: &1}) + end + + defp value(%{msg: {:report, report}}), do: %{value: inspect(report)} + + defp value(%{msg: {io_format, data}}), + do: io_format |> :io_lib.format(data) |> IO.iodata_to_binary() |> then(&%{value: &1}) + + defp stacktrace(%{meta: %{crash_reason: {_reason, [_ | _] = stacktrace}}}, in_app_modules) do + frames = + for {module, function, arity_or_args, location} <- stacktrace do + in_app = module in in_app_modules + + %{ + platform: "custom", + lang: "elixir", + function: Exception.format_mfa(module, function, arity_or_args), + filename: Keyword.get(location, :file, []) |> IO.chardata_to_string(), + lineno: Keyword.get(location, :line), + module: inspect(module), + in_app: in_app, + resolved: true + } + end + + %{ + stacktrace: %{ + type: "raw", + frames: frames + } + } + end + + defp stacktrace(_event, _), do: %{} + + defp enrich_context(context, %{meta: %{conn: conn}}) when is_struct(conn, Plug.Conn) do + case context do + # Context was set and survived + %{"$current_url" => _} -> + context + + _ -> + conn + |> PostHog.Integrations.Plug.conn_to_context() + |> Map.merge(context) + end + end + + defp enrich_context(context, _log_event), do: context +end diff --git a/lib/posthog/http_client.ex b/lib/posthog/http_client.ex deleted file mode 100644 index f4784ac..0000000 --- a/lib/posthog/http_client.ex +++ /dev/null @@ -1,68 +0,0 @@ -defmodule Posthog.HTTPClient do - @moduledoc """ - Behaviour for HTTP client implementations. - - This allows for easy swapping of HTTP clients and better testability. - """ - - @type headers :: [{binary(), binary()}] - @type response :: %{status: pos_integer(), headers: headers(), body: map() | nil} - @type body :: iodata() | binary() - @type url :: binary() - - @doc """ - Makes a POST request to the given URL with the specified body and headers. - - Returns `{:ok, response}` on success or `{:error, reason}` on failure. - """ - @callback post(url(), body(), headers(), keyword()) :: {:ok, response()} | {:error, term()} -end - -defmodule Posthog.HTTPClient.Hackney do - @moduledoc """ - Hackney-based implementation of the Posthog.HTTPClient behaviour. - """ - - @behaviour Posthog.HTTPClient - - @default_timeout 5_000 - @default_retries 3 - @default_retry_delay 1_000 - - @impl true - def post(url, body, headers, opts \\ []) do - timeout = Keyword.get(opts, :timeout, @default_timeout) - retries = Keyword.get(opts, :retries, @default_retries) - retry_delay = Keyword.get(opts, :retry_delay, @default_retry_delay) - - do_post(url, body, headers, timeout, retries, retry_delay) - end - - defp do_post(url, body, headers, timeout, retries, retry_delay) do - case :hackney.post(url, headers, body, []) do - {:ok, status, _headers, _ref} = resp when div(status, 100) == 2 -> - {:ok, to_response(resp)} - - {:ok, _status, _headers, _ref} = resp -> - {:error, to_response(resp)} - - {:error, _reason} when retries > 0 -> - Process.sleep(retry_delay) - do_post(url, body, headers, timeout, retries - 1, retry_delay) - - {:error, _reason} = error -> - error - end - end - - defp to_response({_, status, headers, ref}) do - response = %{status: status, headers: headers, body: nil} - - with {:ok, body} <- :hackney.body(ref), - {:ok, json} <- Posthog.Config.json_library().decode(body) do - %{response | body: json} - else - _ -> response - end - end -end diff --git a/lib/posthog/integrations/plug.ex b/lib/posthog/integrations/plug.ex new file mode 100644 index 0000000..b930dc6 --- /dev/null +++ b/lib/posthog/integrations/plug.ex @@ -0,0 +1,69 @@ +defmodule PostHog.Integrations.Plug do + @moduledoc """ + Provides a plug that automatically extracts and sets relevant metadata from + `Plug.Conn`. + + For Phoenix apps, add it to your `endpoint.ex` somewhere before your router: + + plug PostHog.Integrations.Plug + + For Plug apps, add it directly to your router: + + defmodule MyRouterPlug do + use Plug.Router + + plug PostHog.Integrations.Plug + plug :match + plug :dispatch + + ... + end + """ + + @doc false + def init(opts), do: opts + + @doc false + def call(conn, _opts) do + context = conn_to_context(conn) + PostHog.Context.set(:all, "$exception", context) + + conn + end + + @doc false + def conn_to_context(conn) when is_struct(conn, Plug.Conn) do + query_string = if conn.query_string == "", do: nil, else: conn.query_string + + %{ + "$current_url": + %URI{ + scheme: to_string(conn.scheme), + host: conn.host, + path: conn.request_path, + query: query_string + } + |> URI.to_string(), + "$host": conn.host, + "$pathname": conn.request_path, + "$ip": remote_ip(conn) + } + end + + defp remote_ip(conn) when is_struct(conn, Plug.Conn) do + # Avoid compilation warnings for cases where Plug isn't available + remote_ip = + case apply(Plug.Conn, :get_req_header, [conn, "x-forwarded-for"]) do + [x_forwarded_for | _] -> + x_forwarded_for |> String.split(",", parts: 2) |> List.first() + + [] -> + case :inet.ntoa(conn.remote_ip) do + {:error, _} -> "" + address -> to_string(address) + end + end + + String.trim(remote_ip) + end +end diff --git a/lib/posthog/registry.ex b/lib/posthog/registry.ex new file mode 100644 index 0000000..4e8bad9 --- /dev/null +++ b/lib/posthog/registry.ex @@ -0,0 +1,16 @@ +defmodule PostHog.Registry do + @moduledoc false + def config(supervisor_name) do + {:ok, config} = + supervisor_name + |> registry_name() + |> Registry.meta(:config) + + config + end + + def registry_name(supervisor_name), do: Module.concat(supervisor_name, Registry) + + def via(supervisor_name, server_name), + do: {:via, Registry, {registry_name(supervisor_name), server_name}} +end diff --git a/lib/posthog/sender.ex b/lib/posthog/sender.ex new file mode 100644 index 0000000..bcc6372 --- /dev/null +++ b/lib/posthog/sender.ex @@ -0,0 +1,86 @@ +defmodule PostHog.Sender do + @moduledoc false + use GenServer + + defstruct [ + :registry, + :api_client, + :max_batch_time_ms, + :max_batch_events, + events: [], + num_events: 0 + ] + + def start_link(opts) do + name = + opts + |> Keyword.fetch!(:supervisor_name) + |> PostHog.Registry.via(__MODULE__) + + callers = Process.get(:"$callers", []) + Process.flag(:trap_exit, true) + + GenServer.start_link(__MODULE__, {opts, callers}, name: name) + end + + # Client + + def send(event, supervisor_name) do + supervisor_name + |> PostHog.Registry.via(__MODULE__) + |> GenServer.cast({:event, event}) + end + + # Callbacks + + @impl GenServer + def init({opts, callers}) do + state = %__MODULE__{ + registry: PostHog.Registry.registry_name(opts[:supervisor_name]), + api_client: Keyword.fetch!(opts, :api_client), + max_batch_time_ms: Keyword.fetch!(opts, :max_batch_time_ms), + max_batch_events: Keyword.fetch!(opts, :max_batch_events), + events: [], + num_events: 0 + } + + Process.put(:"$callers", callers) + + {:ok, state} + end + + @impl GenServer + def handle_cast({:event, event}, state) do + case state do + %{num_events: n, events: events} when n + 1 >= state.max_batch_events -> + {:noreply, %{state | events: [event | events], num_events: n + 1}, + {:continue, :send_batch}} + + %{num_events: 0, events: events} -> + Process.send_after(self(), :batch_time_reached, state.max_batch_time_ms) + + {:noreply, %{state | events: [event | events], num_events: 1}} + + %{num_events: n, events: events} -> + {:noreply, %{state | events: [event | events], num_events: n + 1}} + end + end + + @impl GenServer + def handle_info(:batch_time_reached, state) do + {:noreply, state, {:continue, :send_batch}} + end + + @impl GenServer + def handle_continue(:send_batch, state) do + PostHog.API.post_batch(state.api_client, state.events) + {:noreply, %{state | events: [], num_events: 0}} + end + + @impl GenServer + def terminate(_reason, %{num_events: n} = state) when n > 0 do + PostHog.API.post_batch(state.api_client, state.events) + end + + def terminate(_reason, _state), do: :ok +end diff --git a/lib/posthog/supervisor.ex b/lib/posthog/supervisor.ex new file mode 100644 index 0000000..7076048 --- /dev/null +++ b/lib/posthog/supervisor.ex @@ -0,0 +1,46 @@ +defmodule PostHog.Supervisor do + @moduledoc """ + Supervisor that manages all processes required for logging. By default, + `PostHog` starts it automatically. + """ + use Supervisor + + def child_spec(config) do + Supervisor.child_spec( + %{ + id: config.supervisor_name, + start: {__MODULE__, :start_link, [config]}, + type: :supervisor + }, + [] + ) + end + + @spec start_link(PostHog.Config.config()) :: Supervisor.on_start() + def start_link(config) do + callers = Process.get(:"$callers", []) + Supervisor.start_link(__MODULE__, {config, callers}, name: config.supervisor_name) + end + + @impl Supervisor + def init({config, callers}) do + children = + [ + {Registry, + keys: :unique, + name: PostHog.Registry.registry_name(config.supervisor_name), + meta: [config: config]}, + {PostHog.Sender, + [ + api_client: config.api_client, + supervisor_name: config.supervisor_name, + max_batch_time_ms: Map.get(config, :max_batch_time_ms, to_timeout(second: 10)), + max_batch_events: Map.get(config, :max_batch_events, 100) + ]} + ] + + Process.put(:"$callers", callers) + + Supervisor.init(children, strategy: :one_for_one) + end +end diff --git a/mix.exs b/mix.exs index 3108304..d8a2f0e 100644 --- a/mix.exs +++ b/mix.exs @@ -1,69 +1,70 @@ -defmodule Posthog.MixProject do +defmodule PostHog.MixProject do use Mix.Project @version "1.1.0" + @source_url "https://github.com/posthog/posthog-elixir" def project do [ app: :posthog, - deps: deps(), - description: description(), - elixir: "~> 1.14", + version: @version, + elixir: "~> 1.15", elixirc_paths: elixirc_paths(Mix.env()), - package: package(), - docs: docs(), start_permanent: Mix.env() == :prod, - version: @version + deps: deps(), + docs: docs(), + package: package() ] end def application do [ - extra_applications: [:logger], - mod: {Posthog.Application, []} + mod: {PostHog.Application, []}, + extra_applications: [:logger] ] end - defp description do - """ - Official PostHog Elixir HTTP client. - """ - end - defp elixirc_paths(:test), do: ["lib", "test/support"] defp elixirc_paths(_), do: ["lib"] defp package do [ name: :posthog, - files: ["lib", "mix.exs", "README.md", "LICENSE"], maintainers: ["PostHog"], licenses: ["MIT"], - links: %{"GitHub" => "https://github.com/posthog/posthog-elixir"} + description: "Official PostHog Elixir SDK", + links: %{"GitHub" => @source_url} ] end defp docs do [ + main: "readme", favicon: "docs/favicon.svg", logo: "docs/favicon.svg", source_ref: "v#{@version}", - source_url: "https://github.com/posthog/posthog-elixir", - extras: ["README.md", "CHANGELOG.md", "MIGRATION.md"] + source_url: @source_url, + assets: %{ + "assets" => "assets" + }, + extras: ["README.md", "CHANGELOG.md", "MIGRATION.md", "guides/advanced-configuration.md"], + groups_for_modules: [ + Integrations: [PostHog.Integrations.Plug] + ], + skip_undefined_reference_warnings_on: ["CHANGELOG.md", "MIGRATION.md"] ] end defp deps do [ - {:dialyxir, "~> 1.3", only: [:dev, :test], runtime: false}, - {:ex_doc, ">= 0.0.0", only: :dev, runtime: false}, - {:hackney, "~> 1.23"}, - {:uniq, "~> 0.6.1"}, - {:jason, "~> 1.4", optional: true}, - {:mimic, "~> 1.11", only: :test}, - {:cachex, "~> 4.0.4"}, + {:nimble_options, "~> 1.1"}, + {:req, "~> 0.5.10"}, + {:logger_json, "~> 7.0"}, # Development tools - {:credo, "~> 1.7", only: [:dev, :test], runtime: false} + {:ex_doc, "~> 0.37", only: :dev, runtime: false}, + {:logger_handler_kit, "~> 0.3", only: :test}, + {:credo, "~> 1.7", only: [:dev, :test], runtime: false}, + {:mox, "~> 1.1", only: :test} ] end end diff --git a/mix.lock b/mix.lock index 174fd6f..57ed0fd 100644 --- a/mix.lock +++ b/mix.lock @@ -1,7 +1,11 @@ %{ + "bandit": {:hex, :bandit, "1.7.0", "d1564f30553c97d3e25f9623144bb8df11f3787a26733f00b21699a128105c0c", [:mix], [{:hpax, "~> 1.0", [hex: :hpax, repo: "hexpm", optional: false]}, {:plug, "~> 1.18", [hex: :plug, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}, {:thousand_island, "~> 1.0", [hex: :thousand_island, repo: "hexpm", optional: false]}, {:websock, "~> 0.5", [hex: :websock, repo: "hexpm", optional: false]}], "hexpm", "3e2f7a98c7a11f48d9d8c037f7177cd39778e74d55c7af06fe6227c742a8168a"}, "bunt": {:hex, :bunt, "1.0.0", "081c2c665f086849e6d57900292b3a161727ab40431219529f13c4ddcf3e7a44", [:mix], [], "hexpm", "dc5f86aa08a5f6fa6b8096f0735c4e76d54ae5c9fa2c143e5a1fc7c1cd9bb6b5"}, "cachex": {:hex, :cachex, "4.0.4", "192b5a34ae7f2c866cf835d796005c31ccf65e50ee973fbbbda6c773c0f40322", [:mix], [{:eternal, "~> 1.2", [hex: :eternal, repo: "hexpm", optional: false]}, {:ex_hash_ring, "~> 6.0", [hex: :ex_hash_ring, repo: "hexpm", optional: false]}, {:jumper, "~> 1.0", [hex: :jumper, repo: "hexpm", optional: false]}, {:sleeplocks, "~> 1.1", [hex: :sleeplocks, repo: "hexpm", optional: false]}, {:unsafe, "~> 1.0", [hex: :unsafe, repo: "hexpm", optional: false]}], "hexpm", "a0417593fcca4b6bd0330bb3bbd507c379d5287213ab990dbc0dd704cedede0a"}, "certifi": {:hex, :certifi, "2.14.0", "ed3bef654e69cde5e6c022df8070a579a79e8ba2368a00acf3d75b82d9aceeed", [:rebar3], [], "hexpm", "ea59d87ef89da429b8e905264fdec3419f84f2215bb3d81e07a18aac919026c3"}, + "cowboy": {:hex, :cowboy, "2.13.0", "09d770dd5f6a22cc60c071f432cd7cb87776164527f205c5a6b0f24ff6b38990", [:make, :rebar3], [{:cowlib, ">= 2.14.0 and < 3.0.0", [hex: :cowlib, repo: "hexpm", optional: false]}, {:ranch, ">= 1.8.0 and < 3.0.0", [hex: :ranch, repo: "hexpm", optional: false]}], "hexpm", "e724d3a70995025d654c1992c7b11dbfea95205c047d86ff9bf1cda92ddc5614"}, + "cowboy_telemetry": {:hex, :cowboy_telemetry, "0.4.0", "f239f68b588efa7707abce16a84d0d2acf3a0f50571f8bb7f56a15865aae820c", [:rebar3], [{:cowboy, "~> 2.7", [hex: :cowboy, repo: "hexpm", optional: false]}, {:telemetry, "~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "7d98bac1ee4565d31b62d59f8823dfd8356a169e7fcbb83831b8a5397404c9de"}, + "cowlib": {:hex, :cowlib, "2.15.0", "3c97a318a933962d1c12b96ab7c1d728267d2c523c25a5b57b0f93392b6e9e25", [:make, :rebar3], [], "hexpm", "4f00c879a64b4fe7c8fcb42a4281925e9ffdb928820b03c3ad325a617e857532"}, "credo": {:hex, :credo, "1.7.12", "9e3c20463de4b5f3f23721527fcaf16722ec815e70ff6c60b86412c695d426c1", [:mix], [{:bunt, "~> 0.2.1 or ~> 1.0", [hex: :bunt, repo: "hexpm", optional: false]}, {:file_system, "~> 0.2 or ~> 1.0", [hex: :file_system, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "8493d45c656c5427d9c729235b99d498bd133421f3e0a683e5c1b561471291e5"}, "dialyxir": {:hex, :dialyxir, "1.4.5", "ca1571ac18e0f88d4ab245f0b60fa31ff1b12cbae2b11bd25d207f865e8ae78a", [:mix], [{:erlex, ">= 0.2.7", [hex: :erlex, repo: "hexpm", optional: false]}], "hexpm", "b0fb08bb8107c750db5c0b324fa2df5ceaa0f9307690ee3c1f6ba5b9eb5d35c3"}, "earmark_parser": {:hex, :earmark_parser, "1.4.44", "f20830dd6b5c77afe2b063777ddbbff09f9759396500cdbe7523efd58d7a339c", [:mix], [], "hexpm", "4778ac752b4701a5599215f7030989c989ffdc4f6df457c5f36938cc2d2a2750"}, @@ -10,22 +14,40 @@ "ex_doc": {:hex, :ex_doc, "0.37.3", "f7816881a443cd77872b7d6118e8a55f547f49903aef8747dbcb345a75b462f9", [:mix], [{:earmark_parser, "~> 1.4.42", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_c, ">= 0.1.0", [hex: :makeup_c, repo: "hexpm", optional: true]}, {:makeup_elixir, "~> 0.14 or ~> 1.0", [hex: :makeup_elixir, repo: "hexpm", optional: false]}, {:makeup_erlang, "~> 0.1 or ~> 1.0", [hex: :makeup_erlang, repo: "hexpm", optional: false]}, {:makeup_html, ">= 0.1.0", [hex: :makeup_html, repo: "hexpm", optional: true]}], "hexpm", "e6aebca7156e7c29b5da4daa17f6361205b2ae5f26e5c7d8ca0d3f7e18972233"}, "ex_hash_ring": {:hex, :ex_hash_ring, "6.0.4", "bef9d2d796afbbe25ab5b5a7ed746e06b99c76604f558113c273466d52fa6d6b", [:mix], [], "hexpm", "89adabf31f7d3dfaa36802ce598ce918e9b5b33bae8909ac1a4d052e1e567d18"}, "file_system": {:hex, :file_system, "1.1.0", "08d232062284546c6c34426997dd7ef6ec9f8bbd090eb91780283c9016840e8f", [:mix], [], "hexpm", "bfcf81244f416871f2a2e15c1b515287faa5db9c6bcf290222206d120b3d43f6"}, + "finch": {:hex, :finch, "0.20.0", "5330aefb6b010f424dcbbc4615d914e9e3deae40095e73ab0c1bb0968933cadf", [:mix], [{:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:mint, "~> 1.6.2 or ~> 1.7", [hex: :mint, repo: "hexpm", optional: false]}, {:nimble_options, "~> 0.4 or ~> 1.0", [hex: :nimble_options, repo: "hexpm", optional: false]}, {:nimble_pool, "~> 1.1", [hex: :nimble_pool, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "2658131a74d051aabfcba936093c903b8e89da9a1b63e430bee62045fa9b2ee2"}, "hackney": {:hex, :hackney, "1.23.0", "55cc09077112bcb4a69e54be46ed9bc55537763a96cd4a80a221663a7eafd767", [:rebar3], [{:certifi, "~> 2.14.0", [hex: :certifi, repo: "hexpm", optional: false]}, {:idna, "~> 6.1.0", [hex: :idna, repo: "hexpm", optional: false]}, {:metrics, "~> 1.0.0", [hex: :metrics, repo: "hexpm", optional: false]}, {:mimerl, "~> 1.1", [hex: :mimerl, repo: "hexpm", optional: false]}, {:parse_trans, "3.4.1", [hex: :parse_trans, repo: "hexpm", optional: false]}, {:ssl_verify_fun, "~> 1.1.0", [hex: :ssl_verify_fun, repo: "hexpm", optional: false]}, {:unicode_util_compat, "~> 0.7.0", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "6cd1c04cd15c81e5a493f167b226a15f0938a84fc8f0736ebe4ddcab65c0b44e"}, "ham": {:hex, :ham, "0.3.0", "7cd031b4a55fba219c11553e7b13ba73bd86eab4034518445eff1e038cb9a44d", [:mix], [], "hexpm", "7d6c6b73d7a6a83233876cc1b06a4d9b5de05562b228effda4532f9a49852bf6"}, + "hpax": {:hex, :hpax, "1.0.3", "ed67ef51ad4df91e75cc6a1494f851850c0bd98ebc0be6e81b026e765ee535aa", [:mix], [], "hexpm", "8eab6e1cfa8d5918c2ce4ba43588e894af35dbd8e91e6e55c817bca5847df34a"}, "idna": {:hex, :idna, "6.1.1", "8a63070e9f7d0c62eb9d9fcb360a7de382448200fbbd1b106cc96d3d8099df8d", [:rebar3], [{:unicode_util_compat, "~> 0.7.0", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "92376eb7894412ed19ac475e4a86f7b413c1b9fbb5bd16dccd57934157944cea"}, "jason": {:hex, :jason, "1.4.4", "b9226785a9aa77b6857ca22832cffa5d5011a667207eb2a0ad56adb5db443b8a", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "c5eb0cab91f094599f94d55bc63409236a8ec69a21a67814529e8d5f6cc90b3b"}, "jumper": {:hex, :jumper, "1.0.2", "68cdcd84472a00ac596b4e6459a41b3062d4427cbd4f1e8c8793c5b54f1406a7", [:mix], [], "hexpm", "9b7782409021e01ab3c08270e26f36eb62976a38c1aa64b2eaf6348422f165e1"}, + "logger_handler_kit": {:hex, :logger_handler_kit, "0.3.0", "15b3a2e260bfbb58036ff3bae3b346ca2287df61ce2e8cf3cbcde3f9041d75a0", [:mix], [{:bandit, "~> 1.7", [hex: :bandit, repo: "hexpm", optional: false]}, {:mint, "~> 1.7", [hex: :mint, repo: "hexpm", optional: false]}, {:nimble_ownership, "~> 1.0", [hex: :nimble_ownership, repo: "hexpm", optional: false]}, {:plug, "~> 1.18", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 2.7", [hex: :plug_cowboy, repo: "hexpm", optional: false]}], "hexpm", "66d3e0215db2a8a33a1abc0b94a5b201612d3f9262e0f05f49d754ac2bab1da9"}, + "logger_json": {:hex, :logger_json, "7.0.3", "0f202788d743154796bd208e1078d878bb4fccf0adc4ed9c83cba821732d326c", [:mix], [{:decimal, ">= 0.0.0", [hex: :decimal, repo: "hexpm", optional: true]}, {:ecto, "~> 3.11", [hex: :ecto, repo: "hexpm", optional: true]}, {:jason, "~> 1.4", [hex: :jason, repo: "hexpm", optional: true]}, {:plug, "~> 1.15", [hex: :plug, repo: "hexpm", optional: true]}, {:telemetry, "~> 1.0", [hex: :telemetry, repo: "hexpm", optional: true]}], "hexpm", "9d1ca7dfe77eb7eac4664edfd6f874168d4707aedbedea09fba8eaa6ed2e2f97"}, "makeup": {:hex, :makeup, "1.2.1", "e90ac1c65589ef354378def3ba19d401e739ee7ee06fb47f94c687016e3713d1", [:mix], [{:nimble_parsec, "~> 1.4", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "d36484867b0bae0fea568d10131197a4c2e47056a6fbe84922bf6ba71c8d17ce"}, "makeup_elixir": {:hex, :makeup_elixir, "1.0.1", "e928a4f984e795e41e3abd27bfc09f51db16ab8ba1aebdba2b3a575437efafc2", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}, {:nimble_parsec, "~> 1.2.3 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "7284900d412a3e5cfd97fdaed4f5ed389b8f2b4cb49efc0eb3bd10e2febf9507"}, "makeup_erlang": {:hex, :makeup_erlang, "1.0.2", "03e1804074b3aa64d5fad7aa64601ed0fb395337b982d9bcf04029d68d51b6a7", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm", "af33ff7ef368d5893e4a267933e7744e46ce3cf1f61e2dccf53a111ed3aa3727"}, "metrics": {:hex, :metrics, "1.0.1", "25f094dea2cda98213cecc3aeff09e940299d950904393b2a29d191c346a8486", [:rebar3], [], "hexpm", "69b09adddc4f74a40716ae54d140f93beb0fb8978d8636eaded0c31b6f099f16"}, + "mime": {:hex, :mime, "2.0.7", "b8d739037be7cd402aee1ba0306edfdef982687ee7e9859bee6198c1e7e2f128", [:mix], [], "hexpm", "6171188e399ee16023ffc5b76ce445eb6d9672e2e241d2df6050f3c771e80ccd"}, "mimerl": {:hex, :mimerl, "1.3.0", "d0cd9fc04b9061f82490f6581e0128379830e78535e017f7780f37fea7545726", [:rebar3], [], "hexpm", "a1e15a50d1887217de95f0b9b0793e32853f7c258a5cd227650889b38839fe9d"}, "mimic": {:hex, :mimic, "1.11.0", "49b126687520b6e179acab305068ad7d72bfea8abe94908a6c0c8ca0a5b7bdc7", [:mix], [{:ham, "~> 0.2", [hex: :ham, repo: "hexpm", optional: false]}], "hexpm", "8b16b1809ca947cffbaede146cd42da8c1c326af67a84b59b01c204d54e4f1a2"}, + "mint": {:hex, :mint, "1.7.1", "113fdb2b2f3b59e47c7955971854641c61f378549d73e829e1768de90fc1abf1", [:mix], [{:castore, "~> 0.1.0 or ~> 1.0", [hex: :castore, repo: "hexpm", optional: true]}, {:hpax, "~> 0.1.1 or ~> 0.2.0 or ~> 1.0", [hex: :hpax, repo: "hexpm", optional: false]}], "hexpm", "fceba0a4d0f24301ddee3024ae116df1c3f4bb7a563a731f45fdfeb9d39a231b"}, + "mox": {:hex, :mox, "1.2.0", "a2cd96b4b80a3883e3100a221e8adc1b98e4c3a332a8fc434c39526babafd5b3", [:mix], [{:nimble_ownership, "~> 1.0", [hex: :nimble_ownership, repo: "hexpm", optional: false]}], "hexpm", "c7b92b3cc69ee24a7eeeaf944cd7be22013c52fcb580c1f33f50845ec821089a"}, + "nimble_options": {:hex, :nimble_options, "1.1.1", "e3a492d54d85fc3fd7c5baf411d9d2852922f66e69476317787a7b2bb000a61b", [:mix], [], "hexpm", "821b2470ca9442c4b6984882fe9bb0389371b8ddec4d45a9504f00a66f650b44"}, + "nimble_ownership": {:hex, :nimble_ownership, "1.0.1", "f69fae0cdd451b1614364013544e66e4f5d25f36a2056a9698b793305c5aa3a6", [:mix], [], "hexpm", "3825e461025464f519f3f3e4a1f9b68c47dc151369611629ad08b636b73bb22d"}, "nimble_parsec": {:hex, :nimble_parsec, "1.4.2", "8efba0122db06df95bfaa78f791344a89352ba04baedd3849593bfce4d0dc1c6", [:mix], [], "hexpm", "4b21398942dda052b403bbe1da991ccd03a053668d147d53fb8c4e0efe09c973"}, + "nimble_pool": {:hex, :nimble_pool, "1.1.0", "bf9c29fbdcba3564a8b800d1eeb5a3c58f36e1e11d7b7fb2e084a643f645f06b", [:mix], [], "hexpm", "af2e4e6b34197db81f7aad230c1118eac993acc0dae6bc83bac0126d4ae0813a"}, "parse_trans": {:hex, :parse_trans, "3.4.1", "6e6aa8167cb44cc8f39441d05193be6e6f4e7c2946cb2759f015f8c56b76e5ff", [:rebar3], [], "hexpm", "620a406ce75dada827b82e453c19cf06776be266f5a67cff34e1ef2cbb60e49a"}, + "plug": {:hex, :plug, "1.18.1", "5067f26f7745b7e31bc3368bc1a2b818b9779faa959b49c934c17730efc911cf", [:mix], [{:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_crypto, "~> 1.1.1 or ~> 1.2 or ~> 2.0", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.3 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "57a57db70df2b422b564437d2d33cf8d33cd16339c1edb190cd11b1a3a546cc2"}, + "plug_cowboy": {:hex, :plug_cowboy, "2.7.4", "729c752d17cf364e2b8da5bdb34fb5804f56251e88bb602aff48ae0bd8673d11", [:mix], [{:cowboy, "~> 2.7", [hex: :cowboy, repo: "hexpm", optional: false]}, {:cowboy_telemetry, "~> 0.3", [hex: :cowboy_telemetry, repo: "hexpm", optional: false]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "9b85632bd7012615bae0a5d70084deb1b25d2bcbb32cab82d1e9a1e023168aa3"}, + "plug_crypto": {:hex, :plug_crypto, "2.1.1", "19bda8184399cb24afa10be734f84a16ea0a2bc65054e23a62bb10f06bc89491", [:mix], [], "hexpm", "6470bce6ffe41c8bd497612ffde1a7e4af67f36a15eea5f921af71cf3e11247c"}, + "ranch": {:hex, :ranch, "2.2.0", "25528f82bc8d7c6152c57666ca99ec716510fe0925cb188172f41ce93117b1b0", [:make, :rebar3], [], "hexpm", "fa0b99a1780c80218a4197a59ea8d3bdae32fbff7e88527d7d8a4787eff4f8e7"}, + "req": {:hex, :req, "0.5.14", "521b449fa0bf275e6d034c05f29bec21789a0d6cd6f7a1c326c7bee642bf6e07", [:mix], [{:brotli, "~> 0.3.1", [hex: :brotli, repo: "hexpm", optional: true]}, {:ezstd, "~> 1.0", [hex: :ezstd, repo: "hexpm", optional: true]}, {:finch, "~> 0.17", [hex: :finch, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}, {:mime, "~> 2.0.6 or ~> 2.1", [hex: :mime, repo: "hexpm", optional: false]}, {:nimble_csv, "~> 1.0", [hex: :nimble_csv, repo: "hexpm", optional: true]}, {:plug, "~> 1.0", [hex: :plug, repo: "hexpm", optional: true]}], "hexpm", "b7b15692071d556c73432c7797aa7e96b51d1a2db76f746b976edef95c930021"}, "sleeplocks": {:hex, :sleeplocks, "1.1.3", "96a86460cc33b435c7310dbd27ec82ca2c1f24ae38e34f8edde97f756503441a", [:rebar3], [], "hexpm", "d3b3958552e6eb16f463921e70ae7c767519ef8f5be46d7696cc1ed649421321"}, "ssl_verify_fun": {:hex, :ssl_verify_fun, "1.1.7", "354c321cf377240c7b8716899e182ce4890c5938111a1296add3ec74cf1715df", [:make, :mix, :rebar3], [], "hexpm", "fe4c190e8f37401d30167c8c405eda19469f34577987c76dde613e838bbc67f8"}, + "telemetry": {:hex, :telemetry, "1.3.0", "fedebbae410d715cf8e7062c96a1ef32ec22e764197f70cda73d82778d61e7a2", [:rebar3], [], "hexpm", "7015fc8919dbe63764f4b4b87a95b7c0996bd539e0d499be6ec9d7f3875b79e6"}, + "thousand_island": {:hex, :thousand_island, "1.3.14", "ad45ebed2577b5437582bcc79c5eccd1e2a8c326abf6a3464ab6c06e2055a34a", [:mix], [{:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "d0d24a929d31cdd1d7903a4fe7f2409afeedff092d277be604966cd6aa4307ef"}, "unicode_util_compat": {:hex, :unicode_util_compat, "0.7.0", "bc84380c9ab48177092f43ac89e4dfa2c6d62b40b8bd132b1059ecc7232f9a78", [:rebar3], [], "hexpm", "25eee6d67df61960cf6a794239566599b09e17e668d3700247bc498638152521"}, "uniq": {:hex, :uniq, "0.6.1", "369660ecbc19051be526df3aa85dc393af5f61f45209bce2fa6d7adb051ae03c", [:mix], [{:ecto, "~> 3.0", [hex: :ecto, repo: "hexpm", optional: true]}], "hexpm", "6426c34d677054b3056947125b22e0daafd10367b85f349e24ac60f44effb916"}, "unsafe": {:hex, :unsafe, "1.0.2", "23c6be12f6c1605364801f4b47007c0c159497d0446ad378b5cf05f1855c0581", [:mix], [], "hexpm", "b485231683c3ab01a9cd44cb4a79f152c6f3bb87358439c6f68791b85c2df675"}, + "websock": {:hex, :websock, "0.5.3", "2f69a6ebe810328555b6fe5c831a851f485e303a7c8ce6c5f675abeb20ebdadc", [:mix], [], "hexpm", "6105453d7fac22c712ad66fab1d45abdf049868f253cf719b625151460b8b453"}, } diff --git a/test/integration_test.exs b/test/integration_test.exs new file mode 100644 index 0000000..0cf7207 --- /dev/null +++ b/test/integration_test.exs @@ -0,0 +1,90 @@ +defmodule PostHog.IntegrationTest do + require Config + use ExUnit.Case, async: false + + require Logger + + @moduletag integration: true + + setup_all do + {:ok, config} = + Application.fetch_env!(:posthog, :integration_config) |> PostHog.Config.validate() + + start_link_supervised!({PostHog.Supervisor, config}) + + wait = fn -> + sender_pid = + config.supervisor_name + |> PostHog.Registry.via(PostHog.Sender) + |> GenServer.whereis() + + send(sender_pid, :batch_time_reached) + :sys.get_status(sender_pid) + end + + :logger.add_handler(:posthog, PostHog.Handler, %{config: config}) + + %{wait_fun: wait} + end + + describe "error tracking" do + setup %{test: test} do + Logger.metadata(distinct_id: test) + end + + test "log message", %{wait_fun: wait} do + Logger.info("Hello World!") + wait.() + end + + test "genserver crash exception", %{wait_fun: wait} do + LoggerHandlerKit.Act.genserver_crash(:exception) + wait.() + end + + test "task exception", %{wait_fun: wait} do + LoggerHandlerKit.Act.task_error(:exception) + wait.() + end + + test "task throw", %{wait_fun: wait} do + LoggerHandlerKit.Act.task_error(:throw) + wait.() + end + + test "task exit", %{wait_fun: wait} do + LoggerHandlerKit.Act.task_error(:exit) + wait.() + end + + test "exports metadata", %{wait_fun: wait} do + LoggerHandlerKit.Act.metadata_serialization(:all) + Logger.error("Error with metadata") + wait.() + end + + test "supervisor report", %{wait_fun: wait} do + Application.stop(:logger) + Application.put_env(:logger, :handle_sasl_reports, true) + Application.put_env(:logger, :level, :info) + Application.start(:logger) + + on_exit(fn -> + Application.stop(:logger) + Application.put_env(:logger, :handle_sasl_reports, false) + Application.delete_env(:logger, :level) + Application.start(:logger) + end) + + LoggerHandlerKit.Act.supervisor_progress_report(:failed_to_start_child) + wait.() + end + end + + describe "event capture" do + test "captures event", %{test: test, wait_fun: wait} do + PostHog.capture("case tested", test, %{number: 1}) + wait.() + end + end +end diff --git a/test/log_hog_test.exs b/test/log_hog_test.exs new file mode 100644 index 0000000..b181bd2 --- /dev/null +++ b/test/log_hog_test.exs @@ -0,0 +1,264 @@ +defmodule PostHogTest do + use PostHog.Case, async: true + + @moduletag config: [supervisor_name: PostHog] + + import Mox + + alias PostHog.API + + setup :setup_supervisor + setup :verify_on_exit! + + describe "config/0" do + test "fetches from PostHog by default" do + assert %{supervisor_name: PostHog} = PostHog.config() + end + + @tag config: [supervisor_name: CustomPostHog] + test "uses custom supervisor name" do + assert %{supervisor_name: CustomPostHog} = PostHog.config(CustomPostHog) + end + end + + describe "bare_capture/4" do + test "simple call", %{sender_pid: sender_pid} do + PostHog.bare_capture("case tested", "distinct_id") + + assert %{events: [event]} = :sys.get_state(sender_pid) + + assert %{ + event: "case tested", + distinct_id: "distinct_id", + properties: %{}, + timestamp: _ + } = event + end + + test "with properties", %{sender_pid: sender_pid} do + PostHog.bare_capture("case tested", "distinct_id", %{foo: "bar"}) + + assert %{events: [event]} = :sys.get_state(sender_pid) + + assert %{ + event: "case tested", + distinct_id: "distinct_id", + properties: %{foo: "bar"}, + timestamp: _ + } = event + end + + @tag config: [supervisor_name: CustomPostHog] + test "simple call for custom supervisor", %{sender_pid: sender_pid} do + PostHog.bare_capture(CustomPostHog, "case tested", "distinct_id") + + assert %{events: [event]} = :sys.get_state(sender_pid) + + assert %{ + event: "case tested", + distinct_id: "distinct_id", + properties: %{}, + timestamp: _ + } = event + end + + @tag config: [supervisor_name: CustomPostHog] + test "with properties for custom supervisor", %{sender_pid: sender_pid} do + PostHog.bare_capture(CustomPostHog, "case tested", "distinct_id", %{foo: "bar"}) + + assert %{events: [event]} = :sys.get_state(sender_pid) + + assert %{ + event: "case tested", + distinct_id: "distinct_id", + properties: %{foo: "bar"}, + timestamp: _ + } = event + end + + test "ignores set context but uses global one from the config", %{sender_pid: sender_pid} do + PostHog.set_context(%{hello: "world"}) + PostHog.bare_capture("case tested", "distinct_id", %{foo: "bar"}) + + assert %{events: [%{properties: properties}]} = :sys.get_state(sender_pid) + + assert %{foo: "bar", "$lib": "posthog-elixir", "$lib_version": _} = properties + refute properties[:hello] + end + end + + describe "capture/4" do + test "simple call", %{sender_pid: sender_pid} do + PostHog.capture("case tested", %{distinct_id: "distinct_id"}) + + assert %{events: [event]} = :sys.get_state(sender_pid) + + assert %{ + event: "case tested", + distinct_id: "distinct_id", + properties: %{}, + timestamp: _ + } = event + end + + test "distinct_id is required" do + assert {:error, :missing_distinct_id} = PostHog.capture("case tested") + end + + test "with properties", %{sender_pid: sender_pid} do + PostHog.capture("case tested", %{distinct_id: "distinct_id", foo: "bar"}) + + assert %{events: [event]} = :sys.get_state(sender_pid) + + assert %{ + event: "case tested", + distinct_id: "distinct_id", + properties: %{foo: "bar"}, + timestamp: _ + } = event + end + + @tag config: [supervisor_name: CustomPostHog] + test "simple call for custom supervisor", %{sender_pid: sender_pid} do + PostHog.capture(CustomPostHog, "case tested", %{distinct_id: "distinct_id"}) + + assert %{events: [event]} = :sys.get_state(sender_pid) + + assert %{ + event: "case tested", + distinct_id: "distinct_id", + properties: %{}, + timestamp: _ + } = event + end + + @tag config: [supervisor_name: CustomPostHog] + test "with properties for custom supervisor", %{sender_pid: sender_pid} do + PostHog.capture(CustomPostHog, "case tested", %{distinct_id: "distinct_id", foo: "bar"}) + + assert %{events: [event]} = :sys.get_state(sender_pid) + + assert %{ + event: "case tested", + distinct_id: "distinct_id", + properties: %{foo: "bar"}, + timestamp: _ + } = event + end + + test "includes relevant event context", %{sender_pid: sender_pid} do + PostHog.set_context(%{hello: "world", distinct_id: "distinct_id"}) + PostHog.set_event_context("case tested", %{foo: "bar"}) + PostHog.set_context(MyPostHog, %{spam: "eggs"}) + PostHog.capture("case tested", %{final: "override"}) + + assert %{events: [event]} = :sys.get_state(sender_pid) + + assert %{ + event: "case tested", + distinct_id: "distinct_id", + properties: %{ + hello: "world", + foo: "bar", + final: "override" + }, + timestamp: _ + } = event + end + end + + describe "get_feature_flag/2" do + test "returns body on success" do + expect(API.Mock, :request, fn _client, method, url, opts -> + assert method == :post + assert url == "/flags" + assert opts[:params] == %{v: 2} + + assert opts[:json] == %{ + distinct_id: "foo" + } + + {:ok, %{status: 200, body: "body"}} + end) + + assert {:ok, %{status: 200, body: "body"}} = PostHog.get_feature_flag("foo") + end + + test "sophisticated body" do + expect(API.Mock, :request, fn client, method, url, opts -> + assert opts[:json] == %{ + distinct_id: "foo", + groups: %{group_type: "group_id"} + } + + API.Stub.request(client, method, url, opts) + end) + + assert {:ok, %{}} = + PostHog.get_feature_flag(%{distinct_id: "foo", groups: %{group_type: "group_id"}}) + end + + test "errors passed as is" do + expect(API.Mock, :request, fn _client, _method, _url, _opts -> + {:error, :transport_error} + end) + + assert {:error, :transport_error} = PostHog.get_feature_flag("foo") + end + + test "non-200 is wrapped in error" do + expect(API.Mock, :request, fn _client, _method, _url, _opts -> + {:ok, %{status: 503}} + end) + + assert {:ok, %{status: 503}} = PostHog.get_feature_flag("foo") + end + + @tag config: [supervisor_name: MyPostHog] + test "custom PostHog instance" do + expect(API.Mock, :request, fn client, method, url, opts -> + assert opts[:json] == %{distinct_id: "foo"} + + API.Stub.request(client, method, url, opts) + end) + + assert {:ok, %{}} = PostHog.get_feature_flag(MyPostHog, "foo") + end + end + + describe "set_context/2 + get_context/2" do + test "default scope" do + PostHog.set_context(%{foo: "bar"}) + assert PostHog.get_context() == %{foo: "bar"} + assert PostHog.get_context(PostHog) == %{foo: "bar"} + assert PostHog.get_event_context("$exception") == %{foo: "bar"} + assert PostHog.get_event_context(PostHog, "$exception") == %{foo: "bar"} + end + + test "named scope, all events" do + PostHog.set_context(MyPostHog, %{foo: "bar"}) + assert PostHog.get_context() == %{} + assert PostHog.get_event_context("$exception") == %{} + assert PostHog.get_context(MyPostHog) == %{foo: "bar"} + assert PostHog.get_event_context(MyPostHog, "$exception") == %{foo: "bar"} + end + end + + describe "set_event_context/2 + get_event_context/2" do + test "default scope" do + PostHog.set_event_context("$exception", %{foo: "bar"}) + assert PostHog.get_context() == %{} + assert PostHog.get_event_context("$exception") == %{foo: "bar"} + assert PostHog.get_context(PostHog) == %{} + assert PostHog.get_event_context(PostHog, "$exception") == %{foo: "bar"} + end + + test "named scope" do + PostHog.set_event_context(MyPostHog, "$exception", %{foo: "bar"}) + assert PostHog.get_context() == %{} + assert PostHog.get_event_context("$exception") == %{} + assert PostHog.get_context(MyPostHog) == %{} + assert PostHog.get_event_context(MyPostHog, "$exception") == %{foo: "bar"} + end + end +end diff --git a/test/posthog/client_test.exs b/test/posthog/client_test.exs deleted file mode 100644 index f196f4e..0000000 --- a/test/posthog/client_test.exs +++ /dev/null @@ -1,323 +0,0 @@ -defmodule Posthog.ClientTest do - # Async tests are not supported in this file - # because we're using the process state to track the number of times - # a function is called. - use ExUnit.Case, async: false - import Mimic - - # Make private functions testable - @moduletag :capture_log - import Posthog.Client, only: [], warn: false - alias Posthog.Client - - setup do - # Clear the cache before each test - Cachex.clear(Posthog.Application.cache_name()) - stub_with(:hackney, HackneyStub) - {:ok, _} = HackneyStub.State.start_link([]) - :ok - end - - describe "feature_flag/3" do - test "when feature flag exists, returns feature flag struct and captures event" do - stub_with(:hackney, HackneyStub) - - HackneyStub.verify_capture(fn decoded -> - assert decoded["event"] == "$feature_flag_called" - assert decoded["distinct_id"] == "user_123" - assert decoded["properties"]["$feature_flag"] == "my-awesome-flag" - assert decoded["properties"]["$feature_flag_response"] == true - assert decoded["properties"]["$feature_flag_id"] == 1 - assert decoded["properties"]["$feature_flag_version"] == 23 - assert decoded["properties"]["$feature_flag_reason"] == "Matched condition set 3" - - assert decoded["properties"]["$feature_flag_request_id"] == - "0f801b5b-0776-42ca-b0f7-8375c95730bf" - end) - - assert {:ok, - %Posthog.FeatureFlag{ - name: "my-awesome-flag", - enabled: true, - payload: "example-payload-string" - }} = Client.feature_flag("my-awesome-flag", "user_123") - end - - test "when variant flag exists, returns feature flag struct with variant and captures event" do - stub_with(:hackney, HackneyStub) - - HackneyStub.verify_capture(fn decoded -> - assert decoded["event"] == "$feature_flag_called" - assert decoded["distinct_id"] == "user_123" - assert decoded["properties"]["$feature_flag"] == "my-multivariate-flag" - assert decoded["properties"]["$feature_flag_response"] == "some-string-value" - assert decoded["properties"]["$feature_flag_id"] == 3 - assert decoded["properties"]["$feature_flag_version"] == 1 - assert decoded["properties"]["$feature_flag_reason"] == "Matched condition set 1" - - assert decoded["properties"]["$feature_flag_request_id"] == - "0f801b5b-0776-42ca-b0f7-8375c95730bf" - end) - - assert {:ok, - %Posthog.FeatureFlag{ - name: "my-multivariate-flag", - enabled: "some-string-value", - payload: nil - }} = Client.feature_flag("my-multivariate-flag", "user_123") - end - - test "does not capture feature_flag_called event twice for same distinct_id and flag key" do - # Initialize the counter in the process dictionary - Process.put(:capture_count, 0) - - stub_with(:hackney, HackneyStub) - copy(Client) - - stub(Client, :capture, fn "$feature_flag_called", _distinct_id, properties, _opts -> - # Increment the counter in the process dictionary - Process.put(:capture_count, Process.get(:capture_count) + 1) - - assert properties["$feature_flag"] == "my-multivariate-flag" - assert properties["$feature_flag_response"] == "some-string-value" - assert properties["$feature_flag_id"] == 3 - assert properties["$feature_flag_version"] == 1 - assert properties["$feature_flag_reason"] == "Matched condition set 1" - assert properties["$feature_flag_request_id"] == "0f801b5b-0776-42ca-b0f7-8375c95730bf" - - {:ok, %{status: 200}} - end) - - # First call - assert {:ok, - %Posthog.FeatureFlag{ - name: "my-multivariate-flag", - enabled: "some-string-value", - payload: nil - }} = Client.feature_flag("my-multivariate-flag", "user_123") - - # Second call with same parameters - assert {:ok, - %Posthog.FeatureFlag{ - name: "my-multivariate-flag", - enabled: "some-string-value", - payload: nil - }} = Client.feature_flag("my-multivariate-flag", "user_123") - - # Verify capture was only called once - assert Process.get(:capture_count) == 1 - end - - test "captures feature_flag_called event for different user IDs or flag keys" do - # Initialize the counter in the process dictionary - Process.put(:capture_count, 0) - - # Keep track of seen combinations - Process.put(:seen_combinations, MapSet.new()) - - stub_with(:hackney, HackneyStub) - copy(Client) - - stub(Client, :capture, fn "$feature_flag_called", distinct_id, properties, _opts -> - # Increment the counter in the process dictionary - Process.put(:capture_count, Process.get(:capture_count) + 1) - - # Add this combination to seen combinations - Process.put( - :seen_combinations, - MapSet.put(Process.get(:seen_combinations), { - distinct_id, - properties["$feature_flag"], - properties["$feature_flag_response"] - }) - ) - - # Verify properties are correct regardless of order - assert distinct_id in ["user_123", "user_456"] - assert properties["$feature_flag"] in ["my-multivariate-flag", "my-awesome-flag"] - assert properties["$feature_flag_response"] in [true, "some-string-value"] - assert properties["$feature_flag_id"] in [1, 3] - assert properties["$feature_flag_version"] in [1, 23] - - assert properties["$feature_flag_reason"] in [ - "Matched condition set 1", - "Matched condition set 3" - ] - - assert properties["$feature_flag_request_id"] == "0f801b5b-0776-42ca-b0f7-8375c95730bf" - - {:ok, %{status: 200}} - end) - - # Call feature_flag with different combinations - assert {:ok, - %Posthog.FeatureFlag{ - name: "my-multivariate-flag", - enabled: "some-string-value", - payload: nil - }} = Client.feature_flag("my-multivariate-flag", "user_123") - - assert {:ok, - %Posthog.FeatureFlag{ - name: "my-multivariate-flag", - enabled: "some-string-value", - payload: nil - }} = Client.feature_flag("my-multivariate-flag", "user_456") - - assert {:ok, - %Posthog.FeatureFlag{ - name: "my-awesome-flag", - enabled: true, - payload: "example-payload-string" - }} = Client.feature_flag("my-awesome-flag", "user_123") - - # Verify we got all three unique combinations - assert Process.get(:capture_count) == 3 - assert MapSet.size(Process.get(:seen_combinations)) == 3 - end - - test "does not capture event when send_feature_flag_event is false" do - stub_with(:hackney, HackneyStub) - copy(Client) - reject(&Client.capture/3) - - assert {:ok, - %Posthog.FeatureFlag{ - name: "my-multivariate-flag", - enabled: "some-string-value", - payload: nil - }} = - Client.feature_flag("my-multivariate-flag", "user_123", - send_feature_flag_event: false - ) - end - - test "when feature flag has a json payload, will return decoded payload" do - stub_with(:hackney, HackneyStub) - - assert Client.feature_flag("my-awesome-flag-2", "user_123") == - {:ok, - %Posthog.FeatureFlag{ - enabled: true, - name: "my-awesome-flag-2", - payload: %{"color" => "blue", "animal" => "hedgehog"} - }} - end - - test "when feature flag has an array payload, will return decoded payload" do - stub_with(:hackney, HackneyStub) - - assert Client.feature_flag("array-payload", "user_123") == - {:ok, - %Posthog.FeatureFlag{ - enabled: true, - name: "array-payload", - payload: [0, 1, 2] - }} - end - - test "when feature flag does not have a payload, will return flag value" do - stub_with(:hackney, HackneyStub) - - assert Client.feature_flag("flag-thats-not-on", "user_123") == - {:ok, - %Posthog.FeatureFlag{ - enabled: false, - name: "flag-thats-not-on", - payload: nil - }} - end - - test "when feature flag does not exist, returns not_found" do - stub_with(:hackney, HackneyStubV3) - - assert Client.feature_flag("does-not-exist", "user_123") == - {:error, :not_found} - end - end - - describe "capture/3" do - test "captures an event with basic properties" do - stub(:hackney, :post, fn url, headers, body, _opts -> - assert url == "https://us.posthog.com/capture" - assert headers == [{"content-type", "application/json"}] - decoded = Jason.decode!(body) - assert decoded["event"] == "test_event" - assert decoded["distinct_id"] == "user_123" - {:ok, 200, [], "ref"} - end) - - stub(:hackney, :body, fn "ref" -> {:ok, "{}"} end) - - assert {:ok, %{status: 200}} = Client.capture("test_event", "user_123") - end - - test "captures an event with timestamp" do - timestamp = "2024-03-20T12:00:00Z" - - stub(:hackney, :post, fn _url, _headers, body, _opts -> - decoded = Jason.decode!(body) - assert decoded["timestamp"] == timestamp - {:ok, 200, [], "ref"} - end) - - stub(:hackney, :body, fn "ref" -> {:ok, "{}"} end) - - assert {:ok, %{status: 200}} = - Client.capture("test_event", "user_123", %{}, timestamp: timestamp) - end - - test "captures an event with custom headers" do - stub(:hackney, :post, fn _url, headers, _body, _opts -> - assert Enum.sort(headers) == - Enum.sort([ - {"content-type", "application/json"}, - {"x-forwarded-for", "127.0.0.1"} - ]) - - {:ok, 200, [], "ref"} - end) - - stub(:hackney, :body, fn "ref" -> {:ok, "{}"} end) - - assert {:ok, %{status: 200}} = - Client.capture("test_event", "user_123", %{}, - headers: [{"x-forwarded-for", "127.0.0.1"}] - ) - end - end - - describe "enabled_capture" do - test "when enabled_capture is false, capture returns success without making request" do - Application.put_env(:posthog, :enabled_capture, false) - on_exit(fn -> Application.delete_env(:posthog, :enabled_capture) end) - - assert Client.capture("test_event", "user_123") == - {:ok, %{status: 200, headers: [], body: nil}} - end - - test "when enabled_capture is false, batch returns success without making request" do - Application.put_env(:posthog, :enabled_capture, false) - on_exit(fn -> Application.delete_env(:posthog, :enabled_capture) end) - - events = [ - {"test_event", %{distinct_id: "user_123"}, nil}, - {"another_event", %{distinct_id: "user_123"}, nil} - ] - - assert Client.batch(events, []) == - {:ok, %{status: 200, headers: [], body: nil}} - end - - test "when enabled_capture is false, feature_flags still works" do - Application.put_env(:posthog, :enabled_capture, false) - on_exit(fn -> Application.delete_env(:posthog, :enabled_capture) end) - - # Stub FF HTTP request - stub_with(:hackney, HackneyStub) - - assert {:ok, %{feature_flags: flags}} = Client.feature_flags("user_123", []) - assert flags["my-awesome-flag"] == true - end - end -end diff --git a/test/posthog/context_test.exs b/test/posthog/context_test.exs new file mode 100644 index 0000000..af5f313 --- /dev/null +++ b/test/posthog/context_test.exs @@ -0,0 +1,62 @@ +defmodule PostHog.ContextTest do + use ExUnit.Case, async: true + + alias PostHog.Context + + test "sets context for specific scope" do + assert :ok = Context.set(PostHog, "$exception", %{foo: "bar"}) + assert [__posthog__: %{PostHog => %{"$exception" => %{foo: "bar"}}}] = Logger.metadata() + end + + test "context is merged" do + Context.set(PostHog, "$exception", %{foo: "bar"}) + Context.set(PostHog, "$exception", %{foo: "baz", eggs: "spam"}) + + assert [__posthog__: %{PostHog => %{"$exception" => %{eggs: "spam", foo: "baz"}}}] = + Logger.metadata() + end + + test "but not deep merged" do + Context.set(PostHog, "$exception", %{foo: %{eggs: "spam"}}) + Context.set(PostHog, "$exception", %{foo: %{bar: "baz"}}) + + assert [__posthog__: %{PostHog => %{"$exception" => %{foo: %{bar: "baz"}}}}] = + Logger.metadata() + end + + test "multiple scopes" do + Context.set(PostHog, :all, %{foo: "bar"}) + Context.set(MyPostHog, "$exception", %{foo: "baz"}) + Context.set(:all, :all, %{hello: "world"}) + + assert [ + __posthog__: %{ + PostHog => %{all: %{foo: "bar"}}, + MyPostHog => %{"$exception" => %{foo: "baz"}}, + all: %{all: %{hello: "world"}} + } + ] = Logger.metadata() + end + + test "get/0 retrieves context with scope + all" do + Context.set(PostHog, :all, %{foo: "bar"}) + Context.set(MyPostHog, "$exception", %{foo: "baz"}) + Context.set(:all, :all, %{hello: "world"}) + Logger.metadata(foo: "baz") + + assert %{foo: "bar", hello: "world"} = Context.get(PostHog, "$exception") + assert %{foo: "baz", hello: "world"} = Context.get(MyPostHog, "$exception") + assert %{hello: "world"} = Context.get(MyPostHog, "$exception_list") + assert %{hello: "world"} = Context.get(FooBar, "$exception") + end + + test "in case of overlapping keys prefer more specific scope" do + Context.set(PostHog, :all, %{foo: 1}) + Context.set(PostHog, "$exception", %{foo: 2}) + Context.set(:all, :all, %{foo: 3}) + Context.set(:all, "$exception", %{foo: 4}) + + assert %{foo: 2} = Context.get(PostHog, "$exception") + assert %{foo: 4} = Context.get(:all, "$exception") + end +end diff --git a/test/posthog/event_test.exs b/test/posthog/event_test.exs deleted file mode 100644 index 7c696bc..0000000 --- a/test/posthog/event_test.exs +++ /dev/null @@ -1,132 +0,0 @@ -defmodule Posthog.EventTest do - use ExUnit.Case, async: true - doctest Posthog.Event - - alias Posthog.Event - - defstruct [:name] - - describe "new/4" do - test "creates an event with default values" do - event = Event.new("test_event", "user_123") - - assert event.event == "test_event" - assert event.distinct_id == "user_123" - assert event.properties == %{} - assert is_binary(event.timestamp) - - # Generated valid UUID - assert event.uuid - assert is_binary(event.uuid) - assert String.length(event.uuid) == 36 - end - - test "creates an event with properties" do - properties = %{price: 99.99, quantity: 2} - event = Event.new("purchase", "user_123", properties) - - assert event.event == "purchase" - assert event.distinct_id == "user_123" - assert event.properties == properties - end - - test "creates an event with custom timestamp" do - timestamp = "2023-01-01T00:00:00Z" - event = Event.new("login", "user_123", %{}, timestamp: timestamp) - - assert event.timestamp == timestamp - end - - test "creates an event with custom UUID" do - uuid = "123e4567-e89b-12d3-a456-426614174000" - event = Event.new("signup", "user_123", %{}, uuid: uuid) - - assert event.uuid == uuid - end - - test "converts atom event name to string" do - event = Event.new(:page_view, "user_123") - - assert event.event == "page_view" - end - end - - describe "to_api_payload/1" do - test "converts event to API payload" do - event = Event.new("page_view", "user_123", %{page: "home"}) - payload = Event.to_api_payload(event) - - assert payload.event == "page_view" - assert payload.distinct_id == "user_123" - assert payload.properties["page"] == "home" - assert payload.properties["$lib"] == "posthog-elixir" - assert payload.properties["$lib_version"] == Mix.Project.config()[:version] - assert is_binary(payload.uuid) - assert is_binary(payload.timestamp) - end - - test "overrides library properties with custom properties" do - event = - Event.new( - "page_view", - "user_123", - %{"$lib" => "custom", "$lib_version" => "1.0.0"} - ) - - payload = Event.to_api_payload(event) - - assert payload.properties["$lib"] == "custom" - assert payload.properties["$lib_version"] == "1.0.0" - end - - test "deep stringifies property keys" do - event = Event.new("test", "user_123", %{user: %{firstName: "John", lastName: "Doe"}}) - payload = Event.to_api_payload(event) - - assert payload.properties["user"]["firstName"] == "John" - assert payload.properties["user"]["lastName"] == "Doe" - end - - test "handles nested lists in properties" do - event = Event.new("test", "user_123", %{tags: ["elixir", "posthog"]}) - payload = Event.to_api_payload(event) - - assert payload.properties["tags"] == ["elixir", "posthog"] - end - - test "handles structs in properties" do - event = - Event.new("test", "user_123", %{ - tags: ["elixir", "posthog"], - event: %__MODULE__{name: "test"} - }) - - payload = Event.to_api_payload(event) - - assert payload.properties["tags"] == ["elixir", "posthog"] - assert payload.properties["event"]["name"] == "test" - end - end - - describe "batch_payload/1" do - test "creates a batch payload from multiple events" do - events = [ - Event.new("page_view", "user_123", %{page: "home"}), - Event.new("click", "user_123", %{button: "signup"}) - ] - - batch = Event.batch_payload(events) - - assert length(batch.batch) == 2 - [first, second] = batch.batch - assert first.event == "page_view" - assert second.event == "click" - end - - test "handles empty list" do - batch = Event.batch_payload([]) - - assert batch.batch == [] - end - end -end diff --git a/test/posthog/handler_test.exs b/test/posthog/handler_test.exs new file mode 100644 index 0000000..5bf7734 --- /dev/null +++ b/test/posthog/handler_test.exs @@ -0,0 +1,1004 @@ +defmodule PostHog.HandlerTest do + use PostHog.Case, async: true + + require Logger + + @moduletag capture_log: true + + setup {LoggerHandlerKit.Arrange, :ensure_per_handler_translation} + setup :setup_supervisor + setup :setup_logger_handler + + test "takes distinct_id from metadata", %{handler_ref: ref, sender_pid: sender_pid} do + Logger.info("Hello World", distinct_id: "foo") + LoggerHandlerKit.Assert.assert_logged(ref) + + assert %{events: [event]} = :sys.get_state(sender_pid) + + assert %{ + event: "$exception", + distinct_id: "foo", + properties: %{ + "$exception_list": [ + %{ + type: "Hello World", + value: "Hello World", + mechanism: %{handled: true, type: "generic"} + } + ] + } + } = event + end + + test "always exports global context", %{handler_ref: ref, sender_pid: sender_pid} do + Logger.info("Hello World") + LoggerHandlerKit.Assert.assert_logged(ref) + + assert %{events: [event]} = :sys.get_state(sender_pid) + + assert %{ + event: "$exception", + properties: %{ + "$lib": "posthog-elixir", + "$lib_version": _, + "$exception_list": [ + %{ + type: "Hello World", + value: "Hello World", + mechanism: %{handled: true, type: "generic"} + } + ] + } + } = event + end + + @tag config: [capture_level: :warning] + test "ignores messages lower than capture_level", %{handler_ref: ref, sender_pid: sender_pid} do + Logger.info("Hello World") + LoggerHandlerKit.Assert.assert_logged(ref) + + assert %{events: []} = :sys.get_state(sender_pid) + end + + @tag config: [capture_level: :warning] + test "logs with crash reason always captured", %{handler_ref: ref, sender_pid: sender_pid} do + Logger.debug("Hello World", crash_reason: {"exit reason", []}) + LoggerHandlerKit.Assert.assert_logged(ref) + + assert %{events: [event]} = :sys.get_state(sender_pid) + + assert %{ + event: "$exception", + properties: %{ + "$exception_list": [ + %{ + type: "** (exit) \"exit reason\"", + value: "** (exit) \"exit reason\"", + mechanism: %{handled: false, type: "generic"} + } + ] + } + } = event + end + + test "string message", %{handler_ref: ref, sender_pid: sender_pid} do + LoggerHandlerKit.Act.string_message() + LoggerHandlerKit.Assert.assert_logged(ref) + + assert %{events: [event]} = :sys.get_state(sender_pid) + + assert %{ + event: "$exception", + properties: %{ + "$exception_list": [ + %{ + type: "Hello World", + value: "Hello World", + mechanism: %{handled: true} + } + ] + } + } = event + end + + test "charlist message", %{handler_ref: ref, sender_pid: sender_pid} do + LoggerHandlerKit.Act.charlist_message() + LoggerHandlerKit.Assert.assert_logged(ref) + + assert %{events: [event]} = :sys.get_state(sender_pid) + + assert %{ + event: "$exception", + properties: %{ + "$exception_list": [ + %{ + type: "Hello World", + value: "Hello World", + mechanism: %{handled: true} + } + ] + } + } = event + end + + test "chardata message", %{handler_ref: ref, sender_pid: sender_pid} do + LoggerHandlerKit.Act.chardata_message(:proper) + LoggerHandlerKit.Assert.assert_logged(ref) + + assert %{events: [event]} = :sys.get_state(sender_pid) + + assert %{ + event: "$exception", + properties: %{ + "$exception_list": [ + %{ + type: "Hello World", + value: "Hello World", + mechanism: %{handled: true} + } + ] + } + } = event + end + + test "chardata message - improper", %{handler_ref: ref, sender_pid: sender_pid} do + LoggerHandlerKit.Act.chardata_message(:improper) + LoggerHandlerKit.Assert.assert_logged(ref) + + assert %{events: [event]} = :sys.get_state(sender_pid) + + assert %{ + event: "$exception", + properties: %{ + "$exception_list": [ + %{ + type: "Hello World", + value: "Hello World", + mechanism: %{handled: true} + } + ] + } + } = event + end + + test "io format", %{handler_ref: ref, sender_pid: sender_pid} do + LoggerHandlerKit.Act.io_format() + LoggerHandlerKit.Assert.assert_logged(ref) + + assert %{events: [event]} = :sys.get_state(sender_pid) + + assert %{ + event: "$exception", + properties: %{ + "$exception_list": [ + %{ + type: "Hello World", + value: "Hello World", + mechanism: %{handled: true} + } + ] + } + } = event + end + + test "keyword report", %{handler_ref: ref, sender_pid: sender_pid} do + LoggerHandlerKit.Act.keyword_report() + LoggerHandlerKit.Assert.assert_logged(ref) + + assert %{events: [event]} = :sys.get_state(sender_pid) + + assert %{ + event: "$exception", + properties: %{ + "$exception_list": [ + %{ + type: "[hello: \"world\"]", + value: "[hello: \"world\"]", + mechanism: %{handled: true} + } + ] + } + } = event + end + + test "map report", %{handler_ref: ref, sender_pid: sender_pid} do + LoggerHandlerKit.Act.map_report() + LoggerHandlerKit.Assert.assert_logged(ref) + + assert %{events: [event]} = :sys.get_state(sender_pid) + + assert %{ + event: "$exception", + properties: %{ + "$exception_list": [ + %{ + type: "%{hello: \"world\"}", + value: "%{hello: \"world\"}", + mechanism: %{handled: true} + } + ] + } + } = event + end + + test "struct report", %{handler_ref: ref, sender_pid: sender_pid} do + LoggerHandlerKit.Act.struct_report() + LoggerHandlerKit.Assert.assert_logged(ref) + + assert %{events: [event]} = :sys.get_state(sender_pid) + + assert %{ + event: "$exception", + properties: %{ + "$exception_list": [ + %{ + type: "%LoggerHandlerKit.FakeStruct{hello: \"world\"}", + value: "%LoggerHandlerKit.FakeStruct{hello: \"world\"}", + mechanism: %{handled: true} + } + ] + } + } = event + end + + test "task error exception", %{handler_ref: ref, sender_pid: sender_pid} do + LoggerHandlerKit.Act.task_error(:exception) + LoggerHandlerKit.Assert.assert_logged(ref) + + assert %{events: [event]} = :sys.get_state(sender_pid) + + assert %{ + event: "$exception", + properties: %{ + "$exception_list": [ + %{ + type: "RuntimeError", + value: "** (RuntimeError) oops", + mechanism: %{handled: false, type: "generic"}, + stacktrace: %{ + type: "raw", + frames: [ + %{ + in_app: false, + filename: "lib/logger_handler_kit/act.ex", + function: "anonymous fn/0 in LoggerHandlerKit.Act.task_error/1", + lineno: _, + module: "LoggerHandlerKit.Act", + platform: "custom", + lang: "elixir" + }, + %{ + in_app: false, + filename: "lib/task/supervised.ex", + function: "Task.Supervised.invoke_mfa/2", + lineno: _, + module: "Task.Supervised", + platform: "custom", + lang: "elixir" + } + ] + } + } + ] + } + } = event + end + + test "task error throw", %{handler_ref: ref, sender_pid: sender_pid} do + LoggerHandlerKit.Act.task_error(:throw) + LoggerHandlerKit.Assert.assert_logged(ref) + + assert %{events: [event]} = :sys.get_state(sender_pid) + + assert %{ + event: "$exception", + properties: %{ + "$exception_list": [ + %{ + type: "** (throw) \"catch!\"", + value: "** (throw) \"catch!\"", + mechanism: %{handled: false, type: "generic"}, + stacktrace: %{ + type: "raw", + frames: [ + %{ + in_app: false, + filename: "lib/logger_handler_kit/act.ex", + function: "anonymous fn/0 in LoggerHandlerKit.Act.task_error/1", + lineno: _, + module: "LoggerHandlerKit.Act", + platform: "custom", + lang: "elixir" + }, + %{ + in_app: false, + filename: "lib/task/supervised.ex", + function: "Task.Supervised.invoke_mfa/2", + lineno: _, + module: "Task.Supervised", + platform: "custom", + lang: "elixir" + } + ] + } + } + ] + } + } = event + end + + test "task error exit", %{handler_ref: ref, sender_pid: sender_pid} do + LoggerHandlerKit.Act.task_error(:exit) + LoggerHandlerKit.Assert.assert_logged(ref) + + assert %{events: [event]} = :sys.get_state(sender_pid) + + assert %{ + event: "$exception", + properties: %{ + "$exception_list": [ + %{ + type: "** (exit) \"i quit\"", + value: "** (exit) \"i quit\"", + mechanism: %{handled: false, type: "generic"}, + stacktrace: %{ + type: "raw", + frames: [ + %{ + in_app: false, + filename: "lib/logger_handler_kit/act.ex", + function: "anonymous fn/0 in LoggerHandlerKit.Act.task_error/1", + lineno: _, + module: "LoggerHandlerKit.Act", + platform: "custom", + lang: "elixir" + }, + %{ + in_app: false, + filename: "lib/task/supervised.ex", + function: "Task.Supervised.invoke_mfa/2", + lineno: _, + module: "Task.Supervised", + platform: "custom", + lang: "elixir" + } + ] + } + } + ] + } + } = event + end + + test "genserver crash exception", %{handler_ref: ref, sender_pid: sender_pid} do + LoggerHandlerKit.Act.genserver_crash(:exception) + LoggerHandlerKit.Assert.assert_logged(ref) + + assert %{events: [event]} = :sys.get_state(sender_pid) + + assert %{ + event: "$exception", + properties: %{ + "$exception_list": [ + %{ + type: "RuntimeError", + value: "** (RuntimeError) oops", + mechanism: %{handled: false, type: "generic"}, + stacktrace: %{ + type: "raw", + frames: [ + %{ + in_app: false, + filename: "lib/logger_handler_kit/act.ex", + function: "anonymous fn/0 in LoggerHandlerKit.Act.genserver_crash/1", + lineno: _, + module: "LoggerHandlerKit.Act", + platform: "custom", + lang: "elixir" + }, + %{ + filename: "gen_server.erl", + function: ":gen_server.try_handle_call/4", + in_app: false, + lineno: _, + module: ":gen_server", + platform: "custom", + lang: "elixir" + }, + %{ + filename: "gen_server.erl", + function: ":gen_server.handle_msg" <> _, + in_app: false, + lineno: _, + module: ":gen_server", + platform: "custom", + lang: "elixir" + }, + %{ + filename: "proc_lib.erl", + function: ":proc_lib.init_p_do_apply/3", + in_app: false, + lineno: _, + module: ":proc_lib", + platform: "custom", + lang: "elixir" + } + ] + } + } + ] + } + } = event + end + + test "genserver crash exit", %{handler_ref: ref, sender_pid: sender_pid} do + LoggerHandlerKit.Act.genserver_crash(:exit) + LoggerHandlerKit.Assert.assert_logged(ref) + + assert %{events: [event]} = :sys.get_state(sender_pid) + + assert %{ + event: "$exception", + properties: %{ + "$exception_list": [ + %{ + type: "** (exit) \"i quit\"", + value: "** (exit) \"i quit\"", + mechanism: %{handled: false, type: "generic"}, + stacktrace: %{ + type: "raw", + frames: [ + %{ + in_app: false, + filename: "lib/logger_handler_kit/act.ex", + function: "anonymous fn/0 in LoggerHandlerKit.Act.genserver_crash/1", + lineno: _, + module: "LoggerHandlerKit.Act", + platform: "custom", + lang: "elixir" + }, + %{ + filename: "gen_server.erl", + function: ":gen_server.try_handle_call/4", + lineno: _, + module: ":gen_server", + platform: "custom", + lang: "elixir", + in_app: false + }, + %{ + filename: "gen_server.erl", + function: ":gen_server.handle_msg" <> _, + lineno: _, + module: ":gen_server", + platform: "custom", + lang: "elixir", + in_app: false + }, + %{ + filename: "proc_lib.erl", + function: ":proc_lib.init_p_do_apply/3", + in_app: false, + lineno: _, + module: ":proc_lib", + platform: "custom", + lang: "elixir" + } + ] + } + } + ] + } + } = event + end + + test "genserver crash exit with struct", %{handler_ref: ref, sender_pid: sender_pid} do + LoggerHandlerKit.Act.genserver_crash(:exit_with_struct) + LoggerHandlerKit.Assert.assert_logged(ref) + + assert %{events: [event]} = :sys.get_state(sender_pid) + + assert %{ + event: "$exception", + properties: %{ + "$exception_list": [ + %{ + type: "** (exit) %LoggerHandlerKit.FakeStruct{hello: \"world\"}", + value: "** (exit) %LoggerHandlerKit.FakeStruct{hello: \"world\"}", + mechanism: %{handled: false, type: "generic"} + } + ] + } + } = event + end + + test "genserver crash throw", %{handler_ref: ref, sender_pid: sender_pid} do + LoggerHandlerKit.Act.genserver_crash(:throw) + LoggerHandlerKit.Assert.assert_logged(ref) + + assert %{events: [event]} = :sys.get_state(sender_pid) + + assert %{ + event: "$exception", + properties: %{ + "$exception_list": [ + %{ + type: "** (exit) bad return value: \"catch!\"", + value: "** (exit) bad return value: \"catch!\"", + mechanism: %{handled: false, type: "generic"} + } + ] + } + } = event + end + + test "gen_state_m crash exception", %{handler_ref: ref, sender_pid: sender_pid} do + LoggerHandlerKit.Act.gen_statem_crash(:exception) + LoggerHandlerKit.Assert.assert_logged(ref) + + assert %{events: [event]} = :sys.get_state(sender_pid) + + assert %{ + event: "$exception", + properties: %{ + "$exception_list": [ + %{ + type: "RuntimeError", + value: "** (RuntimeError) oops", + mechanism: %{handled: false, type: "generic"}, + stacktrace: %{ + frames: [ + %{ + function: "anonymous fn/0 in LoggerHandlerKit.Act.gen_statem_crash/1", + module: "LoggerHandlerKit.Act", + filename: "lib/logger_handler_kit/act.ex", + in_app: false, + lineno: _, + platform: "custom", + lang: "elixir" + }, + %{ + function: ":gen_statem.loop_state_callback/11", + module: ":gen_statem", + filename: "gen_statem.erl", + in_app: false, + lineno: _, + platform: "custom", + lang: "elixir" + }, + %{ + function: ":proc_lib.init_p_do_apply/3", + module: ":proc_lib", + filename: "proc_lib.erl", + in_app: false, + lineno: _, + platform: "custom", + lang: "elixir" + } + ], + type: "raw" + } + } + ] + } + } = event + end + + test "bare process crash exception", %{ + handler_id: handler_id, + handler_ref: ref, + sender_pid: sender_pid + } do + LoggerHandlerKit.Act.bare_process_crash(handler_id, :exception) + LoggerHandlerKit.Assert.assert_logged(ref) + + assert %{events: [event]} = :sys.get_state(sender_pid) + + assert %{ + event: "$exception", + properties: %{ + "$exception_list": [ + %{ + type: "RuntimeError", + value: "** (RuntimeError) oops", + mechanism: %{handled: false, type: "generic"}, + stacktrace: %{ + frames: [ + %{ + filename: "lib/logger_handler_kit/act.ex", + function: "anonymous fn/0 in LoggerHandlerKit.Act.bare_process_crash/2", + in_app: false, + lineno: _, + module: "LoggerHandlerKit.Act", + platform: "custom", + lang: "elixir" + } + ], + type: "raw" + } + } + ] + } + } = event + end + + test "bare process crash throw", %{ + handler_id: handler_id, + handler_ref: ref, + sender_pid: sender_pid + } do + LoggerHandlerKit.Act.bare_process_crash(handler_id, :throw) + LoggerHandlerKit.Assert.assert_logged(ref) + + assert %{events: [event]} = :sys.get_state(sender_pid) + + assert %{ + event: "$exception", + properties: %{ + "$exception_list": [ + %{ + type: "ErlangError", + value: "** (ErlangError) Erlang error: {:nocatch, \"catch!\"}", + mechanism: %{handled: false, type: "generic"}, + stacktrace: %{ + frames: [ + %{ + filename: "lib/logger_handler_kit/act.ex", + function: "anonymous fn/0 in LoggerHandlerKit.Act.bare_process_crash/2", + in_app: false, + lineno: _, + module: "LoggerHandlerKit.Act", + platform: "custom", + lang: "elixir" + } + ], + type: "raw" + } + } + ] + } + } = event + end + + @tag handle_sasl_reports: true + test "genserver init crash", %{handler_ref: ref, sender_pid: sender_pid} do + LoggerHandlerKit.Act.genserver_init_crash() + LoggerHandlerKit.Assert.assert_logged(ref) + + assert %{events: [event]} = :sys.get_state(sender_pid) + + assert %{ + event: "$exception", + properties: %{ + "$exception_list": [ + %{ + type: "RuntimeError", + value: "** (RuntimeError) oops", + mechanism: %{handled: false, type: "generic"}, + stacktrace: %{ + frames: [ + %{ + filename: "lib/logger_handler_kit/act.ex", + function: + "anonymous fn/0 in LoggerHandlerKit.Act.genserver_init_crash/0", + in_app: false, + lineno: _, + module: "LoggerHandlerKit.Act", + platform: "custom", + lang: "elixir" + }, + %{ + filename: "gen_server.erl", + function: ":gen_server.init_it/2", + in_app: false, + lineno: _, + module: ":gen_server", + platform: "custom", + lang: "elixir" + }, + %{ + filename: "gen_server.erl", + function: ":gen_server.init_it/6", + in_app: false, + lineno: _, + module: ":gen_server", + platform: "custom", + lang: "elixir" + }, + %{ + filename: "proc_lib.erl", + function: ":proc_lib.init_p_do_apply/3", + in_app: false, + lineno: _, + module: ":proc_lib", + platform: "custom", + lang: "elixir" + } + ], + type: "raw" + } + } + ] + } + } = event + end + + @tag handle_sasl_reports: true + test "proc_lib crash exception", %{handler_ref: ref, sender_pid: sender_pid} do + LoggerHandlerKit.Act.proc_lib_crash(:exception) + LoggerHandlerKit.Assert.assert_logged(ref) + + assert %{events: [event]} = :sys.get_state(sender_pid) + + assert %{ + event: "$exception", + properties: %{ + "$exception_list": [ + %{ + type: "RuntimeError", + value: "** (RuntimeError) oops", + mechanism: %{handled: false, type: "generic"}, + stacktrace: %{ + frames: [ + %{ + filename: "lib/logger_handler_kit/act.ex", + function: "anonymous fn/1 in LoggerHandlerKit.Act.proc_lib_crash/1", + in_app: false, + lineno: _, + module: "LoggerHandlerKit.Act", + platform: "custom", + lang: "elixir" + }, + %{ + filename: "proc_lib.erl", + function: ":proc_lib.init_p/3", + in_app: false, + lineno: _, + module: ":proc_lib", + platform: "custom", + lang: "elixir" + } + ], + type: "raw" + } + } + ] + } + } = event + end + + @tag handle_sasl_reports: true + test "supervisor progress report failed to start child", %{ + handler_ref: ref, + sender_pid: sender_pid + } do + LoggerHandlerKit.Act.supervisor_progress_report(:failed_to_start_child) + LoggerHandlerKit.Assert.assert_logged(ref) + + assert %{events: [event]} = :sys.get_state(sender_pid) + + assert %{ + event: "$exception", + properties: %{ + "$exception_list": [ + %{ + type: "Child :task of Supervisor" <> type_end, + value: "Child :task of Supervisor" <> value_end, + mechanism: %{handled: true, type: "generic"} + } + ] + } + } = event + + assert String.ends_with?(type_end, "failed to start") + assert String.ends_with?(value_end, "\nType: :worker") + end + + @tag handle_sasl_reports: true, config: [capture_level: :debug] + test "supervisor progress report child started", %{handler_ref: ref, sender_pid: sender_pid} do + LoggerHandlerKit.Act.supervisor_progress_report(:child_started) + LoggerHandlerKit.Assert.assert_logged(ref) + + assert %{events: [event]} = :sys.get_state(sender_pid) + + assert %{ + event: "$exception", + properties: %{ + "$exception_list": [ + %{ + type: "Child :task of Supervisor" <> type_end, + value: "Child :task of Supervisor" <> value_end, + mechanism: %{handled: true, type: "generic"} + } + ] + } + } = event + + assert String.ends_with?(type_end, "started") + assert String.ends_with?(value_end, "\nType: :worker") + end + + @tag handle_sasl_reports: true + test "supervisor progress report child terminated", %{handler_ref: ref, sender_pid: sender_pid} do + LoggerHandlerKit.Act.supervisor_progress_report(:child_terminated) + LoggerHandlerKit.Assert.assert_logged(ref) + LoggerHandlerKit.Assert.assert_logged(ref) + LoggerHandlerKit.Assert.assert_logged(ref) + + assert %{events: [_, _, _] = events} = :sys.get_state(sender_pid) + + for event <- events do + assert %{ + event: "$exception", + properties: %{ + "$exception_list": [ + %{ + type: "Child :task of Supervisor" <> type_end, + mechanism: %{handled: true, type: "generic"} + } + ] + } + } = event + + assert Enum.any?([ + String.ends_with?(type_end, "started"), + String.ends_with?(type_end, "terminated"), + String.ends_with?(type_end, "caused shutdown") + ]) + end + end + + @tag config: [metadata: [:extra]] + test "exports metadata if configured", %{handler_ref: ref, sender_pid: sender_pid} do + Logger.error("Error with metadata", extra: "Foo", hello: "world") + LoggerHandlerKit.Assert.assert_logged(ref) + + assert %{events: [event]} = :sys.get_state(sender_pid) + + assert %{ + event: "$exception", + properties: %{ + extra: "Foo", + "$exception_list": [ + %{ + type: "Error with metadata", + value: "Error with metadata", + mechanism: %{handled: true} + } + ] + } + } = event + end + + @tag config: [metadata: [:extra]] + test "ensures metadata is serializable", %{handler_ref: ref, sender_pid: sender_pid} do + LoggerHandlerKit.Act.metadata_serialization(:all) + LoggerHandlerKit.Act.string_message() + LoggerHandlerKit.Assert.assert_logged(ref) + + assert %{events: [event]} = :sys.get_state(sender_pid) + + assert %{ + event: "$exception", + properties: %{extra: maybe_encoded} + } = event + + assert %{ + boolean: true, + string: "hello world", + binary: "<<1, 2, 3>>", + atom: :foo, + integer: 42, + datetime: ~U[2025-06-01 12:34:56.000Z], + struct: %{hello: "world"}, + tuple: [:ok, "hello"], + keyword: %{hello: "world"}, + improper_keyword: "[[:a, 1] | {:b, 2}]", + fake_keyword: [[:a, 1], [:b, 2, :c]], + list: [1, 2, 3], + improper_list: "[1, 2 | 3]", + map: %{:hello => "world", "foo" => "bar"}, + function: "&LoggerHandlerKit.Act.metadata_serialization/1", + anonymous_function: "#Function<" <> _, + pid: "#PID<" <> _, + ref: "#Reference<" <> _, + port: "#Port<" <> _ + } = maybe_encoded + + JSON.encode!(maybe_encoded) + end + + @tag config: [metadata: [:extra]] + test "purposefully set context is always exported", %{ + config: config, + handler_ref: ref, + sender_pid: sender_pid + } do + PostHog.set_context(config.supervisor_name, %{foo: "bar"}) + Logger.error("Error with metadata", hello: "world") + LoggerHandlerKit.Assert.assert_logged(ref) + + assert %{events: [event]} = :sys.get_state(sender_pid) + + assert %{ + event: "$exception", + properties: %{ + foo: "bar", + "$exception_list": [ + %{ + type: "Error with metadata", + value: "Error with metadata", + mechanism: %{handled: true, type: "generic"} + } + ] + } + } = event + end + + test "erlang frames in stacktrace", %{handler_ref: ref, sender_pid: sender_pid} do + {:ok, _pid} = Task.start(fn -> :erlang.system_time(:foo) end) + LoggerHandlerKit.Assert.assert_logged(ref) + + assert %{events: [event]} = :sys.get_state(sender_pid) + + assert %{ + event: "$exception", + properties: %{ + "$exception_list": [ + %{ + type: "ArgumentError", + value: + "** (ArgumentError) errors were found at the given arguments:\n\n * 1st argument: invalid time unit\n", + stacktrace: %{ + type: "raw", + frames: [ + %{ + filename: "", + function: ":erlang.system_time(:foo)", + in_app: false, + lineno: nil, + module: ":erlang", + platform: "custom", + lang: "elixir" + } + | _ + ] + }, + mechanism: %{type: "generic", handled: false} + } + ] + } + } = event + end + + @tag config: [in_app_otp_apps: [:logger_handler_kit]] + test "marks in_app frames as such", %{handler_ref: ref, sender_pid: sender_pid} do + LoggerHandlerKit.Act.task_error(:exception) + LoggerHandlerKit.Assert.assert_logged(ref) + + assert %{events: [event]} = :sys.get_state(sender_pid) + + assert %{ + event: "$exception", + properties: %{ + "$exception_list": [ + %{ + stacktrace: %{ + type: "raw", + frames: [ + %{ + in_app: true, + module: "LoggerHandlerKit.Act" + }, + %{ + in_app: false, + module: "Task.Supervised" + } + ] + } + } + ] + } + } = event + end +end diff --git a/test/posthog/integrations/plug_test.exs b/test/posthog/integrations/plug_test.exs new file mode 100644 index 0000000..87bd069 --- /dev/null +++ b/test/posthog/integrations/plug_test.exs @@ -0,0 +1,213 @@ +defmodule PostHog.Integrations.PlugTest do + # This unfortunately will be flaky in async mode until + # https://github.com/erlang/otp/issues/9997 is fixed + use PostHog.Case, async: false + + @moduletag capture_log: true, config: [capture_level: :error] + + setup {LoggerHandlerKit.Arrange, :ensure_per_handler_translation} + setup :setup_supervisor + setup :setup_logger_handler + + defmodule MyRouter do + use Plug.Router + require Logger + + plug(PostHog.Integrations.Plug) + plug(:match) + plug(:dispatch) + + forward("/", to: LoggerHandlerKit.Plug) + end + + test "sets relevant context" do + conn = Plug.Test.conn(:get, "https://posthog.com/foo?bar=10") + assert PostHog.Integrations.Plug.call(conn, nil) + + assert PostHog.Context.get(:all, "$exception") == %{ + "$current_url": "https://posthog.com/foo?bar=10", + "$host": "posthog.com", + "$ip": "127.0.0.1", + "$pathname": "/foo" + } + end + + describe "Bandit" do + test "context is attached to exceptions", %{handler_ref: ref, sender_pid: sender_pid} do + LoggerHandlerKit.Act.plug_error(:exception, Bandit, MyRouter) + LoggerHandlerKit.Assert.assert_logged(ref) + LoggerHandlerKit.Assert.assert_logged(ref) + + assert %{events: [event]} = :sys.get_state(sender_pid) + + assert %{ + event: "$exception", + properties: properties + } = event + + assert %{ + "$current_url": "http://localhost/exception", + "$host": "localhost", + "$ip": "127.0.0.1", + "$pathname": "/exception", + "$lib": "posthog-elixir", + "$lib_version": _, + "$exception_list": [ + %{ + type: "RuntimeError", + value: "** (RuntimeError) oops", + mechanism: %{handled: false, type: "generic"}, + stacktrace: %{type: "raw", frames: _frames} + } + ] + } = properties + end + + test "context is attached to throws", %{handler_ref: ref, sender_pid: sender_pid} do + LoggerHandlerKit.Act.plug_error(:throw, Bandit, MyRouter) + LoggerHandlerKit.Assert.assert_logged(ref) + LoggerHandlerKit.Assert.assert_logged(ref) + + assert %{events: [event]} = :sys.get_state(sender_pid) + + assert %{ + event: "$exception", + properties: properties + } = event + + assert %{ + "$current_url": "http://localhost/throw", + "$host": "localhost", + "$ip": "127.0.0.1", + "$pathname": "/throw", + "$lib": "posthog-elixir", + "$lib_version": _, + "$exception_list": [ + %{ + type: "** (throw) \"catch!\"", + value: "** (throw) \"catch!\"", + mechanism: %{handled: false, type: "generic"}, + stacktrace: %{type: "raw", frames: _frames} + } + ] + } = properties + end + + test "context is attached to exit", %{handler_ref: ref, sender_pid: sender_pid} do + LoggerHandlerKit.Act.plug_error(:exit, Bandit, MyRouter) + LoggerHandlerKit.Assert.assert_logged(ref) + LoggerHandlerKit.Assert.assert_logged(ref) + + assert %{events: [event]} = :sys.get_state(sender_pid) + + assert %{ + event: "$exception", + properties: properties + } = event + + assert %{ + "$current_url": "http://localhost/exit", + "$host": "localhost", + "$ip": "127.0.0.1", + "$pathname": "/exit", + "$lib": "posthog-elixir", + "$lib_version": _, + "$exception_list": [ + %{ + type: "** (exit) \"i quit\"", + value: "** (exit) \"i quit\"", + mechanism: %{handled: false, type: "generic"} + } + ] + } = properties + end + end + + describe "Cowboy" do + test "context is attached to exceptions", %{handler_ref: ref, sender_pid: sender_pid} do + LoggerHandlerKit.Act.plug_error(:exception, Plug.Cowboy, MyRouter) + LoggerHandlerKit.Assert.assert_logged(ref) + + assert %{events: [event]} = :sys.get_state(sender_pid) + + assert %{ + event: "$exception", + properties: properties + } = event + + assert %{ + "$current_url": "http://localhost/exception", + "$host": "localhost", + "$ip": "127.0.0.1", + "$pathname": "/exception", + "$lib": "posthog-elixir", + "$lib_version": _, + "$exception_list": [ + %{ + type: "RuntimeError", + value: "** (RuntimeError) oops", + mechanism: %{handled: false, type: "generic"}, + stacktrace: %{type: "raw", frames: _frames} + } + ] + } = properties + end + + test "context is attached to throws", %{handler_ref: ref, sender_pid: sender_pid} do + LoggerHandlerKit.Act.plug_error(:throw, Plug.Cowboy, MyRouter) + LoggerHandlerKit.Assert.assert_logged(ref) + + assert %{events: [event]} = :sys.get_state(sender_pid) + + assert %{ + event: "$exception", + properties: properties + } = event + + assert %{ + "$current_url": "http://localhost/throw", + "$host": "localhost", + "$ip": "127.0.0.1", + "$pathname": "/throw", + "$lib": "posthog-elixir", + "$lib_version": _, + "$exception_list": [ + %{ + type: "** (throw) \"catch!\"", + value: "** (throw) \"catch!\"", + mechanism: %{handled: false, type: "generic"}, + stacktrace: %{type: "raw", frames: _frames} + } + ] + } = properties + end + + test "context is attached to exit", %{handler_ref: ref, sender_pid: sender_pid} do + LoggerHandlerKit.Act.plug_error(:exit, Plug.Cowboy, MyRouter) + LoggerHandlerKit.Assert.assert_logged(ref) + + assert %{events: [event]} = :sys.get_state(sender_pid) + + assert %{ + event: "$exception", + properties: properties + } = event + + assert %{ + "$current_url": "http://localhost/exit", + "$host": "localhost", + "$ip": "127.0.0.1", + "$pathname": "/exit", + "$lib": "posthog-elixir", + "$lib_version": _, + "$exception_list": [ + %{ + type: "** (exit) \"i quit\"", + value: "** (exit) \"i quit\"", + mechanism: %{handled: false, type: "generic"} + } + ] + } = properties + end + end +end diff --git a/test/posthog/sender_test.exs b/test/posthog/sender_test.exs new file mode 100644 index 0000000..9c37e33 --- /dev/null +++ b/test/posthog/sender_test.exs @@ -0,0 +1,112 @@ +defmodule PostHog.SenderTest do + use ExUnit.Case, async: true + + import Mox + + alias PostHog.Sender + alias PostHog.API + + @supervisor_name __MODULE__ + + setup_all do + start_link_supervised!( + {Registry, keys: :unique, name: PostHog.Registry.registry_name(@supervisor_name)} + ) + + %{api_client: %API.Client{client: :fake_client, module: API.Mock}} + end + + setup :verify_on_exit! + + test "puts events into state", %{api_client: api_client} do + pid = + start_link_supervised!( + {Sender, + supervisor_name: @supervisor_name, + api_client: api_client, + max_batch_time_ms: 60_000, + max_batch_events: 100} + ) + + Sender.send("my_event", @supervisor_name) + + assert %{events: ["my_event"]} = :sys.get_state(pid) + end + + test "immediately sends after reaching max_batch_events", %{api_client: api_client} do + pid = + start_link_supervised!( + {Sender, + supervisor_name: @supervisor_name, + api_client: api_client, + max_batch_time_ms: 60_000, + max_batch_events: 2} + ) + + expect(API.Mock, :request, fn _client, method, url, opts -> + assert method == :post + assert url == "/batch" + + assert opts[:json] == %{ + batch: ["bar", "foo"] + } + end) + + Sender.send("foo", @supervisor_name) + Sender.send("bar", @supervisor_name) + + assert %{events: []} = :sys.get_state(pid) + end + + test "immediately sends after reaching max_batch_time_ms", %{ + api_client: api_client, + test_pid: test_pid + } do + start_link_supervised!( + {Sender, + supervisor_name: @supervisor_name, + api_client: api_client, + max_batch_time_ms: 0, + max_batch_events: 100} + ) + + expect(API.Mock, :request, fn _client, method, url, opts -> + assert method == :post + assert url == "/batch" + + assert opts[:json] == %{ + batch: ["foo"] + } + + send(test_pid, :ready) + end) + + Sender.send("foo", @supervisor_name) + + assert_receive :ready + end + + test "sends leftovers on shutdown", %{api_client: api_client} do + pid = + start_supervised!( + {Sender, + supervisor_name: @supervisor_name, + api_client: api_client, + max_batch_time_ms: 60_000, + max_batch_events: 100} + ) + + expect(API.Mock, :request, fn _client, method, url, opts -> + assert method == :post + assert url == "/batch" + + assert opts[:json] == %{ + batch: ["foo"] + } + end) + + Sender.send("foo", @supervisor_name) + + assert :ok = GenServer.stop(pid) + end +end diff --git a/test/posthog_test.exs b/test/posthog_test.exs deleted file mode 100644 index 230e049..0000000 --- a/test/posthog_test.exs +++ /dev/null @@ -1,116 +0,0 @@ -defmodule PosthogTest do - use ExUnit.Case, async: true - import Mimic - - setup do - # Clear the cache before each test - Cachex.clear(Posthog.Application.cache_name()) - stub_with(:hackney, HackneyStub) - {:ok, _} = HackneyStub.State.start_link([]) - :ok - end - - describe "feature_flag_enabled?/3" do - test "true if the feature flag is enabled" do - stub_with(:hackney, HackneyStub) - - HackneyStub.verify_capture(fn decoded -> - assert decoded["event"] == "$feature_flag_called" - assert decoded["distinct_id"] == "user_123" - assert decoded["properties"]["$feature_flag"] == "my-awesome-flag" - assert decoded["properties"]["$feature_flag_response"] == true - end) - - assert Posthog.feature_flag_enabled?("my-awesome-flag", "user_123") - end - - test "false if the feature flag is disabled" do - stub_with(:hackney, HackneyStub) - - refute Posthog.feature_flag_enabled?("flag-thats-not-on", "user_123") - end - - test "false if the feature flag does not exist" do - stub_with(:hackney, HackneyStub) - - refute Posthog.feature_flag_enabled?("flag-does-not-exist", "user_123") - end - end - - describe "v3 - feature_flag/3" do - test "when feature flag exists, returns feature flag struct" do - stub_with(:hackney, HackneyStubV3) - - assert Posthog.feature_flag("my-awesome-flag", "user_123") == - {:ok, - %Posthog.FeatureFlag{ - enabled: true, - name: "my-awesome-flag", - payload: "example-payload-string" - }} - end - - test "when feature flag has a json payload, will return decoded payload" do - stub_with(:hackney, HackneyStubV3) - - assert Posthog.feature_flag("my-awesome-flag-2", "user_123") == - {:ok, - %Posthog.FeatureFlag{ - enabled: true, - name: "my-awesome-flag-2", - payload: %{"color" => "blue", "animal" => "hedgehog"} - }} - end - - test "when feature flag has an array payload, will return decoded payload" do - stub_with(:hackney, HackneyStubV3) - - assert Posthog.feature_flag("array-payload", "user_123") == - {:ok, - %Posthog.FeatureFlag{ - enabled: true, - name: "array-payload", - payload: [0, 1, 2] - }} - end - - test "when feature flag does not have a payload, will return flag value" do - stub_with(:hackney, HackneyStubV3) - - assert Posthog.feature_flag("flag-thats-not-on", "user_123") == - {:ok, - %Posthog.FeatureFlag{ - enabled: false, - name: "flag-thats-not-on", - payload: nil - }} - end - - test "when feature flag does not exist, returns not_found" do - stub_with(:hackney, HackneyStubV3) - - assert Posthog.feature_flag("does-not-exist", "user_123") == - {:error, :not_found} - end - end - - describe "v3 - feature_flag_enabled?/3" do - test "true if the feature flag is enabled" do - stub_with(:hackney, HackneyStubV3) - - assert Posthog.feature_flag_enabled?("my-awesome-flag", "user_123") - end - - test "false if the feature flag is disabled" do - stub_with(:hackney, HackneyStubV3) - - refute Posthog.feature_flag_enabled?("flag-thats-not-on", "user_123") - end - - test "false if the feature flag does not exist" do - stub_with(:hackney, HackneyStubV3) - - refute Posthog.feature_flag_enabled?("flag-does-not-exist", "user_123") - end - end -end diff --git a/test/support/api/mocks.ex b/test/support/api/mocks.ex new file mode 100644 index 0000000..2f06d14 --- /dev/null +++ b/test/support/api/mocks.ex @@ -0,0 +1 @@ +Mox.defmock(PostHog.API.Mock, for: PostHog.API.Client) diff --git a/test/support/api/stub.ex b/test/support/api/stub.ex new file mode 100644 index 0000000..b537f09 --- /dev/null +++ b/test/support/api/stub.ex @@ -0,0 +1,42 @@ +defmodule PostHog.API.Stub do + @behaviour PostHog.API.Client + + @impl PostHog.API.Client + def client(_api_key, _public_url) do + %PostHog.API.Client{client: :stub_client, module: PostHog.API.Mock} + end + + @impl PostHog.API.Client + def request(_client, :post, "/batch", _opts) do + {:ok, %{status: 200, body: %{"status" => "Ok"}}} + end + + def request(_client, :post, "/flags", _opts) do + {:ok, + %{ + status: 200, + body: %{ + "errorsWhileComputingFlags" => false, + "flags" => %{ + "example-feature-flag-1" => %{ + "enabled" => true, + "key" => "example-feature-flag-1", + "metadata" => %{ + "description" => nil, + "id" => 154_429, + "payload" => nil, + "version" => 4 + }, + "reason" => %{ + "code" => "condition_match", + "condition_index" => 0, + "description" => "Matched condition set 1" + }, + "variant" => nil + } + }, + "requestId" => "0d23f243-399a-4904-b1a8-ec2037834b72" + } + }} + end +end diff --git a/test/support/case.ex b/test/support/case.ex new file mode 100644 index 0000000..d304298 --- /dev/null +++ b/test/support/case.ex @@ -0,0 +1,50 @@ +defmodule PostHog.Case do + use ExUnit.CaseTemplate + + using do + quote do + import PostHog.Case + end + end + + def setup_supervisor(context) do + Mox.stub_with(PostHog.API.Mock, PostHog.API.Stub) + + config = + [ + public_url: "https://us.i.posthog.com", + api_key: "my_api_key", + api_client_module: PostHog.API.Mock, + supervisor_name: context.test, + capture_level: :info + ] + |> Keyword.merge(context[:config] || []) + |> PostHog.Config.validate!() + |> Map.put(:max_batch_time_ms, to_timeout(60_000)) + |> Map.put(:max_batch_events, 100) + + start_link_supervised!({PostHog.Supervisor, config}) + + sender_pid = + config.supervisor_name |> PostHog.Registry.via(PostHog.Sender) |> GenServer.whereis() + + context + |> Map.put(:config, config) + |> Map.put(:sender_pid, sender_pid) + end + + def setup_logger_handler(%{config: config} = context) do + big_config_override = Map.take(context, [:handle_otp_reports, :handle_sasl_reports, :level]) + + {context, on_exit} = + LoggerHandlerKit.Arrange.add_handler( + context.test, + PostHog.Handler, + config, + big_config_override + ) + + on_exit(on_exit) + context + end +end diff --git a/test/support/fixtures/decide-v3.json b/test/support/fixtures/decide-v3.json deleted file mode 100644 index 071b0e4..0000000 --- a/test/support/fixtures/decide-v3.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "config": { - "enable_collect_everything": true - }, - "toolbarParams": {}, - "errorsWhileComputingFlags": false, - "isAuthenticated": false, - "supportedCompression": [ - "gzip", - "lz64" - ], - "featureFlags": { - "my-awesome-flag": true, - "my-awesome-flag-2": true, - "my-multivariate-flag": "some-string-value", - "flag-thats-not-on": false, - "array-payload": true - }, - "featureFlagPayloads": { - "my-awesome-flag": "\"example-payload-string\"", - "my-awesome-flag-2": "{\"color\": \"blue\", \"animal\": \"hedgehog\"}", - "array-payload": "[0, 1, 2]" - } -} \ No newline at end of file diff --git a/test/support/fixtures/decide.json b/test/support/fixtures/decide.json deleted file mode 100644 index eb674ad..0000000 --- a/test/support/fixtures/decide.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "config": { - "enable_collect_everything": true - }, - "toolbarParams": {}, - "errorsWhileComputingFlags": false, - "isAuthenticated": false, - "supportedCompression": [ - "gzip", - "lz64" - ], - "flags": { - "my-awesome-flag": { - "key": "my-awesome-flag", - "enabled": true, - "variant": null, - "reason": { - "code": "condition_match", - "condition_index": 2, - "description": "Matched condition set 3" - }, - "metadata": { - "id": 1, - "version": 23, - "payload": "\"example-payload-string\"" - } - }, - "my-awesome-flag-2": { - "key": "my-awesome-flag-2", - "enabled": true, - "variant": null, - "reason": { - "code": "condition_match", - "condition_index": 2, - "description": "Matched condition set 3" - }, - "metadata": { - "id": 2, - "version": 1, - "payload": "{\"color\": \"blue\", \"animal\": \"hedgehog\"}" - } - }, - "my-multivariate-flag": { - "key": "my-multivariate-flag", - "enabled": true, - "variant": "some-string-value", - "reason": { - "code": "condition_match", - "condition_index": 0, - "description": "Matched condition set 1" - }, - "metadata": { - "id": 3, - "version": 1, - "payload": null - } - }, - "flag-thats-not-on": { - "key": "flag-thats-not-on", - "enabled": false, - "variant": null, - "reason": { - "code": "no_condition_match", - "condition_index": null, - "description": "No matching condition set" - }, - "metadata": { - "id": 112102, - "payload": null, - "version": 7 - } - }, - "array-payload": { - "key": "array-payload", - "enabled": true, - "variant": null, - "reason": { - "code": "condition_match", - "condition_index": 0, - "description": "Matched condition set 1" - }, - "metadata": { - "id": 112102, - "payload": "[0, 1, 2]", - "version": 7 - } - } - }, - "requestId": "0f801b5b-0776-42ca-b0f7-8375c95730bf" -} \ No newline at end of file diff --git a/test/support/hackney_stub.ex b/test/support/hackney_stub.ex deleted file mode 100644 index d5b7cc4..0000000 --- a/test/support/hackney_stub.ex +++ /dev/null @@ -1,95 +0,0 @@ -defmodule HackneyStub.State do - @moduledoc """ - A GenServer module that manages the state for HackneyStub, allowing verification of HTTP requests. - """ - use GenServer - - def start_link(_opts) do - name = {:via, Registry, {:hackney_stub_registry, self()}} - GenServer.start_link(__MODULE__, %{verification: nil}, name: name) - end - - def init(state) do - {:ok, state} - end - - def set_verification(verification) do - name = {:via, Registry, {:hackney_stub_registry, self()}} - GenServer.cast(name, {:set_verification, verification}) - end - - def get_verification do - name = {:via, Registry, {:hackney_stub_registry, self()}} - GenServer.call(name, :get_verification) - end - - def handle_cast({:set_verification, verification}, state) do - {:noreply, %{state | verification: verification}} - end - - def handle_call(:get_verification, _from, state) do - {:reply, state.verification, state} - end -end - -defmodule HackneyStub.Base do - @moduledoc """ - A base module for creating Hackney stubs with predefined responses from fixture files. - """ - @fixtures_dir Path.join(__DIR__, "fixtures") - - defmacro __using__(fixture) do - quote do - @fixtures_dir unquote(@fixtures_dir) - - def post("https://us.posthog.com/decide?v=4", _headers, _body, _opts) do - {:ok, 200, json_fixture!(unquote(fixture)), "decide"} - end - - def post("https://us.posthog.com/capture", _headers, body, _opts) do - case HackneyStub.State.get_verification() do - nil -> - :ok - - verification -> - decoded = Jason.decode!(body) - verification.(decoded) - end - - {:ok, 200, [], "capture"} - end - - def body("decide") do - {:ok, json_fixture!(unquote(fixture))} - end - - def body("capture") do - {:ok, "{}"} - end - - defp json_fixture!(fixture) do - @fixtures_dir - |> Path.join(fixture) - |> File.read!() - end - - def verify_capture(verification) do - HackneyStub.State.set_verification(verification) - end - end - end -end - -defmodule HackneyStub do - @moduledoc """ - A stub implementation of Hackney that returns predefined responses from fixture files. - """ - use HackneyStub.Base, "decide.json" -end - -defmodule HackneyStubV3 do - @moduledoc """ - A stub implementation of Hackney that returns predefined responses from fixture files for v3 API. - """ - use HackneyStub.Base, "decide-v3.json" -end diff --git a/test/test_helper.exs b/test/test_helper.exs index 8aec270..f8d0f1c 100644 --- a/test/test_helper.exs +++ b/test/test_helper.exs @@ -1,6 +1,4 @@ -Mimic.copy(:hackney) - -{:ok, _} = Registry.start_link(keys: :unique, name: :hackney_stub_registry) -{:ok, _} = HackneyStub.State.start_link([]) +# Exclude the unmocked tests by default +ExUnit.configure(exclude: :integration, assert_receive_timeout: 1000) ExUnit.start() From db121d973cbc0e55177b6e9bf5600d55c9bffba1 Mon Sep 17 00:00:00 2001 From: Alex Martsinovich Date: Tue, 15 Jul 2025 19:39:39 -0700 Subject: [PATCH 02/12] Update mix.exs Co-authored-by: Rafael Audibert <32079912+rafaeelaudibert@users.noreply.github.com> --- mix.exs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mix.exs b/mix.exs index d8a2f0e..a4eeac2 100644 --- a/mix.exs +++ b/mix.exs @@ -1,7 +1,7 @@ defmodule PostHog.MixProject do use Mix.Project - @version "1.1.0" + @version "2.0.0" @source_url "https://github.com/posthog/posthog-elixir" def project do From cc21caac62f36ef3cd1833deac2fdde0c6785fe2 Mon Sep 17 00:00:00 2001 From: martosaur Date: Tue, 15 Jul 2025 19:40:16 -0700 Subject: [PATCH 03/12] Mix unlock --- mix.lock | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/mix.lock b/mix.lock index 57ed0fd..23ac263 100644 --- a/mix.lock +++ b/mix.lock @@ -1,53 +1,34 @@ %{ "bandit": {:hex, :bandit, "1.7.0", "d1564f30553c97d3e25f9623144bb8df11f3787a26733f00b21699a128105c0c", [:mix], [{:hpax, "~> 1.0", [hex: :hpax, repo: "hexpm", optional: false]}, {:plug, "~> 1.18", [hex: :plug, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}, {:thousand_island, "~> 1.0", [hex: :thousand_island, repo: "hexpm", optional: false]}, {:websock, "~> 0.5", [hex: :websock, repo: "hexpm", optional: false]}], "hexpm", "3e2f7a98c7a11f48d9d8c037f7177cd39778e74d55c7af06fe6227c742a8168a"}, "bunt": {:hex, :bunt, "1.0.0", "081c2c665f086849e6d57900292b3a161727ab40431219529f13c4ddcf3e7a44", [:mix], [], "hexpm", "dc5f86aa08a5f6fa6b8096f0735c4e76d54ae5c9fa2c143e5a1fc7c1cd9bb6b5"}, - "cachex": {:hex, :cachex, "4.0.4", "192b5a34ae7f2c866cf835d796005c31ccf65e50ee973fbbbda6c773c0f40322", [:mix], [{:eternal, "~> 1.2", [hex: :eternal, repo: "hexpm", optional: false]}, {:ex_hash_ring, "~> 6.0", [hex: :ex_hash_ring, repo: "hexpm", optional: false]}, {:jumper, "~> 1.0", [hex: :jumper, repo: "hexpm", optional: false]}, {:sleeplocks, "~> 1.1", [hex: :sleeplocks, repo: "hexpm", optional: false]}, {:unsafe, "~> 1.0", [hex: :unsafe, repo: "hexpm", optional: false]}], "hexpm", "a0417593fcca4b6bd0330bb3bbd507c379d5287213ab990dbc0dd704cedede0a"}, - "certifi": {:hex, :certifi, "2.14.0", "ed3bef654e69cde5e6c022df8070a579a79e8ba2368a00acf3d75b82d9aceeed", [:rebar3], [], "hexpm", "ea59d87ef89da429b8e905264fdec3419f84f2215bb3d81e07a18aac919026c3"}, "cowboy": {:hex, :cowboy, "2.13.0", "09d770dd5f6a22cc60c071f432cd7cb87776164527f205c5a6b0f24ff6b38990", [:make, :rebar3], [{:cowlib, ">= 2.14.0 and < 3.0.0", [hex: :cowlib, repo: "hexpm", optional: false]}, {:ranch, ">= 1.8.0 and < 3.0.0", [hex: :ranch, repo: "hexpm", optional: false]}], "hexpm", "e724d3a70995025d654c1992c7b11dbfea95205c047d86ff9bf1cda92ddc5614"}, "cowboy_telemetry": {:hex, :cowboy_telemetry, "0.4.0", "f239f68b588efa7707abce16a84d0d2acf3a0f50571f8bb7f56a15865aae820c", [:rebar3], [{:cowboy, "~> 2.7", [hex: :cowboy, repo: "hexpm", optional: false]}, {:telemetry, "~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "7d98bac1ee4565d31b62d59f8823dfd8356a169e7fcbb83831b8a5397404c9de"}, "cowlib": {:hex, :cowlib, "2.15.0", "3c97a318a933962d1c12b96ab7c1d728267d2c523c25a5b57b0f93392b6e9e25", [:make, :rebar3], [], "hexpm", "4f00c879a64b4fe7c8fcb42a4281925e9ffdb928820b03c3ad325a617e857532"}, "credo": {:hex, :credo, "1.7.12", "9e3c20463de4b5f3f23721527fcaf16722ec815e70ff6c60b86412c695d426c1", [:mix], [{:bunt, "~> 0.2.1 or ~> 1.0", [hex: :bunt, repo: "hexpm", optional: false]}, {:file_system, "~> 0.2 or ~> 1.0", [hex: :file_system, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "8493d45c656c5427d9c729235b99d498bd133421f3e0a683e5c1b561471291e5"}, - "dialyxir": {:hex, :dialyxir, "1.4.5", "ca1571ac18e0f88d4ab245f0b60fa31ff1b12cbae2b11bd25d207f865e8ae78a", [:mix], [{:erlex, ">= 0.2.7", [hex: :erlex, repo: "hexpm", optional: false]}], "hexpm", "b0fb08bb8107c750db5c0b324fa2df5ceaa0f9307690ee3c1f6ba5b9eb5d35c3"}, "earmark_parser": {:hex, :earmark_parser, "1.4.44", "f20830dd6b5c77afe2b063777ddbbff09f9759396500cdbe7523efd58d7a339c", [:mix], [], "hexpm", "4778ac752b4701a5599215f7030989c989ffdc4f6df457c5f36938cc2d2a2750"}, - "erlex": {:hex, :erlex, "0.2.7", "810e8725f96ab74d17aac676e748627a07bc87eb950d2b83acd29dc047a30595", [:mix], [], "hexpm", "3ed95f79d1a844c3f6bf0cea61e0d5612a42ce56da9c03f01df538685365efb0"}, - "eternal": {:hex, :eternal, "1.2.2", "d1641c86368de99375b98d183042dd6c2b234262b8d08dfd72b9eeaafc2a1abd", [:mix], [], "hexpm", "2c9fe32b9c3726703ba5e1d43a1d255a4f3f2d8f8f9bc19f094c7cb1a7a9e782"}, "ex_doc": {:hex, :ex_doc, "0.37.3", "f7816881a443cd77872b7d6118e8a55f547f49903aef8747dbcb345a75b462f9", [:mix], [{:earmark_parser, "~> 1.4.42", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_c, ">= 0.1.0", [hex: :makeup_c, repo: "hexpm", optional: true]}, {:makeup_elixir, "~> 0.14 or ~> 1.0", [hex: :makeup_elixir, repo: "hexpm", optional: false]}, {:makeup_erlang, "~> 0.1 or ~> 1.0", [hex: :makeup_erlang, repo: "hexpm", optional: false]}, {:makeup_html, ">= 0.1.0", [hex: :makeup_html, repo: "hexpm", optional: true]}], "hexpm", "e6aebca7156e7c29b5da4daa17f6361205b2ae5f26e5c7d8ca0d3f7e18972233"}, - "ex_hash_ring": {:hex, :ex_hash_ring, "6.0.4", "bef9d2d796afbbe25ab5b5a7ed746e06b99c76604f558113c273466d52fa6d6b", [:mix], [], "hexpm", "89adabf31f7d3dfaa36802ce598ce918e9b5b33bae8909ac1a4d052e1e567d18"}, "file_system": {:hex, :file_system, "1.1.0", "08d232062284546c6c34426997dd7ef6ec9f8bbd090eb91780283c9016840e8f", [:mix], [], "hexpm", "bfcf81244f416871f2a2e15c1b515287faa5db9c6bcf290222206d120b3d43f6"}, "finch": {:hex, :finch, "0.20.0", "5330aefb6b010f424dcbbc4615d914e9e3deae40095e73ab0c1bb0968933cadf", [:mix], [{:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:mint, "~> 1.6.2 or ~> 1.7", [hex: :mint, repo: "hexpm", optional: false]}, {:nimble_options, "~> 0.4 or ~> 1.0", [hex: :nimble_options, repo: "hexpm", optional: false]}, {:nimble_pool, "~> 1.1", [hex: :nimble_pool, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "2658131a74d051aabfcba936093c903b8e89da9a1b63e430bee62045fa9b2ee2"}, - "hackney": {:hex, :hackney, "1.23.0", "55cc09077112bcb4a69e54be46ed9bc55537763a96cd4a80a221663a7eafd767", [:rebar3], [{:certifi, "~> 2.14.0", [hex: :certifi, repo: "hexpm", optional: false]}, {:idna, "~> 6.1.0", [hex: :idna, repo: "hexpm", optional: false]}, {:metrics, "~> 1.0.0", [hex: :metrics, repo: "hexpm", optional: false]}, {:mimerl, "~> 1.1", [hex: :mimerl, repo: "hexpm", optional: false]}, {:parse_trans, "3.4.1", [hex: :parse_trans, repo: "hexpm", optional: false]}, {:ssl_verify_fun, "~> 1.1.0", [hex: :ssl_verify_fun, repo: "hexpm", optional: false]}, {:unicode_util_compat, "~> 0.7.0", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "6cd1c04cd15c81e5a493f167b226a15f0938a84fc8f0736ebe4ddcab65c0b44e"}, - "ham": {:hex, :ham, "0.3.0", "7cd031b4a55fba219c11553e7b13ba73bd86eab4034518445eff1e038cb9a44d", [:mix], [], "hexpm", "7d6c6b73d7a6a83233876cc1b06a4d9b5de05562b228effda4532f9a49852bf6"}, "hpax": {:hex, :hpax, "1.0.3", "ed67ef51ad4df91e75cc6a1494f851850c0bd98ebc0be6e81b026e765ee535aa", [:mix], [], "hexpm", "8eab6e1cfa8d5918c2ce4ba43588e894af35dbd8e91e6e55c817bca5847df34a"}, - "idna": {:hex, :idna, "6.1.1", "8a63070e9f7d0c62eb9d9fcb360a7de382448200fbbd1b106cc96d3d8099df8d", [:rebar3], [{:unicode_util_compat, "~> 0.7.0", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "92376eb7894412ed19ac475e4a86f7b413c1b9fbb5bd16dccd57934157944cea"}, "jason": {:hex, :jason, "1.4.4", "b9226785a9aa77b6857ca22832cffa5d5011a667207eb2a0ad56adb5db443b8a", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "c5eb0cab91f094599f94d55bc63409236a8ec69a21a67814529e8d5f6cc90b3b"}, - "jumper": {:hex, :jumper, "1.0.2", "68cdcd84472a00ac596b4e6459a41b3062d4427cbd4f1e8c8793c5b54f1406a7", [:mix], [], "hexpm", "9b7782409021e01ab3c08270e26f36eb62976a38c1aa64b2eaf6348422f165e1"}, "logger_handler_kit": {:hex, :logger_handler_kit, "0.3.0", "15b3a2e260bfbb58036ff3bae3b346ca2287df61ce2e8cf3cbcde3f9041d75a0", [:mix], [{:bandit, "~> 1.7", [hex: :bandit, repo: "hexpm", optional: false]}, {:mint, "~> 1.7", [hex: :mint, repo: "hexpm", optional: false]}, {:nimble_ownership, "~> 1.0", [hex: :nimble_ownership, repo: "hexpm", optional: false]}, {:plug, "~> 1.18", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 2.7", [hex: :plug_cowboy, repo: "hexpm", optional: false]}], "hexpm", "66d3e0215db2a8a33a1abc0b94a5b201612d3f9262e0f05f49d754ac2bab1da9"}, "logger_json": {:hex, :logger_json, "7.0.3", "0f202788d743154796bd208e1078d878bb4fccf0adc4ed9c83cba821732d326c", [:mix], [{:decimal, ">= 0.0.0", [hex: :decimal, repo: "hexpm", optional: true]}, {:ecto, "~> 3.11", [hex: :ecto, repo: "hexpm", optional: true]}, {:jason, "~> 1.4", [hex: :jason, repo: "hexpm", optional: true]}, {:plug, "~> 1.15", [hex: :plug, repo: "hexpm", optional: true]}, {:telemetry, "~> 1.0", [hex: :telemetry, repo: "hexpm", optional: true]}], "hexpm", "9d1ca7dfe77eb7eac4664edfd6f874168d4707aedbedea09fba8eaa6ed2e2f97"}, "makeup": {:hex, :makeup, "1.2.1", "e90ac1c65589ef354378def3ba19d401e739ee7ee06fb47f94c687016e3713d1", [:mix], [{:nimble_parsec, "~> 1.4", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "d36484867b0bae0fea568d10131197a4c2e47056a6fbe84922bf6ba71c8d17ce"}, "makeup_elixir": {:hex, :makeup_elixir, "1.0.1", "e928a4f984e795e41e3abd27bfc09f51db16ab8ba1aebdba2b3a575437efafc2", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}, {:nimble_parsec, "~> 1.2.3 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "7284900d412a3e5cfd97fdaed4f5ed389b8f2b4cb49efc0eb3bd10e2febf9507"}, "makeup_erlang": {:hex, :makeup_erlang, "1.0.2", "03e1804074b3aa64d5fad7aa64601ed0fb395337b982d9bcf04029d68d51b6a7", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm", "af33ff7ef368d5893e4a267933e7744e46ce3cf1f61e2dccf53a111ed3aa3727"}, - "metrics": {:hex, :metrics, "1.0.1", "25f094dea2cda98213cecc3aeff09e940299d950904393b2a29d191c346a8486", [:rebar3], [], "hexpm", "69b09adddc4f74a40716ae54d140f93beb0fb8978d8636eaded0c31b6f099f16"}, "mime": {:hex, :mime, "2.0.7", "b8d739037be7cd402aee1ba0306edfdef982687ee7e9859bee6198c1e7e2f128", [:mix], [], "hexpm", "6171188e399ee16023ffc5b76ce445eb6d9672e2e241d2df6050f3c771e80ccd"}, - "mimerl": {:hex, :mimerl, "1.3.0", "d0cd9fc04b9061f82490f6581e0128379830e78535e017f7780f37fea7545726", [:rebar3], [], "hexpm", "a1e15a50d1887217de95f0b9b0793e32853f7c258a5cd227650889b38839fe9d"}, - "mimic": {:hex, :mimic, "1.11.0", "49b126687520b6e179acab305068ad7d72bfea8abe94908a6c0c8ca0a5b7bdc7", [:mix], [{:ham, "~> 0.2", [hex: :ham, repo: "hexpm", optional: false]}], "hexpm", "8b16b1809ca947cffbaede146cd42da8c1c326af67a84b59b01c204d54e4f1a2"}, "mint": {:hex, :mint, "1.7.1", "113fdb2b2f3b59e47c7955971854641c61f378549d73e829e1768de90fc1abf1", [:mix], [{:castore, "~> 0.1.0 or ~> 1.0", [hex: :castore, repo: "hexpm", optional: true]}, {:hpax, "~> 0.1.1 or ~> 0.2.0 or ~> 1.0", [hex: :hpax, repo: "hexpm", optional: false]}], "hexpm", "fceba0a4d0f24301ddee3024ae116df1c3f4bb7a563a731f45fdfeb9d39a231b"}, "mox": {:hex, :mox, "1.2.0", "a2cd96b4b80a3883e3100a221e8adc1b98e4c3a332a8fc434c39526babafd5b3", [:mix], [{:nimble_ownership, "~> 1.0", [hex: :nimble_ownership, repo: "hexpm", optional: false]}], "hexpm", "c7b92b3cc69ee24a7eeeaf944cd7be22013c52fcb580c1f33f50845ec821089a"}, "nimble_options": {:hex, :nimble_options, "1.1.1", "e3a492d54d85fc3fd7c5baf411d9d2852922f66e69476317787a7b2bb000a61b", [:mix], [], "hexpm", "821b2470ca9442c4b6984882fe9bb0389371b8ddec4d45a9504f00a66f650b44"}, "nimble_ownership": {:hex, :nimble_ownership, "1.0.1", "f69fae0cdd451b1614364013544e66e4f5d25f36a2056a9698b793305c5aa3a6", [:mix], [], "hexpm", "3825e461025464f519f3f3e4a1f9b68c47dc151369611629ad08b636b73bb22d"}, "nimble_parsec": {:hex, :nimble_parsec, "1.4.2", "8efba0122db06df95bfaa78f791344a89352ba04baedd3849593bfce4d0dc1c6", [:mix], [], "hexpm", "4b21398942dda052b403bbe1da991ccd03a053668d147d53fb8c4e0efe09c973"}, "nimble_pool": {:hex, :nimble_pool, "1.1.0", "bf9c29fbdcba3564a8b800d1eeb5a3c58f36e1e11d7b7fb2e084a643f645f06b", [:mix], [], "hexpm", "af2e4e6b34197db81f7aad230c1118eac993acc0dae6bc83bac0126d4ae0813a"}, - "parse_trans": {:hex, :parse_trans, "3.4.1", "6e6aa8167cb44cc8f39441d05193be6e6f4e7c2946cb2759f015f8c56b76e5ff", [:rebar3], [], "hexpm", "620a406ce75dada827b82e453c19cf06776be266f5a67cff34e1ef2cbb60e49a"}, "plug": {:hex, :plug, "1.18.1", "5067f26f7745b7e31bc3368bc1a2b818b9779faa959b49c934c17730efc911cf", [:mix], [{:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_crypto, "~> 1.1.1 or ~> 1.2 or ~> 2.0", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.3 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "57a57db70df2b422b564437d2d33cf8d33cd16339c1edb190cd11b1a3a546cc2"}, "plug_cowboy": {:hex, :plug_cowboy, "2.7.4", "729c752d17cf364e2b8da5bdb34fb5804f56251e88bb602aff48ae0bd8673d11", [:mix], [{:cowboy, "~> 2.7", [hex: :cowboy, repo: "hexpm", optional: false]}, {:cowboy_telemetry, "~> 0.3", [hex: :cowboy_telemetry, repo: "hexpm", optional: false]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "9b85632bd7012615bae0a5d70084deb1b25d2bcbb32cab82d1e9a1e023168aa3"}, "plug_crypto": {:hex, :plug_crypto, "2.1.1", "19bda8184399cb24afa10be734f84a16ea0a2bc65054e23a62bb10f06bc89491", [:mix], [], "hexpm", "6470bce6ffe41c8bd497612ffde1a7e4af67f36a15eea5f921af71cf3e11247c"}, "ranch": {:hex, :ranch, "2.2.0", "25528f82bc8d7c6152c57666ca99ec716510fe0925cb188172f41ce93117b1b0", [:make, :rebar3], [], "hexpm", "fa0b99a1780c80218a4197a59ea8d3bdae32fbff7e88527d7d8a4787eff4f8e7"}, "req": {:hex, :req, "0.5.14", "521b449fa0bf275e6d034c05f29bec21789a0d6cd6f7a1c326c7bee642bf6e07", [:mix], [{:brotli, "~> 0.3.1", [hex: :brotli, repo: "hexpm", optional: true]}, {:ezstd, "~> 1.0", [hex: :ezstd, repo: "hexpm", optional: true]}, {:finch, "~> 0.17", [hex: :finch, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}, {:mime, "~> 2.0.6 or ~> 2.1", [hex: :mime, repo: "hexpm", optional: false]}, {:nimble_csv, "~> 1.0", [hex: :nimble_csv, repo: "hexpm", optional: true]}, {:plug, "~> 1.0", [hex: :plug, repo: "hexpm", optional: true]}], "hexpm", "b7b15692071d556c73432c7797aa7e96b51d1a2db76f746b976edef95c930021"}, - "sleeplocks": {:hex, :sleeplocks, "1.1.3", "96a86460cc33b435c7310dbd27ec82ca2c1f24ae38e34f8edde97f756503441a", [:rebar3], [], "hexpm", "d3b3958552e6eb16f463921e70ae7c767519ef8f5be46d7696cc1ed649421321"}, - "ssl_verify_fun": {:hex, :ssl_verify_fun, "1.1.7", "354c321cf377240c7b8716899e182ce4890c5938111a1296add3ec74cf1715df", [:make, :mix, :rebar3], [], "hexpm", "fe4c190e8f37401d30167c8c405eda19469f34577987c76dde613e838bbc67f8"}, "telemetry": {:hex, :telemetry, "1.3.0", "fedebbae410d715cf8e7062c96a1ef32ec22e764197f70cda73d82778d61e7a2", [:rebar3], [], "hexpm", "7015fc8919dbe63764f4b4b87a95b7c0996bd539e0d499be6ec9d7f3875b79e6"}, "thousand_island": {:hex, :thousand_island, "1.3.14", "ad45ebed2577b5437582bcc79c5eccd1e2a8c326abf6a3464ab6c06e2055a34a", [:mix], [{:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "d0d24a929d31cdd1d7903a4fe7f2409afeedff092d277be604966cd6aa4307ef"}, - "unicode_util_compat": {:hex, :unicode_util_compat, "0.7.0", "bc84380c9ab48177092f43ac89e4dfa2c6d62b40b8bd132b1059ecc7232f9a78", [:rebar3], [], "hexpm", "25eee6d67df61960cf6a794239566599b09e17e668d3700247bc498638152521"}, - "uniq": {:hex, :uniq, "0.6.1", "369660ecbc19051be526df3aa85dc393af5f61f45209bce2fa6d7adb051ae03c", [:mix], [{:ecto, "~> 3.0", [hex: :ecto, repo: "hexpm", optional: true]}], "hexpm", "6426c34d677054b3056947125b22e0daafd10367b85f349e24ac60f44effb916"}, - "unsafe": {:hex, :unsafe, "1.0.2", "23c6be12f6c1605364801f4b47007c0c159497d0446ad378b5cf05f1855c0581", [:mix], [], "hexpm", "b485231683c3ab01a9cd44cb4a79f152c6f3bb87358439c6f68791b85c2df675"}, "websock": {:hex, :websock, "0.5.3", "2f69a6ebe810328555b6fe5c831a851f485e303a7c8ce6c5f675abeb20ebdadc", [:mix], [], "hexpm", "6105453d7fac22c712ad66fab1d45abdf049868f253cf719b625151460b8b453"}, } From b05e1c8795845740c8dc0892afb161cb887df2cb Mon Sep 17 00:00:00 2001 From: Alex Martsinovich Date: Tue, 15 Jul 2025 19:41:39 -0700 Subject: [PATCH 04/12] Update MIGRATION.md Co-authored-by: Rafael Audibert <32079912+rafaeelaudibert@users.noreply.github.com> --- MIGRATION.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/MIGRATION.md b/MIGRATION.md index f847486..0082d9c 100644 --- a/MIGRATION.md +++ b/MIGRATION.md @@ -2,11 +2,11 @@ This is a migration guide for all major version bumps -## v2.0 +## v1 -> v2 TODO: New library -## v0-v1 +## v0 -> v1 When we stabilized our library, we decided to pull some breaking changes, here are they and how you can migrate: From caf96d594f8d23165685f72dee9a7f401554d6a0 Mon Sep 17 00:00:00 2001 From: martosaur Date: Fri, 25 Jul 2025 10:55:30 -0700 Subject: [PATCH 05/12] Rename log_hog_test.exs --- test/{log_hog_test.exs => posthog_test.exs} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename test/{log_hog_test.exs => posthog_test.exs} (100%) diff --git a/test/log_hog_test.exs b/test/posthog_test.exs similarity index 100% rename from test/log_hog_test.exs rename to test/posthog_test.exs From 57f3d135dc09b0de18b347bd8520ccb6535e9ce8 Mon Sep 17 00:00:00 2001 From: martosaur Date: Tue, 19 Aug 2025 20:56:48 -0700 Subject: [PATCH 06/12] git delete config/integrations.exs --- config/integration.exs | 8 -------- 1 file changed, 8 deletions(-) delete mode 100644 config/integration.exs diff --git a/config/integration.exs b/config/integration.exs deleted file mode 100644 index 5f0db85..0000000 --- a/config/integration.exs +++ /dev/null @@ -1,8 +0,0 @@ -import Config - -config :posthog, :integration_config, - public_url: "https://us.i.posthog.com", - api_key: "phc_tEQ8UGRHdPBaT42yocd714aoiW4mBkmx6nTNrxjqLpf", - metadata: [:extra], - capture_level: :info, - in_app_otp_apps: [:logger_handler_kit] From bd484992b5b37ca7e841ac79795c0a2c807528f2 Mon Sep 17 00:00:00 2001 From: martosaur Date: Fri, 25 Jul 2025 14:05:09 -0700 Subject: [PATCH 07/12] Implement test infrastructure --- config/test.exs | 2 +- lib/posthog/application.ex | 28 ++-- lib/posthog/config.ex | 36 +++-- lib/posthog/sender.ex | 12 +- lib/posthog/supervisor.ex | 3 +- lib/posthog/test.ex | 177 ++++++++++++++++++++++ mix.exs | 10 +- mix.lock | 2 +- test/posthog/handler_test.exs | 186 +++++++++++++++--------- test/posthog/integrations/plug_test.exs | 33 +++-- test/posthog/sender_test.exs | 5 +- test/posthog/test/private_mode_test.exs | 59 ++++++++ test/posthog/test/shared_mode_test.exs | 31 ++++ test/posthog_test.exs | 40 ++--- test/support/case.ex | 11 +- 15 files changed, 503 insertions(+), 132 deletions(-) create mode 100644 lib/posthog/test.ex create mode 100644 test/posthog/test/private_mode_test.exs create mode 100644 test/posthog/test/shared_mode_test.exs diff --git a/config/test.exs b/config/test.exs index 88d6cb8..4201aac 100644 --- a/config/test.exs +++ b/config/test.exs @@ -1,5 +1,5 @@ import Config -config :posthog, enable: false +config :posthog, enable: false, test_mode: true if File.exists?("config/integration.exs"), do: import_config("integration.exs") diff --git a/lib/posthog/application.ex b/lib/posthog/application.ex index ac877b9..23b6d24 100644 --- a/lib/posthog/application.ex +++ b/lib/posthog/application.ex @@ -4,19 +4,29 @@ defmodule PostHog.Application do use Application def start(_type, _args) do + {conv_config, supervisor_config} = PostHog.Config.read!() + children = - case PostHog.Config.read!() do - {%{enable: true, enable_error_tracking: error_tracking}, config} -> - if error_tracking do - :logger.add_handler(:posthog, PostHog.Handler, %{config: config}) - end + if conv_config.enable do + if conv_config.enable_error_tracking do + :logger.add_handler(:posthog, PostHog.Handler, %{config: supervisor_config}) + end - [{PostHog.Supervisor, config}] + [{PostHog.Supervisor, supervisor_config}] + else + [] + end - _ -> - [] + ownership_children = + if conv_config.test_mode do + [{NimbleOwnership, name: PostHog.Ownership}] + else + [] end - Supervisor.start_link(children, strategy: :one_for_one, name: __MODULE__) + Supervisor.start_link(children ++ ownership_children, + strategy: :one_for_one, + name: __MODULE__ + ) end end diff --git a/lib/posthog/config.ex b/lib/posthog/config.ex index 4388d85..fb923cc 100644 --- a/lib/posthog/config.ex +++ b/lib/posthog/config.ex @@ -54,8 +54,16 @@ defmodule PostHog.Config do ] ] - @compiled_configuration_schema NimbleOptions.new!(@configuration_schema) - @compiled_convenience_schema NimbleOptions.new!(@convenience_schema) + @shared_schema [ + test_mode: [ + type: :boolean, + default: false, + doc: "Test mode allows tests assert captured events." + ] + ] + + @compiled_configuration_schema NimbleOptions.new!(@configuration_schema ++ @shared_schema) + @compiled_convenience_schema NimbleOptions.new!(@convenience_schema ++ @shared_schema) @moduledoc """ PostHog configuration @@ -87,17 +95,23 @@ defmodule PostHog.Config do @doc false def read!() do configuration_options = - Application.get_all_env(:posthog) |> Keyword.take(Keyword.keys(@configuration_schema)) + Application.get_all_env(:posthog) + |> Keyword.take(Keyword.keys(@configuration_schema ++ @shared_schema)) convenience_options = - Application.get_all_env(:posthog) |> Keyword.take(Keyword.keys(@convenience_schema)) - - with %{enable: true} = conv <- - convenience_options - |> NimbleOptions.validate!(@compiled_convenience_schema) - |> Map.new() do - config = validate!(configuration_options) - {conv, config} + Application.get_all_env(:posthog) + |> Keyword.take(Keyword.keys(@convenience_schema ++ @shared_schema)) + + convenience_options + |> NimbleOptions.validate!(@compiled_convenience_schema) + |> Map.new() + |> case do + %{enable: true} = conv -> + config = validate!(configuration_options) + {conv, config} + + conv -> + {conv, nil} end end diff --git a/lib/posthog/sender.ex b/lib/posthog/sender.ex index bcc6372..61d3578 100644 --- a/lib/posthog/sender.ex +++ b/lib/posthog/sender.ex @@ -27,8 +27,16 @@ defmodule PostHog.Sender do def send(event, supervisor_name) do supervisor_name - |> PostHog.Registry.via(__MODULE__) - |> GenServer.cast({:event, event}) + |> PostHog.Registry.config() + |> case do + %{test_mode: true} -> + PostHog.Test.remember_event(supervisor_name, event) + + _ -> + supervisor_name + |> PostHog.Registry.via(__MODULE__) + |> GenServer.cast({:event, event}) + end end # Callbacks diff --git a/lib/posthog/supervisor.ex b/lib/posthog/supervisor.ex index 7076048..0899b0d 100644 --- a/lib/posthog/supervisor.ex +++ b/lib/posthog/supervisor.ex @@ -35,7 +35,8 @@ defmodule PostHog.Supervisor do api_client: config.api_client, supervisor_name: config.supervisor_name, max_batch_time_ms: Map.get(config, :max_batch_time_ms, to_timeout(second: 10)), - max_batch_events: Map.get(config, :max_batch_events, 100) + max_batch_events: Map.get(config, :max_batch_events, 100), + test_mode: config.test_mode ]} ] diff --git a/lib/posthog/test.ex b/lib/posthog/test.ex new file mode 100644 index 0000000..ef67cd3 --- /dev/null +++ b/lib/posthog/test.ex @@ -0,0 +1,177 @@ +defmodule PostHog.Test do + @moduledoc """ + PostHog Test Utilities Module + + PostHog makes it simple to test captured events. Make sure to set `test_mode` in your `config/test.exs`: + + ``` + config :posthog, + test_mode: true + ``` + + Now PostHog will not send your captured events to the server and will instead + keep them in memory, easily accessible for assertions: + + ``` + test "capture event" do + PostHog.capture("event", %{distinct_id: "distinct_id"}) + + assert [event] = PostHog.Test.all_captured() + + assert %{ + event: "event", + distinct_id: "distinct_id", + properties: %{}, + timestamp: _ + } = event + end + ``` + + ## Concurrency + + PostHog uses a powerful `NimbleOwnership` ownership mechanism to determine + which events belong to which tests. This should work very well for most tests. + + However, in some cases captured events cannot be traced back to tests. Those + tests are usually well-known and are run with `async: false` mode. For those, + PostHog lets you enable "global" or "shared" mode, where _all_ events captured + within the system will be accessible by the test. + + To switch PostHog to shared mode, just call `PostHog.Test.set_posthog_shared/1` + in your setup: + + ``` + defmodule MyTest do + use ExUnit.Case, async: false + + setup_all {PostHog.Test, :set_posthog_shared} + + test "complex test" do + # run some code + assert events = PostHog.Test.all_captured() + assert Enum.any?(events, & match?(%{event: "my event"}, &1)) + end + end + ``` + + PostHog will revert back from shared mode to private once the test suite or test + process exits. + + > #### Assertions in shared mode {: .info} + > + > In shared mode, your test can easily pick up events from background jobs, + > other tests, or some rogue processes. Design your assertions accordingly to + > avoid flaky tests! + """ + @ownership_server PostHog.Ownership + + @doc false + def remember_event(name, event) do + # Usually, ownership is tracked by mocking libraries and they define + # "expectations" at the beginning of the test. Our case is different—we + # don't know beforehand that a test expects an event to be captured, so it's + # very likely that none of the processes "own" anything yet. So we basically + # declare them all owners and add the event to their personal stashes. If any of + # the pids is the test pid, the test will be able to retrieve this event. + [self() | Process.get(:"$callers", [])] + |> get_owners(name) + |> Enum.each(fn pid -> + NimbleOwnership.get_and_update(@ownership_server, pid, name, fn maybe_meta -> + {:ok, [event | maybe_meta || []]} + end) + end) + end + + @doc """ + Retrieves all events captured by PostHog. + + In private mode, these are all events that can be attributed to the current + process via ownership. + + In shared mode, these are all captured events. + """ + @spec all_captured(PostHog.supervisor_name()) :: [map()] + def all_captured(name \\ PostHog) do + [owner_pid] = get_owners([self()], name) + + {:ok, events} = + NimbleOwnership.get_and_update(@ownership_server, owner_pid, name, fn maybe_events -> + {maybe_events || [], maybe_events || []} + end) + + events + end + + @doc """ + Allows a process to share captured events with another process. + + Imagine that your test spawns an asynchronous process that captures an event. + By default, the test process won't be able to access this event. To mitigate this, + the test process should explicitly _allow_ the spawned process' events to appear in + its own personal stash of captured events. + + ``` + test "allowance" do + test_pid = self() + + pid = + spawn(fn -> + receive do + :go -> :ok + end + + PostHog.capture("event", "user123") + send(test_pid, :ready) + end) + + PostHog.Test.allow(test_pid, pid) + + send(pid, :go) + assert_receive :ready + + assert [%{event: "event"}] = PostHog.Test.all_captured() + end + ``` + + > #### Caller Tracking {: .tip} + > + > In practice, explicit allowances are a tool of last resort. [Caller + > tracking](https://hexdocs.pm/elixir/Task.html#module-ancestor-and-caller-tracking) + > allows for automatic ownership propagation. Designing your app with this in + > mind is the key to painless testing. + """ + @spec allow(PostHog.supervisor_name(), pid(), pid() | (-> resolved_pid)) :: + :ok | {:error, NimbleOwnership.Error.t()} + when resolved_pid: pid() | [pid()] + def allow(name \\ PostHog, owner, pid_to_allow) do + NimbleOwnership.get_and_update(@ownership_server, owner, name, fn maybe_events -> + {nil, maybe_events || []} + end) + + NimbleOwnership.allow(@ownership_server, owner, pid_to_allow, name) + end + + @doc """ + Sets PostHog to shared (or "global") mode. + + In this mode, all events captured by all processes are accessible by the test. + + Usually used in combination with `async: false`. + + ## Examples: + + setup :set_posthog_shared + """ + @spec set_posthog_shared(map()) :: :ok + def set_posthog_shared(_test_context \\ %{}) do + NimbleOwnership.set_mode_to_shared(@ownership_server, self()) + end + + defp get_owners(callers, key) do + case NimbleOwnership.fetch_owner(@ownership_server, callers, key) do + {:ok, owner_pid} -> [owner_pid] + {:shared_owner, pid} -> [pid] + :error -> callers + end + end +end diff --git a/mix.exs b/mix.exs index a4eeac2..4a10a7d 100644 --- a/mix.exs +++ b/mix.exs @@ -49,7 +49,8 @@ defmodule PostHog.MixProject do }, extras: ["README.md", "CHANGELOG.md", "MIGRATION.md", "guides/advanced-configuration.md"], groups_for_modules: [ - Integrations: [PostHog.Integrations.Plug] + Integrations: [PostHog.Integrations.Plug], + Testing: [PostHog.Test] ], skip_undefined_reference_warnings_on: ["CHANGELOG.md", "MIGRATION.md"] ] @@ -60,9 +61,14 @@ defmodule PostHog.MixProject do {:nimble_options, "~> 1.1"}, {:req, "~> 0.5.10"}, {:logger_json, "~> 7.0"}, + {:nimble_ownership, "~> 1.0"}, # Development tools {:ex_doc, "~> 0.37", only: :dev, runtime: false}, - {:logger_handler_kit, "~> 0.3", only: :test}, + # {:logger_handler_kit, "~> 0.3", only: :test}, + {:logger_handler_kit, + git: "https://github.com/martosaur/logger_handler_kit", + branch: "am-share-ownership-to", + only: :test}, {:credo, "~> 1.7", only: [:dev, :test], runtime: false}, {:mox, "~> 1.1", only: :test} ] diff --git a/mix.lock b/mix.lock index 23ac263..4f4b1c6 100644 --- a/mix.lock +++ b/mix.lock @@ -11,7 +11,7 @@ "finch": {:hex, :finch, "0.20.0", "5330aefb6b010f424dcbbc4615d914e9e3deae40095e73ab0c1bb0968933cadf", [:mix], [{:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:mint, "~> 1.6.2 or ~> 1.7", [hex: :mint, repo: "hexpm", optional: false]}, {:nimble_options, "~> 0.4 or ~> 1.0", [hex: :nimble_options, repo: "hexpm", optional: false]}, {:nimble_pool, "~> 1.1", [hex: :nimble_pool, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "2658131a74d051aabfcba936093c903b8e89da9a1b63e430bee62045fa9b2ee2"}, "hpax": {:hex, :hpax, "1.0.3", "ed67ef51ad4df91e75cc6a1494f851850c0bd98ebc0be6e81b026e765ee535aa", [:mix], [], "hexpm", "8eab6e1cfa8d5918c2ce4ba43588e894af35dbd8e91e6e55c817bca5847df34a"}, "jason": {:hex, :jason, "1.4.4", "b9226785a9aa77b6857ca22832cffa5d5011a667207eb2a0ad56adb5db443b8a", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "c5eb0cab91f094599f94d55bc63409236a8ec69a21a67814529e8d5f6cc90b3b"}, - "logger_handler_kit": {:hex, :logger_handler_kit, "0.3.0", "15b3a2e260bfbb58036ff3bae3b346ca2287df61ce2e8cf3cbcde3f9041d75a0", [:mix], [{:bandit, "~> 1.7", [hex: :bandit, repo: "hexpm", optional: false]}, {:mint, "~> 1.7", [hex: :mint, repo: "hexpm", optional: false]}, {:nimble_ownership, "~> 1.0", [hex: :nimble_ownership, repo: "hexpm", optional: false]}, {:plug, "~> 1.18", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 2.7", [hex: :plug_cowboy, repo: "hexpm", optional: false]}], "hexpm", "66d3e0215db2a8a33a1abc0b94a5b201612d3f9262e0f05f49d754ac2bab1da9"}, + "logger_handler_kit": {:git, "https://github.com/martosaur/logger_handler_kit", "bc4f79cecdbcc33b198e7d5f5ce21ec92f3be021", [branch: "am-share-ownership-to"]}, "logger_json": {:hex, :logger_json, "7.0.3", "0f202788d743154796bd208e1078d878bb4fccf0adc4ed9c83cba821732d326c", [:mix], [{:decimal, ">= 0.0.0", [hex: :decimal, repo: "hexpm", optional: true]}, {:ecto, "~> 3.11", [hex: :ecto, repo: "hexpm", optional: true]}, {:jason, "~> 1.4", [hex: :jason, repo: "hexpm", optional: true]}, {:plug, "~> 1.15", [hex: :plug, repo: "hexpm", optional: true]}, {:telemetry, "~> 1.0", [hex: :telemetry, repo: "hexpm", optional: true]}], "hexpm", "9d1ca7dfe77eb7eac4664edfd6f874168d4707aedbedea09fba8eaa6ed2e2f97"}, "makeup": {:hex, :makeup, "1.2.1", "e90ac1c65589ef354378def3ba19d401e739ee7ee06fb47f94c687016e3713d1", [:mix], [{:nimble_parsec, "~> 1.4", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "d36484867b0bae0fea568d10131197a4c2e47056a6fbe84922bf6ba71c8d17ce"}, "makeup_elixir": {:hex, :makeup_elixir, "1.0.1", "e928a4f984e795e41e3abd27bfc09f51db16ab8ba1aebdba2b3a575437efafc2", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}, {:nimble_parsec, "~> 1.2.3 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "7284900d412a3e5cfd97fdaed4f5ed389b8f2b4cb49efc0eb3bd10e2febf9507"}, diff --git a/test/posthog/handler_test.exs b/test/posthog/handler_test.exs index 5bf7734..9ad4ee9 100644 --- a/test/posthog/handler_test.exs +++ b/test/posthog/handler_test.exs @@ -9,11 +9,14 @@ defmodule PostHog.HandlerTest do setup :setup_supervisor setup :setup_logger_handler - test "takes distinct_id from metadata", %{handler_ref: ref, sender_pid: sender_pid} do + test "takes distinct_id from metadata", %{ + handler_ref: ref, + config: %{supervisor_name: supervisor_name} + } do Logger.info("Hello World", distinct_id: "foo") LoggerHandlerKit.Assert.assert_logged(ref) - assert %{events: [event]} = :sys.get_state(sender_pid) + assert [event] = all_captured(supervisor_name) assert %{ event: "$exception", @@ -30,11 +33,14 @@ defmodule PostHog.HandlerTest do } = event end - test "always exports global context", %{handler_ref: ref, sender_pid: sender_pid} do + test "always exports global context", %{ + handler_ref: ref, + config: %{supervisor_name: supervisor_name} + } do Logger.info("Hello World") LoggerHandlerKit.Assert.assert_logged(ref) - assert %{events: [event]} = :sys.get_state(sender_pid) + assert [event] = all_captured(supervisor_name) assert %{ event: "$exception", @@ -53,19 +59,25 @@ defmodule PostHog.HandlerTest do end @tag config: [capture_level: :warning] - test "ignores messages lower than capture_level", %{handler_ref: ref, sender_pid: sender_pid} do + test "ignores messages lower than capture_level", %{ + handler_ref: ref, + config: %{supervisor_name: supervisor_name} + } do Logger.info("Hello World") LoggerHandlerKit.Assert.assert_logged(ref) - assert %{events: []} = :sys.get_state(sender_pid) + assert [] = all_captured(supervisor_name) end @tag config: [capture_level: :warning] - test "logs with crash reason always captured", %{handler_ref: ref, sender_pid: sender_pid} do + test "logs with crash reason always captured", %{ + handler_ref: ref, + config: %{supervisor_name: supervisor_name} + } do Logger.debug("Hello World", crash_reason: {"exit reason", []}) LoggerHandlerKit.Assert.assert_logged(ref) - assert %{events: [event]} = :sys.get_state(sender_pid) + assert [event] = all_captured(supervisor_name) assert %{ event: "$exception", @@ -81,11 +93,11 @@ defmodule PostHog.HandlerTest do } = event end - test "string message", %{handler_ref: ref, sender_pid: sender_pid} do + test "string message", %{handler_ref: ref, config: %{supervisor_name: supervisor_name}} do LoggerHandlerKit.Act.string_message() LoggerHandlerKit.Assert.assert_logged(ref) - assert %{events: [event]} = :sys.get_state(sender_pid) + assert [event] = all_captured(supervisor_name) assert %{ event: "$exception", @@ -101,11 +113,11 @@ defmodule PostHog.HandlerTest do } = event end - test "charlist message", %{handler_ref: ref, sender_pid: sender_pid} do + test "charlist message", %{handler_ref: ref, config: %{supervisor_name: supervisor_name}} do LoggerHandlerKit.Act.charlist_message() LoggerHandlerKit.Assert.assert_logged(ref) - assert %{events: [event]} = :sys.get_state(sender_pid) + assert [event] = all_captured(supervisor_name) assert %{ event: "$exception", @@ -121,11 +133,11 @@ defmodule PostHog.HandlerTest do } = event end - test "chardata message", %{handler_ref: ref, sender_pid: sender_pid} do + test "chardata message", %{handler_ref: ref, config: %{supervisor_name: supervisor_name}} do LoggerHandlerKit.Act.chardata_message(:proper) LoggerHandlerKit.Assert.assert_logged(ref) - assert %{events: [event]} = :sys.get_state(sender_pid) + assert [event] = all_captured(supervisor_name) assert %{ event: "$exception", @@ -141,11 +153,14 @@ defmodule PostHog.HandlerTest do } = event end - test "chardata message - improper", %{handler_ref: ref, sender_pid: sender_pid} do + test "chardata message - improper", %{ + handler_ref: ref, + config: %{supervisor_name: supervisor_name} + } do LoggerHandlerKit.Act.chardata_message(:improper) LoggerHandlerKit.Assert.assert_logged(ref) - assert %{events: [event]} = :sys.get_state(sender_pid) + assert [event] = all_captured(supervisor_name) assert %{ event: "$exception", @@ -161,11 +176,11 @@ defmodule PostHog.HandlerTest do } = event end - test "io format", %{handler_ref: ref, sender_pid: sender_pid} do + test "io format", %{handler_ref: ref, config: %{supervisor_name: supervisor_name}} do LoggerHandlerKit.Act.io_format() LoggerHandlerKit.Assert.assert_logged(ref) - assert %{events: [event]} = :sys.get_state(sender_pid) + assert [event] = all_captured(supervisor_name) assert %{ event: "$exception", @@ -181,11 +196,11 @@ defmodule PostHog.HandlerTest do } = event end - test "keyword report", %{handler_ref: ref, sender_pid: sender_pid} do + test "keyword report", %{handler_ref: ref, config: %{supervisor_name: supervisor_name}} do LoggerHandlerKit.Act.keyword_report() LoggerHandlerKit.Assert.assert_logged(ref) - assert %{events: [event]} = :sys.get_state(sender_pid) + assert [event] = all_captured(supervisor_name) assert %{ event: "$exception", @@ -201,11 +216,11 @@ defmodule PostHog.HandlerTest do } = event end - test "map report", %{handler_ref: ref, sender_pid: sender_pid} do + test "map report", %{handler_ref: ref, config: %{supervisor_name: supervisor_name}} do LoggerHandlerKit.Act.map_report() LoggerHandlerKit.Assert.assert_logged(ref) - assert %{events: [event]} = :sys.get_state(sender_pid) + assert [event] = all_captured(supervisor_name) assert %{ event: "$exception", @@ -221,11 +236,11 @@ defmodule PostHog.HandlerTest do } = event end - test "struct report", %{handler_ref: ref, sender_pid: sender_pid} do + test "struct report", %{handler_ref: ref, config: %{supervisor_name: supervisor_name}} do LoggerHandlerKit.Act.struct_report() LoggerHandlerKit.Assert.assert_logged(ref) - assert %{events: [event]} = :sys.get_state(sender_pid) + assert [event] = all_captured(supervisor_name) assert %{ event: "$exception", @@ -241,11 +256,11 @@ defmodule PostHog.HandlerTest do } = event end - test "task error exception", %{handler_ref: ref, sender_pid: sender_pid} do + test "task error exception", %{handler_ref: ref, config: %{supervisor_name: supervisor_name}} do LoggerHandlerKit.Act.task_error(:exception) LoggerHandlerKit.Assert.assert_logged(ref) - assert %{events: [event]} = :sys.get_state(sender_pid) + assert [event] = all_captured(supervisor_name) assert %{ event: "$exception", @@ -284,11 +299,11 @@ defmodule PostHog.HandlerTest do } = event end - test "task error throw", %{handler_ref: ref, sender_pid: sender_pid} do + test "task error throw", %{handler_ref: ref, config: %{supervisor_name: supervisor_name}} do LoggerHandlerKit.Act.task_error(:throw) LoggerHandlerKit.Assert.assert_logged(ref) - assert %{events: [event]} = :sys.get_state(sender_pid) + assert [event] = all_captured(supervisor_name) assert %{ event: "$exception", @@ -327,11 +342,11 @@ defmodule PostHog.HandlerTest do } = event end - test "task error exit", %{handler_ref: ref, sender_pid: sender_pid} do + test "task error exit", %{handler_ref: ref, config: %{supervisor_name: supervisor_name}} do LoggerHandlerKit.Act.task_error(:exit) LoggerHandlerKit.Assert.assert_logged(ref) - assert %{events: [event]} = :sys.get_state(sender_pid) + assert [event] = all_captured(supervisor_name) assert %{ event: "$exception", @@ -370,11 +385,14 @@ defmodule PostHog.HandlerTest do } = event end - test "genserver crash exception", %{handler_ref: ref, sender_pid: sender_pid} do + test "genserver crash exception", %{ + handler_ref: ref, + config: %{supervisor_name: supervisor_name} + } do LoggerHandlerKit.Act.genserver_crash(:exception) LoggerHandlerKit.Assert.assert_logged(ref) - assert %{events: [event]} = :sys.get_state(sender_pid) + assert [event] = all_captured(supervisor_name) assert %{ event: "$exception", @@ -431,11 +449,11 @@ defmodule PostHog.HandlerTest do } = event end - test "genserver crash exit", %{handler_ref: ref, sender_pid: sender_pid} do + test "genserver crash exit", %{handler_ref: ref, config: %{supervisor_name: supervisor_name}} do LoggerHandlerKit.Act.genserver_crash(:exit) LoggerHandlerKit.Assert.assert_logged(ref) - assert %{events: [event]} = :sys.get_state(sender_pid) + assert [event] = all_captured(supervisor_name) assert %{ event: "$exception", @@ -492,11 +510,14 @@ defmodule PostHog.HandlerTest do } = event end - test "genserver crash exit with struct", %{handler_ref: ref, sender_pid: sender_pid} do + test "genserver crash exit with struct", %{ + handler_ref: ref, + config: %{supervisor_name: supervisor_name} + } do LoggerHandlerKit.Act.genserver_crash(:exit_with_struct) LoggerHandlerKit.Assert.assert_logged(ref) - assert %{events: [event]} = :sys.get_state(sender_pid) + assert [event] = all_captured(supervisor_name) assert %{ event: "$exception", @@ -512,11 +533,11 @@ defmodule PostHog.HandlerTest do } = event end - test "genserver crash throw", %{handler_ref: ref, sender_pid: sender_pid} do + test "genserver crash throw", %{handler_ref: ref, config: %{supervisor_name: supervisor_name}} do LoggerHandlerKit.Act.genserver_crash(:throw) LoggerHandlerKit.Assert.assert_logged(ref) - assert %{events: [event]} = :sys.get_state(sender_pid) + assert [event] = all_captured(supervisor_name) assert %{ event: "$exception", @@ -532,11 +553,14 @@ defmodule PostHog.HandlerTest do } = event end - test "gen_state_m crash exception", %{handler_ref: ref, sender_pid: sender_pid} do + test "gen_state_m crash exception", %{ + handler_ref: ref, + config: %{supervisor_name: supervisor_name} + } do LoggerHandlerKit.Act.gen_statem_crash(:exception) LoggerHandlerKit.Assert.assert_logged(ref) - assert %{events: [event]} = :sys.get_state(sender_pid) + assert [event] = all_captured(supervisor_name) assert %{ event: "$exception", @@ -587,12 +611,15 @@ defmodule PostHog.HandlerTest do test "bare process crash exception", %{ handler_id: handler_id, handler_ref: ref, - sender_pid: sender_pid + config: %{supervisor_name: supervisor_name} } do + # We use this call to initialize key ownership. LoggerHandlerKit will share + # ownership to PostHog.Ownership server, but the key has to be initialized. + all_captured(supervisor_name) LoggerHandlerKit.Act.bare_process_crash(handler_id, :exception) LoggerHandlerKit.Assert.assert_logged(ref) - assert %{events: [event]} = :sys.get_state(sender_pid) + assert [event] = all_captured(supervisor_name) assert %{ event: "$exception", @@ -625,12 +652,15 @@ defmodule PostHog.HandlerTest do test "bare process crash throw", %{ handler_id: handler_id, handler_ref: ref, - sender_pid: sender_pid + config: %{supervisor_name: supervisor_name} } do + # We use this call to initialize key ownership. LoggerHandlerKit will share + # ownership to PostHog.Ownership server, but the key has to be initialized. + all_captured(supervisor_name) LoggerHandlerKit.Act.bare_process_crash(handler_id, :throw) LoggerHandlerKit.Assert.assert_logged(ref) - assert %{events: [event]} = :sys.get_state(sender_pid) + assert [event] = all_captured(supervisor_name) assert %{ event: "$exception", @@ -661,11 +691,11 @@ defmodule PostHog.HandlerTest do end @tag handle_sasl_reports: true - test "genserver init crash", %{handler_ref: ref, sender_pid: sender_pid} do + test "genserver init crash", %{handler_ref: ref, config: %{supervisor_name: supervisor_name}} do LoggerHandlerKit.Act.genserver_init_crash() LoggerHandlerKit.Assert.assert_logged(ref) - assert %{events: [event]} = :sys.get_state(sender_pid) + assert [event] = all_captured(supervisor_name) assert %{ event: "$exception", @@ -724,11 +754,14 @@ defmodule PostHog.HandlerTest do end @tag handle_sasl_reports: true - test "proc_lib crash exception", %{handler_ref: ref, sender_pid: sender_pid} do + test "proc_lib crash exception", %{ + handler_ref: ref, + config: %{supervisor_name: supervisor_name} + } do LoggerHandlerKit.Act.proc_lib_crash(:exception) LoggerHandlerKit.Assert.assert_logged(ref) - assert %{events: [event]} = :sys.get_state(sender_pid) + assert [event] = all_captured(supervisor_name) assert %{ event: "$exception", @@ -770,12 +803,12 @@ defmodule PostHog.HandlerTest do @tag handle_sasl_reports: true test "supervisor progress report failed to start child", %{ handler_ref: ref, - sender_pid: sender_pid + config: %{supervisor_name: supervisor_name} } do LoggerHandlerKit.Act.supervisor_progress_report(:failed_to_start_child) LoggerHandlerKit.Assert.assert_logged(ref) - assert %{events: [event]} = :sys.get_state(sender_pid) + assert [event] = all_captured(supervisor_name) assert %{ event: "$exception", @@ -795,11 +828,14 @@ defmodule PostHog.HandlerTest do end @tag handle_sasl_reports: true, config: [capture_level: :debug] - test "supervisor progress report child started", %{handler_ref: ref, sender_pid: sender_pid} do + test "supervisor progress report child started", %{ + handler_ref: ref, + config: %{supervisor_name: supervisor_name} + } do LoggerHandlerKit.Act.supervisor_progress_report(:child_started) LoggerHandlerKit.Assert.assert_logged(ref) - assert %{events: [event]} = :sys.get_state(sender_pid) + assert [event] = all_captured(supervisor_name) assert %{ event: "$exception", @@ -819,13 +855,19 @@ defmodule PostHog.HandlerTest do end @tag handle_sasl_reports: true - test "supervisor progress report child terminated", %{handler_ref: ref, sender_pid: sender_pid} do + test "supervisor progress report child terminated", %{ + handler_ref: ref, + config: %{supervisor_name: supervisor_name} + } do + # We use this call to initialize key ownership. LoggerHandlerKit will share + # ownership to PostHog.Ownership server, but the key has to be initialized. + all_captured(supervisor_name) LoggerHandlerKit.Act.supervisor_progress_report(:child_terminated) LoggerHandlerKit.Assert.assert_logged(ref) LoggerHandlerKit.Assert.assert_logged(ref) LoggerHandlerKit.Assert.assert_logged(ref) - assert %{events: [_, _, _] = events} = :sys.get_state(sender_pid) + assert [_, _, _] = events = all_captured(supervisor_name) for event <- events do assert %{ @@ -849,11 +891,14 @@ defmodule PostHog.HandlerTest do end @tag config: [metadata: [:extra]] - test "exports metadata if configured", %{handler_ref: ref, sender_pid: sender_pid} do + test "exports metadata if configured", %{ + handler_ref: ref, + config: %{supervisor_name: supervisor_name} + } do Logger.error("Error with metadata", extra: "Foo", hello: "world") LoggerHandlerKit.Assert.assert_logged(ref) - assert %{events: [event]} = :sys.get_state(sender_pid) + assert [event] = all_captured(supervisor_name) assert %{ event: "$exception", @@ -871,12 +916,15 @@ defmodule PostHog.HandlerTest do end @tag config: [metadata: [:extra]] - test "ensures metadata is serializable", %{handler_ref: ref, sender_pid: sender_pid} do + test "ensures metadata is serializable", %{ + handler_ref: ref, + config: %{supervisor_name: supervisor_name} + } do LoggerHandlerKit.Act.metadata_serialization(:all) LoggerHandlerKit.Act.string_message() LoggerHandlerKit.Assert.assert_logged(ref) - assert %{events: [event]} = :sys.get_state(sender_pid) + assert [event] = all_captured(supervisor_name) assert %{ event: "$exception", @@ -909,16 +957,12 @@ defmodule PostHog.HandlerTest do end @tag config: [metadata: [:extra]] - test "purposefully set context is always exported", %{ - config: config, - handler_ref: ref, - sender_pid: sender_pid - } do + test "purposefully set context is always exported", %{config: config, handler_ref: ref} do PostHog.set_context(config.supervisor_name, %{foo: "bar"}) Logger.error("Error with metadata", hello: "world") LoggerHandlerKit.Assert.assert_logged(ref) - assert %{events: [event]} = :sys.get_state(sender_pid) + assert [event] = all_captured(config.supervisor_name) assert %{ event: "$exception", @@ -935,11 +979,14 @@ defmodule PostHog.HandlerTest do } = event end - test "erlang frames in stacktrace", %{handler_ref: ref, sender_pid: sender_pid} do + test "erlang frames in stacktrace", %{ + handler_ref: ref, + config: %{supervisor_name: supervisor_name} + } do {:ok, _pid} = Task.start(fn -> :erlang.system_time(:foo) end) LoggerHandlerKit.Assert.assert_logged(ref) - assert %{events: [event]} = :sys.get_state(sender_pid) + assert [event] = all_captured(supervisor_name) assert %{ event: "$exception", @@ -972,11 +1019,14 @@ defmodule PostHog.HandlerTest do end @tag config: [in_app_otp_apps: [:logger_handler_kit]] - test "marks in_app frames as such", %{handler_ref: ref, sender_pid: sender_pid} do + test "marks in_app frames as such", %{ + handler_ref: ref, + config: %{supervisor_name: supervisor_name} + } do LoggerHandlerKit.Act.task_error(:exception) LoggerHandlerKit.Assert.assert_logged(ref) - assert %{events: [event]} = :sys.get_state(sender_pid) + assert [event] = all_captured(supervisor_name) assert %{ event: "$exception", diff --git a/test/posthog/integrations/plug_test.exs b/test/posthog/integrations/plug_test.exs index 87bd069..bbacd8b 100644 --- a/test/posthog/integrations/plug_test.exs +++ b/test/posthog/integrations/plug_test.exs @@ -3,7 +3,8 @@ defmodule PostHog.Integrations.PlugTest do # https://github.com/erlang/otp/issues/9997 is fixed use PostHog.Case, async: false - @moduletag capture_log: true, config: [capture_level: :error] + @supervisor_name __MODULE__ + @moduletag capture_log: true, config: [capture_level: :error, supervisor_name: @supervisor_name] setup {LoggerHandlerKit.Arrange, :ensure_per_handler_translation} setup :setup_supervisor @@ -32,13 +33,19 @@ defmodule PostHog.Integrations.PlugTest do } end + setup do + # We use this call to initialize key ownership. LoggerHandlerKit will share + # ownership to PostHog.Ownership server, but the key has to be initialized. + all_captured(@supervisor_name) + end + describe "Bandit" do - test "context is attached to exceptions", %{handler_ref: ref, sender_pid: sender_pid} do + test "context is attached to exceptions", %{handler_ref: ref} do LoggerHandlerKit.Act.plug_error(:exception, Bandit, MyRouter) LoggerHandlerKit.Assert.assert_logged(ref) LoggerHandlerKit.Assert.assert_logged(ref) - assert %{events: [event]} = :sys.get_state(sender_pid) + assert [event] = all_captured(@supervisor_name) assert %{ event: "$exception", @@ -63,12 +70,12 @@ defmodule PostHog.Integrations.PlugTest do } = properties end - test "context is attached to throws", %{handler_ref: ref, sender_pid: sender_pid} do + test "context is attached to throws", %{handler_ref: ref} do LoggerHandlerKit.Act.plug_error(:throw, Bandit, MyRouter) LoggerHandlerKit.Assert.assert_logged(ref) LoggerHandlerKit.Assert.assert_logged(ref) - assert %{events: [event]} = :sys.get_state(sender_pid) + assert [event] = all_captured(@supervisor_name) assert %{ event: "$exception", @@ -93,12 +100,12 @@ defmodule PostHog.Integrations.PlugTest do } = properties end - test "context is attached to exit", %{handler_ref: ref, sender_pid: sender_pid} do + test "context is attached to exit", %{handler_ref: ref} do LoggerHandlerKit.Act.plug_error(:exit, Bandit, MyRouter) LoggerHandlerKit.Assert.assert_logged(ref) LoggerHandlerKit.Assert.assert_logged(ref) - assert %{events: [event]} = :sys.get_state(sender_pid) + assert [event] = all_captured(@supervisor_name) assert %{ event: "$exception", @@ -124,11 +131,11 @@ defmodule PostHog.Integrations.PlugTest do end describe "Cowboy" do - test "context is attached to exceptions", %{handler_ref: ref, sender_pid: sender_pid} do + test "context is attached to exceptions", %{handler_ref: ref} do LoggerHandlerKit.Act.plug_error(:exception, Plug.Cowboy, MyRouter) LoggerHandlerKit.Assert.assert_logged(ref) - assert %{events: [event]} = :sys.get_state(sender_pid) + assert [event] = all_captured(@supervisor_name) assert %{ event: "$exception", @@ -153,11 +160,11 @@ defmodule PostHog.Integrations.PlugTest do } = properties end - test "context is attached to throws", %{handler_ref: ref, sender_pid: sender_pid} do + test "context is attached to throws", %{handler_ref: ref} do LoggerHandlerKit.Act.plug_error(:throw, Plug.Cowboy, MyRouter) LoggerHandlerKit.Assert.assert_logged(ref) - assert %{events: [event]} = :sys.get_state(sender_pid) + assert [event] = all_captured(@supervisor_name) assert %{ event: "$exception", @@ -182,11 +189,11 @@ defmodule PostHog.Integrations.PlugTest do } = properties end - test "context is attached to exit", %{handler_ref: ref, sender_pid: sender_pid} do + test "context is attached to exit", %{handler_ref: ref} do LoggerHandlerKit.Act.plug_error(:exit, Plug.Cowboy, MyRouter) LoggerHandlerKit.Assert.assert_logged(ref) - assert %{events: [event]} = :sys.get_state(sender_pid) + assert [event] = all_captured(@supervisor_name) assert %{ event: "$exception", diff --git a/test/posthog/sender_test.exs b/test/posthog/sender_test.exs index 9c37e33..a25f2f3 100644 --- a/test/posthog/sender_test.exs +++ b/test/posthog/sender_test.exs @@ -10,7 +10,10 @@ defmodule PostHog.SenderTest do setup_all do start_link_supervised!( - {Registry, keys: :unique, name: PostHog.Registry.registry_name(@supervisor_name)} + {Registry, + keys: :unique, + name: PostHog.Registry.registry_name(@supervisor_name), + meta: [config: %{test_mode: false}]} ) %{api_client: %API.Client{client: :fake_client, module: API.Mock}} diff --git a/test/posthog/test/private_mode_test.exs b/test/posthog/test/private_mode_test.exs new file mode 100644 index 0000000..f36be4c --- /dev/null +++ b/test/posthog/test/private_mode_test.exs @@ -0,0 +1,59 @@ +defmodule PostHog.Test.PrivateModeTest do + use PostHog.Case, async: true + + alias PostHog.Test + + @supervisor_name __MODULE__ + @moduletag config: [supervisor_name: @supervisor_name] + + setup_all :setup_supervisor + + test "same process", %{test: test} do + PostHog.bare_capture(@supervisor_name, test, "user123") + + assert [%{event: ^test}] = Test.all_captured(@supervisor_name) + end + + test "caller tracking", %{test: test} do + task = + Task.async(fn -> + PostHog.bare_capture(@supervisor_name, test, "user123") + end) + + assert :ok = Task.await(task) + assert [%{event: ^test}] = Test.all_captured(@supervisor_name) + end + + test "no ownership link", %{test: test} do + test_pid = self() + + spawn(fn -> + PostHog.bare_capture(@supervisor_name, test, "user123") + send(test_pid, :ready) + end) + + assert_receive :ready + assert [] = Test.all_captured(@supervisor_name) + end + + test "explicit allowance", %{test: test} do + test_pid = self() + + pid = + spawn(fn -> + receive do + :go -> :ok + end + + PostHog.bare_capture(@supervisor_name, test, "user123") + send(test_pid, :ready) + end) + + Test.allow(@supervisor_name, test_pid, pid) + + send(pid, :go) + assert_receive :ready + + assert [%{event: ^test}] = Test.all_captured(@supervisor_name) + end +end diff --git a/test/posthog/test/shared_mode_test.exs b/test/posthog/test/shared_mode_test.exs new file mode 100644 index 0000000..972d9c6 --- /dev/null +++ b/test/posthog/test/shared_mode_test.exs @@ -0,0 +1,31 @@ +defmodule PostHog.Test.SharedModeTest do + use PostHog.Case, async: false + + alias PostHog.Test + + @supervisor_name __MODULE__ + @moduletag config: [supervisor_name: @supervisor_name] + + setup_all :setup_supervisor + setup_all {Test, :set_posthog_shared} + + test "same process", %{test: test} do + PostHog.bare_capture(@supervisor_name, test, "user123") + + assert events = Test.all_captured(@supervisor_name) + assert Enum.any?(events, &match?(%{event: ^test}, &1)) + end + + test "no ownership link", %{test: test} do + test_pid = self() + + spawn(fn -> + PostHog.bare_capture(@supervisor_name, test, "user123") + send(test_pid, :ready) + end) + + assert_receive :ready + assert events = Test.all_captured(@supervisor_name) + assert Enum.any?(events, &match?(%{event: ^test}, &1)) + end +end diff --git a/test/posthog_test.exs b/test/posthog_test.exs index b181bd2..3ab5994 100644 --- a/test/posthog_test.exs +++ b/test/posthog_test.exs @@ -22,10 +22,10 @@ defmodule PostHogTest do end describe "bare_capture/4" do - test "simple call", %{sender_pid: sender_pid} do + test "simple call" do PostHog.bare_capture("case tested", "distinct_id") - assert %{events: [event]} = :sys.get_state(sender_pid) + assert [event] = all_captured() assert %{ event: "case tested", @@ -35,10 +35,10 @@ defmodule PostHogTest do } = event end - test "with properties", %{sender_pid: sender_pid} do + test "with properties" do PostHog.bare_capture("case tested", "distinct_id", %{foo: "bar"}) - assert %{events: [event]} = :sys.get_state(sender_pid) + assert [event] = all_captured() assert %{ event: "case tested", @@ -49,10 +49,10 @@ defmodule PostHogTest do end @tag config: [supervisor_name: CustomPostHog] - test "simple call for custom supervisor", %{sender_pid: sender_pid} do + test "simple call for custom supervisor" do PostHog.bare_capture(CustomPostHog, "case tested", "distinct_id") - assert %{events: [event]} = :sys.get_state(sender_pid) + assert [event] = all_captured(CustomPostHog) assert %{ event: "case tested", @@ -63,10 +63,10 @@ defmodule PostHogTest do end @tag config: [supervisor_name: CustomPostHog] - test "with properties for custom supervisor", %{sender_pid: sender_pid} do + test "with properties for custom supervisor" do PostHog.bare_capture(CustomPostHog, "case tested", "distinct_id", %{foo: "bar"}) - assert %{events: [event]} = :sys.get_state(sender_pid) + assert [event] = all_captured(CustomPostHog) assert %{ event: "case tested", @@ -76,11 +76,11 @@ defmodule PostHogTest do } = event end - test "ignores set context but uses global one from the config", %{sender_pid: sender_pid} do + test "ignores set context but uses global one from the config" do PostHog.set_context(%{hello: "world"}) PostHog.bare_capture("case tested", "distinct_id", %{foo: "bar"}) - assert %{events: [%{properties: properties}]} = :sys.get_state(sender_pid) + assert [%{properties: properties}] = all_captured() assert %{foo: "bar", "$lib": "posthog-elixir", "$lib_version": _} = properties refute properties[:hello] @@ -88,10 +88,10 @@ defmodule PostHogTest do end describe "capture/4" do - test "simple call", %{sender_pid: sender_pid} do + test "simple call" do PostHog.capture("case tested", %{distinct_id: "distinct_id"}) - assert %{events: [event]} = :sys.get_state(sender_pid) + assert [event] = all_captured() assert %{ event: "case tested", @@ -105,10 +105,10 @@ defmodule PostHogTest do assert {:error, :missing_distinct_id} = PostHog.capture("case tested") end - test "with properties", %{sender_pid: sender_pid} do + test "with properties" do PostHog.capture("case tested", %{distinct_id: "distinct_id", foo: "bar"}) - assert %{events: [event]} = :sys.get_state(sender_pid) + assert [event] = all_captured() assert %{ event: "case tested", @@ -119,10 +119,10 @@ defmodule PostHogTest do end @tag config: [supervisor_name: CustomPostHog] - test "simple call for custom supervisor", %{sender_pid: sender_pid} do + test "simple call for custom supervisor" do PostHog.capture(CustomPostHog, "case tested", %{distinct_id: "distinct_id"}) - assert %{events: [event]} = :sys.get_state(sender_pid) + assert [event] = all_captured(CustomPostHog) assert %{ event: "case tested", @@ -133,10 +133,10 @@ defmodule PostHogTest do end @tag config: [supervisor_name: CustomPostHog] - test "with properties for custom supervisor", %{sender_pid: sender_pid} do + test "with properties for custom supervisor" do PostHog.capture(CustomPostHog, "case tested", %{distinct_id: "distinct_id", foo: "bar"}) - assert %{events: [event]} = :sys.get_state(sender_pid) + assert [event] = all_captured(CustomPostHog) assert %{ event: "case tested", @@ -146,13 +146,13 @@ defmodule PostHogTest do } = event end - test "includes relevant event context", %{sender_pid: sender_pid} do + test "includes relevant event context" do PostHog.set_context(%{hello: "world", distinct_id: "distinct_id"}) PostHog.set_event_context("case tested", %{foo: "bar"}) PostHog.set_context(MyPostHog, %{spam: "eggs"}) PostHog.capture("case tested", %{final: "override"}) - assert %{events: [event]} = :sys.get_state(sender_pid) + assert [event] = all_captured() assert %{ event: "case tested", diff --git a/test/support/case.ex b/test/support/case.ex index d304298..f894a69 100644 --- a/test/support/case.ex +++ b/test/support/case.ex @@ -4,6 +4,7 @@ defmodule PostHog.Case do using do quote do import PostHog.Case + import PostHog.Test, only: [all_captured: 1, all_captured: 0] end end @@ -15,8 +16,9 @@ defmodule PostHog.Case do public_url: "https://us.i.posthog.com", api_key: "my_api_key", api_client_module: PostHog.API.Mock, - supervisor_name: context.test, - capture_level: :info + supervisor_name: context[:test], + capture_level: :info, + test_mode: true ] |> Keyword.merge(context[:config] || []) |> PostHog.Config.validate!() @@ -34,7 +36,10 @@ defmodule PostHog.Case do end def setup_logger_handler(%{config: config} = context) do - big_config_override = Map.take(context, [:handle_otp_reports, :handle_sasl_reports, :level]) + big_config_override = + context + |> Map.take([:handle_otp_reports, :handle_sasl_reports, :level]) + |> Map.put(:share_ownership_with, [PostHog.Ownership]) {context, on_exit} = LoggerHandlerKit.Arrange.add_handler( From e229334c8239d9034d88c6955fd01b2d28f543f5 Mon Sep 17 00:00:00 2001 From: martosaur Date: Sat, 16 Aug 2025 15:36:49 -0700 Subject: [PATCH 08/12] Pin LoggerHandlerKit to 0.4.0 --- mix.exs | 6 +----- mix.lock | 2 +- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/mix.exs b/mix.exs index 4a10a7d..a8ffd18 100644 --- a/mix.exs +++ b/mix.exs @@ -64,11 +64,7 @@ defmodule PostHog.MixProject do {:nimble_ownership, "~> 1.0"}, # Development tools {:ex_doc, "~> 0.37", only: :dev, runtime: false}, - # {:logger_handler_kit, "~> 0.3", only: :test}, - {:logger_handler_kit, - git: "https://github.com/martosaur/logger_handler_kit", - branch: "am-share-ownership-to", - only: :test}, + {:logger_handler_kit, "~> 0.4", only: :test}, {:credo, "~> 1.7", only: [:dev, :test], runtime: false}, {:mox, "~> 1.1", only: :test} ] diff --git a/mix.lock b/mix.lock index 4f4b1c6..9a89940 100644 --- a/mix.lock +++ b/mix.lock @@ -11,7 +11,7 @@ "finch": {:hex, :finch, "0.20.0", "5330aefb6b010f424dcbbc4615d914e9e3deae40095e73ab0c1bb0968933cadf", [:mix], [{:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:mint, "~> 1.6.2 or ~> 1.7", [hex: :mint, repo: "hexpm", optional: false]}, {:nimble_options, "~> 0.4 or ~> 1.0", [hex: :nimble_options, repo: "hexpm", optional: false]}, {:nimble_pool, "~> 1.1", [hex: :nimble_pool, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "2658131a74d051aabfcba936093c903b8e89da9a1b63e430bee62045fa9b2ee2"}, "hpax": {:hex, :hpax, "1.0.3", "ed67ef51ad4df91e75cc6a1494f851850c0bd98ebc0be6e81b026e765ee535aa", [:mix], [], "hexpm", "8eab6e1cfa8d5918c2ce4ba43588e894af35dbd8e91e6e55c817bca5847df34a"}, "jason": {:hex, :jason, "1.4.4", "b9226785a9aa77b6857ca22832cffa5d5011a667207eb2a0ad56adb5db443b8a", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "c5eb0cab91f094599f94d55bc63409236a8ec69a21a67814529e8d5f6cc90b3b"}, - "logger_handler_kit": {:git, "https://github.com/martosaur/logger_handler_kit", "bc4f79cecdbcc33b198e7d5f5ce21ec92f3be021", [branch: "am-share-ownership-to"]}, + "logger_handler_kit": {:hex, :logger_handler_kit, "0.4.0", "0eeeb8e5b4059a81379c1ddc6d31928c6952a3adb7f10acb6e356b5196c7ad28", [:mix], [{:bandit, "~> 1.7", [hex: :bandit, repo: "hexpm", optional: false]}, {:mint, "~> 1.7", [hex: :mint, repo: "hexpm", optional: false]}, {:nimble_ownership, "~> 1.0", [hex: :nimble_ownership, repo: "hexpm", optional: false]}, {:plug, "~> 1.18", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 2.7", [hex: :plug_cowboy, repo: "hexpm", optional: false]}], "hexpm", "aaa6471dc19669390675824cff8f70873a1605ae7ad59a0531ecb43a3e1365e2"}, "logger_json": {:hex, :logger_json, "7.0.3", "0f202788d743154796bd208e1078d878bb4fccf0adc4ed9c83cba821732d326c", [:mix], [{:decimal, ">= 0.0.0", [hex: :decimal, repo: "hexpm", optional: true]}, {:ecto, "~> 3.11", [hex: :ecto, repo: "hexpm", optional: true]}, {:jason, "~> 1.4", [hex: :jason, repo: "hexpm", optional: true]}, {:plug, "~> 1.15", [hex: :plug, repo: "hexpm", optional: true]}, {:telemetry, "~> 1.0", [hex: :telemetry, repo: "hexpm", optional: true]}], "hexpm", "9d1ca7dfe77eb7eac4664edfd6f874168d4707aedbedea09fba8eaa6ed2e2f97"}, "makeup": {:hex, :makeup, "1.2.1", "e90ac1c65589ef354378def3ba19d401e739ee7ee06fb47f94c687016e3713d1", [:mix], [{:nimble_parsec, "~> 1.4", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "d36484867b0bae0fea568d10131197a4c2e47056a6fbe84922bf6ba71c8d17ce"}, "makeup_elixir": {:hex, :makeup_elixir, "1.0.1", "e928a4f984e795e41e3abd27bfc09f51db16ab8ba1aebdba2b3a575437efafc2", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}, {:nimble_parsec, "~> 1.2.3 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "7284900d412a3e5cfd97fdaed4f5ed389b8f2b4cb49efc0eb3bd10e2febf9507"}, From b6e2b758a7d07a32f813eda9ab0cc64620b8d937 Mon Sep 17 00:00:00 2001 From: martosaur Date: Sat, 16 Aug 2025 15:38:57 -0700 Subject: [PATCH 09/12] Wording --- lib/posthog/test.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/posthog/test.ex b/lib/posthog/test.ex index ef67cd3..5db3aa5 100644 --- a/lib/posthog/test.ex +++ b/lib/posthog/test.ex @@ -29,7 +29,7 @@ defmodule PostHog.Test do ## Concurrency - PostHog uses a powerful `NimbleOwnership` ownership mechanism to determine + PostHog uses `NimbleOwnership` ownership mechanism to determine which events belong to which tests. This should work very well for most tests. However, in some cases captured events cannot be traced back to tests. Those From 11f97df8149eeb5f9723fe39484d72da489fad2a Mon Sep 17 00:00:00 2001 From: martosaur Date: Sat, 16 Aug 2025 15:45:44 -0700 Subject: [PATCH 10/12] Merge shared schema earlier --- lib/posthog/config.ex | 119 +++++++++++++++++++++--------------------- 1 file changed, 60 insertions(+), 59 deletions(-) diff --git a/lib/posthog/config.ex b/lib/posthog/config.ex index fb923cc..4c77d02 100644 --- a/lib/posthog/config.ex +++ b/lib/posthog/config.ex @@ -1,59 +1,4 @@ defmodule PostHog.Config do - @configuration_schema [ - public_url: [ - type: :string, - required: true, - doc: "`https://us.i.posthog.com` for US cloud or `https://eu.i.posthog.com` for EU cloud" - ], - api_key: [ - type: :string, - required: true, - doc: """ - Your PostHog Project API key. Find it in your project's settings under the Project ID section. - """ - ], - api_client_module: [ - type: :atom, - default: PostHog.API.Client, - doc: "API client to use" - ], - supervisor_name: [ - type: :atom, - default: PostHog, - doc: "Name of the supervisor process running PostHog" - ], - metadata: [ - type: {:list, :atom}, - default: [], - doc: "List of metadata keys to include in event properties" - ], - capture_level: [ - type: {:or, [{:in, Logger.levels()}, nil]}, - default: :error, - doc: - "Minimum level for logs that should be captured as errors. Errors with `crash_reason` are always captured." - ], - in_app_otp_apps: [ - type: {:list, :atom}, - default: [], - doc: - "List of OTP app names of your applications. Stacktrace entries that belong to these apps will be marked as \"in_app\"." - ] - ] - - @convenience_schema [ - enable: [ - type: :boolean, - default: true, - doc: "Automatically start PostHog?" - ], - enable_error_tracking: [ - type: :boolean, - default: true, - doc: "Automatically start the logger handler for error tracking?" - ] - ] - @shared_schema [ test_mode: [ type: :boolean, @@ -62,8 +7,64 @@ defmodule PostHog.Config do ] ] - @compiled_configuration_schema NimbleOptions.new!(@configuration_schema ++ @shared_schema) - @compiled_convenience_schema NimbleOptions.new!(@convenience_schema ++ @shared_schema) + @configuration_schema [ + public_url: [ + type: :string, + required: true, + doc: + "`https://us.i.posthog.com` for US cloud or `https://eu.i.posthog.com` for EU cloud" + ], + api_key: [ + type: :string, + required: true, + doc: """ + Your PostHog Project API key. Find it in your project's settings under the Project ID section. + """ + ], + api_client_module: [ + type: :atom, + default: PostHog.API.Client, + doc: "API client to use" + ], + supervisor_name: [ + type: :atom, + default: PostHog, + doc: "Name of the supervisor process running PostHog" + ], + metadata: [ + type: {:list, :atom}, + default: [], + doc: "List of metadata keys to include in event properties" + ], + capture_level: [ + type: {:or, [{:in, Logger.levels()}, nil]}, + default: :error, + doc: + "Minimum level for logs that should be captured as errors. Errors with `crash_reason` are always captured." + ], + in_app_otp_apps: [ + type: {:list, :atom}, + default: [], + doc: + "List of OTP app names of your applications. Stacktrace entries that belong to these apps will be marked as \"in_app\"." + ] + ] ++ @shared_schema + + @convenience_schema [ + enable: [ + type: :boolean, + default: true, + doc: "Automatically start PostHog?" + ], + enable_error_tracking: [ + type: :boolean, + default: true, + doc: "Automatically start the logger handler for error tracking?" + ] + ] ++ @shared_schema + + @compiled_configuration_schema NimbleOptions.new!(@configuration_schema) + @compiled_convenience_schema NimbleOptions.new!(@convenience_schema) @moduledoc """ PostHog configuration @@ -96,11 +97,11 @@ defmodule PostHog.Config do def read!() do configuration_options = Application.get_all_env(:posthog) - |> Keyword.take(Keyword.keys(@configuration_schema ++ @shared_schema)) + |> Keyword.take(Keyword.keys(@configuration_schema)) convenience_options = Application.get_all_env(:posthog) - |> Keyword.take(Keyword.keys(@convenience_schema ++ @shared_schema)) + |> Keyword.take(Keyword.keys(@convenience_schema)) convenience_options |> NimbleOptions.validate!(@compiled_convenience_schema) From b6bccdea3ca3c7e68d92bdb5da1bce8671948e6b Mon Sep 17 00:00:00 2001 From: martosaur Date: Tue, 29 Jul 2025 12:36:10 -0700 Subject: [PATCH 11/12] Make PostHog.Sender a pool --- lib/posthog/registry.ex | 3 + lib/posthog/sender.ex | 23 ++- lib/posthog/supervisor.ex | 27 +++- test/posthog/sender_test.exs | 281 +++++++++++++++++++++++------------ 4 files changed, 230 insertions(+), 104 deletions(-) diff --git a/lib/posthog/registry.ex b/lib/posthog/registry.ex index 4e8bad9..8115116 100644 --- a/lib/posthog/registry.ex +++ b/lib/posthog/registry.ex @@ -13,4 +13,7 @@ defmodule PostHog.Registry do def via(supervisor_name, server_name), do: {:via, Registry, {registry_name(supervisor_name), server_name}} + + def via(supervisor_name, pool_name, index), + do: {:via, Registry, {registry_name(supervisor_name), {pool_name, index}}} end diff --git a/lib/posthog/sender.ex b/lib/posthog/sender.ex index 61d3578..333a312 100644 --- a/lib/posthog/sender.ex +++ b/lib/posthog/sender.ex @@ -4,6 +4,7 @@ defmodule PostHog.Sender do defstruct [ :registry, + :index, :api_client, :max_batch_time_ms, :max_batch_events, @@ -15,7 +16,7 @@ defmodule PostHog.Sender do name = opts |> Keyword.fetch!(:supervisor_name) - |> PostHog.Registry.via(__MODULE__) + |> PostHog.Registry.via(__MODULE__, opts[:index]) callers = Process.get(:"$callers", []) Process.flag(:trap_exit, true) @@ -33,8 +34,16 @@ defmodule PostHog.Sender do PostHog.Test.remember_event(supervisor_name, event) _ -> - supervisor_name - |> PostHog.Registry.via(__MODULE__) + senders = + supervisor_name + |> PostHog.Registry.registry_name() + |> Registry.select([{{{__MODULE__, :_}, :"$1", :"$2"}, [], [{{:"$2", :"$1"}}]}]) + + # Pick the first available sender, otherwise random busy one. + senders + |> Keyword.get_lazy(:available, fn -> + senders |> Keyword.values() |> Enum.random() + end) |> GenServer.cast({:event, event}) end end @@ -45,6 +54,7 @@ defmodule PostHog.Sender do def init({opts, callers}) do state = %__MODULE__{ registry: PostHog.Registry.registry_name(opts[:supervisor_name]), + index: Keyword.fetch!(opts, :index), api_client: Keyword.fetch!(opts, :api_client), max_batch_time_ms: Keyword.fetch!(opts, :max_batch_time_ms), max_batch_events: Keyword.fetch!(opts, :max_batch_events), @@ -54,6 +64,9 @@ defmodule PostHog.Sender do Process.put(:"$callers", callers) + {:available, nil} = + Registry.update_value(state.registry, registry_key(state.index), fn _ -> :available end) + {:ok, state} end @@ -81,7 +94,9 @@ defmodule PostHog.Sender do @impl GenServer def handle_continue(:send_batch, state) do + Registry.update_value(state.registry, registry_key(state.index), fn _ -> :busy end) PostHog.API.post_batch(state.api_client, state.events) + Registry.update_value(state.registry, registry_key(state.index), fn _ -> :available end) {:noreply, %{state | events: [], num_events: 0}} end @@ -91,4 +106,6 @@ defmodule PostHog.Sender do end def terminate(_reason, _state), do: :ok + + defp registry_key(index), do: {__MODULE__, index} end diff --git a/lib/posthog/supervisor.ex b/lib/posthog/supervisor.ex index 0899b0d..2e6a0dd 100644 --- a/lib/posthog/supervisor.ex +++ b/lib/posthog/supervisor.ex @@ -29,19 +29,30 @@ defmodule PostHog.Supervisor do {Registry, keys: :unique, name: PostHog.Registry.registry_name(config.supervisor_name), - meta: [config: config]}, + meta: [config: config]} + ] ++ senders(config) + + Process.put(:"$callers", callers) + + Supervisor.init(children, strategy: :one_for_one) + end + + defp senders(config) do + pool_size = Map.get(config, :sender_pool_size, max(System.schedulers_online(), 2)) + + for index <- 1..pool_size do + Supervisor.child_spec( {PostHog.Sender, [ api_client: config.api_client, supervisor_name: config.supervisor_name, max_batch_time_ms: Map.get(config, :max_batch_time_ms, to_timeout(second: 10)), max_batch_events: Map.get(config, :max_batch_events, 100), - test_mode: config.test_mode - ]} - ] - - Process.put(:"$callers", callers) - - Supervisor.init(children, strategy: :one_for_one) + test_mode: config.test_mode, + index: index + ]}, + id: {PostHog.Sender, index} + ) + end end end diff --git a/test/posthog/sender_test.exs b/test/posthog/sender_test.exs index a25f2f3..78b6c17 100644 --- a/test/posthog/sender_test.exs +++ b/test/posthog/sender_test.exs @@ -9,107 +9,202 @@ defmodule PostHog.SenderTest do @supervisor_name __MODULE__ setup_all do + registry = PostHog.Registry.registry_name(@supervisor_name) + start_link_supervised!( - {Registry, - keys: :unique, - name: PostHog.Registry.registry_name(@supervisor_name), - meta: [config: %{test_mode: false}]} + {Registry, keys: :unique, name: registry, meta: [config: %{test_mode: false}]} ) - %{api_client: %API.Client{client: :fake_client, module: API.Mock}} + %{api_client: %API.Client{client: :fake_client, module: API.Mock}, registry: registry} end setup :verify_on_exit! - test "puts events into state", %{api_client: api_client} do - pid = - start_link_supervised!( - {Sender, - supervisor_name: @supervisor_name, - api_client: api_client, - max_batch_time_ms: 60_000, - max_batch_events: 100} - ) - - Sender.send("my_event", @supervisor_name) - - assert %{events: ["my_event"]} = :sys.get_state(pid) - end - - test "immediately sends after reaching max_batch_events", %{api_client: api_client} do - pid = - start_link_supervised!( - {Sender, - supervisor_name: @supervisor_name, - api_client: api_client, - max_batch_time_ms: 60_000, - max_batch_events: 2} - ) - - expect(API.Mock, :request, fn _client, method, url, opts -> - assert method == :post - assert url == "/batch" - - assert opts[:json] == %{ - batch: ["bar", "foo"] - } - end) - - Sender.send("foo", @supervisor_name) - Sender.send("bar", @supervisor_name) - - assert %{events: []} = :sys.get_state(pid) - end - - test "immediately sends after reaching max_batch_time_ms", %{ - api_client: api_client, - test_pid: test_pid - } do - start_link_supervised!( - {Sender, - supervisor_name: @supervisor_name, - api_client: api_client, - max_batch_time_ms: 0, - max_batch_events: 100} - ) - - expect(API.Mock, :request, fn _client, method, url, opts -> - assert method == :post - assert url == "/batch" - - assert opts[:json] == %{ - batch: ["foo"] - } - - send(test_pid, :ready) - end) - - Sender.send("foo", @supervisor_name) - - assert_receive :ready + describe "send/2" do + test "picks available sender", %{registry: registry} do + busy_pid = + start_link_supervised!( + Supervisor.child_spec( + {Agent, fn -> Registry.register(registry, {PostHog.Sender, 0}, :busy) end}, + id: Agent0 + ) + ) + + available_pid = + start_link_supervised!( + Supervisor.child_spec( + {Agent, fn -> Registry.register(registry, {PostHog.Sender, 1}, :available) end}, + id: Agent1 + ) + ) + + :sys.suspend(busy_pid) + :sys.suspend(available_pid) + + Sender.send("my_event", @supervisor_name) + assert {:message_queue_len, 0} = Process.info(busy_pid, :message_queue_len) + + assert {:messages, ["$gen_cast": {:event, "my_event"}]} = + Process.info(available_pid, :messages) + end + + test "busy sender is ok if there are no available", %{registry: registry} do + busy_pid = + start_link_supervised!( + Supervisor.child_spec( + {Agent, fn -> Registry.register(registry, {PostHog.Sender, 0}, :busy) end}, + id: Agent0 + ) + ) + + :sys.suspend(busy_pid) + + Sender.send("my_event", @supervisor_name) + + assert {:messages, ["$gen_cast": {:event, "my_event"}]} = + Process.info(busy_pid, :messages) + end end - test "sends leftovers on shutdown", %{api_client: api_client} do - pid = - start_supervised!( - {Sender, - supervisor_name: @supervisor_name, - api_client: api_client, - max_batch_time_ms: 60_000, - max_batch_events: 100} - ) - - expect(API.Mock, :request, fn _client, method, url, opts -> - assert method == :post - assert url == "/batch" - - assert opts[:json] == %{ - batch: ["foo"] - } - end) - - Sender.send("foo", @supervisor_name) - - assert :ok = GenServer.stop(pid) + describe "Server" do + test "starts in :available state", %{api_client: api_client, registry: registry} do + pid = + start_link_supervised!( + {Sender, + supervisor_name: @supervisor_name, + index: 1, + api_client: api_client, + max_batch_time_ms: 60_000, + max_batch_events: 100} + ) + + [{^pid, :available}] = Registry.lookup(registry, {PostHog.Sender, 1}) + end + + test "puts events into state", %{api_client: api_client} do + pid = + start_link_supervised!( + {Sender, + supervisor_name: @supervisor_name, + index: 1, + api_client: api_client, + max_batch_time_ms: 60_000, + max_batch_events: 100} + ) + + Sender.send("my_event", @supervisor_name) + + assert %{events: ["my_event"]} = :sys.get_state(pid) + end + + test "immediately sends after reaching max_batch_events", %{ + api_client: api_client, + registry: registry + } do + test_pid = self() + + pid = + start_link_supervised!( + {Sender, + supervisor_name: @supervisor_name, + index: 1, + api_client: api_client, + max_batch_time_ms: 60_000, + max_batch_events: 2} + ) + + expect(API.Mock, :request, fn _client, method, url, opts -> + assert method == :post + assert url == "/batch" + + assert opts[:json] == %{ + batch: ["bar", "foo"] + } + + send(test_pid, :ready) + + receive do + :go -> :ok + end + end) + + Sender.send("foo", @supervisor_name) + Sender.send("bar", @supervisor_name) + + assert_receive :ready + + [{^pid, :busy}] = Registry.lookup(registry, {PostHog.Sender, 1}) + send(pid, :go) + + assert %{events: []} = :sys.get_state(pid) + [{^pid, :available}] = Registry.lookup(registry, {PostHog.Sender, 1}) + end + + test "immediately sends after reaching max_batch_time_ms", %{ + api_client: api_client, + registry: registry + } do + test_pid = self() + + pid = + start_link_supervised!( + {Sender, + supervisor_name: @supervisor_name, + index: 1, + api_client: api_client, + max_batch_time_ms: 0, + max_batch_events: 100} + ) + + expect(API.Mock, :request, fn _client, method, url, opts -> + assert method == :post + assert url == "/batch" + + assert opts[:json] == %{ + batch: ["foo"] + } + + send(test_pid, :ready) + + receive do + :go -> :ok + end + + send(test_pid, :done) + end) + + Sender.send("foo", @supervisor_name) + + assert_receive :ready + [{^pid, :busy}] = Registry.lookup(registry, {PostHog.Sender, 1}) + send(pid, :go) + assert_receive :done + [{^pid, :available}] = Registry.lookup(registry, {PostHog.Sender, 1}) + end + + test "sends leftovers on shutdown", %{api_client: api_client} do + pid = + start_supervised!( + {Sender, + supervisor_name: @supervisor_name, + index: 1, + api_client: api_client, + max_batch_time_ms: 60_000, + max_batch_events: 100} + ) + + expect(API.Mock, :request, fn _client, method, url, opts -> + assert method == :post + assert url == "/batch" + + assert opts[:json] == %{ + batch: ["foo"] + } + end) + + Sender.send("foo", @supervisor_name) + + assert :ok = GenServer.stop(pid) + end end end From d668b6f0033e00fe0e32a2089163c201c6807a1c Mon Sep 17 00:00:00 2001 From: martosaur Date: Sat, 16 Aug 2025 15:55:14 -0700 Subject: [PATCH 12/12] Add a comment --- lib/posthog/sender.ex | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/posthog/sender.ex b/lib/posthog/sender.ex index 333a312..ae9c4aa 100644 --- a/lib/posthog/sender.ex +++ b/lib/posthog/sender.ex @@ -94,6 +94,10 @@ defmodule PostHog.Sender do @impl GenServer def handle_continue(:send_batch, state) do + # Before we initiate an HTTP request that might block the process + # for a potentially noticeable time, we signal to the outside world that this + # sender is currently busy and if there is another sender available it + # should be used instead. Registry.update_value(state.registry, registry_key(state.index), fn _ -> :busy end) PostHog.API.post_batch(state.api_client, state.events) Registry.update_value(state.registry, registry_key(state.index), fn _ -> :available end)