Skip to content

Instantly share code, notes, and snippets.

@qnkhuat
qnkhuat / measure_memory.clj
Last active March 28, 2025 11:22
Compare serialization size between transit, nippy and edn
(ns local.measure-memory
{:clj-kondo/config '{:linters :ignore}}
(:require
[clj-memory-meter.core :as mm]
[clojure.edn :as edn]
[clojure.java.io :as io]
[cognitect.transit :as transit]
[metabase.query-processor :as qp]
[metabase.util.json :as json]
[taoensso.nippy :as nippy]
(ns disk-map
(:require
[clojure.java.io :as io]
[metabase.util.random :as random]
[potemkin :as p]
[pretty.core :as pretty])
(:import
(java.io File)))
(set! *warn-on-reflection* true)
@qnkhuat
qnkhuat / dry_run_alert_migrate.clj
Created December 16, 2024 07:39
Script to dry run alert migration for cloud instances
(ns dry-run-migrate-alert
(:require
[clj-http.client :as http]
[clojure.data.csv :as csv]
[honey.sql :as sql]
[metabase.db.custom-migrations.pulse-to-notification :as pulse-to-notification]
[metabase.util.date-2 :as u.date]
[metabase.util.json :as json]
[metabase.util.random :as u.random]
[toucan2.core :as t2]))
;; create 100 tables, each with 100 columns of type: timestamp, int, float, text
;; each table has 100 rows
DO
$$
DECLARE
table_idx INT;
column_idx INT;
col_type_idx INT;
col_types TEXT[] := ARRAY['INT', 'TIMESTAMP', 'FLOAT', 'TEXT'];
(ns stress-big-dashboard
(:require
[clojure.java.shell :as sh]
[metabase.sync :as sync]
[metabase.test :as mt]
[toucan2.core :as t2]
[toucan2.tools.with-temp :as t2.with-temp]))
"""
##
CREATE TABLE IF NOT EXISTS table_1 (table_0_integer0 integer,table_0_integer1 integer,table_0_integer2 integer,table_0_integer3 integer,table_0_integer4 integer,table_0_integer5 integer,table_0_integer6 integer,table_0_integer7 integer,table_0_integer8 integer,table_0_integer9 integer,table_0_integer10 integer,table_0_integer11 integer,table_0_integer12 integer,table_0_integer13 integer,table_0_integer14 integer,table_0_integer15 integer,table_0_integer16 integer,table_0_integer17 integer,table_0_integer18 integer,table_0_integer19 integer,table_0_integer20 integer,table_0_integer21 integer,table_0_integer22 integer,table_0_integer23 integer,table_0_integer24 integer,table_0_integer25 integer,table_0_integer26 integer,table_0_integer27 integer,table_0_integer28 integer,table_0_integer29 integer,table_0_varchar0 varchar,table_0_varchar1 varchar,table_0_varchar2 varchar,table_0_varchar3 varchar,table_0_varchar4 varchar,table_0_varchar5 varchar,table_0_varchar6 varchar,table_0_varchar7 varchar,table_0_varchar8 v
import exec from 'k6/execution';
import http from 'k6/http'
import { check, sleep } from 'k6';
import { uuidv4 } from 'https://jslib.k6.io/k6-utils/1.4.0/index.js';
import { vu } from 'k6/execution';
export const options = {
scenarios: {
contacts: {
executor: 'constant-vus',
(ns oom-big-dashboard
(:require
[clojure.java.shell :as sh]
[metabase.test :as mt]
[metabase.util.log :as log]
[toucan2.core :as t2]
[toucan2.tools.with-temp :as t2.with-temp]))
(defn create-cards
[n]
(ns stress-big-dashboard
(:require
[clojure.java.shell :as sh]
[metabase.test :as mt]
[toucan2.core :as t2]
[toucan2.tools.with-temp :as t2.with-temp]))
(defn create-cards
[n]
(let [tables (t2/select :model/Table :db_id (mt/id))
@qnkhuat
qnkhuat / metabase_quartz.clj
Last active May 6, 2024 17:11
Quartz misfire policy bug
;; NOTE: need to update org.quartz.threadPool.threadCount to 1 in resources/quartz.properties
(require
'[metabase.task :as task]
'[metabase.util.log :as log]
'[metabase.test :as mt]
'[clojurewerkz.quartzite.scheduler :as qs]
'[clojurewerkz.quartzite.conversion :as qc]
'[clojurewerkz.quartzite.matchers :as quart.match]
'[clojurewerkz.quartzite.jobs :as jobs]