### Question:
OrphanBuildStatusUpdater implements BuildStatusUpdater { public void performScan() { if ( orphanAfterHours <= 0 ) { log.warn( "disabled by configuration: orphan-after-hours = {}", orphanAfterHours ); return; } try { long hourInMillis = 1000 * 60 * 60, now = System.currentTimeMillis(); long orphanCutoff = now - ( orphanAfterHours * hourInMillis ); log.info( "attempting to cancel results in-progress for more than {} hours", orphanAfterHours ); Set<Integer> orphans = buildResultDao.resolveOrphanedInProgressResults( orphanCutoff ); if ( orphans.isEmpty() ) { log.info( "marked no results as canceled" ); } else { log.info( "marked {} results as canceled: {}", orphans.size(), orphans ); } } catch ( ContinuumStoreException e ) { log.warn( "failed to resolve orphaned build results: ", e.getMessage() ); } }  void setOrphanAfterHours( int orphanAfterHours ); void performScan();  }### Answer:
@Test public void testOrphansCanceled() throws ContinuumStoreException { updater.performScan(); verifyUntouched( recent ); verifyCanceled( aged ); }