Usa el servidor de desarrollo local

Google Cloud CLI para Java incluye un servidor de desarrollo local que permite probar la aplicación en tu computadora. El servidor de desarrollo local simula el entorno de ejecución de Java de App Engine y todos sus servicios, incluido Datastore.

Ejecuta el servidor web de desarrollo

Para obtener información sobre cómo configurar las propiedades del sistema y las variables del entorno de la aplicación, consulta Cómo se manejan las solicitudes.

También puedes ejecutar el servidor web de desarrollo desde el símbolo del sistema. El comando para ejecutar está en el directorio google-cloud-sdk/bin/ del SDK.

Sintaxis del comando para Windows:

google-cloud-sdk\bin\java_dev_appserver.cmd [options] [WAR_DIRECTORY_LOCATION]

Sintaxis del comando para Linux o macOS:

google-cloud-sdk/bin/java_dev_appserver.sh [options] [WAR_DIRECTORY_LOCATION]

El comando adopta como argumento la ubicación del directorio de WAR de tu aplicación.

Detén el servidor de desarrollo

Para detener el servidor web, presiona Ctrl-C.

Detecta el entorno de ejecución de la aplicación

Si deseas determinar si el código se ejecuta en producción o en el servidor de desarrollo local, puedes verificar el valor del método SystemProperty.environment.value(). Por ejemplo:

if (SystemProperty.environment.value() == SystemProperty.Environment.Value.Production) {
   // Production
 } else {
  // Local development server
  // which is: SystemProperty.Environment.Value.Development
}

Usa el emulador del almacén de datos local

El servidor web de desarrollo simula un Datastore mediante un Datastore local respaldado por archivos en la computadora. Datastore se llama local_db.bin y se crea en el directorio WAR de la aplicación, en el directorio WEB-INF /appengine-generated/. No se sube con la aplicación.

Este almacén permanece entre cada invocación del servidor web, de modo que los datos que almacenes sigan estando disponibles la próxima vez que ejecutes ese servidor. Para borrar el contenido de Datastore, apaga el servidor y borra este archivo.

Como se describe en Configuración de índice del almacén de datos, el servidor de desarrollo puede generar la configuración de índices de Datastore que necesite tu aplicación, que se determina a partir de las consultas que realiza mientras ejecutas las pruebas. Esto genera un archivo llamado datastore-indexes-auto.xml en el directorio WEB-INF/appengine-generated/ en el WAR. Para inhabilitar la configuración automática de índices, crea o edita el archivo datastore-indexes.xml en el directorio WEB-INF/ mediante el atributo autoGenerate="false" para el elemento <datastore-indexes>.

Navega por el almacén de datos en el servidor de desarrollo

Para navegar por el almacén de datos local con el servidor web de desarrollo:

  1. Inicia el servidor de desarrollo como se describió previamente.
  2. Dirígete a Development Console.
  3. Haz clic en Lector de Datastore en el panel de navegación izquierdo para ver el contenido del almacén de datos local.

El modelo de coherencia de Cloud Datastore

De forma predeterminada, el Datastore local está configurado para que el 10% de escrituras de Datastore no se vean de inmediato en las consultas globales.

Para ajustar este nivel de coherencia, configura la propiedad del sistema datastore.default_high_rep_job_policy_unapplied_job_pct con un valor que corresponda a la cantidad de coherencia eventual que deseas que vea la aplicación.

-Ddatastore.default_high_rep_job_policy_unapplied_job_pct=20

Si estableces esta propiedad con el símbolo del sistema java_dev_appserver.sh, debes usar --jvm_flag=... para configurar la propiedad:

google_cloud_sdk/bin/java-dev_appserver.sh  --jvm_flag=-Ddatastore.default_high_rep_job_policy_unapplied_job_pct=20

El rango válido de datastore.default_high_rep_job_policy_unapplied_job_pct está entre 0 y 100. Se producirá un error si usas números fuera de este rango.

Especifica la política de asignación de ID automática

Puedes configurar cómo asigna Datastore local los IDs de entidades automáticos.

En el servidor de desarrollo, se admiten las siguientes políticas de asignación automática de ID:

sequential
Los ID se asignan a partir de la secuencia de números enteros consecutivos.
scattered
Los ID se asignan a partir de una secuencia no repetitiva de números enteros distribuidos de manera casi uniforme.

La política predeterminada en el Datastore local es scattered.

Para especificar la política de ID automática, establece la propiedad del sistema datastore.auto_id_allocation_policy en sequential o scattered.

-Ddatastore.auto_id_allocation_policy=scattered

Si quieres configurar esta propiedad del sistema mediante un marcador transmitido a la macro dev_appserver, usa lo siguiente:

java_dev_appserver --jvm_flag=-Ddatastore.auto_id_allocation_policy=scattered

Simula cuentas de usuario

El servidor web de desarrollo simula Cuentas de Google con sus propias páginas de inicio y cierre de sesión. Mientras se ejecuta en el servidor web de desarrollador, los métodos que generan las URL de inicio y de cierre de sesión muestran las URL de /_ah/login y /_ah/logout en el servidor local.

La página de inicio de sesión del servidor de desarrollo incluye un formulario en el que puedes escribir una dirección de correo electrónico. Esta dirección es el usuario activo de la sesión.

Para que la aplicación crea que el usuario que accedió es un administrador, marca la casilla de verificación "Acceder como administrador" en el formulario.

Usa la recuperación de URL

Cuando tu aplicación usa la API de Recuperación de URL para hacer una solicitud HTTP, el servidor web de desarrollo realiza la solicitud directamente desde tu computadora. El comportamiento puede diferir de la ejecución de tu aplicación en App Engine si usas un servidor proxy para acceder a sitios web.

Development Console

El servidor web de desarrollo incluye una aplicación web de consola que puedes usar para navegar por el Datastore local.

Para acceder a la consola, visita la URL /_ah/admin en el servidor: http://localhost:8080/_ah/admin

Argumentos de la línea de comandos

Para conocer las opciones del comando del servidor de desarrollo local, consulta aquí.