|
| 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