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 # extract artifacts
tar -xzf release.tar.gz tar -xzf release.tar.gz
# save metrics and stop the bot # 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 current_release/bin/plantid_discord_bot stop || true
# switch releases # switch releases
rm -rf old_release 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 defmodule PlantIdDiscordBot.Metrics do
@moduledoc """
API for managing metrics for the bot.
"""
alias PlantIdDiscordBot.Metrics.Requests alias PlantIdDiscordBot.Metrics.Requests
alias PlantIdDiscordBot.RateLimiter alias PlantIdDiscordBot.RateLimiter
+15 -13
View File
@@ -2,25 +2,27 @@ defmodule PlantIdDiscordBot.MetricsTest do
use ExUnit.Case use ExUnit.Case
doctest PlantIdDiscordBot.Metrics doctest PlantIdDiscordBot.Metrics
alias PlantIdDiscordBot.Metrics
test "put multiple entries into state" do test "put multiple entries into state" do
PlantIdDiscordBot.Metrics.reset() Metrics.Requests.reset()
PlantIdDiscordBot.Metrics.put(123, "Test Guild 1") Metrics.increase_request_count(123, "Test Guild 1")
PlantIdDiscordBot.Metrics.put(321, "Test Guild 2") Metrics.increase_request_count(321, "Test Guild 2")
keys = keys =
PlantIdDiscordBot.Metrics.get_all() Metrics.requests()
|> Map.keys() |> Map.keys()
assert length(keys) == 2 assert length(keys) == 2
%PlantIdDiscordBot.Metrics{ %Metrics.Requests{
guild_id: guild_id1, guild_id: guild_id1,
guild_name: guild_name1, guild_name: guild_name1,
first_request_at: first_request_at1, first_request_at: first_request_at1,
last_request_at: last_request_at1, last_request_at: last_request_at1,
total_requests: total_requests1 total_requests: total_requests1
} = } =
PlantIdDiscordBot.Metrics.get(123) Metrics.requests(123)
assert guild_id1 == 123 assert guild_id1 == 123
assert guild_name1 == "Test Guild 1" assert guild_name1 == "Test Guild 1"
@@ -28,14 +30,14 @@ defmodule PlantIdDiscordBot.MetricsTest do
assert %DateTime{} = last_request_at1 assert %DateTime{} = last_request_at1
assert total_requests1 == 1 assert total_requests1 == 1
%PlantIdDiscordBot.Metrics{ %Metrics.Requests{
guild_id: guild_id2, guild_id: guild_id2,
guild_name: guild_name2, guild_name: guild_name2,
first_request_at: first_request_at2, first_request_at: first_request_at2,
last_request_at: last_request_at2, last_request_at: last_request_at2,
total_requests: total_requests2 total_requests: total_requests2
} = } =
PlantIdDiscordBot.Metrics.get(321) Metrics.requests(321)
assert guild_id2 == 321 assert guild_id2 == 321
assert guild_name2 == "Test Guild 2" assert guild_name2 == "Test Guild 2"
@@ -45,18 +47,18 @@ defmodule PlantIdDiscordBot.MetricsTest do
end end
test "update requests for a guild" do test "update requests for a guild" do
PlantIdDiscordBot.Metrics.reset() Metrics.Requests.reset()
PlantIdDiscordBot.Metrics.put(123, "Test Guild 1") Metrics.increase_request_count(123, "Test Guild 1")
PlantIdDiscordBot.Metrics.put(123, "Test Guild 1") Metrics.increase_request_count(123, "Test Guild 1")
%PlantIdDiscordBot.Metrics{ %Metrics.Requests{
guild_id: guild_id, guild_id: guild_id,
guild_name: guild_name, guild_name: guild_name,
first_request_at: first_request_at, first_request_at: first_request_at,
last_request_at: last_request_at, last_request_at: last_request_at,
total_requests: total_requests total_requests: total_requests
} = } =
PlantIdDiscordBot.Metrics.get(123) Metrics.requests(123)
assert guild_id == 123 assert guild_id == 123
assert guild_name == "Test Guild 1" assert guild_name == "Test Guild 1"