def main(): """main program""" arguments = parse_args() if arguments.color: colorlogs() # redirect stdout to /dev/null under osx so we get only 1 output stream f = open(os.devnull, 'w') sys.stderr = f logger.info('Subgridpy') logger.setLevel(logging.DEBUG) if arguments.scenariodir: logger.info('Using scenario dir: %s' % arguments.scenariodir) scenario = EventContainer(arguments.scenariodir) # scenario events from arguments if arguments.bui: if str(arguments.bui) in AREA_WIDE_RAIN.keys(): scenario.add( AreaWideGrid, sim_time_start=0, sim_time_end=None, rain_definition=str(arguments.bui), type=None) if arguments.radar: scenario.add( RadarGrid, sim_time_start=0, sim_time_end=None, radar_dt=arguments.radar, sync=1, multiplier=1, type=None) logger.info('---- Scenario summary ----') for line in scenario.summary(): logger.info(line) subgrid = SubgridWrapper(mdu=arguments.mdu, set_logger=arguments.verbose, output_dir=arguments.outputdir) subgrid.start() # Should not be needed # subgrid.library.initmodel() rain_grid_container = RainGridContainer(subgrid) if arguments.radar: subgrid.subscribe_dataset(rain_grid_container.memcdf_name) if arguments.tend: t_end = arguments.tend else: # default t_end = subgrid.get_nd('tend') logger.info('End time (seconds): %r', t_end) t = subgrid.get_nd('t1') # by reference while t < t_end: apply_events(subgrid, scenario, rain_grid_container) subgrid.update(-1) t = subgrid.get_nd('t1') # by reference clean_events(scenario, rain_grid_container)
def test_logging(self): subgrid = SubgridWrapper() foundmessage = False # Create a new handler stream = io.BytesIO() handler = logging.StreamHandler(stream) logger.addHandler(handler) # if the model logs it is stored in the handler subgrid.start() # flush handler.flush() foundmessage = stream.getvalue() # cleanup logger.removeHandler(handler) # we should have some messages self.assertTrue(foundmessage)
def test_progress(self): """test progress handler""" subgrid = SubgridWrapper(mdu=self.default_mdu, set_progress=True) foundmessage = False # Create a new handler stream = io.BytesIO() handler = logging.StreamHandler(stream) progresslogger.addHandler(handler) # if the model logs it is stored in the handler subgrid.start() # flush handler.flush() foundmessage = stream.getvalue() # cleanup progresslogger.removeHandler(handler) subgrid.stop() # we should have some messages self.assertTrue(foundmessage)
def main(): """main program""" arguments = parse_args() if arguments.color: colorlogs() # redirect stdout to /dev/null under osx so we get only 1 output stream f = open(os.devnull, 'w') sys.stderr = f logger.info('Subgridpy') logger.setLevel(logging.DEBUG) if arguments.scenariodir: logger.info('Using scenario dir: %s' % arguments.scenariodir) scenario = EventContainer(arguments.scenariodir) # scenario events from arguments if arguments.bui: if str(arguments.bui) in AREA_WIDE_RAIN.keys(): scenario.add(AreaWideGrid, sim_time_start=0, sim_time_end=None, rain_definition=str(arguments.bui), type=None) if arguments.radar: scenario.add(RadarGrid, sim_time_start=0, sim_time_end=None, radar_dt=arguments.radar, sync=1, multiplier=1, type=None) logger.info('---- Scenario summary ----') for line in scenario.summary(): logger.info(line) subgrid = SubgridWrapper(mdu=arguments.mdu, set_logger=arguments.verbose, output_dir=arguments.outputdir) subgrid.start() # Should not be needed # subgrid.library.initmodel() rain_grid_container = RainGridContainer(subgrid) if arguments.radar: subgrid.subscribe_dataset(rain_grid_container.memcdf_name) if arguments.tend: t_end = arguments.tend else: # default t_end = subgrid.get_nd('tend') logger.info('End time (seconds): %r', t_end) t = subgrid.get_nd('t1') # by reference while t < t_end: apply_events(subgrid, scenario, rain_grid_container) subgrid.update(-1) t = subgrid.get_nd('t1') # by reference clean_events(scenario, rain_grid_container)