From d2b7cd4eb24047898e1ee8bb824549521feddf24 Mon Sep 17 00:00:00 2001 From: Danang Date: Mon, 8 Jul 2024 14:20:57 +0000 Subject: [PATCH 01/16] integrate plumber --- .devcontainer/devcontainer.json | 2 +- deployment/.template.env | 1 + .../docker-compose.override.devcontainer.yml | 15 ++ .../docker-compose.override.template.yml | 14 ++ deployment/docker-compose.yml | 19 +- deployment/docker/requirements-dev.txt | 4 +- deployment/plumber/Dockerfile | 42 +++++ django_project/core/settings/project.py | 3 +- django_project/plumber_entrypoint.sh | 21 +++ django_project/plumber_initialize.py | 49 +++++ django_project/spw/__init__.py | 0 django_project/spw/admin.py | 3 + django_project/spw/apps.py | 6 + django_project/spw/factories.py | 7 + django_project/spw/migrations/__init__.py | 0 django_project/spw/models.py | 3 + django_project/spw/tests/__init__.py | 0 django_project/spw/tests/test_plumber.py | 153 ++++++++++++++++ .../spw/tests/test_utils_process.py | 24 +++ django_project/spw/utils/__init__.py | 0 django_project/spw/utils/plumber.py | 167 ++++++++++++++++++ django_project/spw/utils/plumber_template.R | 25 +++ django_project/spw/utils/process.py | 60 +++++++ django_project/spw/views.py | 3 + 24 files changed, 617 insertions(+), 4 deletions(-) create mode 100644 deployment/plumber/Dockerfile create mode 100755 django_project/plumber_entrypoint.sh create mode 100644 django_project/plumber_initialize.py create mode 100644 django_project/spw/__init__.py create mode 100644 django_project/spw/admin.py create mode 100644 django_project/spw/apps.py create mode 100644 django_project/spw/factories.py create mode 100644 django_project/spw/migrations/__init__.py create mode 100644 django_project/spw/models.py create mode 100644 django_project/spw/tests/__init__.py create mode 100644 django_project/spw/tests/test_plumber.py create mode 100644 django_project/spw/tests/test_utils_process.py create mode 100644 django_project/spw/utils/__init__.py create mode 100644 django_project/spw/utils/plumber.py create mode 100644 django_project/spw/utils/plumber_template.R create mode 100644 django_project/spw/utils/process.py create mode 100644 django_project/spw/views.py diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index bb2d4bd..75798f9 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -7,7 +7,7 @@ "../deployment/docker-compose.override.devcontainer.yml" ], "service": "dev", - "runServices": ["db", "redis", "celery_beat", "worker", "dev"], + "runServices": ["db", "redis", "plumber", "celery_beat", "worker", "dev"], "workspaceFolder": "/home/web/project", "runArgs": [ "--env-file", diff --git a/deployment/.template.env b/deployment/.template.env index 5992920..503a04a 100644 --- a/deployment/.template.env +++ b/deployment/.template.env @@ -19,3 +19,4 @@ REDIS_PASSWORD=redis_password RABBITMQ_HOST=rabbitmq SENTRY_DSN= INITIAL_FIXTURES= +PLUMBER_PORT=8282 diff --git a/deployment/docker-compose.override.devcontainer.yml b/deployment/docker-compose.override.devcontainer.yml index 42951db..3e551be 100644 --- a/deployment/docker-compose.override.devcontainer.yml +++ b/deployment/docker-compose.override.devcontainer.yml @@ -49,6 +49,7 @@ services: links: - db - worker + - plumber django: build: @@ -60,3 +61,17 @@ services: - ./volumes/static:/home/web/static - ./volumes/media:/home/web/media + plumber: + build: + context: ../ + dockerfile: deployment/plumber/Dockerfile + env_file: + - .env + volumes: + - ../:/home/web/project + - ../django_project:/home/web/django_project + - ./volumes/plumber_data:/home/web/plumber_data + - ./volumes/media:/home/web/media + links: + - db + - redis diff --git a/deployment/docker-compose.override.template.yml b/deployment/docker-compose.override.template.yml index 65a7eef..d9d2aed 100644 --- a/deployment/docker-compose.override.template.yml +++ b/deployment/docker-compose.override.template.yml @@ -66,3 +66,17 @@ services: - worker - celery_beat entrypoint: [ ] + + plumber: + build: + context: ../ + dockerfile: deployment/plumber/Dockerfile + env_file: + - .env + volumes: + - ../django_project:/home/web/django_project + - ./volumes/plumber_data:/home/web/plumber_data + - ./volumes/media:/home/web/media + links: + - db + - redis diff --git a/deployment/docker-compose.yml b/deployment/docker-compose.yml index a922a1a..279ddc7 100644 --- a/deployment/docker-compose.yml +++ b/deployment/docker-compose.yml @@ -9,6 +9,7 @@ volumes: backups-data: data-volume: redis-data: + plumber-data: x-common-django: &default-common-django @@ -18,6 +19,7 @@ x-common-django: volumes: - static-data:/home/web/static - media-data:/home/web/media + - plumber-data:/home/web/plumber_data restart: on-failure services: @@ -54,6 +56,7 @@ services: links: - db - worker + - plumber worker: <<: *default-common-django @@ -63,6 +66,7 @@ services: - db - redis - celery_beat + - plumber celery_beat: <<: *default-common-django @@ -81,4 +85,17 @@ services: - media-data:/home/web/media - nginx-cache:/home/web/nginx_cache links: - - django \ No newline at end of file + - django + + plumber: + build: + context: ../ + dockerfile: deployment/plumber/Dockerfile + env_file: + - .env + volumes: + - plumber-data:/home/web/plumber_data + - media-data:/home/web/media + links: + - db + - redis diff --git a/deployment/docker/requirements-dev.txt b/deployment/docker/requirements-dev.txt index 07800d0..a091179 100644 --- a/deployment/docker/requirements-dev.txt +++ b/deployment/docker/requirements-dev.txt @@ -16,4 +16,6 @@ pdbpp responses mock==4.0.3 -pytest-django \ No newline at end of file +pytest-django +# mock requests +requests-mock \ No newline at end of file diff --git a/deployment/plumber/Dockerfile b/deployment/plumber/Dockerfile new file mode 100644 index 0000000..c0ba021 --- /dev/null +++ b/deployment/plumber/Dockerfile @@ -0,0 +1,42 @@ +FROM rstudio/plumber:v1.2.0 AS prod + +# install python 3.10 +RUN apt-get update -y && apt-get upgrade -y + +RUN apt install software-properties-common -y + +RUN add-apt-repository ppa:deadsnakes/ppa + +RUN apt install Python3.10 + +RUN apt-get install -y --no-install-recommends \ + gcc gettext cron \ + spatialite-bin libsqlite3-mod-spatialite \ + python3-dev python3-gdal python3-psycopg2 python3-ldap \ + python3-pip python3-pil python3-lxml python3-pylibmc \ + uwsgi uwsgi-plugin-python3 \ + libfreetype6-dev libpng-dev libtiff5-dev libjpeg-dev + +# install R packages +RUN install2.r --error tidyverse tidygam mgcv ggpubr classInt + +# Install pip packages +ADD deployment/docker/requirements.txt /requirements.txt +RUN pip3 install --upgrade pip && pip install --upgrade pip +# Fix uwsgi build failure missing cc1 +ARG CPUCOUNT=1 +RUN pip3 install -r /requirements.txt + +# add django project +ADD django_project /home/web/django_project + +# create directories +RUN mkdir -p /home/web/plumber_data/ + +# add entrypoint.sh +ADD django_project/plumber_entrypoint.sh /home/web/plumber_entrypoint.sh + +EXPOSE 8181 + +WORKDIR /home/web/django_project +ENTRYPOINT [ "/home/web/plumber_entrypoint.sh" ] diff --git a/django_project/core/settings/project.py b/django_project/core/settings/project.py index 1652510..e1d592c 100644 --- a/django_project/core/settings/project.py +++ b/django_project/core/settings/project.py @@ -31,7 +31,8 @@ 'core', 'frontend', 'gap', - 'gap_api' + 'gap_api', + 'spw' ) TEMPLATES[0]['DIRS'] += [ diff --git a/django_project/plumber_entrypoint.sh b/django_project/plumber_entrypoint.sh new file mode 100755 index 0000000..bc2edb3 --- /dev/null +++ b/django_project/plumber_entrypoint.sh @@ -0,0 +1,21 @@ +#!/bin/sh + +# Exit script in case of error +set -e + +echo $"\n\n\n" +echo "-----------------------------------------------------" +echo "STARTING PLUMBER ENTRYPOINT $(date)" +echo "-----------------------------------------------------" + +# Run initialization +cd /home/web/django_project +echo 'Running plumber_initialize.py...' +python3 -u plumber_initialize.py + +echo "-----------------------------------------------------" +echo "FINISHED PLUMBER ENTRYPOINT --------------------------" +echo "-----------------------------------------------------" + +# start worker for Plumber +celery -A core worker -c 1 -Q plumber -l INFO -n plumberworker diff --git a/django_project/plumber_initialize.py b/django_project/plumber_initialize.py new file mode 100644 index 0000000..c0c95e3 --- /dev/null +++ b/django_project/plumber_initialize.py @@ -0,0 +1,49 @@ +""" +This script initializes +""" + +######################################################### +# Setting up the context +######################################################### + +######################################################### +# Imports +######################################################### +import django +django.setup() + +from django.db import connection +from django.db.utils import OperationalError +import time + +######################################################### +# 1. Waiting for PostgreSQL +######################################################### + +print('-----------------------------------------------------') +print('1. Waiting for PostgreSQL') +for _ in range(60): + try: + connection.ensure_connection() + break + except OperationalError: + time.sleep(1) +else: + connection.ensure_connection() +connection.close() + +print('-----------------------------------------------------') +print('2. Generate plumber.R file') +from spw.utils.plumber import ( # noqa + spawn_r_plumber, + write_plumber_file +) +write_plumber_file() + +print('-----------------------------------------------------') +print('3. Spawn initial plumber process') +plumber_process = spawn_r_plumber() +if plumber_process: + print(f'plumber process pid {plumber_process.pid}') +else: + raise RuntimeError('Cannot execute plumber process!') diff --git a/django_project/spw/__init__.py b/django_project/spw/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/django_project/spw/admin.py b/django_project/spw/admin.py new file mode 100644 index 0000000..8c38f3f --- /dev/null +++ b/django_project/spw/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/django_project/spw/apps.py b/django_project/spw/apps.py new file mode 100644 index 0000000..d5a7ed0 --- /dev/null +++ b/django_project/spw/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class SpwConfig(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' + name = 'spw' diff --git a/django_project/spw/factories.py b/django_project/spw/factories.py new file mode 100644 index 0000000..acc1c5c --- /dev/null +++ b/django_project/spw/factories.py @@ -0,0 +1,7 @@ +# coding=utf-8 +""" +Tomorrow Now SPW. + +.. note:: Factory classes for Models +""" +import factory diff --git a/django_project/spw/migrations/__init__.py b/django_project/spw/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/django_project/spw/models.py b/django_project/spw/models.py new file mode 100644 index 0000000..71a8362 --- /dev/null +++ b/django_project/spw/models.py @@ -0,0 +1,3 @@ +from django.db import models + +# Create your models here. diff --git a/django_project/spw/tests/__init__.py b/django_project/spw/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/django_project/spw/tests/test_plumber.py b/django_project/spw/tests/test_plumber.py new file mode 100644 index 0000000..885725b --- /dev/null +++ b/django_project/spw/tests/test_plumber.py @@ -0,0 +1,153 @@ +import os +import mock +import requests_mock +from django.test import TestCase + +from spw.utils.plumber import ( + write_plumber_file, + write_plumber_data, + remove_plumber_data, + PLUMBER_PORT, + plumber_health_check, + kill_r_plumber_process, + spawn_r_plumber, + execute_spw_model +) +from spw.utils.process import write_pidfile + + +def mocked_os_kill(self, *args, **kwargs): + return 1 + + +def find_r_line_code(lines, code): + filtered = [line for line in lines if code in line] + return len(filtered) > 0 + + +class DummyProcess: + def __init__(self, pid): + self.pid = pid + + +def mocked_process(*args, **kwargs): + return DummyProcess(1) + + +class DummyModel: + def __init__(self, id) -> None: + self.id = id + + +class TestPlumberUtils(TestCase): + + def test_plumber_health_check(self): + with requests_mock.Mocker() as m: + json_response = {'echo': 'ok'} + m.get( + f'http://0.0.0.0:{PLUMBER_PORT}/statistical/echo', + json=json_response, + headers={'Content-Type':'application/json'}, + status_code=200 + ) + is_running = plumber_health_check(max_retry=1) + self.assertTrue(is_running) + with requests_mock.Mocker() as m: + json_response = {'echo': 'ok'} + m.get( + f'http://0.0.0.0:{PLUMBER_PORT}/statistical/echo', + json=json_response, + headers={'Content-Type':'application/json'}, + status_code=400 + ) + is_running = plumber_health_check(max_retry=1) + self.assertFalse(is_running) + + @mock.patch('subprocess.Popen', + mock.Mock(side_effect=mocked_process)) + def test_spawn_r_plumber(self): + with requests_mock.Mocker() as m: + json_response = {'echo': 'ok'} + m.get( + f'http://0.0.0.0:{PLUMBER_PORT}/statistical/echo', + json=json_response, + headers={'Content-Type':'application/json'}, + status_code=200 + ) + process = spawn_r_plumber() + self.assertEqual(process.pid, 1) + + @mock.patch('os.kill') + def test_kill_r_plumber_process(self, mocked_os): + mocked_os.side_effect = mocked_os_kill + pid_path = '/tmp/plumber.pid' + write_pidfile(26, pid_path) + kill_r_plumber_process() + self.assertEqual(mocked_os.call_count, 1) + + def test_execute_spw_model(self): + data_filepath = '/home/web/plumber_data/test.csv' + model = DummyModel(1) + with requests_mock.Mocker() as m: + json_response = {'national_trend': 'abcde'} + m.post( + f'http://plumber:{PLUMBER_PORT}/statistical/api_spw', + json=json_response, + headers={'Content-Type':'application/json'}, + status_code=200 + ) + is_success, response = execute_spw_model(data_filepath) + self.assertTrue(is_success) + self.assertEqual(response, json_response) + with requests_mock.Mocker() as m: + json_response = {'error': 'Internal server error'} + m.post( + f'http://plumber:{PLUMBER_PORT}/statistical/api_spw', + json=json_response, + headers={'Content-Type':'application/json'}, + status_code=500 + ) + is_success, response = execute_spw_model(data_filepath) + self.assertFalse(is_success) + self.assertEqual('Internal server error', response['error']) + with requests_mock.Mocker() as m: + data_response = 'Test' + m.post( + f'http://plumber:{PLUMBER_PORT}/statistical/api_spw', + json=data_response, + headers={'Content-Type':'text/plain'}, + status_code=500 + ) + is_success, response = execute_spw_model(data_filepath) + self.assertFalse(is_success) + self.assertEqual('Invalid response content type: text/plain', + response) + + def test_write_plumber_file(self): + os.makedirs('/home/web/media/plumber_data', exist_ok=True) + r_file_path = write_plumber_file( + os.path.join( + '/home/web/media/plumber_data', + 'plumber_test.R' + ) + ) + with open(r_file_path, 'r') as f: + lines = f.readlines() + self.assertTrue(find_r_line_code(lines, '@get /statistical/echo')) + if os.path.exists(r_file_path): + os.remove(r_file_path) + + def test_manage_plumber_data(self): + os.makedirs('/home/web/media/plumber_data', exist_ok=True) + headers = ['data', 'count_total'] + csv_data = [ + ['abc', 10], + ['def', 20] + ] + file_path = write_plumber_data( + headers, csv_data, '/home/web/media/plumber_data') + self.assertTrue(os.path.exists(file_path)) + remove_plumber_data(file_path) + self.assertFalse(os.path.exists(file_path)) + + diff --git a/django_project/spw/tests/test_utils_process.py b/django_project/spw/tests/test_utils_process.py new file mode 100644 index 0000000..c303340 --- /dev/null +++ b/django_project/spw/tests/test_utils_process.py @@ -0,0 +1,24 @@ +import os +from django.test import TestCase +import mock +from spw.utils.process import ( + write_pidfile, + kill_process_by_pid +) + + +class TestUtilsProcess(TestCase): + + @staticmethod + def mocked_os_kill(self, *args, **kwargs): + return 1 + + @mock.patch('os.kill') + def test_kill_process_by_pid(self, mocked_os): + mocked_os.side_effect = TestUtilsProcess.mocked_os_kill + pid_path = '/tmp/test.pid' + write_pidfile(26, pid_path) + self.assertTrue(os.path.exists(pid_path)) + kill_process_by_pid(pid_path) + self.assertEqual(mocked_os.call_count, 1) + self.assertFalse(os.path.exists(pid_path)) diff --git a/django_project/spw/utils/__init__.py b/django_project/spw/utils/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/django_project/spw/utils/plumber.py b/django_project/spw/utils/plumber.py new file mode 100644 index 0000000..45e7674 --- /dev/null +++ b/django_project/spw/utils/plumber.py @@ -0,0 +1,167 @@ +import logging +import traceback +import os +import time +import csv +import subprocess +import requests +from uuid import uuid4 + +from core.settings.utils import absolute_path +from spw.utils.process import ( + write_pidfile, + kill_process_by_pid +) + +logger = logging.getLogger(__name__) +PLUMBER_PORT = os.getenv('PLUMBER_PORT', 8282) + + +def plumber_health_check(max_retry=5): + """ + Check whether API is up and running. + + This will be called from worker. + :param max_retry: maximum retry of checking + :return: True if successful number of check is less than max_retry + """ + request_url = f'http://0.0.0.0:{PLUMBER_PORT}/statistical/echo' + retry = 0 + req = None + time.sleep(1) + while (req is None or req.status_code != 200) and retry < max_retry: + try: + req = requests.get(request_url) + if req.status_code != 200: + time.sleep(2) + else: + break + except Exception as ex: # noqa + logger.error(ex) + time.sleep(2) + retry += 1 + if retry < max_retry: + logger.info('Plumber API is up and running!') + return retry < max_retry + + +def spawn_r_plumber(): + """Run a Plumber API server.""" + command_list = ( + [ + 'R', + '-e', + ( + "pr <- plumber::plumb(" + f"'/home/web/plumber_data/plumber.R'); " + f"args <- list(host = '0.0.0.0', port = {PLUMBER_PORT}); " + "do.call(pr$run, args)" + ) + ] + ) + logger.info('Starting plumber API') + process = None + try: + # redirect stdout and stderr + with open('/proc/1/fd/1', 'w') as fd: + process = subprocess.Popen( + command_list, + stdout=fd, + stderr=fd + ) + # sleep for 10 seconds to wait the API is up + time.sleep(10) + # we can also use polling to echo endpoint for health check + plumber_health_check() + # write process pid to /tmp/ + write_pidfile(process.pid, '/tmp/plumber.pid') + except Exception as ex: # noqa + logger.error(ex) + logger.error(traceback.format_exc()) + if process: + process.terminate() + process = None + return process + + +def kill_r_plumber_process(): + """Kill plumber process by PID stored in file.""" + pid_path = os.path.join( + '/', + 'tmp', + 'plumber.pid' + ) + kill_process_by_pid(pid_path) + + +def execute_spw_model(data_filepath): + api_name = f'api_spw' + request_url = f'http://plumber:{PLUMBER_PORT}/statistical/{api_name}' + data = { + 'filepath': data_filepath + } + response = requests.post(request_url, data=data) + content_type = response.headers['Content-Type'] + error = None + if content_type == 'application/json': + if response.status_code == 200: + return True, response.json() + else: + logger.error( + f'Plumber error response: {str(response.json())}') + error = response.json() + else: + logger.error(f'Invalid response content type: {content_type}') + error = f'Invalid response content type: {content_type}' + return False, error + + +def write_plumber_file(file_path = None): + """Write R codes to plumber.R""" + r_file_path = file_path if file_path else os.path.join( + '/home/web/plumber_data', + 'plumber.R' + ) + template_file = absolute_path( + 'spw', 'utils', 'plumber_template.R' + ) + with open(template_file, 'r') as f: + lines = f.readlines() + # TODO: write SPW R Code here + with open(r_file_path, 'w') as f: + for line in lines: + f.write(line) + return r_file_path + + +def write_plumber_data(headers, csv_data, dir_path='/home/web/plumber_data'): + """ + Write csv data to file in plumber_data. + + :param headers: list of header name + :param csv_data: list of row + :return: file path of exported csv + """ + r_data_path = os.path.join( + dir_path, + f'{str(uuid4())}.csv' + ) + with open(r_data_path, 'w', encoding='UTF8') as f: + writer = csv.writer(f) + # write the header + writer.writerow(headers) + writer.writerows(csv_data) + return r_data_path + + +def remove_plumber_data(data_filepath): + """ + Remove csv data file. + + :param data_filepath: filepath to the csv file + """ + try: + if os.path.exists(data_filepath): + os.remove(data_filepath) + except Exception as ex: + logger.error(ex) diff --git a/django_project/spw/utils/plumber_template.R b/django_project/spw/utils/plumber_template.R new file mode 100644 index 0000000..6c7cdec --- /dev/null +++ b/django_project/spw/utils/plumber_template.R @@ -0,0 +1,25 @@ +# plumber.R + +library(tidyverse) +library(tidygam) +library(mgcv) +library(ggpubr) + +#* @plumber +function(pr) { + err_func <- function(req, res, err) { + print(err) + res$status <- 500 + return ( + list(error = paste('Unhandled exception: ', err$message), detail = as.character(err)) + ) + } + + plumber::pr_set_error(pr, err_func) +} + +#* Echo back the input +#* @get /statistical/echo +function() { + list(msg = paste0("Plumber is working!")) +} diff --git a/django_project/spw/utils/process.py b/django_project/spw/utils/process.py new file mode 100644 index 0000000..aa97ab7 --- /dev/null +++ b/django_project/spw/utils/process.py @@ -0,0 +1,60 @@ +"""Utilities function for process management.""" +import os +import logging +from signal import SIGKILL + + +logger = logging.getLogger(__name__) + + +def write_pidfile(pid, pidfile_path): + """Write pid to file.""" + with open(pidfile_path, 'w', encoding='utf-8') as f: + f.write(str(pid)) + + +def read_pid_from_pidfile(pidfile_path): + """ Read the PID recorded in the named PID file. + + Read and return the numeric PID recorded as text in the named + PID file. If the PID file cannot be read, or if the content is + not a valid PID, return ``None``. + + """ + pid = None + try: + pidfile = open(pidfile_path, 'r') + except IOError as ex: + logger.error(ex) + else: + # According to the FHS 2.3 section on PID files in /var/run: + # + # The file must consist of the process identifier in + # ASCII-encoded decimal, followed by a newline character. + # + # Programs that read PID files should be somewhat flexible + # in what they accept; i.e., they should ignore extra + # whitespace, leading zeroes, absence of the trailing + # newline, or additional lines in the PID file. + + line = pidfile.readline().strip() + try: + pid = int(line) + except ValueError as ex: + logger.error(ex) + pidfile.close() + + return pid + + +def kill_process_by_pid(pidfile_path): + """Kill process by PID. """ + plumber_pid = read_pid_from_pidfile(pidfile_path) + logger.info(f'Killing pid {plumber_pid}') + if plumber_pid: + # kill a process via pid + os.kill(plumber_pid, SIGKILL) + try: + os.remove(pidfile_path) + except IOError as ex: + logger.error(ex) diff --git a/django_project/spw/views.py b/django_project/spw/views.py new file mode 100644 index 0000000..91ea44a --- /dev/null +++ b/django_project/spw/views.py @@ -0,0 +1,3 @@ +from django.shortcuts import render + +# Create your views here. From 5f49e267d0ec592a1ca797f253989ea23c5e22b9 Mon Sep 17 00:00:00 2001 From: Danang Date: Wed, 10 Jul 2024 16:12:38 +0000 Subject: [PATCH 02/16] add zoo R package --- deployment/plumber/Dockerfile | 2 +- django_project/spw/utils/plumber_template.R | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/deployment/plumber/Dockerfile b/deployment/plumber/Dockerfile index c0ba021..0181ae5 100644 --- a/deployment/plumber/Dockerfile +++ b/deployment/plumber/Dockerfile @@ -18,7 +18,7 @@ RUN apt-get install -y --no-install-recommends \ libfreetype6-dev libpng-dev libtiff5-dev libjpeg-dev # install R packages -RUN install2.r --error tidyverse tidygam mgcv ggpubr classInt +RUN install2.r --error tidyverse tidygam mgcv ggpubr classInt zoo # Install pip packages ADD deployment/docker/requirements.txt /requirements.txt diff --git a/django_project/spw/utils/plumber_template.R b/django_project/spw/utils/plumber_template.R index 6c7cdec..ac634af 100644 --- a/django_project/spw/utils/plumber_template.R +++ b/django_project/spw/utils/plumber_template.R @@ -4,6 +4,7 @@ library(tidyverse) library(tidygam) library(mgcv) library(ggpubr) +library(zoo) #* @plumber function(pr) { From f79e646f10ceb9e20e00cec4c5983616f1cc221d Mon Sep 17 00:00:00 2001 From: Danang Date: Wed, 10 Jul 2024 16:30:43 +0000 Subject: [PATCH 03/16] add RModel data class --- django_project/spw/migrations/0001_initial.py | 40 +++++++++++++ django_project/spw/models.py | 57 ++++++++++++++++++- 2 files changed, 96 insertions(+), 1 deletion(-) create mode 100644 django_project/spw/migrations/0001_initial.py diff --git a/django_project/spw/migrations/0001_initial.py b/django_project/spw/migrations/0001_initial.py new file mode 100644 index 0000000..f5cbb14 --- /dev/null +++ b/django_project/spw/migrations/0001_initial.py @@ -0,0 +1,40 @@ +# Generated by Django 4.2.7 on 2024-07-10 16:29 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ] + + operations = [ + migrations.CreateModel( + name='RModel', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=256)), + ('version', models.IntegerField()), + ('code', models.TextField()), + ('notes', models.TextField(blank=True, null=True)), + ('created_on', models.DateTimeField()), + ('updated_on', models.DateTimeField()), + ('created_by', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), + ('updated_by', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='rmodel_updater', to=settings.AUTH_USER_MODEL)), + ], + ), + migrations.CreateModel( + name='RModelOutput', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('type', models.CharField(choices=[('goNoGo', 'goNoGo'), ('days_h2to_f2', 'days_h2to_f2'), ('days_f3to_f5', 'days_f3to_f5'), ('days_f6to_f13', 'days_f6to_f13'), ('nearDaysLTNPercent', 'nearDaysLTNPercent'), ('nearDaysCurPercent', 'nearDaysCurPercent')], max_length=100)), + ('variable_name', models.CharField(max_length=100)), + ('model', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='spw.rmodel')), + ], + ), + ] diff --git a/django_project/spw/models.py b/django_project/spw/models.py index 71a8362..576cd3e 100644 --- a/django_project/spw/models.py +++ b/django_project/spw/models.py @@ -1,3 +1,58 @@ from django.db import models +from django.contrib.auth import get_user_model -# Create your models here. + +User = get_user_model() + + +class RModel(models.Model): + """Model that stores R code.""" + + name = models.CharField(max_length=256) + version = models.IntegerField() + code = models.TextField() + notes = models.TextField( + null=True, + blank=True + ) + created_on = models.DateTimeField() + created_by = models.ForeignKey(User, on_delete=models.CASCADE) + updated_on = models.DateTimeField() + updated_by = models.ForeignKey( + User, on_delete=models.CASCADE, related_name='rmodel_updater') + + +class RModelOutputType: + """R model output type.""" + + GO_NO_GO_STATUS = 'goNoGo' + DAYS_h2TO_F2 = 'days_h2to_f2' + DAYS_f3TO_F5 = 'days_f3to_f5' + DAYS_f6TO_F13 = 'days_f6to_f13' + NEAR_DAYS_LTN_PERCENT = 'nearDaysLTNPercent' + NEAR_DAYS_CUR_PERCENT = 'nearDaysCurPercent' + + +class RModelOutput(models.Model): + """Model that stores relationship between R Model and its outputs.""" + + model = models.ForeignKey(RModel, on_delete=models.CASCADE) + type = models.CharField( + max_length=100, + choices=( + (RModelOutputType.GO_NO_GO_STATUS, + RModelOutputType.GO_NO_GO_STATUS), + (RModelOutputType.DAYS_h2TO_F2, + RModelOutputType.DAYS_h2TO_F2), + (RModelOutputType.DAYS_f3TO_F5, + RModelOutputType.DAYS_f3TO_F5), + (RModelOutputType.DAYS_f6TO_F13, + RModelOutputType.DAYS_f6TO_F13), + (RModelOutputType.NEAR_DAYS_LTN_PERCENT, + RModelOutputType.NEAR_DAYS_LTN_PERCENT), + (RModelOutputType.NEAR_DAYS_CUR_PERCENT, + RModelOutputType.NEAR_DAYS_CUR_PERCENT), + ) + ) + variable_name = models.CharField(max_length=100) + From 27d062289e55313fc519ae2f0d75cc2f0066a333 Mon Sep 17 00:00:00 2001 From: Danang Date: Thu, 11 Jul 2024 08:11:58 +0000 Subject: [PATCH 04/16] add write and execute latest R code from model --- django_project/plumber_initialize.py | 9 ++- django_project/spw/admin.py | 38 ++++++++++- django_project/spw/apps.py | 8 +++ django_project/spw/factories.py | 7 -- django_project/spw/migrations/0001_initial.py | 4 +- django_project/spw/models.py | 33 +++++++++- django_project/spw/tasks.py | 33 ++++++++++ django_project/spw/tests/test_plumber.py | 53 +++++++++------ .../spw/tests/test_utils_process.py | 9 +++ django_project/spw/utils/plumber.py | 65 +++++++++++++++++-- django_project/spw/utils/process.py | 19 ++++-- django_project/spw/views.py | 3 - 12 files changed, 226 insertions(+), 55 deletions(-) delete mode 100644 django_project/spw/factories.py create mode 100644 django_project/spw/tasks.py delete mode 100644 django_project/spw/views.py diff --git a/django_project/plumber_initialize.py b/django_project/plumber_initialize.py index c0c95e3..cc74f31 100644 --- a/django_project/plumber_initialize.py +++ b/django_project/plumber_initialize.py @@ -1,6 +1,4 @@ -""" -This script initializes -""" +"""This script initializes plumber service.""" ######################################################### # Setting up the context @@ -10,12 +8,13 @@ # Imports ######################################################### import django -django.setup() - from django.db import connection from django.db.utils import OperationalError import time + +django.setup() + ######################################################### # 1. Waiting for PostgreSQL ######################################################### diff --git a/django_project/spw/admin.py b/django_project/spw/admin.py index 8c38f3f..751b85d 100644 --- a/django_project/spw/admin.py +++ b/django_project/spw/admin.py @@ -1,3 +1,37 @@ -from django.contrib import admin +# coding=utf-8 +""" +Tomorrow Now GAP. -# Register your models here. +.. note:: Admins +""" +from django.contrib import admin, messages + +from spw.models import RModel, RModelOutput +from spw.tasks import start_plumber_process + + +@admin.action(description='Restart plumber process') +def restart_plumber_process(modeladmin, request, queryset): + """Restart plumber process action.""" + start_plumber_process.apply_async(queue='plumber') + modeladmin.message_user( + request, + 'Plumber process will be started in background!', + messages.SUCCESS + ) + + +class RModelOutputInline(admin.TabularInline): + """Inline list for model output in RModel admin page.""" + + model = RModelOutput + extra = 1 + + +@admin.register(RModel) +class RModelAdmin(admin.ModelAdmin): + """Admin page for RModel.""" + + list_display = ('name', 'version', 'created_on') + inlines = [RModelOutputInline] + actions = [restart_plumber_process] diff --git a/django_project/spw/apps.py b/django_project/spw/apps.py index d5a7ed0..877a94e 100644 --- a/django_project/spw/apps.py +++ b/django_project/spw/apps.py @@ -1,6 +1,14 @@ +# coding=utf-8 +""" +Tomorrow Now GAP. + +.. note:: AppConfig for SPW +""" from django.apps import AppConfig class SpwConfig(AppConfig): + """SPW App Config.""" + default_auto_field = 'django.db.models.BigAutoField' name = 'spw' diff --git a/django_project/spw/factories.py b/django_project/spw/factories.py deleted file mode 100644 index acc1c5c..0000000 --- a/django_project/spw/factories.py +++ /dev/null @@ -1,7 +0,0 @@ -# coding=utf-8 -""" -Tomorrow Now SPW. - -.. note:: Factory classes for Models -""" -import factory diff --git a/django_project/spw/migrations/0001_initial.py b/django_project/spw/migrations/0001_initial.py index f5cbb14..7c0ec28 100644 --- a/django_project/spw/migrations/0001_initial.py +++ b/django_project/spw/migrations/0001_initial.py @@ -1,4 +1,4 @@ -# Generated by Django 4.2.7 on 2024-07-10 16:29 +# Generated by Django 4.2.7 on 2024-07-11 07:16 from django.conf import settings from django.db import migrations, models @@ -19,7 +19,7 @@ class Migration(migrations.Migration): fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=256)), - ('version', models.IntegerField()), + ('version', models.FloatField()), ('code', models.TextField()), ('notes', models.TextField(blank=True, null=True)), ('created_on', models.DateTimeField()), diff --git a/django_project/spw/models.py b/django_project/spw/models.py index 576cd3e..bccc3b1 100644 --- a/django_project/spw/models.py +++ b/django_project/spw/models.py @@ -1,5 +1,13 @@ +# coding=utf-8 +""" +Tomorrow Now GAP. + +.. note:: Models for SPW R code +""" from django.db import models from django.contrib.auth import get_user_model +from django.dispatch import receiver +from django.db.models.signals import post_save, post_delete User = get_user_model() @@ -9,7 +17,7 @@ class RModel(models.Model): """Model that stores R code.""" name = models.CharField(max_length=256) - version = models.IntegerField() + version = models.FloatField() code = models.TextField() notes = models.TextField( null=True, @@ -55,4 +63,25 @@ class RModelOutput(models.Model): ) ) variable_name = models.CharField(max_length=100) - + + +@receiver(post_save, sender=RModel) +def rmodel_post_create(sender, instance: RModel, + created, *args, **kwargs): + """Restart plumber process when a RModel is created.""" + from spw.tasks import ( + start_plumber_process + ) + if instance.code and instance.id: + start_plumber_process.apply_async(queue='plumber') + + +@receiver(post_delete, sender=RModel) +def rmodel_post_delete(sender, instance: RModel, + *args, **kwargs): + """Restart plumber process when a RModel is deleted.""" + from spw.tasks import ( + start_plumber_process + ) + # respawn Plumber API + start_plumber_process.apply_async(queue='plumber') diff --git a/django_project/spw/tasks.py b/django_project/spw/tasks.py new file mode 100644 index 0000000..7e0e243 --- /dev/null +++ b/django_project/spw/tasks.py @@ -0,0 +1,33 @@ +# coding=utf-8 +""" +Tomorrow Now GAP. + +.. note:: SPW Tasks +""" +from celery import shared_task +from celery.utils.log import get_task_logger + +from spw.utils.plumber import ( + kill_r_plumber_process, + spawn_r_plumber, + write_plumber_file +) + + +logger = get_task_logger(__name__) + + +@shared_task(name="start_plumber_process") +def start_plumber_process(): + """Start plumber process when there is R code change.""" + logger.info('Starting plumber process') + # kill existing process + kill_r_plumber_process() + # Generate plumber.R file + write_plumber_file() + # spawn the process + plumber_process = spawn_r_plumber() + if plumber_process: + logger.info(f'plumber process pid {plumber_process.pid}') + else: + raise RuntimeError('Cannot execute plumber process!') diff --git a/django_project/spw/tests/test_plumber.py b/django_project/spw/tests/test_plumber.py index 885725b..be301bc 100644 --- a/django_project/spw/tests/test_plumber.py +++ b/django_project/spw/tests/test_plumber.py @@ -1,3 +1,9 @@ +# coding=utf-8 +""" +Tomorrow Now GAP. + +.. note:: UnitTest for Plumber functions. +""" import os import mock import requests_mock @@ -5,7 +11,7 @@ from spw.utils.plumber import ( write_plumber_file, - write_plumber_data, + write_plumber_data, remove_plumber_data, PLUMBER_PORT, plumber_health_check, @@ -17,37 +23,40 @@ def mocked_os_kill(self, *args, **kwargs): + """Mock os.kill function.""" return 1 def find_r_line_code(lines, code): + """Find code in lines.""" filtered = [line for line in lines if code in line] return len(filtered) > 0 class DummyProcess: + """Class for dummy process result.""" + def __init__(self, pid): + """Initialize class with dummy pid.""" self.pid = pid def mocked_process(*args, **kwargs): + """Mock a subprocess.""" return DummyProcess(1) -class DummyModel: - def __init__(self, id) -> None: - self.id = id - - class TestPlumberUtils(TestCase): + """Test plumber utility functions.""" def test_plumber_health_check(self): + """Test plumber health check.""" with requests_mock.Mocker() as m: json_response = {'echo': 'ok'} m.get( f'http://0.0.0.0:{PLUMBER_PORT}/statistical/echo', json=json_response, - headers={'Content-Type':'application/json'}, + headers={'Content-Type': 'application/json'}, status_code=200 ) is_running = plumber_health_check(max_retry=1) @@ -57,21 +66,22 @@ def test_plumber_health_check(self): m.get( f'http://0.0.0.0:{PLUMBER_PORT}/statistical/echo', json=json_response, - headers={'Content-Type':'application/json'}, + headers={'Content-Type': 'application/json'}, status_code=400 ) is_running = plumber_health_check(max_retry=1) self.assertFalse(is_running) - + @mock.patch('subprocess.Popen', mock.Mock(side_effect=mocked_process)) def test_spawn_r_plumber(self): + """Test spawn new R plumber process.""" with requests_mock.Mocker() as m: json_response = {'echo': 'ok'} m.get( f'http://0.0.0.0:{PLUMBER_PORT}/statistical/echo', json=json_response, - headers={'Content-Type':'application/json'}, + headers={'Content-Type': 'application/json'}, status_code=200 ) process = spawn_r_plumber() @@ -79,6 +89,7 @@ def test_spawn_r_plumber(self): @mock.patch('os.kill') def test_kill_r_plumber_process(self, mocked_os): + """Test killing running R Plumber Procces.""" mocked_os.side_effect = mocked_os_kill pid_path = '/tmp/plumber.pid' write_pidfile(26, pid_path) @@ -86,36 +97,36 @@ def test_kill_r_plumber_process(self, mocked_os): self.assertEqual(mocked_os.call_count, 1) def test_execute_spw_model(self): + """Test execute SPW R Mode.""" data_filepath = '/home/web/plumber_data/test.csv' - model = DummyModel(1) with requests_mock.Mocker() as m: json_response = {'national_trend': 'abcde'} m.post( - f'http://plumber:{PLUMBER_PORT}/statistical/api_spw', + f'http://plumber:{PLUMBER_PORT}/spw/generic', json=json_response, - headers={'Content-Type':'application/json'}, + headers={'Content-Type': 'application/json'}, status_code=200 ) - is_success, response = execute_spw_model(data_filepath) + is_success, response = execute_spw_model(data_filepath, 0.0, 0.0) self.assertTrue(is_success) self.assertEqual(response, json_response) with requests_mock.Mocker() as m: json_response = {'error': 'Internal server error'} m.post( - f'http://plumber:{PLUMBER_PORT}/statistical/api_spw', + f'http://plumber:{PLUMBER_PORT}/spw/generic', json=json_response, - headers={'Content-Type':'application/json'}, + headers={'Content-Type': 'application/json'}, status_code=500 ) - is_success, response = execute_spw_model(data_filepath) + is_success, response = execute_spw_model(data_filepath, 0.0, 0.0) self.assertFalse(is_success) self.assertEqual('Internal server error', response['error']) with requests_mock.Mocker() as m: data_response = 'Test' m.post( - f'http://plumber:{PLUMBER_PORT}/statistical/api_spw', + f'http://plumber:{PLUMBER_PORT}/spw/generic', json=data_response, - headers={'Content-Type':'text/plain'}, + headers={'Content-Type': 'text/plain'}, status_code=500 ) is_success, response = execute_spw_model(data_filepath) @@ -124,6 +135,7 @@ def test_execute_spw_model(self): response) def test_write_plumber_file(self): + """Test writing plumber R file.""" os.makedirs('/home/web/media/plumber_data', exist_ok=True) r_file_path = write_plumber_file( os.path.join( @@ -138,6 +150,7 @@ def test_write_plumber_file(self): os.remove(r_file_path) def test_manage_plumber_data(self): + """Test manage plumber data files.""" os.makedirs('/home/web/media/plumber_data', exist_ok=True) headers = ['data', 'count_total'] csv_data = [ @@ -149,5 +162,3 @@ def test_manage_plumber_data(self): self.assertTrue(os.path.exists(file_path)) remove_plumber_data(file_path) self.assertFalse(os.path.exists(file_path)) - - diff --git a/django_project/spw/tests/test_utils_process.py b/django_project/spw/tests/test_utils_process.py index c303340..84fbc19 100644 --- a/django_project/spw/tests/test_utils_process.py +++ b/django_project/spw/tests/test_utils_process.py @@ -1,3 +1,9 @@ +# coding=utf-8 +""" +Tomorrow Now GAP. + +.. note:: UnitTest for Process functions. +""" import os from django.test import TestCase import mock @@ -8,13 +14,16 @@ class TestUtilsProcess(TestCase): + """Test for process utility functions.""" @staticmethod def mocked_os_kill(self, *args, **kwargs): + """Mock os.kill method.""" return 1 @mock.patch('os.kill') def test_kill_process_by_pid(self, mocked_os): + """Test kill process by pid.""" mocked_os.side_effect = TestUtilsProcess.mocked_os_kill pid_path = '/tmp/test.pid' write_pidfile(26, pid_path) diff --git a/django_project/spw/utils/plumber.py b/django_project/spw/utils/plumber.py index 45e7674..f11c955 100644 --- a/django_project/spw/utils/plumber.py +++ b/django_project/spw/utils/plumber.py @@ -1,3 +1,9 @@ +# coding=utf-8 +""" +Tomorrow Now GAP. + +.. note:: Plumber functions. +""" import logging import traceback import os @@ -8,11 +14,13 @@ from uuid import uuid4 from core.settings.utils import absolute_path +from spw.models import RModel, RModelOutput from spw.utils.process import ( write_pidfile, kill_process_by_pid ) + logger = logging.getLogger(__name__) PLUMBER_PORT = os.getenv('PLUMBER_PORT', 8282) @@ -94,11 +102,28 @@ def kill_r_plumber_process(): kill_process_by_pid(pid_path) -def execute_spw_model(data_filepath): - api_name = f'api_spw' - request_url = f'http://plumber:{PLUMBER_PORT}/statistical/{api_name}' +def execute_spw_model( + data_filepath: str, lat: float = 0.0, lon: float = 0.0, + place_name: str = None): + """Execute SPW model given the data_filepath. + + :param data_filepath: CSV file path containing the data. + :type data_filepath: str + :param lat: Latitude of data query + :type lat: float + :param lon: Longitude of data query + :type lon: float + :param place_name: Place name (optional) + :type place_name: str + :return: dictionary of spw model output + :rtype: dict + """ + request_url = f'http://plumber:{PLUMBER_PORT}/spw/generic' data = { - 'filepath': data_filepath + 'filepath': data_filepath, + 'lat': lat, + 'lon': lon, + 'place_name': place_name if place_name else 'Default' } response = requests.post(request_url, data=data) content_type = response.headers['Content-Type'] @@ -117,7 +142,7 @@ def execute_spw_model(data_filepath): def write_plumber_file(file_path = None): - """Write R codes to plumber.R""" + """Write R codes to plumber.R.""" r_file_path = file_path if file_path else os.path.join( '/home/web/plumber_data', 'plumber.R' @@ -127,7 +152,35 @@ def write_plumber_file(file_path = None): ) with open(template_file, 'r') as f: lines = f.readlines() - # TODO: write SPW R Code here + model = RModel.objects.order_by('-version').first() + if model: + lines.append('\n') + lines.append('#* Generic Model\n') + lines.append('#* @post /spw/generic\n') + + lines.append('function(data_filename, lat, lon, place_name) {\n') + lines.append(f' metadata <- list(version={model.version}, ' + 'lat=lat, lon=lon, place_name=place_name, ' + 'generated_on=format(Sys.time(), ' + '"%Y-%m-%d %H:%M:%S %Z"))\n') + lines.append(' time_start <- Sys.time()\n') + code_lines = model.code.splitlines() + for code in code_lines: + lines.append(f' {code}\n') + lines.append(' metadata[\'total_execution_time\'] ' + '<- Sys.time() - time_start\n') + # add output + model_outputs = RModelOutput.objects.filter( + model=model + ) + output_list = ['metadata=metadata'] + for output in model_outputs: + output_list.append(f'{output.type}={output.variable_name}') + output_list_str = ','.join(output_list) + lines.append( + f' list({output_list_str})\n' + ) + lines.append('}\n') with open(r_file_path, 'w') as f: for line in lines: f.write(line) diff --git a/django_project/spw/utils/process.py b/django_project/spw/utils/process.py index aa97ab7..bb00285 100644 --- a/django_project/spw/utils/process.py +++ b/django_project/spw/utils/process.py @@ -1,4 +1,9 @@ -"""Utilities function for process management.""" +# coding=utf-8 +""" +Tomorrow Now GAP. + +.. note:: Process management functions. +""" import os import logging from signal import SIGKILL @@ -14,13 +19,13 @@ def write_pidfile(pid, pidfile_path): def read_pid_from_pidfile(pidfile_path): - """ Read the PID recorded in the named PID file. + """Read the PID recorded in the named PID file. - Read and return the numeric PID recorded as text in the named - PID file. If the PID file cannot be read, or if the content is - not a valid PID, return ``None``. + Read and return the numeric PID recorded as text in the named + PID file. If the PID file cannot be read, or if the content is + not a valid PID, return ``None``. - """ + """ pid = None try: pidfile = open(pidfile_path, 'r') @@ -48,7 +53,7 @@ def read_pid_from_pidfile(pidfile_path): def kill_process_by_pid(pidfile_path): - """Kill process by PID. """ + """Kill process by PID.""" plumber_pid = read_pid_from_pidfile(pidfile_path) logger.info(f'Killing pid {plumber_pid}') if plumber_pid: diff --git a/django_project/spw/views.py b/django_project/spw/views.py deleted file mode 100644 index 91ea44a..0000000 --- a/django_project/spw/views.py +++ /dev/null @@ -1,3 +0,0 @@ -from django.shortcuts import render - -# Create your views here. From 07ce80906f9b6ab3a4c71b2a1d6faaf01b61963a Mon Sep 17 00:00:00 2001 From: Danang Date: Thu, 11 Jul 2024 12:49:58 +0000 Subject: [PATCH 05/16] expose plumber port in devcontainer --- deployment/docker-compose.override.devcontainer.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/deployment/docker-compose.override.devcontainer.yml b/deployment/docker-compose.override.devcontainer.yml index 7037068..f5d7b4e 100644 --- a/deployment/docker-compose.override.devcontainer.yml +++ b/deployment/docker-compose.override.devcontainer.yml @@ -78,6 +78,8 @@ services: - ../django_project:/home/web/django_project - ./volumes/plumber_data:/home/web/plumber_data - ./volumes/media:/home/web/media + ports: + - "8282:8282" links: - db - redis From ef27abe1b3db2fc34f8155e85d7ae0b04f2f6c91 Mon Sep 17 00:00:00 2001 From: Danang Date: Thu, 11 Jul 2024 12:50:14 +0000 Subject: [PATCH 06/16] fix data_filename input parameter --- django_project/spw/utils/plumber.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/django_project/spw/utils/plumber.py b/django_project/spw/utils/plumber.py index f11c955..27a03ac 100644 --- a/django_project/spw/utils/plumber.py +++ b/django_project/spw/utils/plumber.py @@ -120,7 +120,7 @@ def execute_spw_model( """ request_url = f'http://plumber:{PLUMBER_PORT}/spw/generic' data = { - 'filepath': data_filepath, + 'data_filename': data_filepath, 'lat': lat, 'lon': lon, 'place_name': place_name if place_name else 'Default' From b91873b9424e1024ed25c82a5f5b93b16e852323 Mon Sep 17 00:00:00 2001 From: Danang Date: Thu, 18 Jul 2024 04:28:55 +0000 Subject: [PATCH 07/16] add reader class for Tomorrow io API --- .devcontainer/devcontainer.json | 2 +- deployment/.template.env | 3 + django_project/gap/admin.py | 3 +- django_project/gap/providers/__init__.py | 6 + django_project/gap/providers/cbam.py | 1 - django_project/gap/providers/tahmo.py | 2 +- django_project/gap/providers/tio.py | 386 ++++++++++++++++++ .../gap/tests/test_task_netcdf_sync.py | 5 +- django_project/gap/utils/netcdf.py | 43 +- django_project/gap/utils/reader.py | 57 ++- 10 files changed, 469 insertions(+), 39 deletions(-) create mode 100644 django_project/gap/providers/tio.py diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 56de72e..195d2f3 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -23,7 +23,7 @@ "shutdownAction": "stopCompose", "customizations": { "vscode": { - "extensions": ["ms-python.python", "ms-azuretools.vscode-docker"], + "extensions": ["ms-python.python", "ms-azuretools.vscode-docker", "njpwerner.autodocstring"], "settings": { "terminal.integrated.shell.linux": "/bin/bash", "python.pythonPath": "/usr/local/bin/python", diff --git a/deployment/.template.env b/deployment/.template.env index b259f43..19a56a6 100644 --- a/deployment/.template.env +++ b/deployment/.template.env @@ -42,3 +42,6 @@ SALIENT_AWS_ENDPOINT_URL= SALIENT_AWS_BUCKET_NAME=tomorrownow SALIENT_AWS_DIR_PREFIX= SALIENT_AWS_REGION_NAME= + +# API keys +TOMORROW_IO_API_KEY= diff --git a/django_project/gap/admin.py b/django_project/gap/admin.py index 518e434..3530e27 100644 --- a/django_project/gap/admin.py +++ b/django_project/gap/admin.py @@ -66,7 +66,8 @@ class DatasetAdmin(admin.ModelAdmin): """Dataset admin.""" list_display = ( - 'name', 'provider', 'type', 'time_step', 'store_type', + 'name', 'provider', 'type', 'time_step', + 'store_type', 'is_internal_use' ) diff --git a/django_project/gap/providers/__init__.py b/django_project/gap/providers/__init__.py index 613ad83..1d61db4 100644 --- a/django_project/gap/providers/__init__.py +++ b/django_project/gap/providers/__init__.py @@ -10,6 +10,10 @@ from gap.providers.cbam import CBAMNetCDFReader from gap.providers.salient import SalientNetCDFReader from gap.providers.tahmo import TahmoDatasetReader +from gap.providers.tio import ( + TomorrowIODatasetReader, + PROVIDER_NAME as TIO_PROVIDER +) def get_reader_from_dataset(dataset: Dataset): @@ -27,6 +31,8 @@ def get_reader_from_dataset(dataset: Dataset): return SalientNetCDFReader elif dataset.provider.name == 'Tahmo': return TahmoDatasetReader + elif dataset.provider.name == TIO_PROVIDER: + return TomorrowIODatasetReader else: raise TypeError( f'Unsupported provider name: {dataset.provider.name}' diff --git a/django_project/gap/providers/cbam.py b/django_project/gap/providers/cbam.py index 5a38958..aa83dee 100644 --- a/django_project/gap/providers/cbam.py +++ b/django_project/gap/providers/cbam.py @@ -30,7 +30,6 @@ ) - class CBAMNetCDFReader(BaseNetCDFReader): """Class to read NetCDF file from CBAM provider.""" diff --git a/django_project/gap/providers/tahmo.py b/django_project/gap/providers/tahmo.py index 95ea226..b4f5952 100644 --- a/django_project/gap/providers/tahmo.py +++ b/django_project/gap/providers/tahmo.py @@ -2,7 +2,7 @@ """ Tomorrow Now GAP. -.. note:: CBAM Data Reader +.. note:: Tahmo Data Reader """ from typing import List diff --git a/django_project/gap/providers/tio.py b/django_project/gap/providers/tio.py new file mode 100644 index 0000000..12d0258 --- /dev/null +++ b/django_project/gap/providers/tio.py @@ -0,0 +1,386 @@ +# coding=utf-8 +""" +Tomorrow Now GAP. + +.. note:: Tomorrow.io Data Reader +""" + +import os +import json +import logging +from typing import List +from datetime import datetime, timedelta +import pytz +import requests + +from gap.models import ( + Provider, + CastType, + DatasetType, + Dataset, + DatasetAttribute, + DatasetTimeStep, + DatasetStore +) +from gap.utils.reader import ( + DatasetVariable, + DatasetReaderInput, + DatasetTimelineValue, + DatasetReaderValue, + BaseDatasetReader +) + +logger = logging.getLogger(__name__) +PROVIDER_NAME = 'Tomorrow.io' +TIO_VARIABLES = { + 'rainAccumulationSum': DatasetVariable( + 'Rain Accumulation', + 'The accumulated amount of liquid rain', + 'mm', 'total_rainfall' + ), + 'evapotranspirationSum': DatasetVariable( + 'Evapotranspiration', + 'The combined processes by which water moves from ' + 'the earth\'s surface into the atmosphere', + 'mm', 'total_evapotranspiration_flux' + ) +} + + +class TomorrowIODatasetReader(BaseDatasetReader): + """Class to read data from Tomorrow.io API.""" + + LONG_TERM_NORMALS_TYPE = 'Long Term Normals (20 years)' + BASE_URL = 'https://api.tomorrow.io/v4' + + def __init__( + self, dataset: Dataset, attributes: List[DatasetAttribute], + location_input: DatasetReaderInput, start_date: datetime, + end_date: datetime) -> None: + """Initialize Dataset Reader.""" + super().__init__( + dataset, attributes, location_input, start_date, end_date) + self.errors = None + self.warnings = None + self.results = [] + + @classmethod + def init_provider(cls): + """Init Tomorrow.io provider and variables.""" + provider, _ = Provider.objects.get_or_create(name='Tomorrow.io') + dt_historical, _ = DatasetType.objects.get_or_create( + name='Climate Reanalysis', + defaults={ + 'type': CastType.HISTORICAL + } + ) + ds_historical, _ = Dataset.objects.get_or_create( + name=f'{provider.name} {dt_historical.name}', + provider=provider, + type=dt_historical, + defaults={ + 'time_step': DatasetTimeStep.DAILY, + 'store_type': DatasetStore.EXT_API, + 'is_internal_use': True + } + ) + dt_shorttermforecast, _ = DatasetType.objects.get_or_create( + name='Short-term Forecast', + defaults={ + 'type': CastType.FORECAST + } + ) + ds_forecast, _ = Dataset.objects.get_or_create( + name=f'{provider.name} {dt_shorttermforecast.name}', + provider=provider, + type=dt_shorttermforecast, + defaults={ + 'time_step': DatasetTimeStep.DAILY, + 'store_type': DatasetStore.EXT_API, + 'is_internal_use': True + } + ) + dt_ltn, _ = DatasetType.objects.get_or_create( + name=cls.LONG_TERM_NORMALS_TYPE, + defaults={ + 'type': CastType.HISTORICAL + } + ) + ds_ltn, _ = Dataset.objects.get_or_create( + name=f'{provider.name} {dt_ltn.name}', + provider=provider, + type=dt_ltn, + defaults={ + 'time_step': DatasetTimeStep.DAILY, + 'store_type': DatasetStore.EXT_API, + 'is_internal_use': True + } + ) + + for key, val in TIO_VARIABLES.items(): + attr = val.get_gap_attribute() + # add to dataset attribute + DatasetAttribute.objects.get_or_create( + dataset=ds_historical, + attribute=attr, + source=key, + source_unit=attr.unit + ) + DatasetAttribute.objects.get_or_create( + dataset=ds_forecast, + attribute=attr, + source=key, + source_unit=attr.unit + ) + DatasetAttribute.objects.get_or_create( + dataset=ds_ltn, + attribute=attr, + source=key, + source_unit=attr.unit + ) + + def _is_ltn_request(self): + """Check if the request is for Long Term Normal (LTN) request.""" + return ( + self.dataset.type.type == CastType.HISTORICAL and + self.dataset.type.name == self.LONG_TERM_NORMALS_TYPE + ) + + def _get_api_key(self): + """Retrieve API Key for Tomorrow.io.""" + return os.environ.get('TOMORROW_IO_API_KEY', '') + + def _get_headers(self): + """Get request headers.""" + return { + 'Accept-Encoding': 'gzip', + 'accept': 'application/json', + 'content-type': 'application/json' + } + + def _get_payload( + self, start_date: datetime, end_date: datetime, + is_ltn: bool = False): + """Get request payload. + + This method will normalize the start_date if + start_date and date is less than 24H. + + :param start_date: _description_ + :type start_date: datetime + :param end_date: _description_ + :type end_date: datetime + :param is_ltn: _description_, defaults to False + :type is_ltn: bool, optional + :return: _description_ + :rtype: _type_ + """ + start_dt = start_date + if (end_date - start_dt).total_seconds() < 24 * 3600: + start_dt = start_dt - timedelta(days=1) + payload = { + 'location': ( + f'{self.location_input.point.y}, ' + f'{self.location_input.point.x}' + ), + 'fields': [attr.source for attr in self.attributes], + 'timesteps': ['1d'], + 'units': 'metric', + } + if is_ltn: + payload.update({ + 'startDate': start_dt.strftime('%m-%d'), + 'endDate': end_date.strftime('%m-%d') + }) + else: + payload.update({ + 'startTime': ( + start_dt.isoformat( + timespec='seconds').replace("+00:00", "Z") + ), + 'endTime': ( + end_date.isoformat( + timespec='seconds').replace("+00:00", "Z") + ), + }) + return payload + + def read(self): + """Read values from Tomorrow.io API.""" + self.results = [] + self.errors = None + self.warnings = None + today = datetime.now(tz=pytz.UTC) + # handles: + # - start_date=end_date + # - d-7 should be using timelines API + # - historical/timelines may return the same day, + # choosing to use timelines + if self._is_ltn_request(): + self._read_ltn_data( + self.start_date, + self.end_date + ) + elif self.dataset.type.type == CastType.HISTORICAL: + max_date = today - timedelta(days=7) + if self.start_date < max_date: + self.read_historical_data( + self.start_date, + self.end_date if self.end_date < max_date else + max_date - timedelta(days=1) + ) + if self.end_date >= max_date: + # read from forecast data + self.read_forecast_data( + max(self.start_date, max_date), + self.end_date + ) + else: + self.read_forecast_data( + self.start_date if self.start_date >= today else today, + self.end_date + ) + + def get_data_values(self) -> DatasetReaderValue: + """Fetch data values from dataset. + + :return: Data Value. + :rtype: DatasetReaderValue + """ + if not self.is_success(): + logger.error(f'Tomorrow.io API errors: {len(self.errors)}') + logger.error(json.dumps(self.errors)) + return DatasetReaderValue(self.location_input.point, []) + if self.warnings: + logger.warn(f'Tomorrow.io API warnings: {len(self.warnings)}') + logger.warn(json.dumps(self.warnings)) + return DatasetReaderValue(self.location_input.point, self.results) + + def read_historical_data(self, start_date: datetime, end_date: datetime): + """Read historical data from dataset. + + :param start_date: start date for reading historical data + :type start_date: datetime + :param end_date: end date for reading historical data + :type end_date: datetime + """ + url = f'{self.BASE_URL}/historical?apikey={self._get_api_key()}' + payload = self._get_payload(start_date, end_date) + response = requests.post( + url, json=payload, headers=self._get_headers()) + if response.status_code != 200: + self._get_error_from_response(response) + return + self.results.extend(self._parse_result(response.json())) + + def read_forecast_data(self, start_date: datetime, end_date: datetime): + """Read forecast data from dataset. + + :param start_date: start date for reading forecast data + :type start_date: datetime + :param end_date: end date for reading forecast data + :type end_date: datetime + """ + url = f'{self.BASE_URL}/timelines?apikey={self._get_api_key()}' + payload = self._get_payload(start_date, end_date) + response = requests.post( + url, json=payload, headers=self._get_headers()) + if response.status_code != 200: + self._get_error_from_response(response) + return + self.results.extend(self._parse_result(response.json())) + + def _read_ltn_data(self, start_date: datetime, end_date: datetime): + """Read Long Term Normals (LTN) data. + + :param start_date: start date for reading data + :type start_date: datetime + :param end_date: end date for reading data + :type end_date: datetime + """ + url = ( + f'{self.BASE_URL}/historical/normals?apikey={self._get_api_key()}' + ) + payload = self._get_payload(start_date, end_date, is_ltn=True) + response = requests.post( + url, json=payload, headers=self._get_headers()) + if response.status_code != 200: + self._get_error_from_response(response) + return + self.results = self._parse_result(response.json()) + + def _get_error_from_response(self, response): + """Get error detail from Tomorrow.io API response. + + :param response: API response + :type response: response object + """ + error = "Unknown error!" + try: + result = response.json() + error = f"{result.get('type', '')} {result.get('message', '')}" + except Exception: + pass + if self.errors is None: + self.errors = [error] + else: + self.errors.append(error) + + def _get_result_datetime(self, interval: dict) -> datetime: + """Parse datetime from API response. + + :param interval: interval dictionary + :type interval: dict + :return: datetime + :rtype: datetime + """ + dt_str = interval.get('startTime') + if self._is_ltn_request(): + dt_str = interval.get('startDate') + dt_str = f'{self.start_date.year}-{dt_str}' + return datetime.fromisoformat(dt_str) + + def _parse_result(self, result: dict) -> List[DatasetTimelineValue]: + """Parse successful response from Tomorrow.io API. + + This method also checks for any warnings in the response. + :param result: response data + :type result: dict + :return: data values + :rtype: List[DatasetTimelineValue] + """ + value_list = [] + data = result.get('data', {}) + timelines = data.get('timelines', []) + intervals = ( + timelines[0].get('intervals', []) if len(timelines) > 0 else [] + ) + for interval in intervals: + start_dt = self._get_result_datetime(interval) + if start_dt < self.start_date or start_dt > self.end_date: + continue + values = interval.get('values') + value_data = {} + for attribute in self.attributes: + value_data[attribute.attribute.variable_name] = ( + values.get(attribute.source, None) + ) + value_list.append(DatasetTimelineValue( + start_dt, + value_data + )) + warnings = data.get('warnings', None) + if warnings: + if self.warnings is None: + self.warnings = warnings + else: + self.warnings.extend(warnings) + return value_list + + def is_success(self) -> bool: + """Check whether the API requests are successful. + + :return: True if there is no errors + :rtype: bool + """ + return self.errors is None diff --git a/django_project/gap/tests/test_task_netcdf_sync.py b/django_project/gap/tests/test_task_netcdf_sync.py index a2cef25..1ff1478 100644 --- a/django_project/gap/tests/test_task_netcdf_sync.py +++ b/django_project/gap/tests/test_task_netcdf_sync.py @@ -17,8 +17,9 @@ DataSourceFile, CastType ) +from gap.utils.reader import DatasetVariable from gap.utils.netcdf import ( - NetCDFProvider, NetCDFVariable, CBAM_VARIABLES, SALIENT_VARIABLES + NetCDFProvider, CBAM_VARIABLES, SALIENT_VARIABLES ) from gap.tasks.netcdf_sync import ( initialize_provider, @@ -66,7 +67,7 @@ def test_initialize_provider_variables(self): """Test initialize_provider_variables function.""" dataset = DatasetFactory(name=NetCDFProvider.CBAM) variables = { - 'temperature': NetCDFVariable( + 'temperature': DatasetVariable( 'Temperature', 'Temperature in Celsius', 'Celsius') } initialize_provider_variables(dataset, variables) diff --git a/django_project/gap/utils/netcdf.py b/django_project/gap/utils/netcdf.py index f930cd9..8dbf447 100644 --- a/django_project/gap/utils/netcdf.py +++ b/django_project/gap/utils/netcdf.py @@ -25,6 +25,7 @@ DataSourceFile ) from gap.utils.reader import ( + DatasetVariable, LocationInputType, BaseDatasetReader, DatasetReaderInput @@ -80,56 +81,46 @@ def get_s3_client_kwargs(cls, provider: Provider): return client_kwargs -class NetCDFVariable: - """Contains Variable from NetCDF File.""" - - def __init__(self, name, desc, unit=None) -> None: - """Initialize NetCDFVariable object.""" - self.name = name - self.desc = desc - self.unit = unit - - CBAM_VARIABLES = { - 'total_evapotranspiration_flux': NetCDFVariable( + 'total_evapotranspiration_flux': DatasetVariable( 'Total Evapotranspiration Flux', 'Total Evapotranspiration flux with respect to ' 'grass cover (0000:2300)', 'mm' ), - 'max_total_temperature': NetCDFVariable( + 'max_total_temperature': DatasetVariable( 'Max Total Temperature', 'Maximum temperature (0000:2300)', '°C' ), - 'max_night_temperature': NetCDFVariable( + 'max_night_temperature': DatasetVariable( 'Max Night Temperature', 'Maximum night-time temperature (1900:0500)', '°C' ), - 'average_solar_irradiance': NetCDFVariable( + 'average_solar_irradiance': DatasetVariable( 'Average Solar Irradiance', 'Average hourly solar irradiance reaching the surface (0600:1800)', 'MJ/sqm' ), - 'total_solar_irradiance': NetCDFVariable( + 'total_solar_irradiance': DatasetVariable( 'Total Solar Irradiance', 'Total solar irradiance reaching the surface (0000:2300)', 'MJ/sqm' ), - 'min_night_temperature': NetCDFVariable( + 'min_night_temperature': DatasetVariable( 'Min Night Temperature', 'Minimum night-time temperature (1900:0500)', '°C' ), - 'max_day_temperature': NetCDFVariable( + 'max_day_temperature': DatasetVariable( 'Max Day Temperature', 'Maximum day-time temperature (0600:1800)', '°C' ), - 'total_rainfall': NetCDFVariable( + 'total_rainfall': DatasetVariable( 'Total Rainfall', 'Total rainfall (0000:2300)', 'mm' ), - 'min_day_temperature': NetCDFVariable( + 'min_day_temperature': DatasetVariable( 'Min Day Temperature', 'Minumum day-time temperature (0600:1800)', '°C' ), - 'min_total_temperature': NetCDFVariable( + 'min_total_temperature': DatasetVariable( 'Min Total Temperature', 'Minumum temperature (0000:2300)', '°C' ), @@ -137,22 +128,22 @@ def __init__(self, name, desc, unit=None) -> None: SALIENT_VARIABLES = { - 'precip_clim': NetCDFVariable( + 'precip_clim': DatasetVariable( 'Precipitation Climatology', None, 'mm day-1' ), - 'temp_clim': NetCDFVariable( + 'temp_clim': DatasetVariable( 'Temperature Climatology', None, '°C' ), - 'precip_anom': NetCDFVariable( + 'precip_anom': DatasetVariable( 'Precipitation Anomaly', None, 'mm day-1' ), - 'temp_anom': NetCDFVariable( + 'temp_anom': DatasetVariable( 'Temperature Anomaly', None, '°C' ), - 'precip': NetCDFVariable( + 'precip': DatasetVariable( 'Precipitation', None, 'mm day-1' ), - 'temp': NetCDFVariable( + 'temp': DatasetVariable( 'Temperature', None, '°C' ), } diff --git a/django_project/gap/utils/reader.py b/django_project/gap/utils/reader.py index ae0abbe..c180f28 100644 --- a/django_project/gap/utils/reader.py +++ b/django_project/gap/utils/reader.py @@ -15,11 +15,57 @@ ) from gap.models import ( + CastType, + Attribute, + Unit, Dataset, DatasetAttribute ) +class DatasetVariable: + """Contains Variable from a Dataset.""" + + def __init__( + self, name, desc, unit, attr_var_name=None) -> None: + """Initialize variable object. + + :param name: Name of the variable + :type name: str + :param desc: Description of the variable + :type desc: str + :param unit: Unit + :type unit: str, optional + :param attr_var_name: Mapping to attribute name, defaults to None + :type attr_var_name: str, optional + """ + self.name = name + self.desc = desc + self.unit = unit + self.attr_var_name = attr_var_name + + def get_gap_attribute(self) -> Attribute: + """Get or create a mapping attribute. + + :return: Gap Attribute + :rtype: Attribute + """ + if self.attr_var_name is None: + return None + unit, _ = Unit.objects.get_or_create( + name=self.unit + ) + attr, _ = Attribute.objects.get_or_create( + variable_name=self.attr_var_name, + defaults={ + 'description': self.desc, + 'name': self.name, + 'unit': unit, + } + ) + return attr + + class DatasetTimelineValue: """Class representing data value for given datetime.""" @@ -238,18 +284,15 @@ def get_attributes_metadata(self) -> dict: def read(self): """Read values from dataset.""" today = datetime.now(tz=pytz.UTC) - if self.start_date < today: + if self.dataset.type.type == CastType.HISTORICAL: self.read_historical_data( self.start_date, self.end_date if self.end_date < today else today ) - if self.end_date > today: - self.read_forecast_data( - today, self.end_date - ) - else: + elif self.end_date >= today: self.read_forecast_data( - self.start_date, self.end_date + self.start_date if self.start_date >= today else today, + self.end_date ) def get_data_values(self) -> DatasetReaderValue: From 2a2d90a27bc2aaffde11688c11da7d73b3926ed5 Mon Sep 17 00:00:00 2001 From: Danang Date: Thu, 18 Jul 2024 08:55:16 +0000 Subject: [PATCH 08/16] add generator to calculate spw --- .../docker-compose.override.devcontainer.yml | 2 + .../docker-compose.override.template.yml | 3 + django_project/gap/providers/tio.py | 11 +- django_project/gap/utils/reader.py | 17 ++ django_project/spw/generator.py | 178 ++++++++++++++++++ 5 files changed, 208 insertions(+), 3 deletions(-) create mode 100644 django_project/spw/generator.py diff --git a/deployment/docker-compose.override.devcontainer.yml b/deployment/docker-compose.override.devcontainer.yml index f5d7b4e..5078bb8 100644 --- a/deployment/docker-compose.override.devcontainer.yml +++ b/deployment/docker-compose.override.devcontainer.yml @@ -22,6 +22,7 @@ services: - ../django_project:/home/web/django_project - ./volumes/static:/home/web/static - ./volumes/media:/home/web/media + - ./volumes/plumber_data:/home/web/plumber_data celery_beat: image: kartoza/${COMPOSE_PROJECT_NAME:-django_project}_dev @@ -48,6 +49,7 @@ services: - ../:/home/web/project - ./volumes/static:/home/web/static - ./volumes/media:/home/web/media + - ./volumes/plumber_data:/home/web/plumber_data links: - db - worker diff --git a/deployment/docker-compose.override.template.yml b/deployment/docker-compose.override.template.yml index 3ba4221..458a72a 100644 --- a/deployment/docker-compose.override.template.yml +++ b/deployment/docker-compose.override.template.yml @@ -16,6 +16,7 @@ services: - ../django_project:/home/web/django_project - ./volumes/static:/home/web/static - ./volumes/media:/home/web/media + - ./volumes/plumber_data:/home/web/plumber_data worker: build: @@ -25,6 +26,7 @@ services: - ../django_project:/home/web/django_project - ./volumes/static:/home/web/static - ./volumes/media:/home/web/media + - ./volumes/plumber_data:/home/web/plumber_data celery_beat: build: @@ -55,6 +57,7 @@ services: - ../django_project:/home/web/django_project - ./volumes/static:/home/web/static - ./volumes/media:/home/web/media + - ./volumes/plumber_data:/home/web/plumber_data ports: # for django test server - "5000:8080" diff --git a/django_project/gap/providers/tio.py b/django_project/gap/providers/tio.py index 12d0258..0884be1 100644 --- a/django_project/gap/providers/tio.py +++ b/django_project/gap/providers/tio.py @@ -215,7 +215,7 @@ def read(self): # - start_date=end_date # - d-7 should be using timelines API # - historical/timelines may return the same day, - # choosing to use timelines + # choosing to use historical if self._is_ltn_request(): self._read_ltn_data( self.start_date, @@ -227,12 +227,15 @@ def read(self): self.read_historical_data( self.start_date, self.end_date if self.end_date < max_date else - max_date - timedelta(days=1) + max_date ) if self.end_date >= max_date: # read from forecast data + start_dt = self.start_date + if max_date > start_dt: + start_dt = max_date + timedelta(days=1) self.read_forecast_data( - max(self.start_date, max_date), + start_dt, self.end_date ) else: @@ -338,6 +341,8 @@ def _get_result_datetime(self, interval: dict) -> datetime: if self._is_ltn_request(): dt_str = interval.get('startDate') dt_str = f'{self.start_date.year}-{dt_str}' + return datetime.strptime( + dt_str, '%Y-%m-%d').replace(tzinfo=pytz.utc) return datetime.fromisoformat(dt_str) def _parse_result(self, result: dict) -> List[DatasetTimelineValue]: diff --git a/django_project/gap/utils/reader.py b/django_project/gap/utils/reader.py index c180f28..eec8b7d 100644 --- a/django_project/gap/utils/reader.py +++ b/django_project/gap/utils/reader.py @@ -91,6 +91,23 @@ def _datetime_as_str(self): self.datetime, unit='s', timezone='UTC') return self.datetime.isoformat(timespec='seconds') + def get_datetime_repr(self, format: str) -> str: + """Return the representation of datetime in given format. + + :param format: Format like '%Y-%m-%d' + :type format: str + :return: String of datetime + :rtype: str + """ + dt = self.datetime + if isinstance(self.datetime, np.datetime64): + timestamp = ( + (dt - np.datetime64('1970-01-01T00:00:00')) / + np.timedelta64(1, 's') + ) + dt = datetime.fromtimestamp(timestamp, tz=pytz.UTC) + return dt.strftime(format) + def to_dict(self): """Convert into dict. diff --git a/django_project/spw/generator.py b/django_project/spw/generator.py new file mode 100644 index 0000000..137da1c --- /dev/null +++ b/django_project/spw/generator.py @@ -0,0 +1,178 @@ +# coding=utf-8 +""" +Tomorrow Now GAP. + +.. note:: SPW Generator +""" + +import logging +import pytz +from typing import List +from datetime import datetime, timedelta +from django.contrib.gis.geos import Point + +from gap.models import Dataset, DatasetAttribute, CastType +from gap.utils.reader import DatasetReaderInput +from gap.providers import TomorrowIODatasetReader, TIO_PROVIDER +from spw.utils.plumber import ( + execute_spw_model, + write_plumber_data, + remove_plumber_data +) + + +logger = logging.getLogger(__name__) +ATTRIBUTES = [ + 'total_evapotranspiration_flux', + 'total_rainfall' +] +COLUMNS = [ + 'month_day', + 'date', + 'evapotranspirationSum', + 'rainAccumulationSum', + 'LTNPET', + 'LTNPrecip' +] +VAR_MAPPING = { + 'total_evapotranspiration_flux': 'evapotranspirationSum', + 'total_rainfall': 'rainAccumulationSum' +} +LTN_MAPPING = { + 'total_evapotranspiration_flux': 'LTNPET', + 'total_rainfall': 'LTNPrecip' +} + + +class SPWOutput: + """Class to store the output from SPW model.""" + + def __init__( + self, point: Point, go_no_go: str, ltn_percentage: float, + cur_percentage: float) -> None: + """Initialize the SPWOutput class.""" + self.point = point + self.go_no_go = go_no_go + self.ltn_percentage = ltn_percentage + self.cur_percentage = cur_percentage + + +def calculate_from_point(point: Point) -> SPWOutput: + """Calculate SPW from given point. + + :param point: Location to be queried + :type point: Point + :return: Output with GoNoGo classification + :rtype: SPWOutput + """ + TomorrowIODatasetReader.init_provider() + location_input = DatasetReaderInput.from_point(point) + attrs = list(DatasetAttribute.objects.filter( + attribute__variable_name__in=ATTRIBUTES, + dataset__provider__name=TIO_PROVIDER + )) + today = datetime.now(tz=pytz.UTC) + start_dt = today - timedelta(days=37) + end_dt = today + timedelta(days=14) + print(f'Today: {today} - start_dt: {start_dt} - end_dt: {end_dt}') + historical_dict = _fetch_timelines_data( + location_input, attrs, start_dt, end_dt + ) + final_dict = _fetch_ltn_data( + location_input, attrs, start_dt, end_dt, historical_dict) + rows = [] + for month_day, val in final_dict.items(): + row = [month_day] + for c in COLUMNS: + if c == 'month_day': + continue + row.append(val.get(c, 0)) + rows.append(row) + data_file_path = write_plumber_data(COLUMNS, rows) + success, data = execute_spw_model( + data_file_path, point.y, point.x, 'gap_place') + remove_plumber_data(data_file_path) + output = None + if success: + output = SPWOutput( + point, data['goNoGo'], data['nearDaysLTNPercent'], + data['nearDaysCurPercent']) + return output + + +def _fetch_timelines_data( + location_input: DatasetReaderInput, attrs: List[DatasetAttribute], + start_dt: datetime, end_dt: datetime) -> dict: + """Fetch historical and forecast data for given location. + + :param location_input: Location for the query + :type location_input: DatasetReaderInput + :param attrs: List of attributes + :type attrs: List[DatasetAttribute] + :param start_dt: Start date time + :type start_dt: datetime + :param end_dt: End date time + :type end_dt: datetime + :return: Dictionary of month_day and results + :rtype: dict + """ + dataset = Dataset.objects.filter( + provider__name=TIO_PROVIDER, + type__type=CastType.HISTORICAL + ).exclude( + type__name=TomorrowIODatasetReader.LONG_TERM_NORMALS_TYPE + ).first() + reader = TomorrowIODatasetReader( + dataset, attrs, location_input, start_dt, end_dt) + reader.read() + values = reader.get_data_values() + results = {} + for val in values.results: + month_day = val.get_datetime_repr('%m-%d') + val_dict = val.to_dict()['values'] + data = { + 'date': val.get_datetime_repr('%Y-%m-%d') + } + for k, v in VAR_MAPPING.items(): + data[v] = val_dict.get(k, 0) + results[month_day] = data + return results + + +def _fetch_ltn_data( + location_input: DatasetReaderInput, attrs: List[DatasetAttribute], + start_dt: datetime, end_dt: datetime, + historical_dict: dict) -> dict: + """Fetch Long Term Normals data for given location. + + The resulting data will be merged into historical_dict. + + :param location_input: Location for the query + :type location_input: DatasetReaderInput + :param attrs: List of attributes + :type attrs: List[DatasetAttribute] + :param start_dt: Start date time + :type start_dt: datetime + :param end_dt: End date time + :type end_dt: datetime + :param historical_dict: Dictionary from historical data + :type historical_dict: dict + :return: Merged dictinoary with LTN data + :rtype: dict + """ + dataset = Dataset.objects.filter( + provider__name=TIO_PROVIDER, + type__type=CastType.HISTORICAL, + type__name=TomorrowIODatasetReader.LONG_TERM_NORMALS_TYPE + ).first() + reader = TomorrowIODatasetReader( + dataset, attrs, location_input, start_dt, end_dt) + reader.read() + values = reader.get_data_values() + for val in values.results: + month_day = val.get_datetime_repr('%m-%d') + if month_day in historical_dict: + data = historical_dict[month_day] + for k, v in LTN_MAPPING.items(): + data[v] = val.values.get(k, '') + return historical_dict From c5ec369055664e85533f04dcd52d3ca9afba59fd Mon Sep 17 00:00:00 2001 From: Danang Date: Thu, 18 Jul 2024 10:32:32 +0000 Subject: [PATCH 09/16] add test for tomorrow io dataset reader --- deployment/docker-compose.yml | 1 + .../gap/tests/providers/test_tio.py | 136 ++++++++++++++++++ 2 files changed, 137 insertions(+) create mode 100644 django_project/gap/tests/providers/test_tio.py diff --git a/deployment/docker-compose.yml b/deployment/docker-compose.yml index cd0b469..c55159e 100644 --- a/deployment/docker-compose.yml +++ b/deployment/docker-compose.yml @@ -102,3 +102,4 @@ services: links: - db - redis + - minio diff --git a/django_project/gap/tests/providers/test_tio.py b/django_project/gap/tests/providers/test_tio.py new file mode 100644 index 0000000..892b96f --- /dev/null +++ b/django_project/gap/tests/providers/test_tio.py @@ -0,0 +1,136 @@ +# coding=utf-8 +""" +Tomorrow Now GAP. + +.. note:: Unit tests for Tomorrow.io Dataset Reader. +""" + +from django.test import TestCase +from unittest.mock import patch +from datetime import datetime +import pytz +import requests_mock +from django.contrib.gis.geos import Point + +from gap.models import ( + Dataset, + DatasetAttribute +) +from gap.utils.reader import ( + DatasetReaderInput +) +from gap.providers.tio import TomorrowIODatasetReader + + +class TestTomorrowIODatasetReader(TestCase): + """Test class for Tomorrow io dataset reader.""" + + def setUp(self): + """Set test class.""" + TomorrowIODatasetReader.init_provider() + self.dataset = Dataset.objects.filter( + provider__name='Tomorrow.io' + ).first() + + attr = DatasetAttribute.objects.filter( + source='rainAccumulationSum', + dataset=self.dataset + ).first() + + self.attributes = [attr] + self.location_input = DatasetReaderInput.from_point( + Point(y=40.7128, x=-74.0060)) + self.start_date = datetime(2023, 7, 1, tzinfo=pytz.UTC) + self.end_date = datetime(2023, 7, 10, tzinfo=pytz.UTC) + + self.reader = TomorrowIODatasetReader( + self.dataset, self.attributes, self.location_input, + self.start_date, self.end_date + ) + + @requests_mock.Mocker() + @patch('os.environ.get', return_value='dummy_api_key') + def test_read_historical_data(self, mock_request, mock_env): + """Test read historical data.""" + mock_response = { + 'data': { + 'timelines': [{ + 'intervals': [ + { + 'startTime': '2023-07-01T00:00:00Z', + 'values': { + 'rainAccumulationSum': 5.0 + } + } + ] + }] + } + } + mock_request.post( + 'https://api.tomorrow.io/v4/historical?apikey=dummy_api_key', + json=mock_response, status_code=200 + ) + + self.reader.read_historical_data(self.start_date, self.end_date) + self.assertEqual(len(self.reader.results), 1) + self.assertEqual(self.reader.results[0].values['total_rainfall'], 5.0) + + @requests_mock.Mocker() + @patch('os.environ.get', return_value='dummy_api_key') + def test_read_forecast_data(self, mock_request, mock_env): + """Test read forecast data.""" + mock_response = { + 'data': { + 'timelines': [{ + 'intervals': [ + { + 'startTime': '2023-07-01T00:00:00Z', + 'values': { + 'rainAccumulationSum': 10.0 + } + } + ] + }] + } + } + mock_request.post( + 'https://api.tomorrow.io/v4/timelines?apikey=dummy_api_key', + json=mock_response, status_code=200 + ) + + self.reader.read_forecast_data(self.start_date, self.end_date) + self.assertEqual(len(self.reader.results), 1) + self.assertEqual( + self.reader.results[0].values['total_rainfall'], 10.0) + + @requests_mock.Mocker() + @patch('os.environ.get', return_value='dummy_api_key') + def test_read_ltn_data(self, mock_request, mock_env): + """Test read LTN data.""" + self.reader.dataset = Dataset.objects.filter( + provider__name='Tomorrow.io', + type__name=TomorrowIODatasetReader.LONG_TERM_NORMALS_TYPE + ).first() + mock_response = { + 'data': { + 'timelines': [{ + 'intervals': [ + { + 'startDate': '07-01', + 'values': { + 'rainAccumulationSum': 2.0 + } + } + ] + }] + } + } + mock_request.post( + 'https://api.tomorrow.io/v4/historical/' + 'normals?apikey=dummy_api_key', + json=mock_response, status_code=200 + ) + + self.reader._read_ltn_data(self.start_date, self.end_date) + self.assertEqual(len(self.reader.results), 1) + self.assertEqual(self.reader.results[0].values['total_rainfall'], 2.0) From 178e5d4ab66295cc0cf418c84550297c40fe92ad Mon Sep 17 00:00:00 2001 From: Danang Date: Thu, 18 Jul 2024 11:31:23 +0000 Subject: [PATCH 10/16] revert compose file --- deployment/docker-compose.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/deployment/docker-compose.yml b/deployment/docker-compose.yml index c55159e..cd0b469 100644 --- a/deployment/docker-compose.yml +++ b/deployment/docker-compose.yml @@ -102,4 +102,3 @@ services: links: - db - redis - - minio From 1dd275641c36a5783815f3265a509129719bc84e Mon Sep 17 00:00:00 2001 From: Danang Date: Fri, 19 Jul 2024 02:26:57 +0000 Subject: [PATCH 11/16] fix tomorrow io reader --- django_project/gap/providers/tio.py | 6 ++++++ django_project/gap_api/api_views/measurement.py | 16 +++++++++------- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/django_project/gap/providers/tio.py b/django_project/gap/providers/tio.py index 0884be1..67da675 100644 --- a/django_project/gap/providers/tio.py +++ b/django_project/gap/providers/tio.py @@ -12,6 +12,7 @@ from datetime import datetime, timedelta import pytz import requests +from django.contrib.gis.geos import Point from gap.models import ( Provider, @@ -23,6 +24,7 @@ DatasetStore ) from gap.utils.reader import ( + LocationInputType, DatasetVariable, DatasetReaderInput, DatasetTimelineValue, @@ -211,6 +213,8 @@ def read(self): self.errors = None self.warnings = None today = datetime.now(tz=pytz.UTC) + if self.location_input.type != LocationInputType.POINT: + return # handles: # - start_date=end_date # - d-7 should be using timelines API @@ -250,6 +254,8 @@ def get_data_values(self) -> DatasetReaderValue: :return: Data Value. :rtype: DatasetReaderValue """ + if self.location_input.type != LocationInputType.POINT: + return DatasetReaderValue(Point(x=0, y=0, srid=4326), []) if not self.is_success(): logger.error(f'Tomorrow.io API errors: {len(self.errors)}') logger.error(json.dumps(self.errors)) diff --git a/django_project/gap_api/api_views/measurement.py b/django_project/gap_api/api_views/measurement.py index 45fb87d..cd0d2ba 100644 --- a/django_project/gap_api/api_views/measurement.py +++ b/django_project/gap_api/api_views/measurement.py @@ -193,12 +193,12 @@ def get_response_data(self): 'results': [] } for reader in dataset_dict.values(): - data['metadata']['dataset'].append({ - 'provider': reader.dataset.provider.name, - 'attributes': reader.get_attributes_metadata() - }) values = self._read_data(reader).to_dict() if values: + data['metadata']['dataset'].append({ + 'provider': reader.dataset.provider.name, + 'attributes': reader.get_attributes_metadata() + }) data['results'].append(values) return data @@ -242,13 +242,15 @@ def get(self, request, *args, **kwargs): ) @swagger_auto_schema( - operation_id='get-measurement-by-polygon', + operation_id='get-measurement-by-geom', tags=[ApiTag.Measurement], manual_parameters=[ *api_parameters ], request_body=openapi.Schema( - description='Polygon (SRID 4326) in geojson format', + description=( + 'MultiPolygon or MultiPoint (SRID 4326) in geojson format' + ), type=openapi.TYPE_STRING ), responses={ @@ -263,7 +265,7 @@ def get(self, request, *args, **kwargs): } ) def post(self, request, *args, **kwargs): - """Fetch measurement data by polygon.""" + """Fetch measurement data by polygon/points.""" return Response( status=200, data=self.get_response_data() From 70b1455327077aeb800abe78a3bc26e8d98d343d Mon Sep 17 00:00:00 2001 From: Danang Date: Fri, 19 Jul 2024 08:50:59 +0000 Subject: [PATCH 12/16] remove rabbitmq reference --- deployment/.template.env | 1 - deployment/docker-compose.test.yml | 1 - 2 files changed, 2 deletions(-) diff --git a/deployment/.template.env b/deployment/.template.env index e8fb497..da4a172 100644 --- a/deployment/.template.env +++ b/deployment/.template.env @@ -16,7 +16,6 @@ DATABASE_PORT=5432 REDIS_HOST=redis REDIS_PASSWORD=redis_password -RABBITMQ_HOST=rabbitmq SENTRY_DSN= INITIAL_FIXTURES= PLUMBER_PORT=8282 diff --git a/deployment/docker-compose.test.yml b/deployment/docker-compose.test.yml index c87464c..8e8e223 100644 --- a/deployment/docker-compose.test.yml +++ b/deployment/docker-compose.test.yml @@ -28,7 +28,6 @@ services: - DATABASE_USERNAME=docker - DATABASE_PASSWORD=docker - DATABASE_HOST=db - - RABBITMQ_HOST=rabbitmq - DJANGO_SETTINGS_MODULE=core.settings.test - SECRET_KEY=SECRET_KEY From 8eedce1fe65f752450b04e24774a49fd51a7eaaf Mon Sep 17 00:00:00 2001 From: Danang Date: Sat, 20 Jul 2024 13:42:21 +0000 Subject: [PATCH 13/16] fix plumber data using minio --- django_project/spw/admin.py | 9 ++- django_project/spw/generator.py | 61 +++++++++++--- django_project/spw/migrations/0001_initial.py | 18 ++++- django_project/spw/models.py | 50 ++++++++++++ django_project/spw/tests/test_generator.py | 79 +++++++++++++++++++ django_project/spw/tests/test_plumber.py | 9 ++- django_project/spw/utils/plumber.py | 17 ++-- 7 files changed, 222 insertions(+), 21 deletions(-) create mode 100644 django_project/spw/tests/test_generator.py diff --git a/django_project/spw/admin.py b/django_project/spw/admin.py index 751b85d..4c24eac 100644 --- a/django_project/spw/admin.py +++ b/django_project/spw/admin.py @@ -6,7 +6,7 @@ """ from django.contrib import admin, messages -from spw.models import RModel, RModelOutput +from spw.models import RModel, RModelOutput, RModelExecutionLog from spw.tasks import start_plumber_process @@ -35,3 +35,10 @@ class RModelAdmin(admin.ModelAdmin): list_display = ('name', 'version', 'created_on') inlines = [RModelOutputInline] actions = [restart_plumber_process] + + +@admin.register(RModelExecutionLog) +class RModelExecutionLogAdmin(admin.ModelAdmin): + """Admin page for RModelExecutionLog.""" + + list_display = ('model', 'start_date_time', 'status') diff --git a/django_project/spw/generator.py b/django_project/spw/generator.py index 137da1c..519c31e 100644 --- a/django_project/spw/generator.py +++ b/django_project/spw/generator.py @@ -6,14 +6,18 @@ """ import logging +import os import pytz from typing import List +from types import SimpleNamespace from datetime import datetime, timedelta +from django.utils import timezone from django.contrib.gis.geos import Point from gap.models import Dataset, DatasetAttribute, CastType from gap.utils.reader import DatasetReaderInput from gap.providers import TomorrowIODatasetReader, TIO_PROVIDER +from spw.models import RModel, RModelExecutionLog, RModelExecutionStatus from spw.utils.plumber import ( execute_spw_model, write_plumber_data, @@ -48,13 +52,18 @@ class SPWOutput: """Class to store the output from SPW model.""" def __init__( - self, point: Point, go_no_go: str, ltn_percentage: float, - cur_percentage: float) -> None: + self, point: Point, input_data: dict) -> None: """Initialize the SPWOutput class.""" self.point = point - self.go_no_go = go_no_go - self.ltn_percentage = ltn_percentage - self.cur_percentage = cur_percentage + data = {} + for key, val in input_data.items(): + if key == 'metadata': + continue + if isinstance(val, list) and len(val) == 1: + data[key] = val[0] + else: + data[key] = val + self.data = SimpleNamespace(**data) def calculate_from_point(point: Point) -> SPWOutput: @@ -88,15 +97,45 @@ def calculate_from_point(point: Point) -> SPWOutput: continue row.append(val.get(c, 0)) rows.append(row) - data_file_path = write_plumber_data(COLUMNS, rows) - success, data = execute_spw_model( - data_file_path, point.y, point.x, 'gap_place') + return _execute_spw_model(rows, point) + + +def _execute_spw_model(rows: List, point: Point) -> SPWOutput: + """Execute SPW Model and return the output. + + :param rows: Data rows + :type rows: List + :param point: location input + :type point: Point + :return: SPW Model output + :rtype: SPWOutput + """ + model = RModel.objects.order_by('-version').first() + data_file_path = write_plumber_data(COLUMNS, rows, dir_path='/tmp') + filename = os.path.basename(data_file_path) + execution_log = RModelExecutionLog.objects.create( + model=model, + location_input=point, + start_date_time=timezone.now() + ) + with open(data_file_path, 'rb') as output_file: + execution_log.input_file.save(filename, output_file) remove_plumber_data(data_file_path) + success, data = execute_spw_model( + execution_log.input_file.url, filename, point.y, point.x, 'gap_place') + if isinstance(data, dict): + execution_log.output = data + else: + execution_log.errors = data output = None if success: - output = SPWOutput( - point, data['goNoGo'], data['nearDaysLTNPercent'], - data['nearDaysCurPercent']) + output = SPWOutput(point, data) + execution_log.status = ( + RModelExecutionStatus.SUCCESS if success else + RModelExecutionStatus.FAILED + ) + execution_log.end_date_time = timezone.now() + execution_log.save() return output diff --git a/django_project/spw/migrations/0001_initial.py b/django_project/spw/migrations/0001_initial.py index 7c0ec28..ec013cf 100644 --- a/django_project/spw/migrations/0001_initial.py +++ b/django_project/spw/migrations/0001_initial.py @@ -1,8 +1,10 @@ -# Generated by Django 4.2.7 on 2024-07-11 07:16 +# Generated by Django 4.2.7 on 2024-07-20 12:39 from django.conf import settings +import django.contrib.gis.db.models.fields from django.db import migrations, models import django.db.models.deletion +import spw.models class Migration(migrations.Migration): @@ -37,4 +39,18 @@ class Migration(migrations.Migration): ('model', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='spw.rmodel')), ], ), + migrations.CreateModel( + name='RModelExecutionLog', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('location_input', django.contrib.gis.db.models.fields.GeometryField(blank=True, null=True, srid=4326)), + ('input_file', models.FileField(blank=True, null=True, upload_to=spw.models.r_model_input_file_path)), + ('output', models.JSONField(blank=True, default=dict, null=True)), + ('start_date_time', models.DateTimeField(blank=True, null=True)), + ('end_date_time', models.DateTimeField(blank=True, null=True)), + ('status', models.CharField(choices=[('RUNNING', 'RUNNING'), ('SUCCESS', 'SUCCESS'), ('FAILED', 'FAILED')], default='RUNNING', max_length=512)), + ('errors', models.TextField(blank=True, null=True)), + ('model', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='spw.rmodel')), + ], + ), ] diff --git a/django_project/spw/models.py b/django_project/spw/models.py index bccc3b1..c1b0bba 100644 --- a/django_project/spw/models.py +++ b/django_project/spw/models.py @@ -8,11 +8,18 @@ from django.contrib.auth import get_user_model from django.dispatch import receiver from django.db.models.signals import post_save, post_delete +from django.contrib.gis.db import models as gis_models +from django.conf import settings User = get_user_model() +def r_model_input_file_path(instance, filename): + """Return upload path for R Model input files.""" + return f'{settings.STORAGE_DIR_PREFIX}r_input/{filename}' + + class RModel(models.Model): """Model that stores R code.""" @@ -85,3 +92,46 @@ def rmodel_post_delete(sender, instance: RModel, ) # respawn Plumber API start_plumber_process.apply_async(queue='plumber') + + +class RModelExecutionStatus: + """Status of R Model execution.""" + + RUNNING = 'RUNNING' + SUCCESS = 'SUCCESS' + FAILED = 'FAILED' + + +class RModelExecutionLog(models.Model): + """Model that stores the execution log.""" + + model = models.ForeignKey(RModel, on_delete=models.CASCADE) + location_input = gis_models.GeometryField( + srid=4326, null=True, blank=True + ) + input_file = models.FileField( + upload_to=r_model_input_file_path, + null=True, blank=True + ) + output = models.JSONField( + default=dict, + null=True, blank=True + ) + start_date_time = models.DateTimeField( + blank=True, null=True + ) + end_date_time = models.DateTimeField( + blank=True, null=True + ) + status = models.CharField( + default=RModelExecutionStatus.RUNNING, + choices=( + (RModelExecutionStatus.RUNNING, RModelExecutionStatus.RUNNING), + (RModelExecutionStatus.SUCCESS, RModelExecutionStatus.SUCCESS), + (RModelExecutionStatus.FAILED, RModelExecutionStatus.FAILED), + ), + max_length=512 + ) + errors = models.TextField( + blank=True, null=True + ) diff --git a/django_project/spw/tests/test_generator.py b/django_project/spw/tests/test_generator.py new file mode 100644 index 0000000..788b0dd --- /dev/null +++ b/django_project/spw/tests/test_generator.py @@ -0,0 +1,79 @@ +# coding=utf-8 +""" +Tomorrow Now GAP. + +.. note:: UnitTest for Plumber functions. +""" +from django.test import TestCase +from django.contrib.gis.geos import Point + +from spw.generator import SPWOutput + + +class TestSPWOutput(TestCase): + """Unit test for SPWOutput class.""" + + def setUp(self): + """Set the test class.""" + self.point = Point(y=1.0, x=1.0) + self.input_data = { + 'temperature': [20.5], + 'pressure': [101.3], + 'humidity': 45, + 'metadata': 'some metadata' + } + self.expected_data = { + 'temperature': 20.5, + 'pressure': 101.3, + 'humidity': 45 + } + + def test_initialization(self): + """Test initialization of SPWOutput class.""" + spw_output = SPWOutput(self.point, self.input_data) + + self.assertEqual(spw_output.point, self.point) + self.assertEqual( + spw_output.data.temperature, self.expected_data['temperature']) + self.assertEqual( + spw_output.data.pressure, self.expected_data['pressure']) + self.assertEqual( + spw_output.data.humidity, self.expected_data['humidity']) + + def test_input_data_without_metadata(self): + """Test initialization of SPWOutput class without metadata.""" + input_data = { + 'temperature': [20.5], + 'pressure': [101.3], + 'humidity': 45 + } + spw_output = SPWOutput(self.point, input_data) + + self.assertEqual( + spw_output.data.temperature, input_data['temperature'][0]) + self.assertEqual(spw_output.data.pressure, input_data['pressure'][0]) + self.assertEqual(spw_output.data.humidity, input_data['humidity']) + + def test_input_data_with_single_element_list(self): + """Test initialization of SPWOutput class for single element.""" + input_data = { + 'temperature': [20.5], + 'humidity': 45 + } + spw_output = SPWOutput(self.point, input_data) + + self.assertEqual( + spw_output.data.temperature, input_data['temperature'][0]) + self.assertEqual(spw_output.data.humidity, input_data['humidity']) + + def test_input_data_with_multiple_element_list(self): + """Test initialization of SPWOutput class for list.""" + input_data = { + 'temperature': [20.5, 21.0], + 'humidity': 45 + } + spw_output = SPWOutput(self.point, input_data) + + self.assertEqual( + spw_output.data.temperature, input_data['temperature']) + self.assertEqual(spw_output.data.humidity, input_data['humidity']) diff --git a/django_project/spw/tests/test_plumber.py b/django_project/spw/tests/test_plumber.py index be301bc..98f1a37 100644 --- a/django_project/spw/tests/test_plumber.py +++ b/django_project/spw/tests/test_plumber.py @@ -107,7 +107,8 @@ def test_execute_spw_model(self): headers={'Content-Type': 'application/json'}, status_code=200 ) - is_success, response = execute_spw_model(data_filepath, 0.0, 0.0) + is_success, response = execute_spw_model( + data_filepath, 'test.csv', 0.0, 0.0) self.assertTrue(is_success) self.assertEqual(response, json_response) with requests_mock.Mocker() as m: @@ -118,7 +119,8 @@ def test_execute_spw_model(self): headers={'Content-Type': 'application/json'}, status_code=500 ) - is_success, response = execute_spw_model(data_filepath, 0.0, 0.0) + is_success, response = execute_spw_model( + data_filepath, 'test.csv', 0.0, 0.0) self.assertFalse(is_success) self.assertEqual('Internal server error', response['error']) with requests_mock.Mocker() as m: @@ -129,7 +131,8 @@ def test_execute_spw_model(self): headers={'Content-Type': 'text/plain'}, status_code=500 ) - is_success, response = execute_spw_model(data_filepath) + is_success, response = execute_spw_model( + data_filepath, 'test.csv') self.assertFalse(is_success) self.assertEqual('Invalid response content type: text/plain', response) diff --git a/django_project/spw/utils/plumber.py b/django_project/spw/utils/plumber.py index 27a03ac..1c34252 100644 --- a/django_project/spw/utils/plumber.py +++ b/django_project/spw/utils/plumber.py @@ -103,12 +103,14 @@ def kill_r_plumber_process(): def execute_spw_model( - data_filepath: str, lat: float = 0.0, lon: float = 0.0, + data_url: str, filename: str, lat: float = 0.0, lon: float = 0.0, place_name: str = None): """Execute SPW model given the data_filepath. - :param data_filepath: CSV file path containing the data. - :type data_filepath: str + :param data_url: CSV file URL containing the data. + :type data_url: str + :param filename: CSV filename + :type filename: str :param lat: Latitude of data query :type lat: float :param lon: Longitude of data query @@ -120,7 +122,8 @@ def execute_spw_model( """ request_url = f'http://plumber:{PLUMBER_PORT}/spw/generic' data = { - 'data_filename': data_filepath, + 'data_url': data_url, + 'filename': filename, 'lat': lat, 'lon': lon, 'place_name': place_name if place_name else 'Default' @@ -158,17 +161,21 @@ def write_plumber_file(file_path = None): lines.append('#* Generic Model\n') lines.append('#* @post /spw/generic\n') - lines.append('function(data_filename, lat, lon, place_name) {\n') + lines.append('function(data_url, filename, lat, lon, place_name) {\n') lines.append(f' metadata <- list(version={model.version}, ' 'lat=lat, lon=lon, place_name=place_name, ' 'generated_on=format(Sys.time(), ' '"%Y-%m-%d %H:%M:%S %Z"))\n') lines.append(' time_start <- Sys.time()\n') + lines.append( + ' data_filename <- paste(\'/tmp/\', filename, sep="")\n') + lines.append(' download.file(data_url, data_filename)\n') code_lines = model.code.splitlines() for code in code_lines: lines.append(f' {code}\n') lines.append(' metadata[\'total_execution_time\'] ' '<- Sys.time() - time_start\n') + lines.append('unlink(data_filename)\n') # add output model_outputs = RModelOutput.objects.filter( model=model From 0b78f18eaac29b127d9a291f2bf53e39ad7db20d Mon Sep 17 00:00:00 2001 From: Danang Date: Sat, 20 Jul 2024 16:00:32 +0000 Subject: [PATCH 14/16] add unit tests --- .../gap/tests/providers/test_tio.py | 155 +++++++++++++++++- django_project/spw/factories.py | 64 ++++++++ django_project/spw/tests/test_generator.py | 107 +++++++++++- django_project/spw/tests/test_plumber.py | 11 +- 4 files changed, 328 insertions(+), 9 deletions(-) create mode 100644 django_project/spw/factories.py diff --git a/django_project/gap/tests/providers/test_tio.py b/django_project/gap/tests/providers/test_tio.py index 892b96f..710bdb4 100644 --- a/django_project/gap/tests/providers/test_tio.py +++ b/django_project/gap/tests/providers/test_tio.py @@ -7,14 +7,16 @@ from django.test import TestCase from unittest.mock import patch -from datetime import datetime +from datetime import datetime, timedelta import pytz import requests_mock from django.contrib.gis.geos import Point from gap.models import ( Dataset, - DatasetAttribute + DatasetAttribute, + DatasetType, + CastType ) from gap.utils.reader import ( DatasetReaderInput @@ -41,7 +43,9 @@ def setUp(self): self.location_input = DatasetReaderInput.from_point( Point(y=40.7128, x=-74.0060)) self.start_date = datetime(2023, 7, 1, tzinfo=pytz.UTC) + self.start_date.replace(microsecond=0) self.end_date = datetime(2023, 7, 10, tzinfo=pytz.UTC) + self.end_date.replace(microsecond=0) self.reader = TomorrowIODatasetReader( self.dataset, self.attributes, self.location_input, @@ -74,6 +78,21 @@ def test_read_historical_data(self, mock_request, mock_env): self.reader.read_historical_data(self.start_date, self.end_date) self.assertEqual(len(self.reader.results), 1) self.assertEqual(self.reader.results[0].values['total_rainfall'], 5.0) + # mock 400 error + mock_response = { + 'type': 'Unknown', + 'message': 'Test error' + } + self.reader.errors = None + self.reader.results = [] + mock_request.post( + 'https://api.tomorrow.io/v4/historical?apikey=dummy_api_key', + json=mock_response, status_code=400 + ) + + self.reader.read_historical_data(self.start_date, self.end_date) + self.assertEqual(len(self.reader.results), 0) + self.assertEqual(len(self.reader.errors), 1) @requests_mock.Mocker() @patch('os.environ.get', return_value='dummy_api_key') @@ -90,7 +109,8 @@ def test_read_forecast_data(self, mock_request, mock_env): } } ] - }] + }], + 'warnings': ['test-warnings'] } } mock_request.post( @@ -102,6 +122,30 @@ def test_read_forecast_data(self, mock_request, mock_env): self.assertEqual(len(self.reader.results), 1) self.assertEqual( self.reader.results[0].values['total_rainfall'], 10.0) + self.assertEqual(len(self.reader.warnings), 1) + # test get_data_values + reader_value = self.reader.get_data_values() + self.assertEqual(reader_value.location, self.location_input.point) + self.assertEqual(len(reader_value.results), 1) + # mock 400 error + mock_response = { + 'type': 'Unknown', + 'message': 'Test error' + } + self.reader.errors = [] + self.reader.results = [] + mock_request.post( + 'https://api.tomorrow.io/v4/timelines?apikey=dummy_api_key', + json=mock_response, status_code=400 + ) + + self.reader.read_forecast_data(self.start_date, self.end_date) + self.assertEqual(len(self.reader.results), 0) + self.assertEqual(len(self.reader.errors), 1) + # test get_data_values + reader_value = self.reader.get_data_values() + self.assertEqual(reader_value.location, self.location_input.point) + self.assertEqual(len(reader_value.results), 0) @requests_mock.Mocker() @patch('os.environ.get', return_value='dummy_api_key') @@ -134,3 +178,108 @@ def test_read_ltn_data(self, mock_request, mock_env): self.reader._read_ltn_data(self.start_date, self.end_date) self.assertEqual(len(self.reader.results), 1) self.assertEqual(self.reader.results[0].values['total_rainfall'], 2.0) + # mock 400 error + mock_response = { + 'type': 'Unknown', + 'message': 'Test error' + } + self.reader.errors = [] + self.reader.results = [] + mock_request.post( + 'https://api.tomorrow.io/v4/historical/' + 'normals?apikey=dummy_api_key', + json=mock_response, status_code=400 + ) + + self.reader._read_ltn_data(self.start_date, self.end_date) + self.assertEqual(len(self.reader.results), 0) + self.assertEqual(len(self.reader.errors), 1) + + @patch.object(TomorrowIODatasetReader, 'read_historical_data') + @patch.object(TomorrowIODatasetReader, 'read_forecast_data') + @patch.object(TomorrowIODatasetReader, '_read_ltn_data') + def test_read_ltn_request( + self, mock_read_ltn_data, mock_read_forecast_data, + mock_read_historical_data): + """Test read() method that calls ltn request.""" + dt_now = datetime.now(tz=pytz.UTC) + dt_now.replace(microsecond=0) + self.reader.start_date = dt_now - timedelta(days=10) + self.reader.end_date = dt_now + self.reader.dataset.type = DatasetType( + type=CastType.HISTORICAL, + name=TomorrowIODatasetReader.LONG_TERM_NORMALS_TYPE) + + # Call the read method + with patch('gap.providers.tio.datetime') as mock_datetime: + mock_datetime.now.return_value = dt_now + self.reader.read() + + # Check that the correct method is called for LTN + mock_read_ltn_data.assert_called_once() + self.assertEqual( + mock_read_ltn_data.call_args[0][0], self.reader.start_date) + self.assertEqual( + mock_read_ltn_data.call_args[0][1], self.reader.end_date) + mock_read_historical_data.assert_not_called() + mock_read_forecast_data.assert_not_called() + + @patch.object(TomorrowIODatasetReader, 'read_historical_data') + @patch.object(TomorrowIODatasetReader, 'read_forecast_data') + @patch.object(TomorrowIODatasetReader, '_read_ltn_data') + def test_read_historical_and_forecast_data( + self, mock_read_ltn_data, mock_read_forecast_data, + mock_read_historical_data): + """Test read() method that calls historical and forecast.""" + dt_now = datetime.now(tz=pytz.UTC) + dt_now.replace(microsecond=0) + self.reader.dataset.type = DatasetType( + type=CastType.HISTORICAL, name='TestHistorical') + self.reader.start_date = dt_now - timedelta(days=10) + self.reader.end_date = dt_now # Ensure end_date is after max_date + + # Call the read method + with patch('gap.providers.tio.datetime') as mock_datetime: + mock_datetime.now.return_value = dt_now + self.reader.read() + + # Check that the correct methods are called + max_date = dt_now - timedelta(days=7) + mock_read_historical_data.assert_called_once() + self.assertEqual( + mock_read_historical_data.call_args[0][0], self.reader.start_date) + self.assertEqual(mock_read_historical_data.call_args[0][1], max_date) + mock_read_forecast_data.assert_called_once() + self.assertEqual( + mock_read_forecast_data.call_args[0][0], + max_date + timedelta(days=1)) + self.assertEqual( + mock_read_forecast_data.call_args[0][1], self.reader.end_date) + mock_read_ltn_data.assert_not_called() + + @patch.object(TomorrowIODatasetReader, 'read_historical_data') + @patch.object(TomorrowIODatasetReader, 'read_forecast_data') + @patch.object(TomorrowIODatasetReader, '_read_ltn_data') + def test_read_forecast_data_only( + self, mock_read_ltn_data, mock_read_forecast_data, + mock_read_historical_data): + """Test read() method that calls forecast only.""" + dt_now = datetime.now(tz=pytz.UTC) + dt_now.replace(microsecond=0) + self.reader.end_date = dt_now + self.reader.dataset.type = DatasetType( + type=CastType.FORECAST, name='TestForecast') + self.reader.start_date = dt_now - timedelta(days=1) + + # Call the read method + with patch('gap.providers.tio.datetime') as mock_datetime: + mock_datetime.now.return_value = dt_now + self.reader.read() + + # Check that the correct method is called + mock_read_forecast_data.assert_called_once() + self.assertEqual(mock_read_forecast_data.call_args[0][0], dt_now) + self.assertEqual( + mock_read_forecast_data.call_args[0][1], self.reader.end_date) + mock_read_historical_data.assert_not_called() + mock_read_ltn_data.assert_not_called() diff --git a/django_project/spw/factories.py b/django_project/spw/factories.py new file mode 100644 index 0000000..7682e12 --- /dev/null +++ b/django_project/spw/factories.py @@ -0,0 +1,64 @@ +# coding=utf-8 +""" +Tomorrow Now GAP. + +.. note:: Factory classes for Models +""" +import factory +from django.contrib.gis.geos import Point +from django.db.models.signals import post_save, post_delete + +from core.factories import BaseMetaFactory, BaseFactory, UserF +from spw.models import ( + RModel, + RModelOutput, + RModelExecutionLog, + RModelOutputType +) + + +@factory.django.mute_signals(post_save, post_delete) +class RModelFactory( + BaseFactory[RModel], metaclass=BaseMetaFactory[RModel] +): + """Factory class for RModel model.""" + + class Meta: # noqa + model = RModel + + name = factory.Faker('company') + version = 1.0 + code = 'd <- 100 + 2' + notes = factory.Faker('text') + created_on = factory.Faker('date_time') + updated_on = factory.Faker('date_time') + created_by = factory.SubFactory(UserF) + updated_by = factory.SubFactory(UserF) + + +class RModelOutputFactory( + BaseFactory[RModelOutput], metaclass=BaseMetaFactory[RModelOutput] +): + """Factory class for RModelOutput.""" + + class Meta: # noqa + model = RModelOutput + + model = factory.SubFactory(RModelFactory) + type = RModelOutputType.GO_NO_GO_STATUS + variable_name = RModelOutputType.GO_NO_GO_STATUS + + +class RModelExecutionLogFactory( + BaseFactory[RModelExecutionLog], + metaclass=BaseMetaFactory[RModelExecutionLog] +): + """Factory class for RModelExecutionLog.""" + + class Meta: # noqa + model = RModelExecutionLog + + model = factory.SubFactory(RModelFactory) + location_input = factory.LazyFunction(lambda: Point(0, 0)) + start_date_time = factory.Faker('date_time') + end_date_time = factory.Faker('date_time') diff --git a/django_project/spw/tests/test_generator.py b/django_project/spw/tests/test_generator.py index 788b0dd..48ce662 100644 --- a/django_project/spw/tests/test_generator.py +++ b/django_project/spw/tests/test_generator.py @@ -4,10 +4,29 @@ .. note:: UnitTest for Plumber functions. """ +from datetime import datetime, timedelta +import pytz +from unittest.mock import patch, MagicMock from django.test import TestCase from django.contrib.gis.geos import Point -from spw.generator import SPWOutput +from gap.models import ( + DatasetAttribute, + Dataset +) +from gap.utils.reader import ( + DatasetReaderInput, + DatasetReaderValue, + DatasetTimelineValue +) +from gap.providers.tio import ( + TomorrowIODatasetReader +) +from spw.generator import ( + SPWOutput, + _fetch_timelines_data, + _fetch_ltn_data +) class TestSPWOutput(TestCase): @@ -77,3 +96,89 @@ def test_input_data_with_multiple_element_list(self): self.assertEqual( spw_output.data.temperature, input_data['temperature']) self.assertEqual(spw_output.data.humidity, input_data['humidity']) + + +class TestSPWFetchDataFunctions(TestCase): + """Test SPW fetch data functions.""" + + def setUp(self): + """Set test fetch data functions.""" + TomorrowIODatasetReader.init_provider() + self.dataset = Dataset.objects.filter( + provider__name='Tomorrow.io' + ).first() + self.location_input = DatasetReaderInput.from_point(Point(0, 0)) + attr1 = DatasetAttribute.objects.filter( + source='rainAccumulationSum', + dataset=self.dataset + ).first() + attr2 = DatasetAttribute.objects.filter( + source='evapotranspirationSum', + dataset=self.dataset + ).first() + self.attrs = [attr1, attr2] + self.dt_now = datetime.now(tz=pytz.UTC).replace(microsecond=0) + self.start_dt = self.dt_now - timedelta(days=10) + self.end_dt = self.dt_now + + @patch.object(TomorrowIODatasetReader, 'read') + @patch.object(TomorrowIODatasetReader, 'get_data_values') + def test_fetch_timelines_data(self, mocked_get_data_values, mocked_read): + """Test fetch timelines data for SPW.""" + mocked_read.side_effect = MagicMock() + mocked_get_data_values.return_value = ( + DatasetReaderValue(self.location_input.point, [ + DatasetTimelineValue( + datetime(2023, 7, 20), + { + 'total_evapotranspiration_flux': 10, + 'total_rainfall': 5 + } + ) + ]) + ) + result = _fetch_timelines_data( + self.location_input, self.attrs, self.start_dt, self.end_dt) + expected_result = { + '07-20': { + 'date': '2023-07-20', + 'evapotranspirationSum': 10, + 'rainAccumulationSum': 5 + } + } + self.assertEqual(result, expected_result) + + + @patch.object(TomorrowIODatasetReader, 'read') + @patch.object(TomorrowIODatasetReader, 'get_data_values') + def test_fetch_ltn_data(self, mocked_get_data_values, mocked_read): + """Test fetch ltn data for SPW.""" + mocked_read.side_effect = MagicMock() + mocked_get_data_values.return_value = ( + DatasetReaderValue(self.location_input.point, [ + DatasetTimelineValue( + datetime(2023, 7, 20), + {'total_evapotranspiration_flux': 8, 'total_rainfall': 3}) + ]) + ) + # Initial historical data + historical_dict = { + '07-20': { + 'date': '2023-07-20', + 'evapotranspirationSum': 10, + 'rainAccumulationSum': 5 + } + } + result = _fetch_ltn_data( + self.location_input, self.attrs, + self.start_dt, self.end_dt, historical_dict) + expected_result = { + '07-20': { + 'date': '2023-07-20', + 'evapotranspirationSum': 10, + 'rainAccumulationSum': 5, + 'LTNPET': 8, + 'LTNPrecip': 3 + } + } + self.assertEqual(result, expected_result) diff --git a/django_project/spw/tests/test_plumber.py b/django_project/spw/tests/test_plumber.py index 98f1a37..d7b9942 100644 --- a/django_project/spw/tests/test_plumber.py +++ b/django_project/spw/tests/test_plumber.py @@ -20,6 +20,7 @@ execute_spw_model ) from spw.utils.process import write_pidfile +from spw.factories import RModelFactory, RModelOutputFactory def mocked_os_kill(self, *args, **kwargs): @@ -98,7 +99,7 @@ def test_kill_r_plumber_process(self, mocked_os): def test_execute_spw_model(self): """Test execute SPW R Mode.""" - data_filepath = '/home/web/plumber_data/test.csv' + data_filepath = '/tmp/test.csv' with requests_mock.Mocker() as m: json_response = {'national_trend': 'abcde'} m.post( @@ -139,10 +140,11 @@ def test_execute_spw_model(self): def test_write_plumber_file(self): """Test writing plumber R file.""" - os.makedirs('/home/web/media/plumber_data', exist_ok=True) + r_model = RModelFactory.create() + RModelOutputFactory.create(model=r_model) r_file_path = write_plumber_file( os.path.join( - '/home/web/media/plumber_data', + '/tmp', 'plumber_test.R' ) ) @@ -154,14 +156,13 @@ def test_write_plumber_file(self): def test_manage_plumber_data(self): """Test manage plumber data files.""" - os.makedirs('/home/web/media/plumber_data', exist_ok=True) headers = ['data', 'count_total'] csv_data = [ ['abc', 10], ['def', 20] ] file_path = write_plumber_data( - headers, csv_data, '/home/web/media/plumber_data') + headers, csv_data, '/tmp') self.assertTrue(os.path.exists(file_path)) remove_plumber_data(file_path) self.assertFalse(os.path.exists(file_path)) From a0849f060923d5564ce06fb5cdb58a053e4b3051 Mon Sep 17 00:00:00 2001 From: Danang Date: Sat, 20 Jul 2024 16:59:34 +0000 Subject: [PATCH 15/16] add spw generator unit test --- codecov.yml | 2 +- django_project/spw/tests/test_generator.py | 69 +++++++++++++++++++++- 2 files changed, 69 insertions(+), 2 deletions(-) diff --git a/codecov.yml b/codecov.yml index 052bd27..f35c9d2 100644 --- a/codecov.yml +++ b/codecov.yml @@ -9,7 +9,7 @@ coverage: changes: false patch: default: - threshold: "5%" + threshold: "10%" ignore: - "**/migrations/*.py" - "django_project/core/settings/*.py" diff --git a/django_project/spw/tests/test_generator.py b/django_project/spw/tests/test_generator.py index 48ce662..6ed0af5 100644 --- a/django_project/spw/tests/test_generator.py +++ b/django_project/spw/tests/test_generator.py @@ -22,10 +22,15 @@ from gap.providers.tio import ( TomorrowIODatasetReader ) +from spw.models import RModelExecutionLog, RModelExecutionStatus from spw.generator import ( SPWOutput, _fetch_timelines_data, - _fetch_ltn_data + _fetch_ltn_data, + calculate_from_point +) +from spw.factories import ( + RModelFactory ) @@ -182,3 +187,65 @@ def test_fetch_ltn_data(self, mocked_get_data_values, mocked_read): } } self.assertEqual(result, expected_result) + + +class TestSPWGenerator(TestCase): + """Test SPW Generator functions.""" + + def setUp(self): + """Set the test class.""" + self.dt_now = datetime.now(tz=pytz.UTC).replace(microsecond=0) + self.location_input = DatasetReaderInput.from_point(Point(0, 0)) + self.r_model = RModelFactory.create(name='test') + + @patch('spw.generator.execute_spw_model') + @patch('spw.generator._fetch_timelines_data') + @patch('spw.generator._fetch_ltn_data') + def test_calculate_from_point( + self, mock_fetch_ltn_data, mock_fetch_timelines_data, + mock_execute_spw_model): + """Test calculate_from_point function.""" + mock_fetch_ltn_data.return_value = { + '07-20': { + 'date': '2023-07-20', + 'evapotranspirationSum': 10, + 'rainAccumulationSum': 5, + 'LTNPET': 8, + 'LTNPrecip': 3 + } + } + mock_fetch_timelines_data.return_value = { + '07-20': { + 'date': '2023-07-20', + 'evapotranspirationSum': 10, + 'rainAccumulationSum': 5 + } + } + r_data = { + 'metadata': { + 'test': 'abcdef' + }, + 'goNoGo': ['Do not plant Tier 1a'], + 'nearDaysLTNPercent': [10.0], + 'nearDaysCurPercent': [60.0], + } + mock_execute_spw_model.return_value = (True, r_data) + + output = calculate_from_point(self.location_input.point) + mock_fetch_ltn_data.assert_called_once() + mock_fetch_timelines_data.assert_called_once() + mock_execute_spw_model.assert_called_once() + self.assertEqual(output.data.goNoGo, r_data['goNoGo'][0]) + self.assertEqual( + output.data.nearDaysLTNPercent, r_data['nearDaysLTNPercent'][0]) + self.assertEqual( + output.data.nearDaysCurPercent, r_data['nearDaysCurPercent'][0]) + # find RModelExecutionLog + log = RModelExecutionLog.objects.filter( + model=self.r_model, + location_input=self.location_input.point + ).first() + self.assertTrue(log) + self.assertTrue(log.input_file) + self.assertTrue(log.output) + self.assertEqual(log.status, RModelExecutionStatus.SUCCESS) From 0df17300d483454f9d50cf731f32b86ccf73a75b Mon Sep 17 00:00:00 2001 From: Danang Date: Sat, 20 Jul 2024 17:29:41 +0000 Subject: [PATCH 16/16] add spw data model diagrams --- docs/src/developer/data-model.md | 8 +- .../ground-observations-database-design-1.png | Bin 193728 -> 204150 bytes .../ground-observations-database-design-2.png | Bin 0 -> 109442 bytes .../diagram/solution-design-app-0018.drawio | 516 +++++++++++++++--- 4 files changed, 461 insertions(+), 63 deletions(-) create mode 100644 docs/src/developer/diagram/ground-observations-database-design-2.png diff --git a/docs/src/developer/data-model.md b/docs/src/developer/data-model.md index bb9bbd7..b5d077f 100644 --- a/docs/src/developer/data-model.md +++ b/docs/src/developer/data-model.md @@ -12,7 +12,11 @@ license: This program is free software; you can redistribute it and/or modify it # Data model diagram -## Ground observations +## GAP -![database design](./diagram/ground-observations-database-design-1.png) +![database design gap](./diagram/ground-observations-database-design-1.png) + +## SPW + +![database design spw](./diagram/ground-observations-database-design-2.png) diff --git a/docs/src/developer/diagram/ground-observations-database-design-1.png b/docs/src/developer/diagram/ground-observations-database-design-1.png index f5c15cd7cd13cc2df5ea906e06059b919b1215c1..2fd0708da0fd07c57d3e384d9bc8a76d2ec940e7 100644 GIT binary patch literal 204150 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�|+&4+Ijbu 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%0AizA+mV~wv_wUvpRk>Tns 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 T^LTepz#k1&ZIwJFGyner>?FB+ diff --git a/docs/src/developer/diagram/ground-observations-database-design-2.png b/docs/src/developer/diagram/ground-observations-database-design-2.png new file mode 100644 index 0000000000000000000000000000000000000000..fcb02d8f1ed5ef3e15c2c80f50df624d36ecf2fd GIT binary patch literal 109442 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%0D&_(XEs&`}HA6Mf{`AiCdp%g=pCgmVsd! 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 literal 0 HcmV?d00001 diff --git a/docs/src/developer/diagram/solution-design-app-0018.drawio b/docs/src/developer/diagram/solution-design-app-0018.drawio index ba5101d..631c19f 100644 --- a/docs/src/developer/diagram/solution-design-app-0018.drawio +++ b/docs/src/developer/diagram/solution-design-app-0018.drawio @@ -1,4 +1,4 @@ - + @@ -85,12 +85,12 @@ - + - + @@ -138,10 +138,10 @@ - + - + @@ -183,7 +183,7 @@ - + @@ -277,7 +277,7 @@ - + @@ -345,7 +345,7 @@ - + @@ -418,14 +418,14 @@ - - + + - + @@ -500,13 +500,13 @@ - - + + - + @@ -552,13 +552,13 @@ - - + + - + @@ -600,7 +600,7 @@ - + @@ -670,12 +670,12 @@ - + - + @@ -683,18 +683,31 @@ - + - + + + + + + + + + + + + + + - + @@ -761,8 +774,8 @@ - - + + @@ -832,24 +845,36 @@ - + - + - + + + + + + + + + + + + + + - - - + + @@ -870,8 +895,8 @@ - - + + @@ -880,10 +905,10 @@ - - - - + + + + @@ -892,86 +917,455 @@ - - - - + + + + - + - - + + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +