def test_do_run(self): config = DotDict() with mock.patch('socorrolib.app.socorro_app.ConfigurationManager') as cm: cm.return_value.context.return_value = mock.MagicMock() with mock.patch('socorrolib.app.socorro_app.signal') as s: class SomeOtherApp(SocorroApp): app_name='SomeOtherApp' app_verision='1.2.3' app_description='a silly app' def main(self): ok_( self.config is cm.return_value.context.return_value.__enter__ .return_value ) return 17 result = main(SomeOtherApp) args = cm.call_args_list args, kwargs = args[0] ok_(isinstance(args[0], Namespace)) ok_(isinstance(kwargs['values_source_list'], list)) eq_(kwargs['app_name'], SomeOtherApp.app_name) eq_(kwargs['app_version'], SomeOtherApp.app_version) eq_(kwargs['app_description'], SomeOtherApp.app_description) eq_(kwargs['config_pathname'], './config') ok_(kwargs['values_source_list'][-1], command_line) ok_(isinstance(kwargs['values_source_list'][-2], DotDict)) ok_(kwargs['values_source_list'][-3] is ConfigFileFutureProxy) ok_(isinstance( kwargs['values_source_list'][0], ApplicationDefaultsProxy )) eq_(result, 17)
def test_do_run(self): config = DotDict() with mock.patch( 'socorrolib.app.socorro_app.ConfigurationManager') as cm: cm.return_value.context.return_value = mock.MagicMock() with mock.patch('socorrolib.app.socorro_app.signal') as s: class SomeOtherApp(SocorroApp): app_name = 'SomeOtherApp' app_verision = '1.2.3' app_description = 'a silly app' def main(self): ok_(self.config is cm.return_value.context. return_value.__enter__.return_value) return 17 result = main(SomeOtherApp) args = cm.call_args_list args, kwargs = args[0] ok_(isinstance(args[0], Namespace)) ok_(isinstance(kwargs['values_source_list'], list)) eq_(kwargs['app_name'], SomeOtherApp.app_name) eq_(kwargs['app_version'], SomeOtherApp.app_version) eq_(kwargs['app_description'], SomeOtherApp.app_description) eq_(kwargs['config_pathname'], './config') ok_(kwargs['values_source_list'][-1], command_line) ok_(isinstance(kwargs['values_source_list'][-2], DotDict)) ok_(kwargs['values_source_list'][-3] is ConfigFileFutureProxy) ok_( isinstance(kwargs['values_source_list'][0], ApplicationDefaultsProxy)) eq_(result, 17)
def test_do_run_with_alternate_values_source_list(self): config = DotDict() with mock.patch( 'socorrolib.app.socorro_app.ConfigurationManager') as cm: cm.return_value.context.return_value = mock.MagicMock() with mock.patch('socorrolib.app.socorro_app.signal') as s: class SomeOtherApp(SocorroApp): app_name = 'SomeOtherApp' app_verision = '1.2.3' app_description = 'a silly app' def main(self): ok_(self.config is cm.return_value.context. return_value.__enter__.return_value) return 17 result = main(SomeOtherApp, config_path='my/other/path', values_source_list=[{ "a": 1 }, { "b": 2 }]) args = cm.call_args_list args, kwargs = args[0] ok_(isinstance(args[0], Namespace)) eq_(kwargs['app_name'], SomeOtherApp.app_name) eq_(kwargs['app_version'], SomeOtherApp.app_version) eq_(kwargs['app_description'], SomeOtherApp.app_description) eq_(kwargs['config_pathname'], 'my/other/path') ok_(isinstance(kwargs['values_source_list'], list)) ok_( isinstance(kwargs['values_source_list'][0], ApplicationDefaultsProxy)) eq_(kwargs['values_source_list'][1], {"a": 1}) eq_(kwargs['values_source_list'][2], {"b": 2}) eq_(result, 17)
def test_do_run_with_alternate_values_source_list(self): config = DotDict() with mock.patch('socorrolib.app.socorro_app.ConfigurationManager') as cm: cm.return_value.context.return_value = mock.MagicMock() with mock.patch('socorrolib.app.socorro_app.signal') as s: class SomeOtherApp(SocorroApp): app_name='SomeOtherApp' app_verision='1.2.3' app_description='a silly app' def main(self): ok_( self.config is cm.return_value.context.return_value.__enter__ .return_value ) return 17 result = main( SomeOtherApp, config_path='my/other/path', values_source_list=[{"a": 1}, {"b": 2}] ) args = cm.call_args_list args, kwargs = args[0] ok_(isinstance(args[0], Namespace)) eq_(kwargs['app_name'], SomeOtherApp.app_name) eq_(kwargs['app_version'], SomeOtherApp.app_version) eq_(kwargs['app_description'], SomeOtherApp.app_description) eq_(kwargs['config_pathname'], 'my/other/path') ok_(isinstance(kwargs['values_source_list'], list)) ok_(isinstance( kwargs['values_source_list'][0], ApplicationDefaultsProxy )) eq_(kwargs['values_source_list'][1], {"a": 1}) eq_(kwargs['values_source_list'][2], {"b": 2}) eq_(result, 17)
class MissingSymbolsCronAppDryRunner(App): # pragma: no cover """App to test running missing-symbols right here right now. To run it, simply execute this file: $ python socorro/cron/jobs/missingsymbols.py """ required_config = Namespace() required_config.add_option( 'crontabber_job_class', default='socorro.cron.jobs.missingsymbols.MissingSymbolsCronApp', doc='bla', from_string_converter=class_converter, ) def __init__(self, config): self.config = config self.app = config.crontabber_job_class(config, {}) def main(self): self.app.run() if __name__ == '__main__': # pragma: no cover import sys sys.exit(main(MissingSymbolsCronAppDryRunner))
'date', default=datetime.datetime.utcnow().date(), doc='Date to run for', from_string_converter=string_to_datetime ) required_config.add_option( 'crontabber_job_class', default='socorro.cron.jobs.ftpscraper.FTPScraperCronApp', doc='bla', from_string_converter=class_converter, ) @staticmethod def get_application_defaults(): return { 'database.database_class': mock.MagicMock() } def __init__(self, config): self.config = config self.config.dry_run = True self.ftpscraper = config.crontabber_job_class(config, {}) def main(self): assert self.config.dry_run self.ftpscraper.run(self.config.date) if __name__ == '__main__': # pragma: no cover sys.exit(main(FTPScraperCronAppDryRunner))
) from socorrolib.webapi.servers import WSGIServer import collector.collector_app from configman import ( ConfigFileFutureProxy, environment ) if os.path.isfile('/etc/socorro/collector.ini'): config_path = '/etc/socorro' else: config_path = WSGIServer.get_socorro_config_path(__file__) # invoke the generic main function to create the configman app class and which # will then create the wsgi app object. main( # we use the generic Socorro App class. We'll rely on configuration to set # the 'application' class object to the appropriate collector_app class # for example, it could be "CollectorApp" or "Collector2015App" SocorroWelcomeApp, config_path=config_path, values_source_list=[ ConfigFileFutureProxy, environment ] ) application = collector.collector_app.application
#-------------------------------------------------------------------------- def raw_dumps_as_files_command(self): return self.crash_store.get_raw_dumps_as_files(self.config.crash_id) #-------------------------------------------------------------------------- def find_method(self, a_method_name): try: return getattr(self, a_method_name + '_command') except AttributeError: return partial(self.method_not_found, a_method_name) #-------------------------------------------------------------------------- def main(self): self.crash_store = self.config.crashstorage_class(self.config) command = self.find_method(self.config.command) result = command() if result is not None: print result commands = [] for a_symbol in dir(FetchApp): if a_symbol.endswith('_command'): commands.append(a_symbol.replace('_command', '')) FetchApp.required_config.command.doc = (FetchApp.required_config.command.doc % ', '.join(commands)) if __name__ == '__main__': main(FetchApp)
db.create_tables() db.load_raw_sql('views') db.commit() if not self.config.get('no_staticdata'): self.import_staticdata(db) if self.config['fakedata']: self.generate_fakedata(db, self.config['fakedata_days']) db.commit() command.stamp(alembic_cfg, "heads") db.session.close() # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # database owner section # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - self.config.logger.info('database extensions section with %s', superuser_normaldb_pg_url) with PostgreSQLAlchemyManager(superuser_normaldb_pg_url, self.config.logger, autocommit=False, on_heroku=self.config.on_heroku) as db: db.set_table_owner(self.config.database_username) db.set_default_owner(database_name, self.config.database_username) db.set_grants(self.config) # config has user lists return 0 if __name__ == "__main__": sys.exit(main(SocorroDBApp))
#-------------------------------------------------------------------------- def find_method(self, a_method_name): try: return getattr(self, a_method_name + '_command') except AttributeError: return partial(self.method_not_found, a_method_name) #-------------------------------------------------------------------------- def main(self): self.crash_store = self.config.crashstorage_class(self.config) command = self.find_method(self.config.command) result = command() if result is not None: print result commands = [] for a_symbol in dir(FetchApp): if a_symbol.endswith('_command'): commands.append(a_symbol.replace('_command', '')) FetchApp.required_config.command.doc = ( FetchApp.required_config.command.doc % ', '.join(commands) ) if __name__ == '__main__': main(FetchApp)
if not self.config.get('no_staticdata'): self.import_staticdata(db) if self.config['fakedata']: self.generate_fakedata(db, self.config['fakedata_days']) db.commit() command.stamp(alembic_cfg, "heads") db.session.close() # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # database owner section # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - self.config.logger.info( 'database extensions section with %s', superuser_normaldb_pg_url ) with PostgreSQLAlchemyManager( superuser_normaldb_pg_url, self.config.logger, autocommit=False, on_heroku=self.config.on_heroku ) as db: db.set_table_owner(self.config.database_username) db.set_default_owner(database_name, self.config.database_username) db.set_grants(self.config) # config has user lists return 0 if __name__ == "__main__": sys.exit(main(SocorroDBApp))