From dcbf9b7557230ceaeda72522da3b724c7f04cf31 Mon Sep 17 00:00:00 2001 From: Brandon Clayton <bclayton@usgs.gov> Date: Wed, 23 Oct 2024 10:21:25 -0600 Subject: [PATCH 01/26] test web results --- .../usgs/earthquake/nshmp/model/NshmTestUtils.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) 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 8b32caf6..9c75eb89 100644 --- a/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTestUtils.java +++ b/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTestUtils.java @@ -16,6 +16,7 @@ import java.util.Map; import java.util.Map.Entry; import java.util.Optional; import java.util.Set; +import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.logging.Logger; @@ -37,6 +38,7 @@ import gov.usgs.earthquake.nshmp.calc.Site; import gov.usgs.earthquake.nshmp.data.XySequence; import gov.usgs.earthquake.nshmp.geo.Location; import gov.usgs.earthquake.nshmp.gmm.Imt; +import gov.usgs.earthquake.nshmp.www.hazard.HazardServiceUtils; import io.swagger.v3.core.util.Yaml; @@ -83,8 +85,11 @@ class NshmTestUtils { * Test a NSHM. * * @param nshm The NSHM to test + * @throws ExecutionException + * @throws InterruptedException */ - static void testNshm(Nshm nshm, Optional<Path> dataPath) { + static void testNshm(Nshm nshm, Optional<Path> dataPath) + throws InterruptedException, ExecutionException { NshmModel nshmModel = loadModel(nshm); for (NamedLocation location : nshm.locations()) { @@ -138,13 +143,16 @@ class NshmTestUtils { } private static void compareCurves(NshmModel nshmModel, NamedLocation location, - Optional<Path> dataPath) { + Optional<Path> dataPath) throws InterruptedException, ExecutionException { Map<String, XySequence> actual = dataPath.isPresent() ? readExpected(nshmModel, location, dataPath) : generateActual(nshmModel, location); + Map<String, XySequence> webActual = + HazardServiceUtils.generateActual(location, nshmModel.nshm.imts()); Map<String, XySequence> expected = readExpected(nshmModel, location, Optional.empty()); for (String key : actual.keySet()) { assertCurveEquals(expected.get(key), actual.get(key), TOLERANCE); + assertCurveEquals(expected.get(key), webActual.get(key), TOLERANCE); } } -- GitLab From 7c2b1dc7a1ab123b6e80860262c0b39a45737102 Mon Sep 17 00:00:00 2001 From: Brandon Clayton <bclayton@usgs.gov> Date: Wed, 23 Oct 2024 10:21:34 -0600 Subject: [PATCH 02/26] test util to generate web results --- .../nshmp/www/hazard/HazardServiceUtils.java | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 src/test/java/gov/usgs/earthquake/nshmp/www/hazard/HazardServiceUtils.java diff --git a/src/test/java/gov/usgs/earthquake/nshmp/www/hazard/HazardServiceUtils.java b/src/test/java/gov/usgs/earthquake/nshmp/www/hazard/HazardServiceUtils.java new file mode 100644 index 00000000..51256e41 --- /dev/null +++ b/src/test/java/gov/usgs/earthquake/nshmp/www/hazard/HazardServiceUtils.java @@ -0,0 +1,42 @@ +package gov.usgs.earthquake.nshmp.www.hazard; + +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Set; +import java.util.concurrent.ExecutionException; +import java.util.stream.Collectors; + +import gov.usgs.earthquake.nshmp.NamedLocation; +import gov.usgs.earthquake.nshmp.calc.Hazard; +import gov.usgs.earthquake.nshmp.data.XySequence; +import gov.usgs.earthquake.nshmp.gmm.Imt; +import gov.usgs.earthquake.nshmp.www.hazard.HazardService.Request; + +import io.micronaut.http.HttpRequest; + +public class HazardServiceUtils { + + public static Map<String, XySequence> generateActual(NamedLocation loc, Set<Imt> imts) + throws InterruptedException, ExecutionException { + Request request = new Request( + HttpRequest.GET(""), + loc.location().longitude, + loc.location().latitude, + 760, + imts, + false, + false); + + Hazard hazard = HazardService.calcHazard(request); + + Map<String, XySequence> xyMap = hazard.curves().entrySet().stream() + .collect(Collectors.toMap( + e -> e.getKey().name(), + Entry::getValue, + (o1, o2) -> o1, + LinkedHashMap::new)); // preserve IMT enum order + + return xyMap; + } +} -- GitLab From c02b5e932469d2f7e01915864d461bc3d38375b5 Mon Sep 17 00:00:00 2001 From: Brandon Clayton <bclayton@usgs.gov> Date: Wed, 23 Oct 2024 10:22:22 -0600 Subject: [PATCH 03/26] add throws --- .../earthquake/nshmp/model/NshmTests.java | 21 ++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTests.java b/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTests.java index 0c24c00c..14948d77 100644 --- a/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTests.java +++ b/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTests.java @@ -11,6 +11,7 @@ import java.util.List; import java.util.Map; import java.util.Optional; import java.util.Set; +import java.util.concurrent.ExecutionException; import org.junit.jupiter.api.Test; @@ -126,9 +127,11 @@ class NshmTests { * Test Alaska 2007 NSHM * * To run test: ./gradlew testAlaska2007 + * @throws ExecutionException + * @throws InterruptedException */ @Test - final void testAlaska2007() throws IOException { + final void testAlaska2007() throws IOException, InterruptedException, ExecutionException { Nshm nshm = NSHMS.get("nshm-alaska-2007"); NshmTestUtils.testNshm(nshm, getDataPath(nshm)); } @@ -137,9 +140,11 @@ class NshmTests { * Test Alaska 2023 NSHM * * To run test: ./gradlew testAlaska2023 + * @throws ExecutionException + * @throws InterruptedException */ @Test - final void testAlaska2023() throws IOException { + final void testAlaska2023() throws IOException, InterruptedException, ExecutionException { Nshm nshm = NSHMS.get("nshm-alaska-2023"); NshmTestUtils.testNshm(nshm, getDataPath(nshm)); } @@ -148,9 +153,11 @@ class NshmTests { * Test CONUS 2018 NSHM * * To run test: ./gradlew testConus2018 + * @throws ExecutionException + * @throws InterruptedException */ @Test - final void testConus2018() throws IOException { + final void testConus2018() throws IOException, InterruptedException, ExecutionException { Nshm nshm = NSHMS.get("nshm-conus-2018"); NshmTestUtils.testNshm(nshm, getDataPath(nshm)); } @@ -159,9 +166,11 @@ class NshmTests { * Test CONUS 2023 NSHM * * To run test: ./gradlew testConus2023 + * @throws ExecutionException + * @throws InterruptedException */ @Test - final void testConus2023() throws IOException { + final void testConus2023() throws IOException, InterruptedException, ExecutionException { Nshm nshm = NSHMS.get("nshm-conus-2023"); NshmTestUtils.testNshm(nshm, getDataPath(nshm)); } @@ -170,9 +179,11 @@ class NshmTests { * Test Hawaii 2021 NSHM * * To run test: ./gradlew testHawaii2021 + * @throws ExecutionException + * @throws InterruptedException */ @Test - final void testHawaii2021() throws IOException { + final void testHawaii2021() throws IOException, InterruptedException, ExecutionException { Nshm nshm = NSHMS.get("nshm-hawaii-2021"); NshmTestUtils.testNshm(nshm, getDataPath(nshm)); } -- GitLab From d14f91317afc32dead9895a3ec383e21eb383495 Mon Sep 17 00:00:00 2001 From: Brandon Clayton <bclayton@usgs.gov> Date: Wed, 23 Oct 2024 12:27:21 -0600 Subject: [PATCH 04/26] generate actual --- .../java/gov/usgs/earthquake/nshmp/model/NshmTestUtils.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) 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 9c75eb89..887e82d9 100644 --- a/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTestUtils.java +++ b/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTestUtils.java @@ -147,7 +147,10 @@ class NshmTestUtils { Map<String, XySequence> actual = dataPath.isPresent() ? readExpected(nshmModel, location, dataPath) : generateActual(nshmModel, location); Map<String, XySequence> webActual = - HazardServiceUtils.generateActual(location, nshmModel.nshm.imts()); + HazardServiceUtils.generateActual( + location, + nshmModel.nshm.imts(), + nshmModel.nshm.nshmInfo.repo); Map<String, XySequence> expected = readExpected(nshmModel, location, Optional.empty()); for (String key : actual.keySet()) { -- GitLab From 70b7752df6096692186496c453c61442d6224db4 Mon Sep 17 00:00:00 2001 From: Brandon Clayton <bclayton@usgs.gov> Date: Wed, 23 Oct 2024 12:27:51 -0600 Subject: [PATCH 05/26] generate --- .../nshmp/www/hazard/HazardServiceUtils.java | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/test/java/gov/usgs/earthquake/nshmp/www/hazard/HazardServiceUtils.java b/src/test/java/gov/usgs/earthquake/nshmp/www/hazard/HazardServiceUtils.java index 51256e41..0a9d4540 100644 --- a/src/test/java/gov/usgs/earthquake/nshmp/www/hazard/HazardServiceUtils.java +++ b/src/test/java/gov/usgs/earthquake/nshmp/www/hazard/HazardServiceUtils.java @@ -11,14 +11,25 @@ import gov.usgs.earthquake.nshmp.NamedLocation; import gov.usgs.earthquake.nshmp.calc.Hazard; import gov.usgs.earthquake.nshmp.data.XySequence; import gov.usgs.earthquake.nshmp.gmm.Imt; +import gov.usgs.earthquake.nshmp.www.Application; import gov.usgs.earthquake.nshmp.www.hazard.HazardService.Request; - +import io.micronaut.context.ApplicationContext; import io.micronaut.http.HttpRequest; +import io.micronaut.runtime.Micronaut; +import io.micronaut.test.extensions.junit5.annotation.MicronautTest; +@MicronautTest public class HazardServiceUtils { - public static Map<String, XySequence> generateActual(NamedLocation loc, Set<Imt> imts) + public static Map<String, XySequence> generateActual( + NamedLocation loc, + Set<Imt> imts, + String model) throws InterruptedException, ExecutionException { + ApplicationContext context = Micronaut.build("--model=nshms/nshm-" + model) + .mainClass(Application.class) + .start(); + Request request = new Request( HttpRequest.GET(""), loc.location().longitude, @@ -30,6 +41,8 @@ public class HazardServiceUtils { Hazard hazard = HazardService.calcHazard(request); + context.stop(); + Map<String, XySequence> xyMap = hazard.curves().entrySet().stream() .collect(Collectors.toMap( e -> e.getKey().name(), -- GitLab From 30679376476317cad0fa702c28b74303c948d30b Mon Sep 17 00:00:00 2001 From: Brandon Clayton <bclayton@usgs.gov> Date: Wed, 23 Oct 2024 12:29:30 -0600 Subject: [PATCH 06/26] clean --- .../gov/usgs/earthquake/nshmp/www/hazard/HazardServiceUtils.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/test/java/gov/usgs/earthquake/nshmp/www/hazard/HazardServiceUtils.java b/src/test/java/gov/usgs/earthquake/nshmp/www/hazard/HazardServiceUtils.java index 0a9d4540..00a108df 100644 --- a/src/test/java/gov/usgs/earthquake/nshmp/www/hazard/HazardServiceUtils.java +++ b/src/test/java/gov/usgs/earthquake/nshmp/www/hazard/HazardServiceUtils.java @@ -13,6 +13,7 @@ import gov.usgs.earthquake.nshmp.data.XySequence; import gov.usgs.earthquake.nshmp.gmm.Imt; import gov.usgs.earthquake.nshmp.www.Application; import gov.usgs.earthquake.nshmp.www.hazard.HazardService.Request; + import io.micronaut.context.ApplicationContext; import io.micronaut.http.HttpRequest; import io.micronaut.runtime.Micronaut; -- GitLab From 22d9308cff54a26f63f7c2452ac4c3104746fbd6 Mon Sep 17 00:00:00 2001 From: Brandon Clayton <bclayton@usgs.gov> Date: Wed, 23 Oct 2024 12:37:23 -0600 Subject: [PATCH 07/26] test --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 024d9215..9cd26692 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -238,7 +238,7 @@ NSHM 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 generate${NSHM} --info - ./gradlew test${NSHM} --info - cat ${JACOCO_HTML_DIR}/index.html stage: test -- GitLab From 414e0f7a4ff7ac8131b29cd4e889fa0fa00efab5 Mon Sep 17 00:00:00 2001 From: Brandon Clayton <bclayton@usgs.gov> Date: Wed, 23 Oct 2024 12:42:05 -0600 Subject: [PATCH 08/26] add path --- .../usgs/earthquake/nshmp/model/NshmTestUtils.java | 12 +++++++++--- .../nshmp/www/hazard/HazardServiceUtils.java | 2 +- 2 files changed, 10 insertions(+), 4 deletions(-) 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 887e82d9..afb20de1 100644 --- a/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTestUtils.java +++ b/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTestUtils.java @@ -142,15 +142,21 @@ class NshmTestUtils { Double.valueOf(expected).equals(Double.valueOf(actual)); } - private static void compareCurves(NshmModel nshmModel, NamedLocation location, + private static void compareCurves( + NshmModel nshmModel, + NamedLocation location, Optional<Path> dataPath) throws InterruptedException, ExecutionException { + Nshm nshm = nshmModel.nshm; + Map<String, XySequence> actual = dataPath.isPresent() ? readExpected(nshmModel, location, dataPath) : generateActual(nshmModel, location); + Map<String, XySequence> webActual = HazardServiceUtils.generateActual( location, - nshmModel.nshm.imts(), - nshmModel.nshm.nshmInfo.repo); + nshm.imts(), + nshm.nshmInfo.repo + nshm.nshmInfo.year); + Map<String, XySequence> expected = readExpected(nshmModel, location, Optional.empty()); for (String key : actual.keySet()) { diff --git a/src/test/java/gov/usgs/earthquake/nshmp/www/hazard/HazardServiceUtils.java b/src/test/java/gov/usgs/earthquake/nshmp/www/hazard/HazardServiceUtils.java index 00a108df..98d30ffc 100644 --- a/src/test/java/gov/usgs/earthquake/nshmp/www/hazard/HazardServiceUtils.java +++ b/src/test/java/gov/usgs/earthquake/nshmp/www/hazard/HazardServiceUtils.java @@ -27,7 +27,7 @@ public class HazardServiceUtils { Set<Imt> imts, String model) throws InterruptedException, ExecutionException { - ApplicationContext context = Micronaut.build("--model=nshms/nshm-" + model) + ApplicationContext context = Micronaut.build("--model=nshms/" + model) .mainClass(Application.class) .start(); -- GitLab From 0269a3999312d2f7852b2c4759568ee33f9f4b38 Mon Sep 17 00:00:00 2001 From: Brandon Clayton <bclayton@usgs.gov> Date: Wed, 23 Oct 2024 12:45:11 -0600 Subject: [PATCH 09/26] add formating --- .../java/gov/usgs/earthquake/nshmp/model/NshmTestUtils.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 afb20de1..bbbc9fba 100644 --- a/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTestUtils.java +++ b/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTestUtils.java @@ -155,7 +155,7 @@ class NshmTestUtils { HazardServiceUtils.generateActual( location, nshm.imts(), - nshm.nshmInfo.repo + nshm.nshmInfo.year); + String.format("%s-%s", nshm.nshmInfo.repo ,nshm.nshmInfo.year)); Map<String, XySequence> expected = readExpected(nshmModel, location, Optional.empty()); -- GitLab From 072365a6b4ef544c6a0996c6f62122d483e4b2e2 Mon Sep 17 00:00:00 2001 From: Brandon Clayton <bclayton@usgs.gov> Date: Wed, 23 Oct 2024 12:46:11 -0600 Subject: [PATCH 10/26] clean --- .../java/gov/usgs/earthquake/nshmp/model/NshmTestUtils.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 bbbc9fba..f5722837 100644 --- a/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTestUtils.java +++ b/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTestUtils.java @@ -155,7 +155,7 @@ class NshmTestUtils { HazardServiceUtils.generateActual( location, nshm.imts(), - String.format("%s-%s", nshm.nshmInfo.repo ,nshm.nshmInfo.year)); + String.format("%s-%s", nshm.nshmInfo.repo, nshm.nshmInfo.year)); Map<String, XySequence> expected = readExpected(nshmModel, location, Optional.empty()); -- GitLab From ca795e3f19cd72d0cbf12585635ab5999b76b592 Mon Sep 17 00:00:00 2001 From: Brandon Clayton <bclayton@usgs.gov> Date: Wed, 23 Oct 2024 12:55:20 -0600 Subject: [PATCH 11/26] Remove context --- .../earthquake/nshmp/www/hazard/HazardServiceUtils.java | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/test/java/gov/usgs/earthquake/nshmp/www/hazard/HazardServiceUtils.java b/src/test/java/gov/usgs/earthquake/nshmp/www/hazard/HazardServiceUtils.java index 98d30ffc..23970fa9 100644 --- a/src/test/java/gov/usgs/earthquake/nshmp/www/hazard/HazardServiceUtils.java +++ b/src/test/java/gov/usgs/earthquake/nshmp/www/hazard/HazardServiceUtils.java @@ -14,12 +14,9 @@ import gov.usgs.earthquake.nshmp.gmm.Imt; import gov.usgs.earthquake.nshmp.www.Application; import gov.usgs.earthquake.nshmp.www.hazard.HazardService.Request; -import io.micronaut.context.ApplicationContext; import io.micronaut.http.HttpRequest; import io.micronaut.runtime.Micronaut; -import io.micronaut.test.extensions.junit5.annotation.MicronautTest; -@MicronautTest public class HazardServiceUtils { public static Map<String, XySequence> generateActual( @@ -27,7 +24,7 @@ public class HazardServiceUtils { Set<Imt> imts, String model) throws InterruptedException, ExecutionException { - ApplicationContext context = Micronaut.build("--model=nshms/" + model) + Micronaut.build("--model=nshms/" + model) .mainClass(Application.class) .start(); @@ -42,8 +39,6 @@ public class HazardServiceUtils { Hazard hazard = HazardService.calcHazard(request); - context.stop(); - Map<String, XySequence> xyMap = hazard.curves().entrySet().stream() .collect(Collectors.toMap( e -> e.getKey().name(), -- GitLab From 1433ae8af9999b8527c378890506d6e340424af7 Mon Sep 17 00:00:00 2001 From: Brandon Clayton <bclayton@usgs.gov> Date: Wed, 23 Oct 2024 13:09:45 -0600 Subject: [PATCH 12/26] start service on test --- .../earthquake/nshmp/model/NshmTestUtils.java | 16 ++++++++-------- .../nshmp/www/hazard/HazardServiceUtils.java | 9 +-------- 2 files changed, 9 insertions(+), 16 deletions(-) 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 f5722837..0b4ddb12 100644 --- a/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTestUtils.java +++ b/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTestUtils.java @@ -38,8 +38,10 @@ import gov.usgs.earthquake.nshmp.calc.Site; import gov.usgs.earthquake.nshmp.data.XySequence; import gov.usgs.earthquake.nshmp.geo.Location; import gov.usgs.earthquake.nshmp.gmm.Imt; +import gov.usgs.earthquake.nshmp.www.Application; import gov.usgs.earthquake.nshmp.www.hazard.HazardServiceUtils; +import io.micronaut.runtime.Micronaut; import io.swagger.v3.core.util.Yaml; /** @@ -91,6 +93,10 @@ class NshmTestUtils { static void testNshm(Nshm nshm, Optional<Path> dataPath) throws InterruptedException, ExecutionException { NshmModel nshmModel = loadModel(nshm); + var context = Micronaut + .build("--model=nshms/" + String.format("%s-%s", nshm.nshmInfo.repo, nshm.nshmInfo.year)) + .mainClass(Application.class) + .start(); for (NamedLocation location : nshm.locations()) { LOGGER.info("Location: " + location.toString()); @@ -98,6 +104,7 @@ class NshmTestUtils { } nshmModel.exec.shutdown(); + context.close(); } /** @@ -146,17 +153,10 @@ class NshmTestUtils { NshmModel nshmModel, NamedLocation location, Optional<Path> dataPath) throws InterruptedException, ExecutionException { - Nshm nshm = nshmModel.nshm; - Map<String, XySequence> actual = dataPath.isPresent() ? readExpected(nshmModel, location, dataPath) : generateActual(nshmModel, location); - Map<String, XySequence> webActual = - HazardServiceUtils.generateActual( - location, - nshm.imts(), - String.format("%s-%s", nshm.nshmInfo.repo, nshm.nshmInfo.year)); - + HazardServiceUtils.generateActual(location, nshmModel.nshm.imts()); Map<String, XySequence> expected = readExpected(nshmModel, location, Optional.empty()); for (String key : actual.keySet()) { diff --git a/src/test/java/gov/usgs/earthquake/nshmp/www/hazard/HazardServiceUtils.java b/src/test/java/gov/usgs/earthquake/nshmp/www/hazard/HazardServiceUtils.java index 23970fa9..d7649d09 100644 --- a/src/test/java/gov/usgs/earthquake/nshmp/www/hazard/HazardServiceUtils.java +++ b/src/test/java/gov/usgs/earthquake/nshmp/www/hazard/HazardServiceUtils.java @@ -11,23 +11,16 @@ import gov.usgs.earthquake.nshmp.NamedLocation; import gov.usgs.earthquake.nshmp.calc.Hazard; import gov.usgs.earthquake.nshmp.data.XySequence; import gov.usgs.earthquake.nshmp.gmm.Imt; -import gov.usgs.earthquake.nshmp.www.Application; import gov.usgs.earthquake.nshmp.www.hazard.HazardService.Request; import io.micronaut.http.HttpRequest; -import io.micronaut.runtime.Micronaut; public class HazardServiceUtils { public static Map<String, XySequence> generateActual( NamedLocation loc, - Set<Imt> imts, - String model) + Set<Imt> imts) throws InterruptedException, ExecutionException { - Micronaut.build("--model=nshms/" + model) - .mainClass(Application.class) - .start(); - Request request = new Request( HttpRequest.GET(""), loc.location().longitude, -- GitLab From 716ffc684c8adaebb8d883534f5aef9cea3e3174 Mon Sep 17 00:00:00 2001 From: Brandon Clayton <bclayton@usgs.gov> Date: Wed, 23 Oct 2024 13:53:56 -0600 Subject: [PATCH 13/26] test --- .../earthquake/nshmp/www/ServletUtil.java | 1 + .../earthquake/nshmp/model/NshmTestUtils.java | 41 ++++++++++++++----- 2 files changed, 31 insertions(+), 11 deletions(-) diff --git a/src/main/java/gov/usgs/earthquake/nshmp/www/ServletUtil.java b/src/main/java/gov/usgs/earthquake/nshmp/www/ServletUtil.java index 23f3917b..d9bf18cf 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/www/ServletUtil.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/www/ServletUtil.java @@ -15,6 +15,7 @@ import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import com.google.common.base.Stopwatch; import com.google.common.util.concurrent.ListeningExecutorService; 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 0b4ddb12..f64c4cae 100644 --- a/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTestUtils.java +++ b/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTestUtils.java @@ -93,6 +93,15 @@ class NshmTestUtils { static void testNshm(Nshm nshm, Optional<Path> dataPath) throws InterruptedException, ExecutionException { NshmModel nshmModel = loadModel(nshm); + + for (NamedLocation location : nshm.locations()) { + LOGGER.info("Location: " + location.toString()); + compareCurves(nshmModel, location, dataPath); + } + + nshmModel.exec.shutdown(); + + var context = Micronaut .build("--model=nshms/" + String.format("%s-%s", nshm.nshmInfo.repo, nshm.nshmInfo.year)) .mainClass(Application.class) @@ -100,10 +109,9 @@ class NshmTestUtils { for (NamedLocation location : nshm.locations()) { LOGGER.info("Location: " + location.toString()); - compareCurves(nshmModel, location, dataPath); + compareWebCurves(nshm, location, dataPath); } - nshmModel.exec.shutdown(); context.close(); } @@ -152,16 +160,27 @@ class NshmTestUtils { private static void compareCurves( NshmModel nshmModel, NamedLocation location, - Optional<Path> dataPath) throws InterruptedException, ExecutionException { + Optional<Path> dataPath + ) throws ExecutionException { Map<String, XySequence> actual = dataPath.isPresent() - ? readExpected(nshmModel, location, dataPath) : generateActual(nshmModel, location); - Map<String, XySequence> webActual = - HazardServiceUtils.generateActual(location, nshmModel.nshm.imts()); - Map<String, XySequence> expected = readExpected(nshmModel, location, Optional.empty()); + ? readExpected(nshmModel.nshm, location, dataPath) : generateActual(nshmModel, location); + Map<String, XySequence> expected = readExpected(nshmModel.nshm, location, Optional.empty()); + + for (String key : actual.keySet()) { + assertCurveEquals(expected.get(key), actual.get(key), TOLERANCE); + } + } + + private static void compareWebCurves( + Nshm nshm, + NamedLocation location, + Optional<Path> dataPath) throws InterruptedException, ExecutionException { + Map<String, XySequence> actual = + HazardServiceUtils.generateActual(location, nshm.imts()); + Map<String, XySequence> expected = readExpected(nshm, location, Optional.empty()); for (String key : actual.keySet()) { assertCurveEquals(expected.get(key), actual.get(key), TOLERANCE); - assertCurveEquals(expected.get(key), webActual.get(key), TOLERANCE); } } @@ -193,11 +212,11 @@ class NshmTestUtils { return xyMap; } - private static Map<String, XySequence> readExpected(NshmModel nshmModel, NamedLocation loc, + private static Map<String, XySequence> readExpected(Nshm nshm, NamedLocation loc, Optional<Path> dataPath) { Path resultPath = dataPath.orElse(DATA_PATH) - .resolve(nshmModel.nshm.modelName()) - .resolve(nshmModel.nshm.resultFilename(loc)); + .resolve(nshm.modelName()) + .resolve(nshm.resultFilename(loc)); JsonObject obj = null; try (BufferedReader br = Files.newBufferedReader(resultPath)) { -- GitLab From a865650112b208816343e59997f5c759d89f4624 Mon Sep 17 00:00:00 2001 From: Brandon Clayton <bclayton@usgs.gov> Date: Wed, 23 Oct 2024 13:55:53 -0600 Subject: [PATCH 14/26] clean --- src/main/java/gov/usgs/earthquake/nshmp/www/ServletUtil.java | 1 - .../java/gov/usgs/earthquake/nshmp/model/NshmTestUtils.java | 4 +--- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/src/main/java/gov/usgs/earthquake/nshmp/www/ServletUtil.java b/src/main/java/gov/usgs/earthquake/nshmp/www/ServletUtil.java index d9bf18cf..23f3917b 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/www/ServletUtil.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/www/ServletUtil.java @@ -15,7 +15,6 @@ import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import com.google.common.base.Stopwatch; import com.google.common.util.concurrent.ListeningExecutorService; 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 f64c4cae..ce86c0db 100644 --- a/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTestUtils.java +++ b/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTestUtils.java @@ -101,7 +101,6 @@ class NshmTestUtils { nshmModel.exec.shutdown(); - var context = Micronaut .build("--model=nshms/" + String.format("%s-%s", nshm.nshmInfo.repo, nshm.nshmInfo.year)) .mainClass(Application.class) @@ -160,8 +159,7 @@ class NshmTestUtils { private static void compareCurves( NshmModel nshmModel, NamedLocation location, - Optional<Path> dataPath - ) throws ExecutionException { + Optional<Path> dataPath) throws ExecutionException { Map<String, XySequence> actual = dataPath.isPresent() ? readExpected(nshmModel.nshm, location, dataPath) : generateActual(nshmModel, location); Map<String, XySequence> expected = readExpected(nshmModel.nshm, location, Optional.empty()); -- GitLab From 39f62effa47663dfe4f09fd4d9a2285b4224787a Mon Sep 17 00:00:00 2001 From: Brandon Clayton <bclayton@usgs.gov> Date: Wed, 23 Oct 2024 13:58:34 -0600 Subject: [PATCH 15/26] test --- .gitlab-ci.yml | 1 + .../earthquake/nshmp/model/NshmTestUtils.java | 22 +++++++++++++++++++ .../earthquake/nshmp/model/NshmTests.java | 13 +++++++++++ 3 files changed, 36 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 9cd26692..1670e7a0 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -232,6 +232,7 @@ NSHM Tests: matrix: - NSHM: Alaska2007 - NSHM: Alaska2023 + - NSHM: WebAlaska2023 - NSHM: Conus2018 - NSHM: Conus2023 - NSHM: Hawaii2021 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 ce86c0db..2304709e 100644 --- a/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTestUtils.java +++ b/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTestUtils.java @@ -114,6 +114,28 @@ class NshmTestUtils { context.close(); } + /** + * Test a NSHM. + * + * @param nshm The NSHM to test + * @throws ExecutionException + * @throws InterruptedException + */ + static void testWebNshm(Nshm nshm, Optional<Path> dataPath) + throws InterruptedException, ExecutionException { + var context = Micronaut + .build("--model=nshms/" + String.format("%s-%s", nshm.nshmInfo.repo, nshm.nshmInfo.year)) + .mainClass(Application.class) + .start(); + + for (NamedLocation location : nshm.locations()) { + LOGGER.info("Location: " + location.toString()); + compareWebCurves(nshm, location, dataPath); + } + + context.close(); + } + /** * Write expected values * diff --git a/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTests.java b/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTests.java index 14948d77..928bf90d 100644 --- a/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTests.java +++ b/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTests.java @@ -149,6 +149,19 @@ class NshmTests { NshmTestUtils.testNshm(nshm, getDataPath(nshm)); } + /** + * Test Alaska 2023 NSHM + * + * To run test: ./gradlew testWebAlaska2023 + * @throws ExecutionException + * @throws InterruptedException + */ + @Test + final void testWebAlaska2023() throws IOException, InterruptedException, ExecutionException { + Nshm nshm = NSHMS.get("nshm-alaska-2023"); + NshmTestUtils.testWebNshm(nshm, getDataPath(nshm)); + } + /** * Test CONUS 2018 NSHM * -- GitLab From 7610e8d9e613eecfe3ed521d3f8ab078562e2ee4 Mon Sep 17 00:00:00 2001 From: Brandon Clayton <bclayton@usgs.gov> Date: Wed, 23 Oct 2024 14:53:59 -0600 Subject: [PATCH 16/26] add web test --- gradle/nshm.gradle | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/gradle/nshm.gradle b/gradle/nshm.gradle index c125f642..2d4bb044 100644 --- a/gradle/nshm.gradle +++ b/gradle/nshm.gradle @@ -208,6 +208,32 @@ task testAlaska2023(type: Test) { } } +// Test Alaska 2023 NSHM +task testWebAlaska2023(type: Test) { + description = "Test Alaska 2023 NSHM" + group = "verification" + + doFirst { + downloadNshm(findNshm("nshm-alaska", 2023)) + } + + testLogging { + exceptionFormat "full" + } + + systemProperties(System.getProperties()) + + useJUnitPlatform() + jvmArgs( + "-Xms2g", + "-Xmx${xmx}", + ) + + filter { + includeTestsMatching "gov.usgs.earthquake.nshmp.model.NshmTests.testWebAlaska2023" + } +} + // Test CONUS 2018 NSHM task testConus2018(type: Test) { description = "Test CONUS 2018 NSHM" -- GitLab From 7c2c58b30338ad0a7c107e51749c7c1f1d4e3c48 Mon Sep 17 00:00:00 2001 From: Brandon Clayton <bclayton@usgs.gov> Date: Wed, 23 Oct 2024 15:04:11 -0600 Subject: [PATCH 17/26] remove web --- .../usgs/earthquake/nshmp/model/NshmTestUtils.java | 12 ------------ 1 file changed, 12 deletions(-) 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 2304709e..d786a262 100644 --- a/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTestUtils.java +++ b/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTestUtils.java @@ -100,18 +100,6 @@ class NshmTestUtils { } nshmModel.exec.shutdown(); - - var context = Micronaut - .build("--model=nshms/" + String.format("%s-%s", nshm.nshmInfo.repo, nshm.nshmInfo.year)) - .mainClass(Application.class) - .start(); - - for (NamedLocation location : nshm.locations()) { - LOGGER.info("Location: " + location.toString()); - compareWebCurves(nshm, location, dataPath); - } - - context.close(); } /** -- GitLab From 2ed36d9ba4d5c78881f31b00137df14ef049c3cf Mon Sep 17 00:00:00 2001 From: Brandon Clayton <bclayton@usgs.gov> Date: Wed, 23 Oct 2024 15:36:24 -0600 Subject: [PATCH 18/26] add web tests --- .gitlab-ci.yml | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 1670e7a0..5dc44d4b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -239,7 +239,31 @@ NSHM 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 generate${NSHM} --info + - ./gradlew test${NSHM} --info + - cat ${JACOCO_HTML_DIR}/index.html + stage: test + tags: + - nshmp + +NSHM Web Tests: + artifacts: + paths: + - ${JACOCO_HTML_DIR} + reports: + junit: ${JUNIT_FILES} + coverage: '/Total.*?([0-9]{1,3})%/' + needs: [] + parallel: + matrix: + # - NSHM: Alaska2007 + - NSHM: WebAlaska2023 + # - NSHM: Conus2018 + # - NSHM: Conus2023 + # - NSHM: Hawaii2021 + script: + - CI_RUNNER_MEMORY="$(awk '/MemTotal/ {printf( "%d\n", $2 / 1024 / 1024 * .90 )}' /proc/meminfo)g" + - export CI_RUNNER_MEMORY - ./gradlew test${NSHM} --info - cat ${JACOCO_HTML_DIR}/index.html stage: test -- GitLab From 81b2960bb39923fb211aca2bd40adf947eee3ade Mon Sep 17 00:00:00 2001 From: Brandon Clayton <bclayton@usgs.gov> Date: Wed, 23 Oct 2024 15:38:03 -0600 Subject: [PATCH 19/26] remove web --- .gitlab-ci.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 5dc44d4b..218e7df5 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -232,7 +232,6 @@ NSHM Tests: matrix: - NSHM: Alaska2007 - NSHM: Alaska2023 - - NSHM: WebAlaska2023 - NSHM: Conus2018 - NSHM: Conus2023 - NSHM: Hawaii2021 -- GitLab 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 20/26] 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 From d0ec42f0ec4d577dcbc512ae3ad5cfb59fd2ee37 Mon Sep 17 00:00:00 2001 From: Brandon Clayton <bclayton@usgs.gov> Date: Thu, 24 Oct 2024 09:37:55 -0600 Subject: [PATCH 21/26] spotless --- .../java/gov/usgs/earthquake/nshmp/model/GenerateWebActual.java | 1 + .../java/gov/usgs/earthquake/nshmp/model/NshmTestUtils.java | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/test/java/gov/usgs/earthquake/nshmp/model/GenerateWebActual.java b/src/test/java/gov/usgs/earthquake/nshmp/model/GenerateWebActual.java index 8c3bd048..185b21be 100644 --- a/src/test/java/gov/usgs/earthquake/nshmp/model/GenerateWebActual.java +++ b/src/test/java/gov/usgs/earthquake/nshmp/model/GenerateWebActual.java @@ -4,6 +4,7 @@ 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 { 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 e356db56..39ac655b 100644 --- a/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTestUtils.java +++ b/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTestUtils.java @@ -142,7 +142,7 @@ class NshmTestUtils { static void writeWebExpecteds( Nshm nshm, Optional<Path> dataPath) throws InterruptedException, ExecutionException, IOException { - for (NamedLocation location: nshm.locations()) { + for (NamedLocation location : nshm.locations()) { Map<String, XySequence> xyMap = HazardServiceUtils.generateActual(location, nshm.imts()); String json = new StringBuilder(GSON.toJson(xyMap)) .append(Text.NEWLINE) -- GitLab From 9138ef3ddd49e89efac44a116b92098307f13bdb Mon Sep 17 00:00:00 2001 From: Brandon Clayton <bclayton@usgs.gov> Date: Thu, 24 Oct 2024 09:38:20 -0600 Subject: [PATCH 22/26] add throws --- .../gov/usgs/earthquake/nshmp/model/GenerateWebActual.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/test/java/gov/usgs/earthquake/nshmp/model/GenerateWebActual.java b/src/test/java/gov/usgs/earthquake/nshmp/model/GenerateWebActual.java index 185b21be..20072a35 100644 --- a/src/test/java/gov/usgs/earthquake/nshmp/model/GenerateWebActual.java +++ b/src/test/java/gov/usgs/earthquake/nshmp/model/GenerateWebActual.java @@ -1,6 +1,8 @@ package gov.usgs.earthquake.nshmp.model; +import java.io.IOException; import java.util.Optional; +import java.util.concurrent.ExecutionException; import gov.usgs.earthquake.nshmp.model.NshmTestUtils.Nshm; import gov.usgs.earthquake.nshmp.www.Application; @@ -9,7 +11,8 @@ import io.micronaut.runtime.Micronaut; public class GenerateWebActual { - public static void main(String[] args) { + public static void main(String[] args) + throws InterruptedException, ExecutionException, IOException { Nshm nshm = NshmTests.NSHMS.get(System.getProperty("NSHM")); var context = Micronaut .build("--model=" + nshm.modelPath()) -- GitLab From dd91b2fd07673f3a19e76d362feecd6bc2ab7413 Mon Sep 17 00:00:00 2001 From: Brandon Clayton <bclayton@usgs.gov> Date: Thu, 24 Oct 2024 09:46:38 -0600 Subject: [PATCH 23/26] add check --- .../java/gov/usgs/earthquake/nshmp/model/NshmTestUtils.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) 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 39ac655b..9204d8f5 100644 --- a/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTestUtils.java +++ b/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTestUtils.java @@ -195,8 +195,9 @@ class NshmTestUtils { Nshm nshm, NamedLocation location, Optional<Path> dataPath) throws InterruptedException, ExecutionException { - Map<String, XySequence> actual = - HazardServiceUtils.generateActual(location, nshm.imts()); + Map<String, XySequence> actual = dataPath.isPresent() + ? readExpected(nshm, location, dataPath) + : HazardServiceUtils.generateActual(location, nshm.imts()); Map<String, XySequence> expected = readExpected(nshm, location, Optional.empty()); for (String key : actual.keySet()) { -- GitLab From d55e838334ff45ed29fac7cae58635a6606c4be9 Mon Sep 17 00:00:00 2001 From: Brandon Clayton <bclayton@usgs.gov> Date: Thu, 24 Oct 2024 09:56:55 -0600 Subject: [PATCH 24/26] Test web --- .gitlab-ci.yml | 25 ----------- gradle/nshm.gradle | 41 ------------------- .../nshmp/model/GenerateActual.java | 15 ++++++- .../nshmp/model/GenerateWebActual.java | 25 ----------- .../earthquake/nshmp/model/NshmTests.java | 23 +++++------ 5 files changed, 25 insertions(+), 104 deletions(-) delete mode 100644 src/test/java/gov/usgs/earthquake/nshmp/model/GenerateWebActual.java diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 9b24982b..024d9215 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -245,31 +245,6 @@ NSHM Tests: tags: - nshmp -NSHM Web Tests: - artifacts: - paths: - - ${JACOCO_HTML_DIR} - reports: - junit: ${JUNIT_FILES} - coverage: '/Total.*?([0-9]{1,3})%/' - needs: [] - parallel: - matrix: - # - NSHM: Alaska2007 - - NSHM: WebAlaska2023 - # - NSHM: Conus2018 - # - NSHM: Conus2023 - # - NSHM: Hawaii2021 - 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 - tags: - - nshmp - YAML Lint: allow_failure: true needs: [] diff --git a/gradle/nshm.gradle b/gradle/nshm.gradle index d4bce26c..2bcfe083 100644 --- a/gradle/nshm.gradle +++ b/gradle/nshm.gradle @@ -100,21 +100,6 @@ 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) { description = "Generate conus-2018 acutal for CI/CD" @@ -222,32 +207,6 @@ task testAlaska2023(type: Test) { } } -// Test Alaska 2023 NSHM -task testWebAlaska2023(type: Test) { - description = "Test Alaska 2023 NSHM" - group = "verification" - - doFirst { - downloadNshm(findNshm("nshm-alaska", 2023)) - } - - testLogging { - exceptionFormat "full" - } - - systemProperties(System.getProperties()) - - useJUnitPlatform() - jvmArgs( - "-Xms2g", - "-Xmx${xmx}", - ) - - filter { - includeTestsMatching "gov.usgs.earthquake.nshmp.model.NshmTests.testWebAlaska2023" - } -} - // Test CONUS 2018 NSHM task testConus2018(type: Test) { description = "Test CONUS 2018 NSHM" diff --git a/src/test/java/gov/usgs/earthquake/nshmp/model/GenerateActual.java b/src/test/java/gov/usgs/earthquake/nshmp/model/GenerateActual.java index 4a9c54d1..1f868a19 100644 --- a/src/test/java/gov/usgs/earthquake/nshmp/model/GenerateActual.java +++ b/src/test/java/gov/usgs/earthquake/nshmp/model/GenerateActual.java @@ -2,9 +2,12 @@ package gov.usgs.earthquake.nshmp.model; import java.io.IOException; import java.util.Optional; +import java.util.concurrent.ExecutionException; import gov.usgs.earthquake.nshmp.model.NshmTestUtils.Nshm; import gov.usgs.earthquake.nshmp.model.NshmTestUtils.NshmModel; +import gov.usgs.earthquake.nshmp.www.Application; +import io.micronaut.runtime.Micronaut; /** * Generate actual results to compare to expected results. @@ -15,10 +18,20 @@ import gov.usgs.earthquake.nshmp.model.NshmTestUtils.NshmModel; */ class GenerateActual { - public static void main(String[] args) throws IOException { + public static void main(String[] args) throws IOException, InterruptedException, ExecutionException { Nshm nshm = NshmTests.NSHMS.get(System.getProperty("NSHM")); + + // Generate command line NshmModel nshmModel = NshmTestUtils.loadModel(nshm); NshmTestUtils.writeExpecteds(nshmModel, Optional.of(NshmTests.DATA_PATH)); nshmModel.exec.shutdown(); + + // Generate web + var context = Micronaut + .build("--model=" + nshm.modelPath()) + .mainClass(Application.class) + .start(); + NshmTestUtils.writeWebExpecteds(nshm, Optional.of(NshmTests.WEB_DATA_PATH)); + context.close(); } } diff --git a/src/test/java/gov/usgs/earthquake/nshmp/model/GenerateWebActual.java b/src/test/java/gov/usgs/earthquake/nshmp/model/GenerateWebActual.java deleted file mode 100644 index 20072a35..00000000 --- a/src/test/java/gov/usgs/earthquake/nshmp/model/GenerateWebActual.java +++ /dev/null @@ -1,25 +0,0 @@ -package gov.usgs.earthquake.nshmp.model; - -import java.io.IOException; -import java.util.Optional; -import java.util.concurrent.ExecutionException; - -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) - throws InterruptedException, ExecutionException, IOException { - 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/NshmTests.java b/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTests.java index 928bf90d..3545c1f9 100644 --- a/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTests.java +++ b/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTests.java @@ -27,6 +27,7 @@ import gov.usgs.earthquake.nshmp.site.NshmpSite; */ class NshmTests { static Path DATA_PATH = Paths.get("src/test/resources/e2e/actual"); + static Path WEB_DATA_PATH = Paths.get("src/test/resources/e2e/actual/web"); /* Alaska test sites */ private static final List<NamedLocation> ALASKA_LOCATIONS = List.of( @@ -134,6 +135,7 @@ class NshmTests { final void testAlaska2007() throws IOException, InterruptedException, ExecutionException { Nshm nshm = NSHMS.get("nshm-alaska-2007"); NshmTestUtils.testNshm(nshm, getDataPath(nshm)); + NshmTestUtils.testWebNshm(nshm, getWebDataPath(nshm)); } /** @@ -147,20 +149,9 @@ class NshmTests { final void testAlaska2023() throws IOException, InterruptedException, ExecutionException { Nshm nshm = NSHMS.get("nshm-alaska-2023"); NshmTestUtils.testNshm(nshm, getDataPath(nshm)); + NshmTestUtils.testWebNshm(nshm, getWebDataPath(nshm)); } - /** - * Test Alaska 2023 NSHM - * - * To run test: ./gradlew testWebAlaska2023 - * @throws ExecutionException - * @throws InterruptedException - */ - @Test - final void testWebAlaska2023() throws IOException, InterruptedException, ExecutionException { - Nshm nshm = NSHMS.get("nshm-alaska-2023"); - NshmTestUtils.testWebNshm(nshm, getDataPath(nshm)); - } /** * Test CONUS 2018 NSHM @@ -173,6 +164,7 @@ class NshmTests { final void testConus2018() throws IOException, InterruptedException, ExecutionException { Nshm nshm = NSHMS.get("nshm-conus-2018"); NshmTestUtils.testNshm(nshm, getDataPath(nshm)); + NshmTestUtils.testWebNshm(nshm, getWebDataPath(nshm)); } /** @@ -186,6 +178,7 @@ class NshmTests { final void testConus2023() throws IOException, InterruptedException, ExecutionException { Nshm nshm = NSHMS.get("nshm-conus-2023"); NshmTestUtils.testNshm(nshm, getDataPath(nshm)); + NshmTestUtils.testWebNshm(nshm, getWebDataPath(nshm)); } /** @@ -199,6 +192,7 @@ class NshmTests { final void testHawaii2021() throws IOException, InterruptedException, ExecutionException { Nshm nshm = NSHMS.get("nshm-hawaii-2021"); NshmTestUtils.testNshm(nshm, getDataPath(nshm)); + NshmTestUtils.testWebNshm(nshm, getWebDataPath(nshm)); } /** @@ -216,4 +210,9 @@ class NshmTests { return Files.exists(DATA_PATH.resolve(nshm.modelName())) ? Optional.of(DATA_PATH) : Optional.empty(); } + + private static Optional<Path> getWebDataPath(Nshm nshm) { + return Files.exists(DATA_PATH.resolve(nshm.modelName())) ? Optional.of(DATA_PATH) + : Optional.empty(); + } } -- GitLab From 978309feab4f857f4053559881c9469624990554 Mon Sep 17 00:00:00 2001 From: Brandon Clayton <bclayton@usgs.gov> Date: Thu, 24 Oct 2024 09:57:19 -0600 Subject: [PATCH 25/26] spotless --- .../java/gov/usgs/earthquake/nshmp/model/GenerateActual.java | 4 +++- src/test/java/gov/usgs/earthquake/nshmp/model/NshmTests.java | 1 - 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/test/java/gov/usgs/earthquake/nshmp/model/GenerateActual.java b/src/test/java/gov/usgs/earthquake/nshmp/model/GenerateActual.java index 1f868a19..4e3c292a 100644 --- a/src/test/java/gov/usgs/earthquake/nshmp/model/GenerateActual.java +++ b/src/test/java/gov/usgs/earthquake/nshmp/model/GenerateActual.java @@ -7,6 +7,7 @@ import java.util.concurrent.ExecutionException; import gov.usgs.earthquake.nshmp.model.NshmTestUtils.Nshm; import gov.usgs.earthquake.nshmp.model.NshmTestUtils.NshmModel; import gov.usgs.earthquake.nshmp.www.Application; + import io.micronaut.runtime.Micronaut; /** @@ -18,7 +19,8 @@ import io.micronaut.runtime.Micronaut; */ class GenerateActual { - public static void main(String[] args) throws IOException, InterruptedException, ExecutionException { + public static void main(String[] args) + throws IOException, InterruptedException, ExecutionException { Nshm nshm = NshmTests.NSHMS.get(System.getProperty("NSHM")); // Generate command line diff --git a/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTests.java b/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTests.java index 3545c1f9..38f8f37d 100644 --- a/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTests.java +++ b/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTests.java @@ -152,7 +152,6 @@ class NshmTests { NshmTestUtils.testWebNshm(nshm, getWebDataPath(nshm)); } - /** * Test CONUS 2018 NSHM * -- GitLab From a33125188250976264a2f90df8fa7953f4a48612 Mon Sep 17 00:00:00 2001 From: Brandon Clayton <bclayton@usgs.gov> Date: Thu, 24 Oct 2024 10:21:35 -0600 Subject: [PATCH 26/26] optional --- .../nshmp/model/GenerateActual.java | 3 +- .../earthquake/nshmp/model/NshmTestUtils.java | 35 ++++++++++++------- 2 files changed, 25 insertions(+), 13 deletions(-) diff --git a/src/test/java/gov/usgs/earthquake/nshmp/model/GenerateActual.java b/src/test/java/gov/usgs/earthquake/nshmp/model/GenerateActual.java index 4e3c292a..8996fb07 100644 --- a/src/test/java/gov/usgs/earthquake/nshmp/model/GenerateActual.java +++ b/src/test/java/gov/usgs/earthquake/nshmp/model/GenerateActual.java @@ -8,6 +8,7 @@ import gov.usgs.earthquake.nshmp.model.NshmTestUtils.Nshm; import gov.usgs.earthquake.nshmp.model.NshmTestUtils.NshmModel; import gov.usgs.earthquake.nshmp.www.Application; +import io.micronaut.context.ApplicationContext; import io.micronaut.runtime.Micronaut; /** @@ -29,7 +30,7 @@ class GenerateActual { nshmModel.exec.shutdown(); // Generate web - var context = Micronaut + ApplicationContext context = Micronaut .build("--model=" + nshm.modelPath()) .mainClass(Application.class) .start(); 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 9204d8f5..89852afa 100644 --- a/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTestUtils.java +++ b/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTestUtils.java @@ -41,6 +41,7 @@ import gov.usgs.earthquake.nshmp.gmm.Imt; import gov.usgs.earthquake.nshmp.www.Application; import gov.usgs.earthquake.nshmp.www.hazard.HazardServiceUtils; +import io.micronaut.context.ApplicationContext; import io.micronaut.runtime.Micronaut; import io.swagger.v3.core.util.Yaml; @@ -92,14 +93,18 @@ class NshmTestUtils { */ static void testNshm(Nshm nshm, Optional<Path> dataPath) throws InterruptedException, ExecutionException { - NshmModel nshmModel = loadModel(nshm); + Optional<NshmModel> nshmModel = Optional.empty(); + + if (dataPath.isEmpty()) { + nshmModel = Optional.of(loadModel(nshm)); + } for (NamedLocation location : nshm.locations()) { LOGGER.info("Location: " + location.toString()); - compareCurves(nshmModel, location, dataPath); + compareCurves(nshm, location, nshmModel, dataPath); } - nshmModel.exec.shutdown(); + nshmModel.ifPresent(model -> model.exec.shutdown()); } /** @@ -111,17 +116,22 @@ class NshmTestUtils { */ static void testWebNshm(Nshm nshm, Optional<Path> dataPath) throws InterruptedException, ExecutionException { - var context = Micronaut - .build("--model=nshms/" + String.format("%s-%s", nshm.nshmInfo.repo, nshm.nshmInfo.year)) - .mainClass(Application.class) - .start(); + + Optional<ApplicationContext> context = Optional.empty(); + + if (dataPath.isEmpty()) { + context = Optional.of(Micronaut + .build("--model=" + nshm.modelPath()) + .mainClass(Application.class) + .start()); + } for (NamedLocation location : nshm.locations()) { LOGGER.info("Location: " + location.toString()); compareWebCurves(nshm, location, dataPath); } - context.close(); + context.ifPresent(ApplicationContext::close); } /** @@ -179,12 +189,13 @@ class NshmTestUtils { } private static void compareCurves( - NshmModel nshmModel, + Nshm nshm, NamedLocation location, + Optional<NshmModel> nshmModel, Optional<Path> dataPath) throws ExecutionException { - Map<String, XySequence> actual = dataPath.isPresent() - ? readExpected(nshmModel.nshm, location, dataPath) : generateActual(nshmModel, location); - Map<String, XySequence> expected = readExpected(nshmModel.nshm, location, Optional.empty()); + Map<String, XySequence> actual = dataPath.isPresent() && nshmModel.isEmpty() + ? readExpected(nshm, location, dataPath) : generateActual(nshmModel.get(), location); + Map<String, XySequence> expected = readExpected(nshm, location, Optional.empty()); for (String key : actual.keySet()) { assertCurveEquals(expected.get(key), actual.get(key), TOLERANCE); -- GitLab