mirror of
https://github.com/spacebarchat/server.git
synced 2024-11-10 12:42:44 +01:00
Perhaps a message create perf test?
This commit is contained in:
parent
de15b3a9a4
commit
725491a69d
@ -5,7 +5,8 @@
|
||||
"main": "build/index.js",
|
||||
"scripts": {
|
||||
"build": "tsc -b",
|
||||
"start": "node build/index.js"
|
||||
"start": "node build/index.js",
|
||||
"start:gateway": "node build/gateway.js"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
|
82
slowcord/status/src/gateway.ts
Normal file
82
slowcord/status/src/gateway.ts
Normal file
@ -0,0 +1,82 @@
|
||||
import "dotenv/config";
|
||||
import Fosscord from "fosscord-gopnik";
|
||||
import Discord from "discord.js";
|
||||
import mysql from "mysql2";
|
||||
import fetch from "node-fetch";
|
||||
|
||||
const dbConn = mysql.createConnection(process.env.DATABASE as string);
|
||||
const executePromise = (sql: string, args: any[]) => new Promise((resolve, reject) => dbConn.execute(sql, args, (err, res) => { if (err) reject(err); else resolve(res); }));
|
||||
const savePerf = async (time: number, name: string, error?: string | Error) => {
|
||||
if (error && typeof error != "string") error = error.message;
|
||||
try {
|
||||
await executePromise("INSERT INTO performance (value, endpoint, timestamp, error) VALUES (?, ?, ?, ?)", [time ?? 0, name, new Date(), error ?? null]);
|
||||
// await executePromise("DELETE FROM performance WHERE DATE(timestamp) < now() - interval ? DAY", [process.env.RETENTION_DAYS]);
|
||||
}
|
||||
catch (e) {
|
||||
console.error(e);
|
||||
}
|
||||
};
|
||||
|
||||
var timestamp: number | undefined;
|
||||
|
||||
const doMeasurements = async (channel: Discord.TextChannel) => {
|
||||
timestamp = Date.now();
|
||||
await channel.send("hello this is a special message kthxbye");
|
||||
|
||||
setTimeout(doMeasurements, parseInt(process.env.MEASURE_INTERVAL as string), channel);
|
||||
};
|
||||
|
||||
const instance = {
|
||||
app: process.env.INSTANCE_WEB_APP as string,
|
||||
api: process.env.INSTANCE_API as string,
|
||||
cdn: process.env.INSTANCE_CDN as string,
|
||||
token: process.env.INSTANCE_TOKEN as string,
|
||||
};
|
||||
|
||||
const client = new Fosscord.Client({
|
||||
intents: [],
|
||||
http: {
|
||||
api: instance.api,
|
||||
cdn: instance.cdn
|
||||
}
|
||||
});
|
||||
|
||||
client.on("ready", async () => {
|
||||
console.log(`Ready on gateway as ${client.user!.tag}`);
|
||||
|
||||
const channel = await client.channels.fetch("1019955729054267764");
|
||||
if (!channel) return;
|
||||
|
||||
doMeasurements(channel as Discord.TextChannel);
|
||||
});
|
||||
|
||||
client.on("messageCreate", async (msg: Discord.Message) => {
|
||||
if (!timestamp) return;
|
||||
if (msg.author.id != "992745947417141682"
|
||||
|| msg.channel.id != "1019955729054267764"
|
||||
|| msg.content != "hello this is a special message kthxbye")
|
||||
return;
|
||||
await savePerf(Date.now() - timestamp, "messageCreate", undefined);
|
||||
timestamp = undefined;
|
||||
|
||||
await fetch(`${instance.api}/channels/1019955729054267764/messages/${msg.id}`, {
|
||||
method: "DELETE",
|
||||
headers: {
|
||||
authorization: instance.token
|
||||
}
|
||||
})
|
||||
});
|
||||
|
||||
client.on("error", (error: any) => {
|
||||
console.log(`Gateway error`, error);
|
||||
});
|
||||
|
||||
client.on("warn", (msg: any) => {
|
||||
console.log(`Gateway warning:`, msg);
|
||||
});
|
||||
|
||||
(async () => {
|
||||
await new Promise((resolve) => dbConn.connect(resolve));
|
||||
console.log("Connected to db");
|
||||
await client.login(instance.token);
|
||||
})();
|
@ -1,6 +1,5 @@
|
||||
import "dotenv/config";
|
||||
import https from "https";
|
||||
import Fosscord from "fosscord-gopnik";
|
||||
import mysql from "mysql2";
|
||||
import fetch from "node-fetch";
|
||||
|
||||
@ -14,32 +13,6 @@ const instance = {
|
||||
token: process.env.INSTANCE_TOKEN as string,
|
||||
};
|
||||
|
||||
const client = new Fosscord.Client({
|
||||
intents: [],
|
||||
http: {
|
||||
api: instance.api,
|
||||
cdn: instance.cdn
|
||||
}
|
||||
});
|
||||
|
||||
const gatewayMeasure = async (name: string) => {
|
||||
const time = Math.max(client.ws.ping, 0);
|
||||
await savePerf(time, name, '');
|
||||
console.log(`${name} took ${time}ms`);
|
||||
};
|
||||
|
||||
client.on("ready", () => {
|
||||
console.log(`Ready on gateway as ${client.user!.tag}`);
|
||||
});
|
||||
|
||||
client.on("error", (error: any) => {
|
||||
console.log(`Gateway error`, error);
|
||||
});
|
||||
|
||||
client.on("warn", (msg: any) => {
|
||||
console.log(`Gateway warning:`, msg);
|
||||
});
|
||||
|
||||
const savePerf = async (time: number, name: string, error?: string | Error) => {
|
||||
if (error && typeof error != "string") error = error.message;
|
||||
try {
|
||||
|
Loading…
Reference in New Issue
Block a user