Compare commits
10 Commits
4b6be4f4e8
...
96a7606ee2
Author | SHA1 | Date |
---|---|---|
|
96a7606ee2 | |
|
6bce9e5838 | |
|
55a7f98f49 | |
|
0b99b46256 | |
|
b1a4251be9 | |
|
90ad9d6b69 | |
|
40ab72a195 | |
|
16c82b4c17 | |
|
aef4a712ec | |
|
0954c00e14 |
86
.drone.yml
86
.drone.yml
|
@ -1,3 +1,33 @@
|
|||
kind: secret
|
||||
name: POSTGRES_PASSWORD
|
||||
get:
|
||||
path: secrets
|
||||
name: POSTGRES_PASSWORD
|
||||
---
|
||||
kind: secret
|
||||
name: CLICKHOUSE_PASSWORD
|
||||
get:
|
||||
path: secrets
|
||||
name: CLICKHOUSE_PASSWORD
|
||||
---
|
||||
kind: secret
|
||||
name: SMTP_HOST
|
||||
get:
|
||||
path: secrets
|
||||
name: SMTP_HOST
|
||||
---
|
||||
kind: secret
|
||||
name: SMTP_USERNAME
|
||||
get:
|
||||
path: secrets
|
||||
name: SMTP_USERNAME
|
||||
---
|
||||
kind: secret
|
||||
name: SMTP_PASSWORD
|
||||
get:
|
||||
path: secrets
|
||||
name: SMTP_PASSWORD
|
||||
---
|
||||
kind: pipeline
|
||||
type: docker
|
||||
name: healthcheck
|
||||
|
@ -6,8 +36,60 @@ trigger:
|
|||
branch:
|
||||
- master
|
||||
|
||||
services:
|
||||
- name: kubectl-proxy-postgres
|
||||
image: bitnami/kubectl
|
||||
network_mode: host
|
||||
environment:
|
||||
KUBE_CONFIG:
|
||||
from_secret: KUBE_CONFIG
|
||||
commands:
|
||||
- echo "$$KUBE_CONFIG" | base64 -d > /.kube/config
|
||||
- kubectl -n databases port-forward pod/postgres-0 5432:5432
|
||||
- name: kubectl-proxy-clickhouse
|
||||
image: bitnami/kubectl
|
||||
network_mode: host
|
||||
environment:
|
||||
KUBE_CONFIG:
|
||||
from_secret: KUBE_CONFIG
|
||||
commands:
|
||||
- echo "$$KUBE_CONFIG" | base64 -d > /.kube/config
|
||||
- kubectl -n databases port-forward pod/clickhouse-0 8123:8123
|
||||
|
||||
steps:
|
||||
- name: test
|
||||
- name: install
|
||||
image: node:20.10.0
|
||||
commands:
|
||||
- echo test
|
||||
- npm install
|
||||
- name: build
|
||||
image: node:20.10.0
|
||||
commands:
|
||||
- npm run build
|
||||
- name: test
|
||||
network_mode: host
|
||||
image: node:20.10.0
|
||||
commands:
|
||||
- npm run test
|
||||
environment:
|
||||
POSTGRES_HOST: localhost
|
||||
POSTGRES_DATABASE: nocodelytics_production
|
||||
POSTGRES_PASSWORD:
|
||||
from_secret: POSTGRES_PASSWORD
|
||||
CLICKHOUSE_HOST: http://localhost:8123
|
||||
CLICKHOUSE_DATABASE: nocodelytics_production
|
||||
CLICKHOUSE_PASSWORD:
|
||||
from_secret: CLICKHOUSE_PASSWORD
|
||||
- name: notify
|
||||
image: drillster/drone-email
|
||||
settings:
|
||||
host:
|
||||
from_secret: SMTP_HOST
|
||||
port: 587
|
||||
username:
|
||||
from_secret: SMTP_USERNAME
|
||||
password:
|
||||
from_secret: SMTP_PASSWORD
|
||||
from: no-reply@nocodelytics.com
|
||||
recipients: [florian@nocodelytics.com]
|
||||
when:
|
||||
status: [failure]
|
||||
|
|
|
@ -4,19 +4,40 @@ import { sum } from "lodash";
|
|||
import * as dateFns from "date-fns";
|
||||
import { clickhouseClient, knex } from "./databases";
|
||||
|
||||
const oneHourAgo = dateFns.format(
|
||||
dateFns.subHours(new Date(), 1),
|
||||
"yyyy-MM-dd hh:mm:ss"
|
||||
const twoHourAgo = dateFns.format(
|
||||
dateFns.subHours(new Date(), 2),
|
||||
"yyyy-MM-dd HH:mm:ss"
|
||||
);
|
||||
|
||||
const now = dateFns.format(new Date(), "yyyy-MM-dd HH:mm:ss");
|
||||
|
||||
describe("Events", () => {
|
||||
test.skip("has inserted events", async () => {
|
||||
test("clickhouse is healthy", async () => {
|
||||
const { data } = await (
|
||||
await clickhouseClient.query({
|
||||
query: `
|
||||
SELECT
|
||||
hostName() AS host,
|
||||
uptime() AS uptime_seconds,
|
||||
version() AS clickhouse_version,
|
||||
'OK' AS status
|
||||
FROM system.tables
|
||||
LIMIT 1;
|
||||
`,
|
||||
})
|
||||
).json();
|
||||
const [{ status }] = data as any;
|
||||
assert.equal(status, "OK");
|
||||
});
|
||||
test("has inserted events", async () => {
|
||||
const query = knex("events")
|
||||
.count("")
|
||||
.whereBetween("created_at", [twoHourAgo, now])
|
||||
.toString();
|
||||
console.log(query);
|
||||
const { data } = (await (
|
||||
await clickhouseClient.query({
|
||||
query: knex("events")
|
||||
.count("")
|
||||
.where("created_at", ">", oneHourAgo)
|
||||
.toString(),
|
||||
query,
|
||||
})
|
||||
).json()) as any;
|
||||
assert.notEqual(Number.parseInt(data[0]["count()"], 10), 0);
|
||||
|
@ -26,7 +47,7 @@ describe("Events", () => {
|
|||
await clickhouseClient.query({
|
||||
query: knex("events")
|
||||
.count()
|
||||
.where("created_at", ">", oneHourAgo)
|
||||
.where("created_at", ">", twoHourAgo)
|
||||
.groupBy("geo_ip_country")
|
||||
.toString(),
|
||||
format: "JSON",
|
||||
|
|
Loading…
Reference in New Issue