Skip to content

Commit ce42d24

Browse files
update
1 parent dd8bda9 commit ce42d24

11 files changed

Lines changed: 965 additions & 12 deletions

File tree

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
__pycache__/
2+
*.pyc
3+
.git/
4+
.gitignore
5+
.DS_Store
6+
*.log
7+
*.tmp
8+
.env
9+
*.pyo
10+
*.pyd
11+
*.db
12+
*.sqlite3
13+
*.md
14+
tests/
15+
test-examples/
16+
node_modules/
17+
*.egg-info

containers/llm-orchestrator-min/Dockerfile

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,10 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
1515
WORKDIR /app
1616

1717
# Kopiowanie tylko pliku requirements.txt, aby wykorzystać cache Docker
18-
COPY containers/llm-orchestrator-min/requirements.txt .
18+
COPY requirements.txt .
1919

2020
# Instalacja zależności Pythona z wykorzystaniem cache
21-
RUN --mount=type=cache,target=/root/.cache/pip \
22-
pip install --upgrade pip && \
21+
RUN pip install --upgrade pip && \
2322
pip wheel --wheel-dir=/app/wheels -r requirements.txt
2423

2524
# Druga faza - obraz docelowy
@@ -41,16 +40,16 @@ WORKDIR /app
4140

4241
# Kopiowanie skompilowanych pakietów z poprzedniej fazy
4342
COPY --from=builder /app/wheels /app/wheels
44-
COPY containers/llm-orchestrator-min/requirements.txt .
43+
COPY requirements.txt .
4544

4645
# Instalacja pakietów z lokalnych plików wheel
4746
RUN pip install --no-index --find-links=/app/wheels -r requirements.txt && \
4847
rm -rf /app/wheels
4948

5049
# Kopiowanie kodu aplikacji
51-
COPY containers/llm-orchestrator-min/api.py ./
52-
COPY containers/llm-orchestrator-min/model-configs/ ./model-configs/
53-
COPY containers/llm-orchestrator-min/data/ ./data/
50+
COPY api.py ./
51+
COPY model-configs/ ./model-configs/ || true
52+
COPY data/ ./data/ || true
5453

5554
# Pobieranie modelu
5655
ARG MODEL_VERSION=1.0
@@ -71,7 +70,7 @@ else \n\
7170
fi' > /app/download_model.sh && chmod +x /app/download_model.sh
7271

7372
# Dodanie skryptów diagnostycznych i naprawczych
74-
COPY containers/llm-orchestrator-min/scripts/ /app/scripts/
73+
COPY scripts/ /app/scripts/ || true
7574
RUN chmod +x /app/scripts/*.sh || echo "No scripts to make executable"
7675

7776
# Ekspozycja portu API
Lines changed: 162 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,162 @@
1+
# Dokumentacja Testowania API LLM-Orchestrator-Min
2+
3+
## Spis treści
4+
1. [Wprowadzenie](#wprowadzenie)
5+
2. [Przygotowanie środowiska](#przygotowanie-środowiska)
6+
3. [Dostępne narzędzia testowe](#dostępne-narzędzia-testowe)
7+
4. [Uruchamianie testów](#uruchamianie-testów)
8+
5. [Testy obciążeniowe](#testy-obciążeniowe)
9+
6. [Automatyzacja testów](#automatyzacja-testów)
10+
7. [Rozwiązywanie problemów](#rozwiązywanie-problemów)
11+
8. [Najlepsze praktyki](#najlepsze-praktyki)
12+
13+
## Wprowadzenie
14+
15+
Ten dokument opisuje procedury testowania API LLM-Orchestrator-Min, które pozwalają na weryfikację poprawności działania, wydajności oraz stabilności usługi. Testy są kluczowym elementem zapewnienia jakości i powinny być uruchamiane po każdej znaczącej zmianie w kodzie lub konfiguracji.
16+
17+
## Przygotowanie środowiska
18+
19+
Przed uruchomieniem testów upewnij się, że:
20+
21+
1. Kontener `llm-orchestrator-min` jest zbudowany i uruchomiony
22+
2. API jest dostępne pod oczekiwanym adresem (domyślnie: `http://localhost:5000`)
23+
3. Model TinyLlama został poprawnie pobrany i załadowany
24+
25+
Możesz użyć skryptu zarządzającego do przygotowania środowiska:
26+
27+
```bash
28+
# Budowanie kontenera z optymalizacjami cache
29+
./scripts/manage_container.sh build
30+
31+
# Uruchamianie kontenera
32+
./scripts/manage_container.sh run
33+
```
34+
35+
## Dostępne narzędzia testowe
36+
37+
W projekcie dostępne są następujące narzędzia testowe:
38+
39+
1. **Podstawowy tester API** (`scripts/test_api.sh`)
40+
- Prosty skrypt bash do testowania podstawowych endpointów API
41+
- Sprawdza dostępność i podstawową funkcjonalność
42+
43+
2. **Kompleksowy tester API** (`scripts/comprehensive_test.py`)
44+
- Zaawansowany tester napisany w Pythonie
45+
- Umożliwia przeprowadzenie testów funkcjonalnych i obciążeniowych
46+
- Generuje szczegółowe raporty
47+
48+
3. **Narzędzia do analizy jakości kodu** (`scripts/code_quality.sh`)
49+
- Uruchamia narzędzia takie jak black, flake8, pylint, mypy i isort
50+
- Pomaga utrzymać wysoką jakość kodu
51+
52+
4. **Tox** (konfiguracja w `tox.ini`)
53+
- Umożliwia testowanie w izolowanych środowiskach
54+
- Automatyzuje uruchamianie testów jednostkowych i linterów
55+
56+
## Uruchamianie testów
57+
58+
### Podstawowe testy API
59+
60+
```bash
61+
# Uruchomienie podstawowych testów API
62+
./scripts/test_api.sh
63+
64+
# Lub za pomocą skryptu zarządzającego
65+
./scripts/manage_container.sh test
66+
```
67+
68+
### Kompleksowe testy API
69+
70+
```bash
71+
# Uruchomienie kompleksowych testów API
72+
python ./scripts/comprehensive_test.py --url http://localhost:5000 --verbose
73+
74+
# Zapisanie wyników do pliku JSON
75+
python ./scripts/comprehensive_test.py --output results.json
76+
```
77+
78+
### Testy jakości kodu
79+
80+
```bash
81+
# Analiza jakości kodu
82+
./scripts/code_quality.sh
83+
84+
# Automatyczne naprawianie problemów z formatowaniem
85+
./scripts/code_quality.sh --fix
86+
```
87+
88+
### Testy z użyciem tox
89+
90+
```bash
91+
# Uruchomienie wszystkich testów zdefiniowanych w tox.ini
92+
tox
93+
94+
# Uruchomienie tylko testów jednostkowych
95+
tox -e py39
96+
97+
# Uruchomienie tylko linterów
98+
tox -e lint
99+
```
100+
101+
## Testy obciążeniowe
102+
103+
Testy obciążeniowe pozwalają sprawdzić jak API radzi sobie z wieloma równoczesnymi żądaniami:
104+
105+
```bash
106+
# Uruchomienie testów obciążeniowych (domyślnie: 2 równoczesne żądania, 5 łącznie)
107+
python ./scripts/comprehensive_test.py --load-test
108+
109+
# Dostosowanie parametrów testów obciążeniowych
110+
python ./scripts/comprehensive_test.py --load-test --concurrency 5 --requests 20
111+
```
112+
113+
Parametry testów obciążeniowych:
114+
- `--concurrency` - liczba równoczesnych żądań (domyślnie: 2)
115+
- `--requests` - łączna liczba żądań do wykonania (domyślnie: 5)
116+
117+
## Automatyzacja testów
118+
119+
Testy mogą być automatycznie uruchamiane po uruchomieniu kontenera za pomocą skryptu `run_tests_after_startup.sh`. Skrypt ten:
120+
121+
1. Czeka na pełne uruchomienie API
122+
2. Uruchamia podstawowe testy API
123+
3. Uruchamia kompleksowe testy API (opcjonalnie)
124+
4. Generuje raport z testów
125+
126+
Aby uruchomić automatyczne testy po starcie kontenera:
127+
128+
```bash
129+
./scripts/run_tests_after_startup.sh
130+
```
131+
132+
## Rozwiązywanie problemów
133+
134+
Jeśli testy nie przechodzą, wykonaj następujące kroki:
135+
136+
1. Sprawdź logi kontenera:
137+
```bash
138+
docker logs llm-orchestrator-min
139+
```
140+
141+
2. Uruchom diagnostykę:
142+
```bash
143+
./scripts/manage_container.sh diagnose
144+
```
145+
146+
3. Spróbuj naprawić typowe problemy:
147+
```bash
148+
./scripts/manage_container.sh fix
149+
```
150+
151+
4. Sprawdź, czy model został poprawnie pobrany:
152+
```bash
153+
docker exec llm-orchestrator-min ls -la /app/models/tinyllama
154+
```
155+
156+
## Najlepsze praktyki
157+
158+
1. **Regularnie uruchamiaj testy** - po każdej znaczącej zmianie w kodzie
159+
2. **Automatyzuj testy** - używaj CI/CD do automatycznego uruchamiania testów
160+
3. **Monitoruj wydajność** - śledź czasy odpowiedzi API w czasie
161+
4. **Testuj na różnych konfiguracjach** - sprawdzaj działanie z różnymi parametrami
162+
5. **Aktualizuj testy** - dodawaj nowe przypadki testowe wraz z rozwojem API

containers/llm-orchestrator-min/scripts/code_quality.sh

100644100755
File mode changed.

0 commit comments

Comments
 (0)