Skip to content

Commit 4dff333

Browse files
authored
Merge pull request #66 from asfadmin/yoreley/readme
WIP on readme's
2 parents 1ed51c0 + ab2e6df commit 4dff333

2 files changed

Lines changed: 156 additions & 1 deletion

File tree

README.es.md

Lines changed: 152 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,152 @@
1+
# SearchAPI-v3
2+
3+
[![en](https://img.shields.io/badge/lang-en-red.svg)](./README.md)
4+
5+
6+
SearchAPI-v3 es un contenedor alrededor del [módulo de python asf-search](https://github.com/asfadmin/Discovery-asf_search) utilizando un despliegue sin servidor con el framework FastAPI y AWS Lambda.
7+
8+
### Endpoints principales
9+
10+
<table>
11+
<thead>
12+
<tr>
13+
<th>Endpoint</th>
14+
<th>Descripción</th>
15+
<th>Métodos</th>
16+
</tr>
17+
</thead>
18+
<tbody>
19+
<tr>
20+
<td>`/`</td>
21+
<td>Información de configuración del servidor</td>
22+
<td>`GET`</td>
23+
</tr>
24+
<tr>
25+
<td>`/health`</td>
26+
<td>igual que root `/`</td>
27+
<td>`GET`</td>
28+
</tr>
29+
<tr>
30+
<td>`/services/search/param`</td>
31+
<td>Búsqueda mediante cualquier parámetro válido de asf-search</td>
32+
<td>`GET` `POST` `HEAD`</td>
33+
</tr>
34+
<tr>
35+
<td>`/services/search/baseline`</td>
36+
<td>Crear un stack de línea base a partir de una referencia dada y dataset opcional</td>
37+
<td>`GET` `POST` `HEAD`</td>
38+
</tr>
39+
</tbody>
40+
</table>
41+
42+
## Desarrollo
43+
44+
### Ramificación
45+
46+
<table>
47+
<thead>
48+
<tr>
49+
<th>Instancia</th>
50+
<th>Rama</th>
51+
<th>Descripción, Instrucciones, Notas</th>
52+
</tr>
53+
</thead>
54+
<tbody>
55+
<tr>
56+
<td>Características</td>
57+
<td>feat-*</td>
58+
<td>Siempre crear a partir de dev, para nuevas funciones</td>
59+
</tr>
60+
<tr>
61+
<td>Problemas</td>
62+
<td>bugfix-*</td>
63+
<td>Siempre crear a partir de dev, para correcciones</td>
64+
</tr>
65+
<tr>
66+
<td>desarrollo</td>
67+
<td>dev</td>
68+
<td>Aquí comienza la integración inicial; despliega en el entorno test-staging.</td>
69+
</tr>
70+
<tr>
71+
<td>pruebas</td>
72+
<td>test</td>
73+
<td>Solo acepta fusiones desde la rama development; despliegue en el entorno de prueba</td>
74+
</tr>
75+
<tr>
76+
<td>preproducción e integración</td>
77+
<td>prod-staging</td>
78+
<td>Solo acepta fusiones desde la rama testing; despliegue en el entorno prod-staging</td>
79+
</tr>
80+
<tr>
81+
<td>release</td>
82+
<td>prod</td>
83+
<td>Solo acepta fusiones desde la rama prod-staging; rama de release, despliegue a producción</td>
84+
</tr>
85+
</tbody>
86+
</table>
87+
88+
### Instalación
89+
90+
Para instalar localmente, ejecute lo siguiente en una terminal (se recomienda altamente hacerlo en un entorno virtual):
91+
```bash
92+
pip install -r requirements.txt
93+
pip install .
94+
```
95+
96+
Para instalar los requisitos de prueba:
97+
```bash
98+
pip install -r tests/requirements.txt
99+
```
100+
101+
### Ejecución local
102+
103+
Para ejecutar la API localmente, ejecute lo siguiente en una terminal:
104+
```bash
105+
uvicorn src.SearchAPI.application:app --reload --port 8080
106+
```
107+
La API ahora debería estar disponible en su localhost en http://127.0.0.1:8080 y se puede consultar con su navegador o herramienta de red de preferencia.
108+
109+
110+
111+
112+
## Pruebas
113+
114+
### Ejecutar el conjunto de pruebas localmente
115+
Después de ejecutar la API (vea `Ejecución local` arriba), para correr la suite de pruebas localmente ejecute:
116+
```bash
117+
pytest --api "http://127.0.0.1:8080" -n auto "tests/yml_tests/"
118+
```
119+
120+
### Escribir pruebas
121+
Las pruebas deben escribirse en las subcarpetas y archivos relevantes en `/tests`.
122+
123+
La suite de pruebas usa el plugin `pytest-automation` que permite definir y reutilizar entradas para casos de prueba en formato yaml. Los casos de prueba se escriben en archivos dentro de `tests/yml_tests/`, y los recursos reutilizables en `tests/yml_tests/Resources/`.
124+
125+
```yaml
126+
127+
tests:
128+
- Test Nisar Product L1 RSLC: # este es un caso de prueba
129+
product: NISAR_L1_PR_RSLC_087_039_D_114_2005_DHDH_A_20251102T222008_20251102T222017_T00407_N_P_J_001.yml # este archivo debe estar en `tests/yml_tests/Resources/`. Vea otros archivos yml en la carpeta para observar cómo podría estructurar el objeto yml
130+
product_level: L1
131+
132+
- Test Nisar Product L2 GSLC: # este es otro caso de prueba
133+
product: NISAR_L2_PR_GSLC_087_039_D_112_2005_DHDH_A_20251102T221859_20251102T221935_T00407_N_F_J_001.yml
134+
product_level: L2
135+
```
136+
137+
Podemos crear el mapeo desde nuestros casos de prueba yaml en `tests/yml_tests/pytest-config.yml`, que se usará para llamar la función de python deseada en `tests/yml_tests/pytest-managers.py`.
138+
139+
En `tests/yml_tests/pytest-config.yml`:
140+
```yaml
141+
- Para ejecutar pruebas de ASFProduct:
142+
required_keys: ['product', 'product_level'] # las claves que requiere el caso de prueba
143+
method: test_NISARProduct # la función de Python en pytest-managers.py que será llamada
144+
required_in_title: Test Nisar Product # (OPCIONAL) solo ejecutará los casos de prueba que tengan `Test Nisar Product` en el nombre; por ello, los dos casos anteriores se ejecutarían con nuestras pruebas.
145+
```
146+
147+
En `tests/yml_tests/pytest-managers.py`:
148+
149+
```python
150+
def test_new_endpoint(client=None, **args) -> None:
151+
test_new_endpoint(client=client, **args)
152+
```

README.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
# SearchAPI-v3
22

3+
4+
[![es](https://img.shields.io/badge/lang-es-yellow.svg)](./README.es.md)
5+
36
SearchAPI-v3 is a wrapper around the [asf-search python module](https://github.com/asfadmin/Discovery-asf_search) using a serverless deployment with the FastAPI web framework and AWS lambda.
47

58
### Main Endpoints
@@ -8,7 +11,7 @@ SearchAPI-v3 is a wrapper around the [asf-search python module](https://github.c
811
<thead>
912
<tr>
1013
<th>Endpoint</th>
11-
<th>Descirption</th>
14+
<th>Description</th>
1215
<th>Methods</th>
1316
</tr>
1417
</thead>

0 commit comments

Comments
 (0)