0
0
mirror of https://github.com/PostHog/posthog.git synced 2024-11-24 09:14:46 +01:00
Commit Graph

301 Commits

Author SHA1 Message Date
Paul D'Ambra
79c960b223
chore: e2e test script yarn removes too many things (#10358) 2022-06-20 11:03:56 +02:00
Marcus Hyett (PostHog)
5f6331010e
chore(hobby-deploy): Advise not to use IP address (#10241)
Advise users not to use IP address when setting up TLS for their hobby instance.
2022-06-20 10:10:52 +02:00
Paul D'Ambra
d613f4bd06
chore: upgrade cypress to v10x (#9650)
* update cypress

* really click something that's actually there

* obey cypress and use done

* run cypress 9 in CI

* no need for before each when only one test

* no need to set window size to the default

* get tests passing file by file

* delay checking for a graph in a test

* be more specific cypress

* use cy command

* select text like a human

* silly cypress

* try and avoid cypress deciding that a visible field is not valid

* select delete button correctly

* find save button differently

* try and avoid not always typing the first character

* better trends selections

* use cy command to navigate

* conitnue trying to get tests to pass in CI

* another try at setting feature flag names in CI

* can CI find undo button without a wait?

* better assertion for cypress

* up to v10

* fix splitting specs with v10 path

* show cypress how to wait for the test to finish

* remove redundant file

* change return to satisfy new cypress

* move import
2022-06-09 11:14:21 +01:00
Marius Andra
15017ca714
chore(frontend): Fix all typescript errors (#10092)
* fix dayjs

* fix timeouts (we're not strictly speaking running in nodejs)

* export unexported type

* consolidate on a single FormInstance

* no need to rename

* fuse

* forminstance 2

* locationChanged

* BuiltLogic

* remove Type.ts exception

* fix duh

* lay off the bin/check-typescript/strict script

* don't think this is ever used or useful

* no real need to hide the output

* make typescript:check do what the name says

* we're already strict

Co-authored-by: Michael Matloka <dev@twixes.com>
2022-06-03 12:17:49 +02:00
Ben White
57874f9db2
feat(exports): Dashboard / Insight exporting (#9830)
* Adds chromium / selenium for image exporting
* Added uploading of downloads folder to artefacts
* Adds ExportButton to generate desired asset
2022-05-27 14:31:17 +02:00
Yakko Majuri
6e1f3362bc
fix: update broken plugin-server deployment script (#9999) 2022-05-26 10:01:55 +01:00
James Greenhill
8572bad0d2
fix: Move hobby to use latest until next release (#9928) 2022-05-23 16:14:16 -07:00
Guido Iaquinti
3f3f146b3e
chore(hobby deployments): various fixes (#9914)
* chore(hobby deployments): various fixes

* default do not check versions for current hobby release

Co-authored-by: James Greenhill <fuziontech@gmail.com>
2022-05-23 11:15:57 -07:00
Paul D'Ambra
49e3ceef5c
feat(object storage): add unused object storage (#9846)
* feat(object_storage): add unused object storage with health checks

* only prompt debug users if object storage not available at preflight

* safe plugin server health check for unused object storage

* explicit object storage settings

* explicit object storage settings

* explicit object storage settings

* downgrade pip tools

* without spaces?

* like this?

* without updating pip?

* remove object_storage from dev volumes

* named volume on hobby

* lazily init object storage

* simplify conditional check

* reproduced error locally

* reproduced error locally

* object_storage_endpoint not host and port

* log more when checking kafka and clickhouse

* don't filter docker output

* add kafka to hosts before starting stack?

* silly cloud tests (not my brain)
2022-05-20 09:56:50 +01:00
Michael Matloka
faf75ebb5e
refactor(ingestion): Make KAFKA_ENABLED true by default and set KAFKA_HOSTS default (#9844)
* refactor(ingestion): Make `KAFKA_ENABLED` true by default

* Sync `KAFKA_HOSTS` defaults too

* Update snapshots

* Update "kafka" to "kafka:9092"

* Revert "Update "kafka" to "kafka:9092""

This reverts commit d954ac6fa6.

* Update some tests

* Revert "Revert "Update "kafka" to "kafka:9092"""

This reverts commit 07edfa6c5e.

* Update test_0004_replicated_schema.ambr

* Remove `KAFKA_ENABLED` and `KAFKA_HOSTS` from places

Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2022-05-19 19:18:15 +02:00
Michael Matloka
9a389847c2
refactor(plugin-server): Remove --idle mode (#9798)
* refactor(plugin-server): Remove `--idle` mode

* Support `PLUGIN_SERVER_IDLE` in `bin/start-worker`

* Don't `export` needlessly in npm script
2022-05-16 16:22:49 +00:00
Karl-Aksel Puulmann
14760e771a
fix(plugin-server): Remove heroku-specific code hacks (#9691)
Shameless lift from https://github.com/PostHog/posthog/pull/9288/ +
removing the other instance of the var being used
2022-05-10 09:06:34 +03:00
Joe Trollo
fb88c5a0aa
fix: propagate SIGTERM to plugin server (#9641) 2022-05-05 13:53:14 +00:00
0x1a8510f2
c776ee3583
refactor(hobby-deployment): More secure secret generation in deploy-hobby (#9485)
* More secure secret generation

Use a random source designed for secrets/crypto and apply a stronger hash function as MD5 is broken. This shouldn't have too much of an impact in this context, but better safe than sorry.

* Tune `head` params

Co-authored-by: Michael Matloka <dev@twixes.com>
2022-04-25 10:40:45 +00:00
Tim Glaser
e6333ca7d7
perf: Speed up backend tests locally (#9255)
* perf: Speed up backend tests locally

* fix
2022-04-15 11:43:05 +01:00
Paul D'Ambra
4519ffb295
chore(cypress): remove component tests (#9323)
* remove tests that have been off for a year

* remove component tests that are covered by main cypress tests

* remove a bunch of component based test setup and upgrade cypress

* get tests running but not all passing on Cypress 9

* don't upgrade yet

* don't upgrade yet
2022-04-02 17:35:14 +01:00
Michael Matloka
500d4623ba
refactor: Yeet PRIMARY_DB (#9017)
* refactor: Yeet `PRIMARY_DB`

* Remove `db_backend`

* Eliminate "Analytics database in use"

* Satisfy mypy
2022-03-21 13:15:50 +01:00
Tiina Turban
8ba6168933
feat(async-migrations): Hobby upgrade to check async migrations first (#8899) 2022-03-09 14:42:15 +01:00
Tiina Turban
72042ee844
fix(async-migrations): bin/migrate to check not run async migrations (#8872) 2022-03-09 13:55:23 +01:00
Karl-Aksel Puulmann
c8d6b2225f
feat(sharding): add command to sync tables onto new nodes (#8912)
* feat(sharding): add command to sync tables onto new nodes

clickhouse-operator only syncs some tables onto new nodes. This new
command ensures that when adding new shards, they are automatically
synced up on redeploying

Note that there might be timing concerns here as resharding on altinity
cloud does not redeploy automatically. In practice however what this
means is that new nodes just won't ingest any data until another deploy

* Add test to the new command

* Improve non-replicated test
2022-03-08 12:50:49 +02:00
Tiina Turban
de831d9930
fix(hobby-deploy): loading enviroment variables (#8908) 2022-03-07 14:44:24 -08:00
James Greenhill
a451d2f2ce
Hobby: Enable deploying hobby stack behind a firewall with no ACME TLS (#8687) 2022-02-18 10:28:28 -08:00
James Greenhill
24eb2666bb
hobby: Wait for ClickHouse and for Postgres before starting (#8686) 2022-02-18 10:27:45 -08:00
Tiina Turban
0fb19f87d7
Check for all necessary migrations completed before worker, plugins start (#8504) 2022-02-17 17:56:24 +01:00
Dawid Janik
6da21e2428
Increase request line limit for Gunicorn. (#8184) 2022-01-31 12:14:04 +02:00
Jesse Cooke
897ed833db
Make script executable again (#8327)
a71e899 removed the executable permission which broke AWS ECS deployment.
2022-01-28 09:15:18 +01:00
Tim Glaser
b74c54d117
Add hobby upgrade script (#8289)
* Add hobby upgrade script

* Add hobby upgrade script

* Write env file

* Pull new image
2022-01-27 08:45:17 -08:00
James Greenhill
44e9feb04d
Fix docs for hobby and add upgrade instructions (#8233)
* Fix docs for hobby and add upgrade instructions

* swallow errors from stop command (should error normally)

* persist env vars in docker-compose for hobby

* remove .hobby from docker-compose

* make file easier to test

* make env vars easier to template

* use docker-compose from git instead of curl

* test envsubst params

* default for sentry because exceptions

* tweaks to default logic
2022-01-24 22:14:50 -08:00
Michael Matloka
50e9334269
Make bin/start docker compose instructions accurate (#8168) 2022-01-21 10:23:00 +01:00
Eric Duong
a71e899605
Yeetcode (#7830)
* remove django query tests

* remove funnel and caching check

* remove ee available var

* remove is_clickhouse_enabled

* remove abstract tests

* change primary db

* missing func

* unnecessary test

* try new e2e ci

* func arg

* remove param

* ci

* remove plugins in docker

* background

* change ur;

* add kafka url

* add step

* update docker

* primary docker file

* mount volumes correctly

* one more

* remove postgres tests

* remove foss

* remove all  is_clickhouse_neabled

* remove irrelelvant test

* remove extra arg

* remove var

* arg

* add foss comment

* add foss comment

* plugin server config

* Update posthog/utils.py

Co-authored-by: Karl-Aksel Puulmann <macobo@users.noreply.github.com>

* migrate commands

* comment

* add clickhouse to pg tests

* change script

* change ordering

* deepsource

* restore foss tests

* test remove KAFKA_ENABLED from CI

* always wait

* up proper resources

* use one conftest

* restore

* remove unnecessary tests

* remove more pg

* log event tests

* fix more tests

* more tests

* type

* fix more tests

* last test

* typing

* account for shared class setup

* temp test cloud

* restore cloud master checkout

* adjust contexts

* backwards

Co-authored-by: Karl-Aksel Puulmann <macobo@users.noreply.github.com>
Co-authored-by: yakkomajuri <yakko.majuri@gmail.com>
2022-01-18 14:32:28 -05:00
Tim Glaser
0bd224df07 Add skip_service_version_requirements to bin/start 2022-01-18 14:05:22 +00:00
Tim Glaser
c25e1cc6fc
Fix e2e command (#8106) 2022-01-18 11:25:56 +00:00
Tim Glaser
49f3ccc5cc
Improve bin/start (#8007)
* Improve bin/start

* Address feedback and fix `$DEBUG`

Co-authored-by: Michael Matloka <dev@twixes.com>
2022-01-13 17:09:49 +00:00
Yakko Majuri
909d6bf7c6
do not start worker, plugins, or events if migrations not complete (#7823) 2022-01-06 10:30:47 -03:00
Tim Glaser
2adc6258d2
Run e2e with clickhouse (#7705)
* Run e2e with clickhouse

* Set kafka to /etc/hosts, and speed up waiting

* fix persons page

* Migrate clickhouse

* Update e2e-test-runner

* Fixes/improvements

* fingers x'ed

* fix

* revert url

* fix demo data

* fix test

* Run Redis in docker

* fix test

* fix redis

* trap

* fix e2e-test-runner

* try localhost instead of kafka

* Revert "try localhost instead of kafka"

This reverts commit 58869c96df.
2022-01-03 14:26:54 +00:00
Marius Andra
f3975f6513
Run e2e tests via docker postgres (#7816)
* run e2e tests via docker postgres

* use global vars

* extract database
2021-12-21 17:08:14 +01:00
Paul D'Ambra
b2e1b16a31
Add slightly kinder database url defaults (#7730)
* Add DB user and pass to DB URL for DEBUG mode and to bin tests for dropping test database

* ensmallen the blast radius of the DB connection settings changes

* make PGPORT settable too

* set PG ENV variables in bin tests

* Revert "set PG ENV variables in bin tests"

This reverts commit 4991f28808.
2021-12-16 09:31:41 +00:00
Yakko Majuri
782f7e7ef0
add SKIP_ASYNC_MIGRATIONS_SETUP=0 to celery startup (#7736) 2021-12-15 14:57:19 -03:00
Paul D'Ambra
5343b4b9a0
Add DB user and pass to DB URL for DEBUG mode and to bin tests for dropping test database (#7675) 2021-12-14 15:15:29 -08:00
Tim Glaser
aab8e43d7d
Load clickhouse/kafka async and wait (#7707)
* Load clickhouse/kafka async and wait

* Change permissions

* Add to cloud tests

* move
2021-12-14 15:09:16 -08:00
Yakko Majuri
dc4aff3980
Revert "fix hobby deploy in 1.30.0 (#7701)" (#7702)
This reverts commit 18540ac96e.
2021-12-14 15:02:59 -08:00
Yakko Majuri
3f85aa4c47
special migration -> async migration (#7686)
* special migration -> async migration

* rename frontend dir

* format

* rename SPECIAL_MIGRATION
2021-12-14 11:48:51 -03:00
Yakko Majuri
18540ac96e
fix hobby deploy in 1.30.0 (#7701) 2021-12-14 11:53:51 +00:00
Yakko Majuri
b56b141126
Special Migrations Runner (#7054 pt. 4) (#7446)
* add special migration definition and example

* types

* special migrations runner

* fix tests

* fix tests 2

* add clickhouse runner

* add temp fix for tests

* wip

* add special migrations api (#7448)

* wip new structure

* update example sourcing

* Update .gitignore

* yet another wip structure

* code quality

* cypress

* test docker image build

* implement resumable ops

* code quality

* add comments

* add warning

* add conditional requirements for migration

* add comment on is_required

* add dependency map

* wip dependencies and run migration on startup

* code quality

* fix bugs

* fix more bugs

* format

* types

* remove api from this branch

* types

* types

* update clickhouse script

* add is_migration_in_range util

* fix type

* fix runner

* add AUTO_START_SPECIAL_MIGRATIONS env var

* reset migration on start

* cleanup

* wip per op rollback

* prevent accidental status rollback

* add utils and definition test

* update example with rollback per op

* wip test special migration

* add first runner tests

* add runner tests

* add util for code paths

* fix test

* fix types

* fix types again

* cleanup

* cleanup

* add periodic healthcheck task tests

* remove unused imports

* safer row updates

* fix coalescing none checks

* code quality

* add docstrings

* fix

* fix deploys issue

* update scripts

* add delay

* address reviews

* address review comments

* address review comments

* address final comments

* fix import error

* fix tests

* remove unused imports

* fix tests

* fix task test

* remove unused return value

* remove unused special migrations code from migrate_clickhouse

* tweaks to support fresh deployments
2021-12-13 13:00:27 -03:00
Karl-Aksel Puulmann
6d50504e70
Fix cypress trends, paths and retention tests (#7524)
* Fix cypress paths and retention tests

These were broken in https://github.com/PostHog/posthog/pull/7473

* Attempt to fix trends test
2021-12-06 14:34:42 +01:00
Yakko Majuri
92c28d0160
Revert "Revert "Add names to celery nodes (#7054 pt. 2) (#7433)" (#74… (#7450)
* Revert "Revert "Add names to celery nodes (#7054 pt. 2) (#7433)" (#7449)"

This reverts commit ecf0679c98.

* Update bin/docker-worker-beat

* Update bin/docker-worker-celery

* Update bin/start-worker

* Update bin/docker-worker-beat

* Update bin/docker-worker-beat
2021-11-30 18:52:12 +00:00
Yakko Majuri
ecf0679c98
Revert "Add names to celery nodes (#7054 pt. 2) (#7433)" (#7449)
This reverts commit 444568a06e.
2021-11-30 15:21:05 -03:00
Yakko Majuri
444568a06e
Add names to celery nodes (#7054 pt. 2) (#7433)
* add names to celery nodes

* use python instead

* hostname naming
2021-11-30 17:06:19 +00:00
Yakko Majuri
09e12327c0
Docker compose hobby (#7262)
* Docker compose hobby:

* fix with shellcheck
2021-11-23 11:25:31 +00:00
Paul D'Ambra
50b12d9bb7
Set debug, test, and primary_db env variables based on context (#7250)
* set debug, test, and primary_db env variables based on context

* remove unnecessary print

* also use pytest.ini for some tests run straight from pytest at the CLI
2021-11-20 17:18:39 +00:00
Yakko Majuri
963c62aaf1
Use monorepo plugin server (#6784)
* use plugin-server in same repo

* remove plugins dir

* update docker files

* clean up docker files:

* visual separation

* run plugin server test stack

* build and push test image

* revert push image

* fix default yarn start

* another fix

* fix some more

* add plugin-server-prod script

* make executable

* update scripts:

* revert prod script

* fixes

* fix tests

* clean

* move build to docker

* build plugin-server in prod dockerfile

* use different entrypoint for e2e test

* fix bugs with ts-node-dev

* restore yarn.lock

* lost a few changes in the rebase

* fix dockerfile

Co-authored-by: James Greenhill <fuziontech@gmail.com>
2021-11-13 11:52:00 -08:00
Yakko Majuri
79744990e2
fix issues, logging (#6998)
🚢
2021-11-09 09:05:22 -08:00
Paul D'Ambra
0cdfb2531a
Only load events table from the URL on allow list of URLs (#6949)
* only load events table from the URL on allow list of URLs

* add return type to function

* pass scene URL into events table

* use urlpattern to check if scene is loaded in events table

* don't need to check if still on the same page as when loaded because urltoaction is now specific

* which means we don't need url pattern matching at all

* add scene url to events scene export's logic props

* use a different action name for each run or retries can never complete as the action cannot be saved

* do not poll results if moved away from sceneUrl

* remove tabs from person/action event tables

* so cypress can run locally

* break the dependency of running one test first so the other can pass

* move check into logic and add an e2e test

Co-authored-by: Marius Andra <marius.andra@gmail.com>
2021-11-09 15:35:41 +00:00
Karl-Aksel Puulmann
fa79f8ea67
BE (Groups/Trends): Allow aggregating by groups (#6894)
* Type math in Entity

* Allow passing group_type_index from FE to BE

* Get a initial query running

* Add group value filter if aggregating by groups

* Add snapshot testing for trends queries

* isort

* Update tests

* Add test for column_optimizer

* Update ee/clickhouse/queries/trends/util.py

Co-authored-by: Neil Kakkar <neilkakkar@gmail.com>

Co-authored-by: Neil Kakkar <neilkakkar@gmail.com>
2021-11-05 13:08:32 +02:00
Yakko Majuri
6ce204fe3c
add version to person (#6628)
* add version to person

* add migration

* set all initial version values to 0

* remove defaults

* fix dep
2021-10-28 15:43:30 +00:00
Paul D'Ambra
f2338c7674
you always need DEBUG=1 when running tests (#6613) 2021-10-22 13:37:01 +00:00
Paolo D'Amico
20b0f9704a
Forgot password UI (#6177) 2021-10-15 10:40:31 +03:00
Michael Matloka
77621366de
Fix remaining TypeScript errors (#6436)
* Fix remaining TS errors and remove `.ts-strict-blacklist`

* Move `IGNORED_SPECS` to top
2021-10-14 15:08:42 +00:00
Yakko Majuri
e5a9c3b04e
merge people test (#5567)
* do all merge_people ops in plugin server

* add integration test

* flip call order

* allow calls in any order

* update test approach
2021-08-16 10:53:52 +03:00
Yakko Majuri
3b8d328c10
Allow passing in token to Personal API Key requests (#5044)
* Allow passing in token to Personal API Key requests

* fix

* fix accidental commit

* update comment

* dont access self.request.user.team if not needed

* add tests

* Add an assert to make mypy happy

Co-authored-by: Michael Matloka <dev@twixes.com>
2021-07-16 10:35:56 -03:00
Karl-Aksel Puulmann
bbd41ef04a
Use -Ofair for celery workers (#5063)
From https://medium.com/@taylorhughes/three-quick-tips-from-two-years-with-celery-c05ff9d7f9eb

> By default, preforking Celery workers distribute tasks to their worker processes as soon as they are received, regardless of whether the process is currently busy with other tasks.
> If you have a set of tasks that take varying amounts of time to complete — either deliberately or due to unpredictable network conditions, etc. — this will cause unexpected delays in total execution time for tasks in the queue.

This is 100% the case for us. This should "load balance" the tasks
better across workers.
2021-07-12 13:52:05 +03:00
Paolo D'Amico
01b7daacc2
Remove NewRelic from Cloud (#4716)
* remove NR

* remove secret key too
2021-06-14 11:01:57 +02:00
Tim Glaser
bbb4025ab1
Fix e2e tests (#4357)
* Fix e2e tests

* Run as 'production' to better mimick CI

* try no self capture

* Correct event/property definitions

* fix

* fix system status

* Try caching cypress separately

* Cache node modules

* cache pip better

* fix tests

* dont run if not cache

* test

* Cache cypress

* Fix event definitions

* Fix and speed up

* try fixing

* fix

* fix

* faster install

* try self capture 1

* fix multiple

* fix

* fix

* fix

* more speeding up

* Fix tests

* try not installing deps

* fix test global

* possibly quicker

* correct

* Fix
2021-05-20 16:42:26 +02:00
Sam Winslow
ca1a7bfc4e
Add bin script to start Cypress component tests (#4186)
* Add bin script to start cypress component test

* remove unneeded flags
2021-05-04 17:14:17 -04:00
Tim Glaser
3520637967
Warn before running all tests (#4204) 2021-05-04 15:41:22 +02:00
Buddy Williams
c893765973
Docker support on the Apple M1 chip / arm64 (#4024)
* First pass at docker support on the Apple M1 chip

* Added version to libpq-dev so that it passes linter checks; Removed comments
2021-04-19 10:12:02 -04:00
Paolo D'Amico
2020c32c66
Add NewRelic to cloud deployment (#4005) 2021-04-15 11:53:19 -07:00
Sam Winslow
49f7d841ce
bump cryptography==3.4.7 and add macosx_arm64 install script (#3935) 2021-04-10 00:53:19 +02:00
Eric Duong
5b77823938
Add cypress dependency installation (#3914)
Co-authored-by: Paolo D'Amico <paolodamico@users.noreply.github.com>
2021-04-08 10:14:06 -07:00
Tim Glaser
1918675f93
Default set debug=1 to bin/start (#3807)
* Default set debug=1 to bin/start

* Export DEBUG

Co-authored-by: Michael Matloka <dev@twixes.com>
2021-04-06 15:50:48 +02:00
Michael Matloka
446094d3dd
Get rid of DATABASE_URL and REDIS_URL construction in bin/plugin-server (#3873) 2021-04-06 11:39:30 +02:00
Michael Matloka
525e09c358
Delete docker-preview (#3842) 2021-04-01 16:46:09 +02:00
Paolo D'Amico
89b71a9959
New login & signup (React) (#3701) 2021-03-25 07:40:20 -07:00
Marius Andra
f1d0a5f1ca
remove ioredis debug (#3568) 2021-03-03 14:14:16 +01:00
Tim Glaser
c153753d04
Fix bin/tests (#3540) 2021-03-01 20:34:39 +01:00
Karl-Aksel Puulmann
152f799351
e2e-test-runner: Only start webpack if not already running (#3484) 2021-02-26 16:50:21 +02:00
Karl-Aksel Puulmann
24de8b55e4
Run tests via pytest (#3417)
* Compile requirements-dev.txt with latest pip-tools

* Install pytest

* Avoid picking up factories as tests

* New runner

* Always set TEST env variable running tests

Some of our tests rely on it.

* Remove repetition

* Fix a broken test

* Cut down noise from bin/tests

* Rename test factory

* Fix stickiness filter

* Skip a broken test

This has been broken since numpy removal PR. Sadly tests were not
running for this submodule

* Fix import on ee

* Run ee tests properly

The django_db_setup fixture will be automatically run when running ee/
module tests.

* Make tests run on CI

* Include REDIS_URL, fix cloud

* Set TEST env variable

* Hack cloud tests to work

* Attempt at workflow fix

* Import Person model when running ee tests

This module implicitly adds hooks, so this is needed when running tests

* Respect reuse-db for clickhouse

* Add custom markers to avoid warnings

* pytest: use ch test database always

Accidentally wiped by ch setup a few times without this. Oops

* Remove repetition in tests

* Pytest: Always run migrations

Testing a state cleanup fix

* Use same DB in conftest and main code

* Pytest: autoset TEST setting without env variable

* fix broken test

Co-authored-by: eric <eeoneric@gmail.com>
2021-02-24 09:32:44 +02:00
Marius Andra
1601740bda
add : in front of password for ioredis (#3439) 2021-02-23 13:04:33 +01:00
Marius Andra
817e117da1
Send 20% of events to plugin server (#3437)
* send 20% of events to plugin server

* add ioredis debug
2021-02-23 10:26:26 +01:00
Michael Matloka
edbc547d73
Support POSTHOG_REDIS_* vars in bin/plugin-server (#3426) 2021-02-22 19:15:45 +01:00
Karl-Aksel Puulmann
4ad6a28e60
Auto log in for e2e tests and review apps (#3377)
* Add AUTO_LOG_IN environment variable

This will be used when running tests on CI, setting up demo instances
and with cypress vcr

* Auto log in in review apps, e2e tests

This will speed up tests/reviewing significantly

* Rename AUTO_LOG_IN to AUTO_LOGIN

Co-authored-by: Michael Matloka <dev@twixes.com>
2021-02-18 13:59:09 +01:00
Karl-Aksel Puulmann
30b6692920
React component tests with cypress (#3233)
* WIP: get cypress something doing

* Get a test running

* Get css loading, stub posthog

* Move helpers to separate file

* Givens > given2

It plays nicer with beforeEach

* Test for session filters

* Test date navigation

* Test filtering

* Try keep old tests running

* Try get tests running under CI

* Prettify fixtures

* Cleanup, use cypress 6

* Add yarn build

* Fix e2e cypress tests

* given2 => givens

* Rename `frontend-test-runner` to `e2e-test-runner`

* Fix cypress test

* Add webpack-preprocessor as a devDependency

* Improve freezing time

* Make css inclusions automatic for component tests
2021-02-09 17:28:01 +02:00
Karl-Aksel Puulmann
a978b28a68
Run typescript with strict in CI, allow no new errors (#3050)
* Verify no new typescript code breaks "strict" compilation

With this we have a file containing all current errors. As the code
changes, we should not add more errors here.

* remove some lines to show a failure

* Add total count to script

* Update blacklist after rebase

* Remove some fails on purpose.

* Attempt a reorder

* Add missing file

* Update script to write typegen

* Refresh list

* Attempt to use normal tsc

* update blacklist

* Store all errors

* echo for typegen

* Add check command

* typegen 3 times

* typegen 4 times

* typegen 6 times

* typegen 10 times

* remove debug code

* Update kea typegen to latest

* Remove hacks
2021-01-22 16:36:30 +02:00
Michael Matloka
eaa169100a
Add handing off event ingestion to plugin server (#2898)
* Add setting for handing off process_event_ee to plugin server

* Add StatsD settings to KEYS

* bin/plugin-server → start-plugin-server & docker-plugin-server

* Simplify to only add docker-plugin-server

* Bring back original comment

* Turn down verbosity of plugin server install

* Remove redundant if

* Fix comment

* Remove lone newline

* Roll back unsafe script changes

* Simplify dockerized plugins

* Add some depends_on

* Clarify HAND_OFF_INGESTION env var

* Use posthog-plugin-server 1.0.0-alpha.1

* Enhance bin/plugin-server and rm bin/docker-plugin-server

* Move around PLUGIN_SERVER_INGESTION_HANDOFF ifs

* Use posthog-plugin-server@1.0.0-alpha.2

* Support kafka+ssl:// in plugin-server

* Produce to topic events_ingestion_handoff for plugin server

* Use posthog-plugin-server@1.0.0-alpha.3

* Don't import Kafka topics in FOSS

* Use @posthog/plugin-server

* Update yarn.lock

* Add commands for external ClickHouse setup/teardown

* Actually delete test CH teardown command

* ClickhouseTestRunner.setup_test_environment() in setup_test_clickhouse

* Rework test setup script to work with Postgres too

* Restore master plugins dir for merge

* Unset PLUGIN_SERVER_INGESTION_HANDOFF in docker-compose.ch.yml

* Fix unimportant typo

* Build log_event data dict only once

* Make it clear in bin/plugin-server help that it's bin

* Space space
2021-01-21 15:39:44 +01:00
Marius Andra
39239c2780
Upgrade Plugin Server (#2816)
* use KAFKA_ENABLED key

* 0.6.1 plugin server
2020-12-21 21:57:29 +01:00
James Greenhill
3d0413bdcb
Verbose Yarn build on plugin server build (#2805) 2020-12-16 18:06:56 -08:00
James Greenhill
d93ae873a6
Make building with yarn more verbose for debugging (#2804) 2020-12-16 17:14:57 -08:00
James Greenhill
a8de2ac587
plugins debug (#2803)
* checkin

* Don't run yarn silently for plugin-server
2020-12-16 16:35:19 -08:00
Marius Andra
c191fef86b
Ignore plugins optional deps (#2801)
* ignore optional deps when installing plugin-server

* --ignore-optional in docker
2020-12-16 23:59:40 +01:00
Michael Matloka
7ba9f7de09
Plugin server ingestion base (#2732)
* Add relevant settings to KEYS in bin/plugins-server

* Log all EE events to events_handoff Kafka topic for plugin server

* Clean up settings

* Fix FOSS

* Don't introduce KAFKA_EVENTS_HANDOFF

* Add cosmetic newline

* Add DEBUG WAL print()
2020-12-14 16:05:18 +01:00
Tim Glaser
560fe0765e
Deprecate dashboard item type and move to display (#2715)
* Deprecate dashboard item type and move to display

* Mypy rerors

* fix test

* fix

* Fix test

* Fix another test

* Remove determineInsightType

* Get rid of RetentionTable display types

* Fix update dashboard
2020-12-11 20:12:52 +01:00
Marius Andra
b5b7276ced
Restart plugins on error (#2719)
* export as $CONFIG_JSON

* export as $CONFIG instead

* restart plugin server if killed

* restart plugin server if killed

* update to 0.4.3
2020-12-10 07:29:06 +01:00
Marius Andra
177cee9e38
Set right concurrency for plugin server on Heroku (#2703)
* nodejs worker concurrency on heroku

* upgrade plugin server

* upgrade server

* fix another bug with 0.3.2

* plugin server with resilient redis

* plugin server with more resilient workers

* new plugin server

* update
2020-12-09 18:08:25 +01:00
Michael Matloka
b39dce42cf
Fix webpack-dev-server inside Docker (#2699) 2020-12-08 11:44:39 +01:00
Marius Andra
c24aebe174
Add flags to bin/docker-worker-celery (#2621)
* add flags to docker-worker-celery and rename --with-beat to --with-scheduler

* Clean script up

Co-authored-by: Michael Matloka <dev@twixes.com>
2020-12-03 18:53:06 +01:00
James Greenhill
908cfaf2c8
Don't run preview docker build with debug flags (#2610)
* Don't run web in debug for preview docker build

* worker to not debug
2020-12-01 15:15:30 -08:00
Karl-Aksel Puulmann
df23e3353d
Fix /bin/tests (#2527)
/bin/tests did not work for me anymore - I think this was the original
intent?
2020-11-26 15:32:38 +01:00
Marius Andra
b8d1ba43f4
Disable celery heartbeat, gossip and mingle (#2513)
* disable celery heartbeat, gossip and mingle

* keep the heartbeat

* beat doesn't want these params

* add back "without heartbeat"
2020-11-26 12:44:10 +01:00
Marius Andra
eb8b650aee
Docker nodejs support for plugins (#2452)
* keep npm around in the dockerfiles (needed for plugin-server)

* simplify docker-preview script
2020-11-20 17:04:10 +01:00
Marius Andra
88ad205a3a
Separate Plugins dyno for Heroku (#2213)
* separate plugin worker for heroku

* plugin server for dev with less concurrency

* add back plugins script

* move beat log to beat

* move starting the beat into the celery worker

* add optional process types for plugins and celery

* premium redis for heroku review apps

* fix broken script

* proc/dyno names are alphanumeric

* singularize

* premium-0 redis for all heroku apps, not just review apps

* premium-0 redis also for review apps

* remove heroku redis modifications

* remove out of scope code

* run beat in bg
2020-11-20 10:42:59 +01:00
Tim Glaser
21b195a0c6
Remove unused dependencies (#2416)
* Remove unused dependencies

* Remove more deps

* add reselect back in

* Add cypress terminal back in

* install cypress terminal on the fly

* combine
2020-11-18 20:53:01 +01:00
Karl-Aksel Puulmann
b37c675903
Run E2E tests without celery (#2344)
* Run E2E tests without celery

I spent ~hour today figuring out why a task was not executing,
restarting frontend test runner each time.

By not running celery in test and forcing all things to evaluate eagerly
we can avoid that pain

* Remove a now always-passing test
2020-11-12 16:54:10 +02:00
Karl-Aksel Puulmann
67debacff2
Log web access in docker (#2230)
This is needed to close https://github.com/PostHog/deployment/issues/32
and debug https://github.com/PostHog/posthog/issues/2135
2020-11-05 12:07:39 +02:00
Marius Andra
fce86ef46d
Plugin v8 (#1946)
* plugin progress

* blah

* add posthog config for plugins

* test gitignore

* new functionality for plugins

* support local plugin paths

* also ignore symlinks

* add positional argument

* fixes

* small fixes

* config polish

* config passed to posthog plugin

* ooooooops

* symlink fix

* cleanse dir before loading

* add cache to plugins

* pickle the goods

* unlink symlink

* pass full config

* unlink even if link points to nothing

* fix fix

* return none if value is empty

* plugin model

* plugins scene

* add config schema to plugins

* install plugins

* save descriptions

* show descriptions

* edit plugin

* save plugin config

* plugin modal

* uninstall plugins

* UX cleanup

* add "required" to plugin config

* open plugin modal after install

* split to subcomponents

* install custom plugins

* rework backend for model plugins

* Plugins on models

* simple reload pubsub

* fix apps not installed

* fix master/main issue

* fix reload command

* use the github api to get the default branch

* init plugins only if not running migrate/makemigrations

* store plugins zip archives in postgres

* tag plugins to specific versions

* save plugins in pluginConfig

* update pluginConfigs instead of adding new rows, remove from redux on uninstall

* remove debug

* run plugins from db by team

* reload when deleting

* remove debug

* smarter handling of dynamic plugins, support local plugins again

* improve typings, add some nicer warnings

* yarn lock file after merge

* squash migrations and add "locked" field to plugins

* error if folder not found in zip

* unregister plugins

* skip plugin init in test mode

* basic plugin test

* avoid mutating the same prop hash

* add pip tools to requirements.txt

* fix mypy, fix manage.py script error

* avoid plugins with mypy

* mypy fix

* abstract redis into plugin and add team_id to reload

* refactor and start work on syncing with posthog.json

* start testing plugin loading from json

* test plugin deletion

* test for syncing plugins from config

* complete and then test local json plugin sync

* test converting back and forward between an local and http path

* remove global plugin config from plugins array in posthog.json

* rename configSchema --> config_schema

* fix migration after merge

* rename from_cli to from_json

* mypy

* import pip after plugin loaded

* show error details

* raise exceptions visible to the frontend

* sync plugins on load

* access control to updating plugins from the web

* access control

* remove posthog.json from git

* test config schema from json

* if you can install via the web, you can also configure

* remove separate view access

* title as "Plugins" instead of "Installed Plugins" if we can't install ourselves and don't see the repository

* add self.team to plugin base class

* add instance_init method

* refactor into files

* sync global plugin config from json

* make global plugins work, add test

* global plugins in interface, make them take precedence over local plugins

* add comments to plugin base class

* reload/reset plugins before each test

* add error field to plugins

* add many plugin zips

* add many plugin zips, fix imports

* store errors on plugin object and test them

* fix types

* add null to error

* can be with any team ID in the test

* save problems running plugins in the plugin_config model

* try to create redis connection pool only once

* throw if no redis

* mypy

* get instance inside heartbeat and not top level

* try caching pubsub

* try pip install with -q

* install pip externally

* remove uuid and typing, now in stdlib

* more verbosity

* add pip back

* catch exceptions

* quiet and no input for pip

* check plugin reload every 10sec on new task

* fix type errors

* fix requirements error message

* use repository.json

* only load and reload plugins on workers

* rename task

* support local js plugins via py-mini-racer

* load js plugins from zip files

* extract jsplugin class and convert to syntax that uses global functions instead of initializing a class

* process events via grpc

* process events with the "posthog-plugins" queue to enable plugins

* remove old native python & mini racer plugin code

* default to false

* change env vars

* fix test

* remove grpc tools

* skip plugins in migrate.py scripts

* fix migration

* change output of settings debug banner to STDERR

* start posthog plugin server with worker

* try to fix python 3.7 test

* add fallback for the optional argument

* annoying CI test debug

* try to finally fix python 3.7 test

* here we go again

* move plugins under instance

* move plugins npm start into its own folder

* more console.log debugginf

* and again

* move plugins to separate script

* more prints

* fix test error

* docker config

* small fixes

* dckerfile fix

* reload plugins via pubsub, upgrade version

* plugins that support team setup code

* sync if made changes from config

* move plugins in menu

* require node 14 in heroku for better plugin support (namely ?. support)

* bump node version in dockerfiles

* update node versions for github actions

* update the concurrency for heroku workers

* update the concurrency for heroku workers (add link)

* Fix migrations after merge

* add ignore_result to process_event tasks

* fix: docker-preview run in parallel bug

* change order of commands

* remove separate plugins server conf script

* clarify intent

* revert castaway change

* add context to plugins/sync.py

* change everything to ValidationError

* delegate destroy to super

* no request to repository url if can't install

* make the if cleaner

* add clarifying line

* add clarifying line

* fix url field type

* rename get_redis_instance to get_client, move to posthog.redis

* remove duplicate validation

* flip if around

* simplify api logic

* simplify plugin_config api, fix global_plugin error

* remove unnecessary field rename

* mypy

* Plugins UI (#2090)

* base UI

* more UI

* load plugin image if available

* toggle enabled plugin

* plugin cards for available

* custom plugins

* change plugin configuration to drawer

* asks for confirmation when enabling or disabling a plugin

* loading state

* separation of concerns, leave new styles for separate PR

* general improvements

* remove button when installation is not available

* preemptively avoid merge conflict with #2114

* move papercups widget & hide bottom bar when drawer is open

* allow clicking the entire plugin card

* address all feedback

* move plugins under "project" menu

* Hide "configure" from globally enabled plugins

Co-authored-by: Marius Andra <marius.andra@gmail.com>

* add plugins opt in toggle to project/plugins

* choose pipeline based on team setting

* add "beta"

* plugin opt-in opt-out pages

* adjust install button

* remove tasks that are never called, remove PLUGINS_ENABLED global key

* fix responsive card display

* fix typo and drawer width

* skeleton fixes

* typo

* use "posthog-plugin-server" npm package

* "posthog-plugin-server" doc

* require the plugin server to be online before enabling plugins

* remove a few needeless "?." cases

* add hint for config_schema

* add hint for errors

* show plugin errors

* stop clicks if clicking on error

* show plugin errors

* loading indicators

* reload plugins when opting in/out

* nicer beta tag

* add frontend type

* fix mypy error

* fix test

* disable plugins if MULTI_TENANCY

* upgrade plugin-server version

* save event with plugin error

* upgrade plugin server

* squashed & optimized migrations

* remove unused import

* updates opt-in copy & hides tech details for cloud version

* fix cypress tests

* compare with None

* change plugins url and add redirect

* remove ellipsis

* use code snippet in plugin errors

* change github regex

* fix loading flickering on installing plugins

* add comment to plugin archive

* fix python style

* remove pip-tools (relic from the python plugin era)

* hard pin plugin server version

* remove copying of posthog.json from dev dockerfile (breaks if file doesn't exist, copied later anyway)

* update lockfile

Co-authored-by: James Greenhill <fuziontech@gmail.com>
Co-authored-by: Paolo D'Amico <paolodamico@users.noreply.github.com>
2020-11-02 15:08:30 +01:00
Marius Andra
a5d9f98e00
Reduce Heroku worker thread count (#2092)
* update the concurrency for heroku workers

* update the concurrency for heroku workers (add link)
2020-10-30 10:17:55 +01:00
Tim Glaser
30f29cf017
Fix bin/tests too many files watching error (#2078) 2020-10-28 19:03:35 +01:00
Tim Glaser
83ab0bb337
Automatically run CH migrations locally (#1978) 2020-10-22 10:34:30 +02:00
Tim Glaser
88e20220d1
Update test runner (#1952)
* Remove cypress from package.json

* Update test runner

* correct dommand

* Use npx
2020-10-21 11:42:17 +02:00
Tim Glaser
21622d6838
Make log output locally less noisy (#1943) 2020-10-20 16:47:35 +03:00
Yakko Majuri
b48156f37d
fixed webpack on docker-compose.dev (#1921)
Co-authored-by: Yakko <yakko@yakkos-mbp.home>
2020-10-18 12:30:46 +02:00
Tim Glaser
80d20e385b
Clickhouse use elements chain (#1849)
* Clickhouse use elements chain

* Fix stuff

* Add action tests and start regex

* Progress

* Progress part deux

* Fix everything

* Add tag name filtering

* Fix funnels

* Fix tag name regex

* Fix ordering

* Fix type issues

* Fix empty nth-child

* Remove commented code

* Split with semicolon and escaped quotes

* Specify all select columns
2020-10-16 14:07:03 +02:00
Tim Glaser
92e8bbd283
[Clickhouse] Event list (#1787)
* convert sessions table logic to TS

* convert rest of sessions to TS

* sessions table logic refactor, store date in the url

* add back/forward buttons

* load sessions based on the URL, not after mount --> avoids duplicate query if opening an url with a filter

* prevent multiple queries

* throw error if failed instead of returning an empty list

* date from filters

* rename offset to nextOffset

* initial limit/offset block

* indent sql

* support limit + offset

* load LIMIT+1 sessions in postgres, pop last and show load more sign. (was: show sign if exactly LIMIT fetched)

* based offset is always 0

* default limit to 50

* events in clickhouse sessions

* add elements to query results

* add person properties to sessions query response

* show seconds with two digits

* fix pagination, timestamp calculation and ordering on pages 2 and beyond

* mypy

* fix test

* add default time to fix test, fix some any(*) filter issues

* remove reverse

* WIP event list

* Events progress

* Finish off event listing, skip live actions for now

* Fix mypy

* Fix mypy again

* Try fixing mypy

* Fix assertnumqueries

* Fix tests

* Fix tests

* fix test

* Fix tests

* Fix tests

* Fix tests again

Co-authored-by: Marius Andra <marius.andra@gmail.com>
Co-authored-by: Eric <eeoneric@gmail.com>
2020-10-01 15:47:35 +02:00
James Greenhill
379518e285
"Clickhouse Features V2 (#1565)" (#1750)
* initial

* migration command

* migrations working

* add modelless views for clickhouse

* initial testing structure

* use test factory

* scaffold for all tests

* add insight and person api

* add basic readme

* add client

* change how migrations are run

* add base tables

* ingesting events

* restore delay

* remove print

* updated testing flow

* changed sessions tests

* update tests

* reorganized sql

* parametrize strings

* element list query

* change to seralizer

* add values endpoint

* retrieve with filter

* pruned code to prepare for staged merge

* working ingestion again

* tests for ee

* undo unneeded tests right now

* fix linting

* more typing errors

* fix tests

* add clickhouse image to workflow

* move to right job

* remove django_clickhouse

* return database url

* run super

* remove keepdb

* reordered calls

* fix type

* fractional seconds

* fix type error

* add checks

* remove retention sql

* fix tests

* add property storage and tests

* merge master

* fix tests

* fix tests

* .

* remove keepdb

* format python files

* update CI env vars

* Override defaults and insecure tests

* Update how ClickHouse database gets evaluated

* remove bootstrapping clickhouse database routine

* Don't initialize the clickhouse connection unless we say it's primary

* .

* fixed id generation

* remove dump

* black settings

* empty client

* add param

* move docker-compose for ch to ee dir

* Add _public_ key to repo for verifying self signed cert on server

* update ee compose file for ee dir

* fix a few issues with tls in migrations

* update migrations to be flexible about storage profile and engine

* black settings

* add elements prop tables

* add elements prop tables

* working filter

* refactored

* better url handling

* add mapping table

* add processing to worker task

* working cohort with actions

* add cohort property filtering

* add cohort property filtering

* reformat and add cohort processing

* prop clauses

* add util

* add more util

* add clickhouse modifier

* Clickhouse Sessions (#1623)

* sessions sql

* skeleton

* add endpoint

* better tests

* sessions list

* merge clickhouse-actions

* added session endpoint

* sessions sql working again

* add clickhouse modifier

* session avg with props working

* add dist

* tests working (no list)

* list working

* add formatting

* more formatting

* fix tests

* dummy commit

* fix types

* remove unnecessary improt

* ignore type when importing from ee in task

* fix test running

* Clickhouse Trends Base (#1609)

* initial working

* date param almost working

* fix date range and labels

* fixed monthly math

* handle compare

* change table

* using new event ingestion

* direct query actions working

* remove interface

* fix date range

* properties initial working

* handle operator

* handle operator

* move timestamp parse

* move more to util

* inital breaking down working

* working cohort breakdown

* some tests running

* fix sessions

* cohort tests

* action and interval test

* reorder cohort filtering

* rename retention test

* fix inits

* change multitenancy tests

* fix types

* fix optional types

* replace ch_client.execute with sync_execute

* replace ch_client.execute with sync_execute, part 2

* Clickhouse Stickiness + Process Event (#1654)

* generate clickhouse uuid script

* set CLICKHOUSE_SECURE=False by default if running in TEST or DEBUG

* convert person_id to UUID, make adding `person_id` optional, add distinct_ids already in the `create_person` function

* Fix test_process_event_ee.py, remove all calls to Person.objects.*

* add back util

* fix broken imports

* improve process_event test clickhouse queries

* Basic stickiness query

* Clickhouse Stickiness tests

* stickiness test [WIP, actions fail]

* generate clickhouse uuid script

* change default test runner if PRIMARY_DB=clickhouse

* fix stickiness test for actions

* fix merge bug

* remove _create_person stub; cohort person_id is UUID now

* fix typing

* Clickhouse trends process math (#1660)

* most of process math works

* all process math

* fix ordering issue

* unusued imports

* update property comparison for process_event_ee

* indentation wrong missing calls

* demo users and events (#1661)

* finish breakdown filtering tests and reformat label function

* add increment to demo_data

* update demo data populating

* Add people endpoint for ch (#1670)

* add people endpoint for ch

* stickiness people

* fix value padding

* add process math to breakdown and

* add limit

* fix tests

* condensed code

* converted test to factory

* add people tests

* add month handling

* add typing fix

* change people test handling

* fix tests

* Clickhouse funnels 2 (#1668)

* add elements to create_event

* WIP closes #1663 Add funnels to clickhouse

* Make funnels work

* Clean up

* Move filtering around

* Add mypy tests and fix

* Performance improvements

* fix person tests again

* add people for funnel endpoint

* fix prop numbering

Co-authored-by: Marius Andra <marius.andra@gmail.com>
Co-authored-by: Eric <eeoneric@gmail.com>

* merge master

* add retention

* update types

* more typing errors

* fix types

* bug with kafka payload, elements insert, and demo data

* Clickhouse Paths (#1657)

* paths clickhouse test (fails)

* add elements to create_event

* make this fail for clickhouse

* hardcoded query that returns good results for $pageviews, no filters yet

* clean up queries

* bound by time, fix 30min new session boundary

* support screen and custom events

* add properties filter

* paths url

* filter by path start

* better path start test

* even better path start test

* start from the first "path start" in a group

* test for person_id in paths

* partition by person_id for POSTGRES paths

* partition by person_id for Clickhouse paths

* clean up order in paths test

* clean up order in paths test

* join elements

* force element order on element group creation

* remove "order" when creating elements in tests and demo

* get list of elements for paths

* add limit to paths query

* use materialized view

* rename "element_hash" to "elements_hash" (no change in db)

* cull rows that are definitely unused

* simplify query

* New highly optimized paths clickhouse query

* start_point for $autocapture paths

* extract event property values from clickhouse

* prevent crash

* select one element sql

* get elements for event

* remove lodash

* remove host from $pageview path elements if same domain as incoming path

* show metadata based on loaded paths filter, not in flight filter

* fix order (all soures and targets in order, not all sources first, then all targets after) - makes for a better looking graph

* add test that makes the Postgres paths query fail

* fix postgres paths --> no fuzzy matching, breaks "starts with" for urls and gives too many incorrect start points

* create automatic /demo urls that match the real urls (no ending /)

* fix elements queries

* path element joins

* create persons via postgres in paths test

* change serializers back to id

* fix tests with uuid

* fix demo

* more bugs

* fix type

* change now to timezone aware

* [clickhouse] retention filters (#1725)

* implemented target entity and prop filtering

* add insight view override

* fix endpoint and filters

* include tests

* fix tests

* add period filtering

* .

* fix pg param name

* add filtering params to both queries in retention sql

* fix param again

* change to todatetime

* change tz to timezone

* add back timezone in model/event

* [clickhouse] feature flag endpoint requests (#1731)

* add feature flags to endpoints

* add flags to endpoints that check on request

* remove magic strings and fill in missing flags

* fix types

* add missing flag

* change from iso

* fix more timestamps and comparator

* change _people to get_people in actions view

* remove action and cohort populating

* change inheritance

* "Clickhouse Features V2 (#1565)"

This reverts commit 0b371d43ec.

* fix types

* change to super

* change to super x2

Co-authored-by: Eric <eeoneric@gmail.com>
Co-authored-by: Marius Andra <marius.andra@gmail.com>
Co-authored-by: Tim Glaser <tim.glaser@hiberly.com>
2020-09-29 15:17:26 +01:00
James Greenhill
0b371d43ec
Revert "Clickhouse Features (#1565)" (#1748)
This reverts commit 24713b923d.
2020-09-29 12:11:28 +01:00
Eric Duong
24713b923d
Clickhouse Features (#1565)
* initial

* migration command

* migrations working

* add modelless views for clickhouse

* initial testing structure

* use test factory

* scaffold for all tests

* add insight and person api

* add basic readme

* add client

* change how migrations are run

* add base tables

* ingesting events

* restore delay

* remove print

* updated testing flow

* changed sessions tests

* update tests

* reorganized sql

* parametrize strings

* element list query

* change to seralizer

* add values endpoint

* retrieve with filter

* pruned code to prepare for staged merge

* working ingestion again

* tests for ee

* undo unneeded tests right now

* fix linting

* more typing errors

* fix tests

* add clickhouse image to workflow

* move to right job

* remove django_clickhouse

* return database url

* run super

* remove keepdb

* reordered calls

* fix type

* fractional seconds

* fix type error

* add checks

* remove retention sql

* fix tests

* add property storage and tests

* merge master

* fix tests

* fix tests

* .

* remove keepdb

* format python files

* update CI env vars

* Override defaults and insecure tests

* Update how ClickHouse database gets evaluated

* remove bootstrapping clickhouse database routine

* Don't initialize the clickhouse connection unless we say it's primary

* .

* fixed id generation

* remove dump

* black settings

* empty client

* add param

* move docker-compose for ch to ee dir

* Add _public_ key to repo for verifying self signed cert on server

* update ee compose file for ee dir

* fix a few issues with tls in migrations

* update migrations to be flexible about storage profile and engine

* black settings

* add elements prop tables

* add elements prop tables

* working filter

* refactored

* better url handling

* add mapping table

* add processing to worker task

* working cohort with actions

* add cohort property filtering

* add cohort property filtering

* reformat and add cohort processing

* prop clauses

* add util

* add more util

* add clickhouse modifier

* Clickhouse Sessions (#1623)

* sessions sql

* skeleton

* add endpoint

* better tests

* sessions list

* merge clickhouse-actions

* added session endpoint

* sessions sql working again

* add clickhouse modifier

* session avg with props working

* add dist

* tests working (no list)

* list working

* add formatting

* more formatting

* fix tests

* dummy commit

* fix types

* remove unnecessary improt

* ignore type when importing from ee in task

* fix test running

* Clickhouse Trends Base (#1609)

* initial working

* date param almost working

* fix date range and labels

* fixed monthly math

* handle compare

* change table

* using new event ingestion

* direct query actions working

* remove interface

* fix date range

* properties initial working

* handle operator

* handle operator

* move timestamp parse

* move more to util

* inital breaking down working

* working cohort breakdown

* some tests running

* fix sessions

* cohort tests

* action and interval test

* reorder cohort filtering

* rename retention test

* fix inits

* change multitenancy tests

* fix types

* fix optional types

* replace ch_client.execute with sync_execute

* replace ch_client.execute with sync_execute, part 2

* Clickhouse Stickiness + Process Event (#1654)

* generate clickhouse uuid script

* set CLICKHOUSE_SECURE=False by default if running in TEST or DEBUG

* convert person_id to UUID, make adding `person_id` optional, add distinct_ids already in the `create_person` function

* Fix test_process_event_ee.py, remove all calls to Person.objects.*

* add back util

* fix broken imports

* improve process_event test clickhouse queries

* Basic stickiness query

* Clickhouse Stickiness tests

* stickiness test [WIP, actions fail]

* generate clickhouse uuid script

* change default test runner if PRIMARY_DB=clickhouse

* fix stickiness test for actions

* fix merge bug

* remove _create_person stub; cohort person_id is UUID now

* fix typing

* Clickhouse trends process math (#1660)

* most of process math works

* all process math

* fix ordering issue

* unusued imports

* update property comparison for process_event_ee

* indentation wrong missing calls

* demo users and events (#1661)

* finish breakdown filtering tests and reformat label function

* add increment to demo_data

* update demo data populating

* Add people endpoint for ch (#1670)

* add people endpoint for ch

* stickiness people

* fix value padding

* add process math to breakdown and

* add limit

* fix tests

* condensed code

* converted test to factory

* add people tests

* add month handling

* add typing fix

* change people test handling

* fix tests

* Clickhouse funnels 2 (#1668)

* add elements to create_event

* WIP closes #1663 Add funnels to clickhouse

* Make funnels work

* Clean up

* Move filtering around

* Add mypy tests and fix

* Performance improvements

* fix person tests again

* add people for funnel endpoint

* fix prop numbering

Co-authored-by: Marius Andra <marius.andra@gmail.com>
Co-authored-by: Eric <eeoneric@gmail.com>

* merge master

* add retention

* update types

* more typing errors

* fix types

* bug with kafka payload, elements insert, and demo data

* Clickhouse Paths (#1657)

* paths clickhouse test (fails)

* add elements to create_event

* make this fail for clickhouse

* hardcoded query that returns good results for $pageviews, no filters yet

* clean up queries

* bound by time, fix 30min new session boundary

* support screen and custom events

* add properties filter

* paths url

* filter by path start

* better path start test

* even better path start test

* start from the first "path start" in a group

* test for person_id in paths

* partition by person_id for POSTGRES paths

* partition by person_id for Clickhouse paths

* clean up order in paths test

* clean up order in paths test

* join elements

* force element order on element group creation

* remove "order" when creating elements in tests and demo

* get list of elements for paths

* add limit to paths query

* use materialized view

* rename "element_hash" to "elements_hash" (no change in db)

* cull rows that are definitely unused

* simplify query

* New highly optimized paths clickhouse query

* start_point for $autocapture paths

* extract event property values from clickhouse

* prevent crash

* select one element sql

* get elements for event

* remove lodash

* remove host from $pageview path elements if same domain as incoming path

* show metadata based on loaded paths filter, not in flight filter

* fix order (all soures and targets in order, not all sources first, then all targets after) - makes for a better looking graph

* add test that makes the Postgres paths query fail

* fix postgres paths --> no fuzzy matching, breaks "starts with" for urls and gives too many incorrect start points

* create automatic /demo urls that match the real urls (no ending /)

* fix elements queries

* path element joins

* create persons via postgres in paths test

* change serializers back to id

* fix tests with uuid

* fix demo

* more bugs

* fix type

* change now to timezone aware

* [clickhouse] retention filters (#1725)

* implemented target entity and prop filtering

* add insight view override

* fix endpoint and filters

* include tests

* fix tests

* add period filtering

* .

* fix pg param name

* add filtering params to both queries in retention sql

* fix param again

* change to todatetime

* change tz to timezone

* add back timezone in model/event

* [clickhouse] feature flag endpoint requests (#1731)

* add feature flags to endpoints

* add flags to endpoints that check on request

* remove magic strings and fill in missing flags

* fix types

* add missing flag

* change from iso

* fix more timestamps and comparator

* change _people to get_people in actions view

* remove action and cohort populating

Co-authored-by: James Greenhill <jams@uber.com>
Co-authored-by: Marius Andra <marius.andra@gmail.com>
Co-authored-by: Tim Glaser <tim.glaser@hiberly.com>
2020-09-29 06:36:50 -04:00
James Greenhill
5293b4004a
Remove celerybeat.pid before starting docker worker (#1608) 2020-09-08 10:32:41 -07:00
James Greenhill
7714a65108
Use celery defaults, bumping workers only increased latency of event processing (#1584) 2020-09-04 16:21:55 -07:00
James Greenhill
aa7de23aec
Increase number of concurrent celery workers in production (#1583) 2020-09-04 15:56:58 -07:00
Marius Andra
52cdd7e572
New toolbar cookie + Secure session/csrf cookies (#1387)
* - set a custom cookie to tell the toolbar we're logged in
- make other cookies secure

* skip adding new toolbar cookie on API requests

* fix demo page local https

* enable/disable secure cookies as needed

* show django toolbar only for API requests

* update posthog-js and kea versions

* satisfy mypy

* add SECURE_COOKIES=0 to cypress tests, since they run over HTTP

* revert kea version

* add test for toolbar cookie middleware

* try something for cypress

* add debug

* add cypress-terminal-report for better logging

* fix demo api_url

* revert previous change that triggered cypress
2020-08-11 10:52:43 +02:00
Karl-Aksel Puulmann
596635fbcd
Improve ./bin/test command (#1074)
It did not run under `fish` shell at all, added a shebang to make it
work.

Also it assumed nodemon is installed globally. Instead we can add
nodemon as a devDependency and use `npx` to run it.
2020-06-23 18:42:54 +02:00
Tim Glaser
be7a345a61
Https locally (#910)
* Fix temporary token issue

* only pass params once

* HTTPS locally
2020-06-04 10:14:54 +01:00
Tim Glaser
bcf427cb55
Webpack HMR, Add hashes to chunk filenames. (#878)
* Closes #877 chunk loading errors

* Closes #877 chunk loading errors

* add chunks to all webpack files, use webpack-html-plugin to make an index.html with the right names

* change to contenthash for better caching

* add dev server on a different port

* store loaded scenes in reducer

* add react-hot-loader

* add react-hot-loader to all code split points

* fix action pages HMR

* ignore cypress screenshots

* generate django login/signup page layout with webpack html plugin

* move to devDependencies

* expose webpack-dev-server ports

* run tests on the production docker image

* start webpack dev server on a custom host if requested

* revert e2e to dev dockerfile

* add test travis config

* add stages

* add travis conf

* cache node and pip

* node 11

* travis ci bump

* node via nvm

* install v12, disable cypress for a moment

* remove 2 commands, test cached build time

* try different yarn cache, add cypress

* add postgres 12

* migrate before cypress

* remove latest postgres for now

* createdb before cypress

* Try different port

* cull packages

* remove hash from main bundle filenames to not break anything

* cypress port 8000

* cypress tests with production docker

* don't use the /code path in e2e test, use docker image

* remove hash from css to work better with editor

* only one export from actions

* remove travis test

Co-authored-by: Marius Andra <marius.andra@gmail.com>
2020-06-02 10:39:53 +01:00
James Greenhill
2fd1bc6377
Optimize event telemetry pipeline (#833)
* Split out celery worker into its own container for easier debugging

* Refactor creating people from events and serialize Team to celery worker

* type fixes

* remove todo message

* use the correct marshal (unmarshal)

* limit to just removing try except for person creation

* switch from count to exists
2020-05-26 20:18:01 +01:00
Marius Andra
14251dd9bd
Update links to docs.posthog.com (#847)
* update links to docs

* replace all old doc linnks

Co-authored-by: Eric <eeoneric@gmail.com>
2020-05-26 11:20:21 -04:00
Eric Duong
a012aa6723
Cypress tests (#789)
* initial test

* add yaml

* add logs

* without tail

* run again for consistency

* wait longer

* manuall configure cypress

* use latest ubuntu

* try installing all

* yarn install

* yarn install with cypress

* full flow

* run again for consistency

* initial tests for trends

* handle exception

* separate e2e docker-compose

* run on pr

* trends-testing foundation

* run test

* don't pass everything

* handle uncaught exceptions

* fix dashboard tests

* change email domain

* change dataattr to data-attr and boilerplate cleanup

* base url config

* add script for test runner

* change default postgres
2020-05-19 14:48:10 -04:00
Tim Glaser
8e6b4f56b5
Closes #169 break down by cohort (#690)
* Closes #169 break down by cohort

* Fix test

* Prettier breakdown filters

* Rerender each time it's opened

* Fix tests

* Add 'all users' option in breakdown

* Make people work with cohorts

* Precalculate cohorts

* Return last_calculation

* Show precalculation in the frontend

* Closes #675 fix icon alignment

* Frontend fixes, antd and more

* Make sure unsetting breakdown doesn't break things

* Semantic name for migration

* Separate data migration + cohort key bugfix

* Correctly filter people by event

* Typing
2020-05-11 22:06:35 +01:00
Tim Glaser
f198b190b9
Put break down in Graph (#667)
* Put break down in Graph

* Remove unused function

* Order by count

* Order by pt 2

* Fix tests

* Filter people by selected breakdown value

* Fix test
2020-04-28 17:41:05 +01:00
Tim Glaser
853bcfaf57
Closes #636 docker for local dev (#638) 2020-04-22 11:12:37 +01:00
Marius Andra
14f12846ed
Helm redis (#558)
* ignore copying frontend/dist folder - otherwise whatever you build in docker will get overridden by local build artifacts if any exist in frontend/dist

* support configuring redis with POSTHOG_REDIS_HOST and other vars in addition to REDIS_URL

* remove "the next version" in worker requirement modal

* split beat and celery scripts

* remove chart folder

* celery heartbeat every 10sec, reduce distributed beat lock hold time

* remove dockerfile local link

* add localhost redis url for tests
2020-04-13 16:22:06 +01:00
Tim Glaser
1f334d1304
Speed up tests by parallelising them (#543) 2020-04-13 10:06:36 +01:00
Marius Andra
4fd38dd305
kill all start-* scripts on CTRL+C (#502) 2020-04-08 14:38:28 +01:00
Marius Andra
66780ceef7
Make workers optional for now, add a warning if they are offline (#494)
* add warning script to settings and docker-worker in case REDIS_URL is not found

* test celery heartbeat

* save celery heartbeat in redis

* /_stats/ with worker heartbeat

* refactor top content

* show worker stats

* heartbeat delay to 90sec

* update worker error message

* remove line

* add redbeat schdeduler

* add redbeat for local development
2020-04-08 13:52:29 +01:00
Marius Andra
221df7e60a start worker in background for docker 2020-04-07 14:02:09 +02:00
Marius Andra
e075838933 scripts to run background, worker and frontend simultaneously 2020-04-07 14:01:33 +02:00
Marius Andra
8798ad8d4e celery/redis workers in preview.Dockerfile 2020-04-07 14:01:33 +02:00
Marius Andra
afa3617316 add docker gunicorn workers 2020-04-02 12:06:57 +02:00
Marius Andra
93fab5498f run gunicorn in docker-server script 2020-04-02 00:55:37 +02:00
Marius Andra
6a36c304f6 collect static inside docker 2020-04-02 00:55:29 +02:00
Marius Andra
de6ebca84d move package.json to the root folder 2020-03-18 13:41:46 +01:00
Tim Glaser
7dc01a4781 Fix dockerfile 2020-02-27 16:40:56 -08:00
Tim Glaser
f119858bbd Add migrate command onstartup 2020-02-27 14:03:03 -08:00
Tim Glaser
3567523e39 Closes #171 Add Paths screen 2020-02-24 20:52:31 -08:00
Tim Glaser
6a16393ec8 Update array.js to use api_host rather than app_host for editor 2020-02-14 16:14:12 -08:00
Tim Glaser
d1f3b6eab5 Closes #71 make sure we disabled graphs when we do breakdown 2020-02-11 18:18:48 -08:00
Tim Glaser
7561597d8c Improve readme with production installation instructions 2020-02-09 14:39:05 -08:00
Tim Glaser
57e40b5c59 Create preview and production dockerfiles and add LICENSE 2020-02-09 13:54:14 -08:00
Tim Glaser
395d79f434 Faster dockerfile, with useful (and prettywelcome message 2020-02-09 12:21:06 -08:00
Tim Glaser
f164148fb4 Preview docker image 2020-02-08 11:06:46 -08:00
Tim Glaser
9c8c6273ee update api url 2020-01-24 20:08:10 -08:00
Tim Glaser
7364edf2c7 Changes to ingestion script and more 2020-01-24 19:30:34 -08:00
Tim Glaser
7b0b04f0ad Move api stuff around 2020-01-24 11:00:25 -08:00