mirror of
https://github.com/TheRealOwenRees/plantid-discord-bot.git
synced 2026-07-23 04:26:57 +00:00
updated tests
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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
@@ -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"]
|
|
||||||
@@ -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:
|
|
||||||
@@ -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
@@ -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"
|
||||||
|
|||||||
Reference in New Issue
Block a user