updated tests

This commit is contained in:
Owen
2025-01-13 15:46:48 +01:00
committed by Owen Rees
parent 3d0dc324a6
commit 0009a82460
6 changed files with 19 additions and 101 deletions
+1 -1
View File
@@ -73,7 +73,7 @@ jobs:
# extract artifacts
tar -xzf release.tar.gz
# save metrics and stop the bot
current_release/bin/plantid_discord_bot rpc "PlantidDiscordBot.Metrics.write()"
current_release/bin/plantid_discord_bot rpc "PlantidDiscordBot.Metrics.backup()"
current_release/bin/plantid_discord_bot stop || true
# switch releases
rm -rf old_release
-28
View File
@@ -1,28 +0,0 @@
**0.2.1**
- Removed `No alternatives found` text
**0.2.0**
- Implemented the ability to ID attachments without using application commands
- Wording changes for plant database links
- `Threat Status` changed to `Conservation Status`
**0.1.4**
- Added first and last request date to metrics
**0.1.3**
- Typo corrections in README.md
- Metrics as state, written to disk every hour
**0.1.2**
- bug fixes around `Threat Status`, choosing to not display when no IUCU data is available
**0.1.1**
- removed logger backend code in favour of `LoggerWebhookBackend`
**0.1.0 - Initial Release**
-41
View File
@@ -1,41 +0,0 @@
ARG ELIXIR="1.16.2"
ARG ERLANG="26.0.2"
ARG DEBIAN_VERSION="buster-20240513-slim"
# Step 1: Build release
FROM hexpm/elixir:${ELIXIR}-erlang-${ERLANG}-debian-${DEBIAN_VERSION} AS build
WORKDIR /plantid_discord_bot
RUN MIX_ENV=prod
RUN mix local.hex --force && \
mix local.rebar --force
COPY mix.exs mix.lock ./
COPY config config
COPY lib lib
RUN mix deps.get --only prod
RUN MIX_ENV=prod mix release
# Step 2: Create app image
FROM debian:${DEBIAN_VERSION}
WORKDIR /plantid_discord_bot
RUN apt-get update -y && apt-get install -y openssl locales
COPY \
--from=build \
--chown=nobody:root \
/plantid_discord_bot/_build/prod/rel/plantid_discord_bot ./
RUN sed -i '/en_US.UTF-8/s/^# //g' /etc/locale.gen && locale-gen
ENV LANG="en_US.UTF-8"
ENV LANGUAGE="en_US:en"
ENV LC_ALL="en_US.UTF-8"
EXPOSE 4321
CMD ["/plantid_discord_bot/bin/plantid_discord_bot", "start"]
-18
View File
@@ -1,18 +0,0 @@
services:
app:
build:
context: .
dockerfile: Dockerfile
container_name: plantid_discord_bot
environment:
- MIX_ENV=prod
- PLANTNET_API_KEY=${PLANTNET_API_KEY}
- DISCORD_TOKEN=${DISCORD_TOKEN}
- LOGS_DISCORD_WEBHOOK_URL=${LOGS_DISCORD_WEBHOOK_URL}
ports:
- "4321:4321"
volumes:
- appdata:/plantid_discord_bot
volumes:
appdata:
+3
View File
@@ -1,4 +1,7 @@
defmodule PlantIdDiscordBot.Metrics do
@moduledoc """
API for managing metrics for the bot.
"""
alias PlantIdDiscordBot.Metrics.Requests
alias PlantIdDiscordBot.RateLimiter
+15 -13
View File
@@ -2,25 +2,27 @@ defmodule PlantIdDiscordBot.MetricsTest do
use ExUnit.Case
doctest PlantIdDiscordBot.Metrics
alias PlantIdDiscordBot.Metrics
test "put multiple entries into state" do
PlantIdDiscordBot.Metrics.reset()
PlantIdDiscordBot.Metrics.put(123, "Test Guild 1")
PlantIdDiscordBot.Metrics.put(321, "Test Guild 2")
Metrics.Requests.reset()
Metrics.increase_request_count(123, "Test Guild 1")
Metrics.increase_request_count(321, "Test Guild 2")
keys =
PlantIdDiscordBot.Metrics.get_all()
Metrics.requests()
|> Map.keys()
assert length(keys) == 2
%PlantIdDiscordBot.Metrics{
%Metrics.Requests{
guild_id: guild_id1,
guild_name: guild_name1,
first_request_at: first_request_at1,
last_request_at: last_request_at1,
total_requests: total_requests1
} =
PlantIdDiscordBot.Metrics.get(123)
Metrics.requests(123)
assert guild_id1 == 123
assert guild_name1 == "Test Guild 1"
@@ -28,14 +30,14 @@ defmodule PlantIdDiscordBot.MetricsTest do
assert %DateTime{} = last_request_at1
assert total_requests1 == 1
%PlantIdDiscordBot.Metrics{
%Metrics.Requests{
guild_id: guild_id2,
guild_name: guild_name2,
first_request_at: first_request_at2,
last_request_at: last_request_at2,
total_requests: total_requests2
} =
PlantIdDiscordBot.Metrics.get(321)
Metrics.requests(321)
assert guild_id2 == 321
assert guild_name2 == "Test Guild 2"
@@ -45,18 +47,18 @@ defmodule PlantIdDiscordBot.MetricsTest do
end
test "update requests for a guild" do
PlantIdDiscordBot.Metrics.reset()
PlantIdDiscordBot.Metrics.put(123, "Test Guild 1")
PlantIdDiscordBot.Metrics.put(123, "Test Guild 1")
Metrics.Requests.reset()
Metrics.increase_request_count(123, "Test Guild 1")
Metrics.increase_request_count(123, "Test Guild 1")
%PlantIdDiscordBot.Metrics{
%Metrics.Requests{
guild_id: guild_id,
guild_name: guild_name,
first_request_at: first_request_at,
last_request_at: last_request_at,
total_requests: total_requests
} =
PlantIdDiscordBot.Metrics.get(123)
Metrics.requests(123)
assert guild_id == 123
assert guild_name == "Test Guild 1"