2.9 KiB
2.9 KiB
Como Testar Localmente
1. Dependências (Fedora)
# ffmpeg com libmp3lame (via RPM Fusion)
sudo dnf install -y https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm
sudo dnf install -y ffmpeg
2. Setup inicial
make setup # baixa Tailwind + DaisyUI + htmx, cria .env
3. Configure o .env
# edite o .env
MUSIC_PATH=./testdata/music # ou um diretório com .flac
DB_PATH=./data/coda.db
LIDARR_URL= # deixe vazio se não tiver Lidarr
LIDARR_API_KEY=
4. Crie um diretório de teste com FLACs
mkdir -p testdata/music/"Artist"/"Album"
# Gere um FLAC de 1s para teste:
ffmpeg -f lavfi -i sine=frequency=440:duration=1 \
-c:a flac testdata/music/Artist/Album/01.flac
5. Compile e rode
make run # dev: templates do disco, hot-reload
# ou:
make run-prod # produção: assets embutidos
6. Teste as rotas HTTP
curl localhost:8080/health # → {"status":"ok"}
curl localhost:8080/ # → HTML do dashboard
curl localhost:8080/jobs # → tabela de jobs
curl localhost:8080/logs # → tabela de logs
curl localhost:8080/settings # → formulário de config
7. Teste o pipeline manual (Library)
Abra http://localhost:8080/library no navegador:
- Clique "Scan for FLACs"
- Selecione o álbum descoberto
- Clique "Convert Selected"
- O job aparece em
/jobscomodone - O
.flacoriginal é removido e o.mp3gerado no mesmo diretório
8. Teste o webhook do Lidarr
# Health check do Lidarr (eventType: Test):
curl -XPOST localhost:8080/webhook/lidarr \
-H "Content-Type: application/json" \
-d '{"eventType":"Test"}'
# → 200 {"status":"ok"}
# Import real (requer path válido sob MUSIC_PATH):
curl -XPOST localhost:8080/webhook/lidarr \
-H "Content-Type: application/json" \
-d '{"eventType":"AlbumImport","artist":{"name":"Artist","path":"<abs-path>"},"album":{"title":"Album"}}'
# → 202 {"job_id":"..."}
9. Rode os testes
go test ./... # todos os pacotes
Observação: testes que dependem de ffmpeg/ffprobe usam t.Skip se os binários
não forem encontrados no PATH.
10. Modo dry run
DRY_RUN=true make run
Todas as ações destrutivas (conversão, remoção de FLACs, chamadas ao Lidarr) são logadas mas não executadas. Útil para validação sem alterar arquivos.
Fluxo completo
Webhook ou Library → Fila (Queue)
→ Scheduler (janela de trabalho)
→ Worker Pool (WORKERS simultâneos)
→ ffmpeg (FLAC→MP3 320k CBR)
→ ffprobe (validação)
→ remoção dos FLACs
→ rescan do Lidarr
Todos os estados são persistidos no SQLite (data/coda.db) e visíveis na UI.