-
Notifications
You must be signed in to change notification settings - Fork 1.4k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'master' into dn-fix/properties-filter
- Loading branch information
Showing
738 changed files
with
13,701 additions
and
7,090 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
name: Go Test (for livestream service) | ||
|
||
on: | ||
pull_request: | ||
paths: | ||
- 'livestream/**' | ||
|
||
jobs: | ||
test: | ||
runs-on: ubuntu-latest | ||
|
||
steps: | ||
- name: Checkout code | ||
uses: actions/checkout@v2 | ||
|
||
- name: Set up Go | ||
uses: actions/setup-go@v2 | ||
with: | ||
go-version: 1.22 | ||
|
||
- name: Run tests | ||
run: cd livestream && go test -v |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
name: Vector Replay Capture Tests | ||
|
||
on: | ||
workflow_dispatch: | ||
pull_request: | ||
paths: | ||
- vector/** | ||
- .github/workflows/replay-capture.yml | ||
|
||
workflow_call: | ||
|
||
jobs: | ||
vector-test: | ||
name: Vector test | ||
runs-on: ubuntu-20.04 | ||
env: | ||
QUOTA_LIMITED_TEAMS_PATH: vector/replay-capture/tests/quota_limited_teams.csv | ||
OVERFLOW_SESSIONS_PATH: vector/replay-capture/tests/overflow_sessions.csv | ||
KAFKA_BOOSTRAP_SERVERS: dummy:9092 | ||
KAFKA_EVENTS_TOPIC: session_recording_snapshot_item_events | ||
KAFKA_OVERFLOW_TOPIC: session_recording_snapshot_item_overflow | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
|
||
- name: Install Vector | ||
run: | | ||
wget https://github.com/vectordotdev/vector/releases/download/v0.40.0/vector-0.40.0-x86_64-unknown-linux-gnu.tar.gz | ||
tar xzvf vector-0.40.0-x86_64-unknown-linux-gnu.tar.gz ./vector-x86_64-unknown-linux-gnu/bin/vector | ||
sudo mv ./vector-x86_64-unknown-linux-gnu/bin/vector /usr/bin/vector | ||
- name: Run vector tests | ||
run: | | ||
yq -i e 'explode(.)' vector/replay-capture/vector.yaml | ||
vector test vector/replay-capture/*.yaml |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,104 @@ | ||
name: Build and deploy replay capture container images | ||
|
||
on: | ||
workflow_dispatch: | ||
push: | ||
paths: | ||
- 'vector/**' | ||
- '.github/workflows/vector-docker-build-deploy.yml' | ||
branches: | ||
- 'master' | ||
|
||
jobs: | ||
build: | ||
name: Build and publish container image | ||
runs-on: depot-ubuntu-22.04-4 | ||
permissions: | ||
id-token: write # allow issuing OIDC tokens for this workflow run | ||
contents: read # allow reading the repo contents | ||
packages: write # allow push to ghcr.io | ||
|
||
outputs: | ||
digest: ${{ steps.docker_build.outputs.digest }} | ||
|
||
defaults: | ||
run: | ||
working-directory: vector/ | ||
|
||
steps: | ||
- name: Check Out Repo | ||
# Checkout project code | ||
# Use sparse checkout to only select files in vector directory | ||
# Turning off cone mode ensures that files in the project root are not included during checkout | ||
uses: actions/checkout@v4 | ||
with: | ||
sparse-checkout: 'vector/' | ||
sparse-checkout-cone-mode: false | ||
|
||
- name: Login to ghcr.io | ||
uses: docker/login-action@v2 | ||
with: | ||
registry: ghcr.io | ||
username: ${{ github.actor }} | ||
password: ${{ secrets.GITHUB_TOKEN }} | ||
logout: false | ||
|
||
- name: Set up QEMU | ||
uses: docker/setup-qemu-action@v3 | ||
|
||
- name: Docker meta | ||
id: meta | ||
uses: docker/metadata-action@v5 | ||
with: | ||
images: ghcr.io/posthog/posthog/replay-capture | ||
tags: | | ||
type=ref,event=pr | ||
type=ref,event=branch | ||
type=semver,pattern={{version}} | ||
type=semver,pattern={{major}}.{{minor}} | ||
type=sha | ||
- name: Set up Docker Buildx | ||
id: buildx | ||
uses: docker/setup-buildx-action@v2 | ||
|
||
- name: Build and push image | ||
id: docker_build | ||
uses: docker/build-push-action@v5 | ||
with: | ||
context: ./vector/replay-capture/ | ||
file: ./vector/replay-capture/Dockerfile | ||
push: true | ||
tags: ${{ steps.meta.outputs.tags }} | ||
labels: ${{ steps.meta.outputs.labels }} | ||
platforms: linux/arm64 | ||
|
||
deploy: | ||
runs-on: ubuntu-latest | ||
needs: build | ||
steps: | ||
- name: get deployer token | ||
id: deployer | ||
uses: getsentry/action-github-app-token@v3 | ||
with: | ||
app_id: ${{ secrets.DEPLOYER_APP_ID }} | ||
private_key: ${{ secrets.DEPLOYER_APP_PRIVATE_KEY }} | ||
|
||
- name: Trigger livestream deployment | ||
uses: peter-evans/repository-dispatch@v3 | ||
with: | ||
token: ${{ steps.deployer.outputs.token }} | ||
repository: PostHog/charts | ||
event-type: commit_state_update | ||
client-payload: | | ||
{ | ||
"values": { | ||
"image": { | ||
"sha": "${{ needs.build.outputs.digest }}" | ||
} | ||
}, | ||
"release": "replay-capture-vector", | ||
"commit": ${{ toJson(github.event.head_commit) }}, | ||
"repository": ${{ toJson(github.repository) }}, | ||
"labels": [] | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -2,7 +2,7 @@ import { decideResponse } from '../fixtures/api/decide' | |
import { createInsight } from '../productAnalytics' | ||
|
||
describe('Alerts', () => { | ||
it('Should allow create and delete an alert', () => { | ||
beforeEach(() => { | ||
cy.intercept('**/decide/*', (req) => | ||
req.reply( | ||
decideResponse({ | ||
|
@@ -11,29 +11,45 @@ describe('Alerts', () => { | |
) | ||
) | ||
createInsight('insight') | ||
}) | ||
|
||
const createAlert = ( | ||
name: string = 'Alert name', | ||
email: string = '[email protected]', | ||
lowerThreshold: string = '100', | ||
upperThreshold: string = '200' | ||
): void => { | ||
cy.get('[data-attr=more-button]').click() | ||
// Alerts should be disabled for trends represented with graphs | ||
cy.get('[data-attr=disabled-alerts-button]').should('exist') | ||
cy.contains('Alerts').click() | ||
cy.contains('New alert').click() | ||
|
||
cy.get('[data-attr=alert-name]').clear().type(name) | ||
cy.get('[data-attr=alert-notification-targets').clear().type(email) | ||
cy.get('[data-attr=alert-lower-threshold').clear().type(lowerThreshold) | ||
cy.get('[data-attr=alert-upper-threshold').clear().type(upperThreshold) | ||
cy.contains('Create alert').click() | ||
cy.url().should('not.include', '/new') | ||
|
||
cy.get('[aria-label="close"]').click() | ||
} | ||
|
||
const setInsightDisplayTypeAndSave = (displayType: string): void => { | ||
// Only the Number representation supports alerts, so change the insight | ||
cy.get('[data-attr=insight-edit-button]').click() | ||
cy.get('[data-attr=chart-filter]').click() | ||
cy.contains('Number').click() | ||
cy.contains(displayType).click() | ||
cy.get('[data-attr=insight-save-button]').contains('Save').click() | ||
cy.url().should('not.include', '/edit') | ||
} | ||
|
||
it('Should allow create and delete an alert', () => { | ||
cy.get('[data-attr=more-button]').click() | ||
cy.contains('Alerts').click() | ||
cy.contains('New alert').click() | ||
// Alerts should be disabled for trends represented with graphs | ||
cy.get('[data-attr=disabled-alerts-button]').should('exist') | ||
|
||
cy.get('[data-attr=alert-name]').clear().type('Alert name') | ||
cy.get('[data-attr=alert-notification-targets').clear().type('[email protected]') | ||
cy.get('[data-attr=alert-lower-threshold').clear().type('100') | ||
cy.get('[data-attr=alert-upper-threshold').clear().type('200') | ||
cy.contains('Create alert').click() | ||
cy.url().should('not.include', '/new') | ||
setInsightDisplayTypeAndSave('Number') | ||
|
||
cy.get('[aria-label="close"]').click() | ||
createAlert() | ||
cy.reload() | ||
|
||
// Check the alert has the same values as when it was created | ||
|
@@ -50,4 +66,32 @@ describe('Alerts', () => { | |
cy.reload() | ||
cy.contains('Alert name').should('not.exist') | ||
}) | ||
|
||
it('Should warn about an alert deletion', () => { | ||
setInsightDisplayTypeAndSave('Number') | ||
|
||
createAlert('Alert to be deleted because of a changed insight') | ||
|
||
cy.get('[data-attr=insight-edit-button]').click() | ||
cy.get('[data-attr=chart-filter]').click() | ||
cy.contains('Line chart').click() | ||
|
||
cy.contains('the existing alerts will be deleted').should('exist') | ||
|
||
cy.get('[data-attr=chart-filter]').click() | ||
cy.contains('Number').click() | ||
|
||
// Assert that reverting the display type removes the banner | ||
cy.contains('the existing alerts will be deleted').should('not.exist') | ||
|
||
cy.get('[data-attr=insight-cancel-edit-button]').click() | ||
setInsightDisplayTypeAndSave('Line chart') | ||
setInsightDisplayTypeAndSave('Number') | ||
|
||
// Assert that saving an insight in an incompatible state removes alerts | ||
cy.get('[data-attr=more-button]').click() | ||
cy.contains('Alerts').click() | ||
cy.contains('Manage alerts').click() | ||
cy.contains('Alert to be deleted because of a changed insight').should('not.exist') | ||
}) | ||
}) |
Oops, something went wrong.