def start_dispersy(self): from dispersy.dispersy import Dispersy from dispersy.endpoint import StandaloneEndpoint from market import Global from market.community.community import MortgageMarketCommunity from twisted.internet.task import LoopingCall self.dispersy = Dispersy(StandaloneEndpoint(self.port, '0.0.0.0'), unicode('.'), u'dispersy-%s.db' % self.database_prefix) self.dispersy.statistics.enable_debug_statistics(True) self.dispersy.start(autoload_discovery=True) my_member = self.dispersy.get_member( private_key=self.private_key.decode("HEX")) master_member = self.dispersy.get_member(public_key=Global.MASTER_KEY) self.community = MortgageMarketCommunity.init_community( self.dispersy, master_member, my_member) self.community.api = self.api self.community.user = self.user self.api.community = self.community # Run the scenario every 3 seconds LoopingCall(self._scenario).start(3.0) # Send messages from the queue every 3 seconds LoopingCall(self.api.outgoing_queue.process).start(3.0) LoopingCall(self.api.incoming_queue.process).start(3.0)
def setUp(self): # Faking IOThread registerAsIOThread() # Object creation and preperation self.dispersy = Dispersy(ManualEnpoint(0), unicode("dispersy_temporary")) self.api = MarketAPI(MarketDatabase(MemoryBackend())) self.api.db.backend.clear() user, _, priv = self.api.create_user() self.bank, _, _ = self.api.create_user() self.user = user self.private_key = priv self.dispersy._database.open() self.master_member = DummyMember(self.dispersy, 1, "a" * 20) self.member = self.dispersy.get_member( private_key=self.private_key.decode("HEX")) self.community = MortgageMarketCommunity.init_community( self.dispersy, self.master_member, self.member) self.community.api = self.api self.community.user = self.user self.api.community = self.community # Add our conversion to the community. self.conversion = MortgageMarketConversion(self.community) self.community._conversions = [] self.community.add_conversion(self.conversion) self.setupModels()
def enable_switch(self): self.is_switch = True # Start Dispersy. First, fix the bootstrap server pointer os.environ[BOOTSTRAP_FILE_ENVNAME] = 'bootstrap.txt' self.dispersy = Dispersy(StandaloneEndpoint(self.options['port'], '0.0.0.0'), os.path.join(self.cache_dir, u'dispersy'), u'dispersy.db') self.dispersy.statistics.enable_debug_statistics(True) self.dispersy.start(autoload_discovery=True) self.load_money_community()
def run(): crypto = ECCrypto() dispersy = Dispersy( StandaloneEndpoint(options["port"], options["ip"]), options["statedir"], u'dispersy.db', crypto) if not dispersy.start(): raise RuntimeError("Unable to start Dispersy") master_member = MarketCommunity.get_master_members(dispersy)[0] my_member = dispersy.get_member(private_key=crypto.key_to_bin( crypto.generate_key(u"curve25519"))) MarketCommunity.init_community(dispersy, master_member, my_member) self._stopping = False def signal_handler(sig, frame): logger.info("Received signal '%s' in %s (shutting down)" % (sig, frame)) if not self._stopping: self._stopping = True dispersy.stop() reactor.stop() signal.signal(signal.SIGINT, signal_handler) signal.signal(signal.SIGTERM, signal_handler)
def setUp(self): # Faking IOThread registerAsIOThread() # Object creation and preperation self.dispersy = Dispersy(ManualEnpoint(0), unicode("dispersy_temporary_mc1")) self.dispersy_bank = Dispersy(ManualEnpoint(0), unicode("dispersy_temporary_mc2")) self.api = MarketAPI( MarketDatabase(PersistentBackend('.', u'borrower.db'))) self.api_bank = MarketAPI( MarketDatabase(PersistentBackend('.', u'bank.db'))) self.api.db.backend.clear() self.api_bank.db.backend.clear() self.user, _, priv_user = self.api.create_user() self.bank, _, priv_bank = self.api_bank.create_user() self.dispersy._database.open() self.dispersy_bank._database.open() self.master_member = DummyMember(self.dispersy, 1, "a" * 20) self.member = self.dispersy.get_member( private_key=priv_user.decode("HEX")) self.member_bank = self.dispersy_bank.get_member( private_key=priv_bank.decode("HEX")) self.community = MortgageMarketCommunity.init_community( self.dispersy, self.master_member, self.member) self.community_bank = MortgageMarketCommunity.init_community( self.dispersy_bank, self.master_member, self.member_bank) self.community.api = self.api self.community.user = self.user self.api.community = self.community self.community_bank.api = self.api_bank self.community_bank.user = self.bank self.api_bank.community = self.community_bank self.db = self.api.db.backend self.bank_db = self.api_bank.db.backend self.community.persistence = self.db self.community_bank.persistence = self.bank_db # Models self.mortgage = Mortgage(UUID('b97dfa1c-e125-4ded-9b1a-5066462c529c'), UUID('b97dfa1c-e125-4ded-9b1a-5066462c520c'), 'ING', 80000, 1, 2.5, 1.5, 2.5, 36, 'A', [], STATUS.ACCEPTED) t = int(time.time()) self.payload = ( self.bank.id, self.user.id, self.mortgage, self.mortgage, 2, 1, 'prev_hash_bene', 'prev_hash_beni', 'sig_bene', 'sig_beni', t, ) self.payload2 = ( self.bank.id, '', self.mortgage, None, 2, 1, 'prev_hash_bene', '', 'sig_bene', '', t, )
def setUp(self): # Faking IOThread registerAsIOThread() # Object creation and preperation self.dispersy = Dispersy(ManualEnpoint(0), unicode("dispersy_temporary")) self.dispersy_bank = Dispersy(ManualEnpoint(0), unicode("dispersy_temporary2")) self.dispersy_investor = Dispersy(ManualEnpoint(0), unicode("dispersy_temporary3")) # a neutral api to generate the intial id's for loan requests and such to skip # having to save the loan request to the (sending) user from each test as that # isn't relevant. self.neutral_api = MarketAPI(MarketDatabase(MemoryBackend())) self.api = MarketAPI(MarketDatabase(MemoryBackend())) self.api_bank = MarketAPI(MarketDatabase(MemoryBackend())) self.api_investor = MarketAPI(MarketDatabase(MemoryBackend())) self.api.db.backend.clear() self.api_bank.db.backend.clear() self.api_investor.db.backend.clear() self.user, _, priv_user = self.api.create_user() self.bank, _, priv_bank = self.api.create_user() self.investor, _, priv_investor = self.api.create_user() # save the user to the bank and investor db self.user.post_or_put(self.api_bank.db) self.bank.post_or_put(self.api_bank.db) self.investor.post_or_put(self.api_bank.db) self.user.post_or_put(self.api_investor.db) self.bank.post_or_put(self.api_investor.db) self.investor.post_or_put(self.api_investor.db) self.dispersy._database.open() self.dispersy_bank._database.open() self.dispersy_investor._database.open() self.master_member = DummyMember(self.dispersy, 1, "a" * 20) self.member = self.dispersy.get_member( private_key=priv_user.decode("HEX")) self.member_bank = self.dispersy.get_member( private_key=priv_bank.decode("HEX")) self.member_investor = self.dispersy.get_member( private_key=priv_investor.decode("HEX")) self.community = MortgageMarketCommunity.init_community( self.dispersy, self.master_member, self.member) self.community_bank = MortgageMarketCommunity.init_community( self.dispersy_bank, self.master_member, self.member_bank) self.community_investor = MortgageMarketCommunity.init_community( self.dispersy_investor, self.master_member, self.member_investor) self.community.api = self.api self.community.user = self.user self.api.community = self.community self.community_bank.api = self.api_bank self.community_bank.user = self.bank self.api.community = self.community_bank self.community_investor.api = self.api_investor self.community_investor.user = self.investor self.api.community = self.community_investor # Add our conversion to the community. self.conversion = MortgageMarketConversion(self.community) self.dispersy_mock = Mock() self.dispersy_mock.store_update_forward.return_value = True self.setupModels()