예제 #1
0
    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()
예제 #3
0
    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()
예제 #4
0
        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()