public void checkNeeded(boolean force) { synchronized (lock) { if (fmrcDataset == null) { try { manager.scan(true); update(); return; } catch (Throwable t) { logger.error(config.spec+": rescan failed"); throw new RuntimeException(t); } } if (!force && !manager.isScanNeeded()) return; try { if (!manager.scan(true)) return; update(); } catch (Throwable t) { logger.error(config.spec+": rescan failed"); throw new RuntimeException(t); } } }
public void execute(JobExecutionContext context) throws JobExecutionException { try { CollectionManager manager = (CollectionManager) context.getJobDetail().getJobDataMap().get(DCM_NAME); org.slf4j.Logger loggerfc = (org.slf4j.Logger) context.getJobDetail().getJobDataMap().get(LOGGER); String groupName = context.getTrigger().getKey().getGroup(); if (groupName.equals("nocheck")) { loggerfc.info("UpdateCollection {} nocheck", manager.getCollectionName()); manager.updateNocheck(); // update(CollectionManager.Force.nocheck) } else { loggerfc.debug("UpdateCollection {} scan(true)", manager.getCollectionName()); manager.scan(true); } } catch (Throwable e) { logger.error("UpdateCollectionJob.execute failed", e); } } }
@Test @Ignore("tests fail on jenkins due to file permisssions") public void testScanOlderThan() throws IOException, InterruptedException { Formatter f = new Formatter(System.out); CollectionManager dcm = MFileCollectionManager.open("testScanOlderThan", TestDir.cdmUnitTestDir + "agg/updating/.*nc$", null, f); dcm.scan(true); List<MFile> fileList = (List<MFile>) Misc.getList(dcm.getFilesSorted()); assert fileList.size() == 3 : dcm; assert touch(TestDir.cdmUnitTestDir + "agg/updating/extra.nc"); dcm = MFileCollectionManager.open("testScanOlderThan", TestDir.cdmUnitTestDir + "agg/updating/.*nc$", "10 sec", f); dcm.scan(true); fileList = (List<MFile>) Misc.getList(dcm.getFilesSorted()); assert fileList.size() == 2 : dcm; }
@Test public void testScan() throws IOException { // count scanned files Formatter f = new Formatter(System.out); CollectionManager dcm = MFileCollectionManager.open("testScan", TestDir.cdmUnitTestDir + "agg/narr/narr-a_221_#yyyyMMdd_HHmm#.*grb$", null, f); dcm.scan(true); List<MFile> fileList = (List<MFile>) Misc.getList(dcm.getFilesSorted()); assert fileList.size() == 3 : dcm; // check date extractor int count = 0; String[] result = new String[] {"2000-01-18T12:00:00", "2000-01-19T00:00:00", "2000-01-20T12:00:00"}; for (MFile mfile : dcm.getFilesSorted()) { CalendarDate de = dcm.extractDate(mfile); System.out.printf(" %s == %s%n", mfile.getPath(), de); assert de.toString().startsWith(result[count]); count++; } }