def setUp(self): import sqlalchemy as sa from amfast.remoting.sa_connection_manager import SaConnectionManager engine = sa.create_engine('sqlite:///sa_test_case.db', echo=False) metadata = sa.MetaData() self.manager = SaConnectionManager(engine, metadata) self.manager.createTables() ConnectionTestCase.setUp(self)
class SaTestCase(ConnectionTestCase): def setUp(self): import sqlalchemy as sa from amfast.remoting.sa_connection_manager import SaConnectionManager engine = sa.create_engine('sqlite:///sa_test_case.db', echo=False) metadata = sa.MetaData() self.manager = SaConnectionManager(engine, metadata) self.manager.createTables() ConnectionTestCase.setUp(self)
def initServices(self): connectionManager = SaConnectionManager(self.engine, sqlalchemy.MetaData()) connectionManager.createTables() subscriptionManager = SaSubscriptionManager(self.engine, sqlalchemy.MetaData()) subscriptionManager.createTables() self.channelSet = WsgiChannelSet() self.channelSet.mapChannel(StreamingGeventChannel("streaming")) self.channelSet.mapChannel(WsgiChannel("basic")) self.channelSet.service_mapper = ServiceMapper() self.channelSet.service_mapper.mapService(MyService(self))
def setup_channel_set(channel_set): """Configures an amfast.remoting.channel.ChannelSet object.""" # Setup database schema = persistent.Schema() schema.createSchema() schema.createMappers() # Setup DB based connection_manager and subscription_manager channel_set.connection_manager = SaConnectionManager( persistent.engine, persistent.metadata) channel_set.connection_manager.createTables() channel_set.subscription_manager = SaSubscriptionManager( persistent.engine, persistent.metadata) channel_set.subscription_manager.createTables() # Send log messages to STDOUT handler = logging.StreamHandler(sys.stdout) handler.setLevel(logging.DEBUG) amfast.logger.addHandler(handler) # Map class aliases # These same aliases must be # registered in the client # with the registClassAlias function, # or the RemoteClass metadata tag. class_mapper = ClassDefMapper() class_mapper.mapClass(SaClassDef(models.User, 'models.User')) class_mapper.mapClass(SaClassDef(models.Email, 'models.Email')) class_mapper.mapClass(SaClassDef(models.PhoneNumber, 'models.PhoneNumber')) # Expose class_mapper to our controller sa_obj = controller.SAObject() sa_obj.class_def_mapper = class_mapper # Set Channel options # We're going to use the same # Encoder and Decoder for all channels encoder = Encoder(use_collections=True, use_proxies=True, class_def_mapper=class_mapper, use_legacy_xml=True) decoder = Decoder(class_def_mapper=class_mapper) for channel in channel_set: channel.endpoint.encoder = encoder channel.endpoint.decoder = decoder # Map service targets to controller methods service = Service('ExampleService') service.mapTarget(SaCallableTarget(sa_obj.load, 'load')) service.mapTarget(SaCallableTarget(sa_obj.loadAttr, 'loadAttr')) service.mapTarget(SaCallableTarget(sa_obj.loadAll, 'loadAll')) service.mapTarget(SaCallableTarget(sa_obj.saveList, 'saveList')) service.mapTarget(SaCallableTarget(sa_obj.save, 'save')) service.mapTarget(SaCallableTarget(sa_obj.remove, 'remove')) service.mapTarget(SaCallableTarget(sa_obj.removeList, 'removeList')) service.mapTarget( SaCallableTarget(sa_obj.insertDefaultData, 'insertDefaultData')) channel_set.service_mapper.mapService(service)