From c6df64bf0f98bc296262c9f4dc4199969cd5eaef Mon Sep 17 00:00:00 2001
From: Brandon Clayton <bclayton@usgs.gov>
Date: Thu, 24 Oct 2024 09:37:20 -0600
Subject: [PATCH] generate

---
 .gitlab-ci.yml                                |  1 +
 gradle/nshm.gradle                            | 14 +++++++++++++
 .../nshmp/model/GenerateWebActual.java        | 21 +++++++++++++++++++
 .../earthquake/nshmp/model/NshmTestUtils.java | 12 +++++++++++
 4 files changed, 48 insertions(+)
 create mode 100644 src/test/java/gov/usgs/earthquake/nshmp/model/GenerateWebActual.java

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 218e7df5..9b24982b 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -263,6 +263,7 @@ NSHM Web Tests:
   script:
     - CI_RUNNER_MEMORY="$(awk '/MemTotal/ {printf( "%d\n", $2 / 1024 / 1024 * .90 )}' /proc/meminfo)g"
     - export CI_RUNNER_MEMORY
+    - ./gradlew generate${NSHM} --info
     - ./gradlew test${NSHM} --info
     - cat ${JACOCO_HTML_DIR}/index.html
   stage: test
diff --git a/gradle/nshm.gradle b/gradle/nshm.gradle
index 2d4bb044..d4bce26c 100644
--- a/gradle/nshm.gradle
+++ b/gradle/nshm.gradle
@@ -100,6 +100,20 @@ task generateAlaska2023(type: JavaExec) {
   main = "gov.usgs.earthquake.nshmp.model.GenerateActual"
 }
 
+// Generate Alaska 2023 for CI
+task generateWebAlaska2023(type: JavaExec) {
+  description = "Generate alaska-2023 acutal for CI/CD"
+  classpath = sourceSets.test.runtimeClasspath
+
+  doFirst {
+    downloadNshm(findNshm("nshm-alaska", 2023))
+  }
+
+  jvmArgs("-DNSHM=nshm-alaska-2023")
+
+  main = "gov.usgs.earthquake.nshmp.model.GenerateWebActual"
+}
+
 
 // Generate CONUS 2018 for CI
 task generateConus2018(type: JavaExec) {
diff --git a/src/test/java/gov/usgs/earthquake/nshmp/model/GenerateWebActual.java b/src/test/java/gov/usgs/earthquake/nshmp/model/GenerateWebActual.java
new file mode 100644
index 00000000..8c3bd048
--- /dev/null
+++ b/src/test/java/gov/usgs/earthquake/nshmp/model/GenerateWebActual.java
@@ -0,0 +1,21 @@
+package gov.usgs.earthquake.nshmp.model;
+
+import java.util.Optional;
+
+import gov.usgs.earthquake.nshmp.model.NshmTestUtils.Nshm;
+import gov.usgs.earthquake.nshmp.www.Application;
+import io.micronaut.runtime.Micronaut;
+
+public class GenerateWebActual {
+
+  public static void main(String[] args) {
+    Nshm nshm = NshmTests.NSHMS.get(System.getProperty("NSHM"));
+    var context = Micronaut
+        .build("--model=" + nshm.modelPath())
+        .mainClass(Application.class)
+        .start();
+    NshmTestUtils.writeWebExpecteds(nshm, Optional.of(NshmTests.DATA_PATH));
+    context.close();
+  }
+
+}
diff --git a/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTestUtils.java b/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTestUtils.java
index d786a262..e356db56 100644
--- a/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTestUtils.java
+++ b/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTestUtils.java
@@ -139,6 +139,18 @@ class NshmTestUtils {
     }
   }
 
+  static void writeWebExpecteds(
+      Nshm nshm,
+      Optional<Path> dataPath) throws InterruptedException, ExecutionException, IOException {
+    for (NamedLocation location: nshm.locations()) {
+      Map<String, XySequence> xyMap = HazardServiceUtils.generateActual(location, nshm.imts());
+      String json = new StringBuilder(GSON.toJson(xyMap))
+          .append(Text.NEWLINE)
+          .toString();
+      writeExpected(nshm, location, json, dataPath);
+    }
+  }
+
   private static void assertCurveEquals(XySequence expected, XySequence actual, double tol) {
     // IMLs close but not exact due to exp() transform
     assertArrayEquals(
-- 
GitLab