Skip to content

Commit 485a2c1

Browse files
committed
added integration test for mhs l1b reader
1 parent acd91e1 commit 485a2c1

File tree

5 files changed

+93
-5
lines changed

5 files changed

+93
-5
lines changed

core/src/main/java/com/bc/fiduceo/reader/amsu_mhs/nat/Abstract_L1B_NatReader.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -158,8 +158,10 @@ public void close() throws IOException {
158158
cache.clear();
159159
cache = null;
160160
}
161-
registry.clear();
162-
registry = null;
161+
if (registry != null) {
162+
registry.clear();
163+
registry = null;
164+
}
163165
pixelLocator = null;
164166
productSize = null;
165167
}

core/src/main/resources/com/bc/fiduceo/reader/amsu_mhs/nat/MHS_L1B/variables.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
"units": "mW/m2/sr/cm-1",
99
"standard_name": "toa_radiance"
1010
},
11-
"FOV_DATA QUALITY": {
11+
"FOV_DATA_QUALITY": {
1212
"data_type": "integer4",
1313
"offset": 1883,
1414
"stride": 1,

core/src/test/java/com/bc/fiduceo/reader/amsu_mhs/MHS_L1B_Reader_IO_Test.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -367,7 +367,7 @@ public void testGetVariables() throws IOException, InvalidRangeException {
367367
assertEquals(15, variables.size());
368368

369369
VariableProxy variable = (VariableProxy) variables.get(0);
370-
assertEquals("FOV_DATA QUALITY", variable.getFullName());
370+
assertEquals("FOV_DATA_QUALITY", variable.getFullName());
371371
assertEquals(DataType.INT, variable.getDataType());
372372
List<Attribute> attributes = variable.getAttributes();
373373
Attribute attribute = attributes.get(0);

core/src/test/java/com/bc/fiduceo/reader/amsu_mhs/nat/VariableRegistryTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ public void test_load_contents_mhs_l1b() {
6060
assertEquals(.0000001, sceneRadiance05.getScale_factor(), 1e-10);
6161
assertEquals("mW/m2/sr/cm-1", sceneRadiance05.getUnits());
6262

63-
final VariableDefinition dataQuality = mhsVars.get("FOV_DATA QUALITY");
63+
final VariableDefinition dataQuality = mhsVars.get("FOV_DATA_QUALITY");
6464
assertEquals("integer4", dataQuality.getData_type());
6565
assertEquals(1883, dataQuality.getOffset());
6666
assertEquals(1, dataQuality.getStride());
Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
package com.bc.fiduceo.matchup;
2+
3+
import com.bc.fiduceo.FiduceoConstants;
4+
import com.bc.fiduceo.NCTestUtils;
5+
import com.bc.fiduceo.TestUtil;
6+
import com.bc.fiduceo.core.SatelliteObservation;
7+
import com.bc.fiduceo.core.Sensor;
8+
import com.bc.fiduceo.core.UseCaseConfig;
9+
import com.bc.fiduceo.db.DbAndIOTestRunner;
10+
import com.bc.fiduceo.util.NetCDFUtils;
11+
import org.apache.commons.cli.ParseException;
12+
import org.junit.Test;
13+
import org.junit.runner.RunWith;
14+
import ucar.ma2.InvalidRangeException;
15+
import ucar.nc2.NetcdfFile;
16+
17+
import java.io.File;
18+
import java.io.IOException;
19+
import java.sql.SQLException;
20+
import java.util.ArrayList;
21+
import java.util.List;
22+
23+
import static org.junit.Assert.*;
24+
25+
@RunWith(DbAndIOTestRunner.class)
26+
public class MatchupToolIntegrationTest_MHS_point extends AbstractUsecaseIntegrationTest {
27+
28+
@Test
29+
public void testMatchup_MHS_location_extracts() throws IOException, SQLException, ParseException, InvalidRangeException {
30+
final File mmdWriterConfig = new File(configDir, "mmd-writer-config.xml");
31+
if (!mmdWriterConfig.delete()) {
32+
fail("unable to delete test file");
33+
}
34+
TestUtil.writeMmdWriterConfig(configDir);
35+
36+
final UseCaseConfig useCaseConfig = createUseCaseConfigBuilder()
37+
.withLocationElement(50, 60)
38+
.createConfig();
39+
final File useCaseConfigFile = storeUseCaseConfig(useCaseConfig, "usecase-mhs.xml");
40+
41+
insert_MHS();
42+
43+
final String[] args = new String[]{"-c", configDir.getAbsolutePath(), "-u", useCaseConfigFile.getName(), "-start", "2025-232", "-end", "2025-233"};
44+
MatchupToolMain.main(args);
45+
46+
final File mmdFile = getMmdFilePath(useCaseConfig, "2025-232", "2025-233");
47+
assertTrue(mmdFile.isFile());
48+
49+
try (NetcdfFile mmd = NetcdfFile.open(mmdFile.getAbsolutePath())) {
50+
final int matchupCount = NetCDFUtils.getDimensionLength(FiduceoConstants.MATCHUP_COUNT, mmd);
51+
assertEquals(1, matchupCount);
52+
53+
NCTestUtils.assert3DVariable("mhs-mc_FOV_DATA_QUALITY", 0, 0, 0, 0, mmd);
54+
NCTestUtils.assert3DVariable("mhs-mc_SCENE_RADIANCES_03", 1, 0, 0, 732588, mmd);
55+
NCTestUtils.assert3DVariable("mhs-mc_SCENE_RADIANCES_05", 2, 0, 0, 868447, mmd);
56+
NCTestUtils.assert3DVariable("mhs-mc_SURFACE_PROPERTIES", 0, 1, 0, 2, mmd);
57+
NCTestUtils.assert3DVariable("mhs-mc_acquisition_time", 1, 1, 0, 1755669867, mmd);
58+
NCTestUtils.assert3DVariable("mhs-mc_longitude", 2, 1, 0, 491101, mmd);
59+
NCTestUtils.assert3DVariable("mhs-mc_satellite_zenith_angle", 0, 2, 0, 5302, mmd);
60+
NCTestUtils.assert3DVariable("mhs-mc_TERRAIN_ELEVATION", 0, 2, 0, 0, mmd);
61+
}
62+
}
63+
64+
private void insert_MHS() throws IOException, SQLException {
65+
final String sensorKey = "mhs-mc";
66+
final String relativeArchivePath = TestUtil.assembleFileSystemPath(new String[]{sensorKey, "v10", "2025", "08", "20", "MHSx_xxx_1B_M03_20250820060350Z_20250820074550Z_N_O_20250820074043Z.nat"}, true);
67+
68+
final SatelliteObservation satelliteObservation = readSatelliteObservation(sensorKey, relativeArchivePath, "v10");
69+
storage.insert(satelliteObservation);
70+
}
71+
72+
private MatchupToolTestUseCaseConfigBuilder createUseCaseConfigBuilder() {
73+
final List<Sensor> sensorList = new ArrayList<>();
74+
final Sensor primary = new Sensor("mhs-mc");
75+
primary.setPrimary(true);
76+
sensorList.add(primary);
77+
78+
final List<com.bc.fiduceo.core.Dimension> dimensions = new ArrayList<>();
79+
dimensions.add(new com.bc.fiduceo.core.Dimension("mhs-mc", 3, 3));
80+
81+
return (MatchupToolTestUseCaseConfigBuilder) new MatchupToolTestUseCaseConfigBuilder("mhs-mc")
82+
.withSensors(sensorList)
83+
.withOutputPath(new File(TestUtil.getTestDir().getPath(), "mhs-mc").getPath())
84+
.withDimensions(dimensions);
85+
}
86+
}

0 commit comments

Comments
 (0)