def attempt_purchase(): """ Check if enough money to buy a server, and if so, do so, """ (provider, option, _) = config.get('chosen_provider') if settings.wallets_testnet(): domain = 'TBTC' else: domain = 'BTC' if market_controller.get_balance(domain) >= ( cloudomate_controller.calculate_price(provider, option) + cloudomate_controller.calculate_price_vpn()): logger.log("Try to buy a new server from %s" % provider, log_name) success = cloudomate_controller.purchase_choice(config) if success == plebnet_settings.SUCCESS: # Evolve yourself positively if you are successful dna.evolve(True) logger.log( "Purchasing vps for child %s successful" % (dna.get_own_tree() + '.' + str(config.get('child_index')))) # purchase VPN with same config if server allows for it if cloudomate_controller.get_vps_providers( )[provider].TUN_TAP_SETTINGS: attempt_purchase_vpn() elif success == plebnet_settings.FAILURE: # Evolve provider negatively if not successful dna.evolve(False, provider) config.increment_child_index() fake_generator.generate_child_account() config.set('chosen_provider', None) config.save()
def test_get_balance(self): self.true_logger = logger.log logger.log = MagicMock(return_value='Test') responses.add(responses.GET, 'http://localhost:8085/wallets/MB/balance', json={'balance': {'available': 0.02, 'pending': 0.0, 'currency': 'MB'}}) r = Market.get_balance('MB') self.assertEqual(r, 0.02) logger.log = self.true_logger
def get_balance(self, coin=None): """ Returns the balance of the current wallet. :return: the balance """ if coin is None: coin = self.coin return marketcontroller.get_balance(coin)
def test_get_balance_no_connection(self): self.true_logger = logger.log self.true_requests = requests.get logger.log = MagicMock(return_value='Test') requests.get = MagicMock(side_effect=requests.ConnectionError) self.assertFalse(Market.get_balance('MB')) logger.log = self.true_logger requests.get = self.true_requests
def attempt_purchase_vpn(): """ Attempts to purchase a VPN, checks first if balance is sufficient The success message is stored to prevent further unecessary purchases. """ provider = settings.vpn_host() if settings.wallets_testnet(): domain = 'TBTC' else: domain = 'BTC' if market_controller.get_balance( domain) >= cloudomate_controller.calculate_price_vpn(provider): logger.log("Try to buy a new VPN from %s" % provider, log_name) success = cloudomate_controller.purchase_choice_vpn(config) if success == plebnet_settings.SUCCESS: logger.success("Purchasing VPN succesful!", log_name) elif success == plebnet_settings.FAILURE: logger.error("Error purchasing vpn", log_name)
def place_offer(chosen_est_price, config): """ Sell all available MB for the chosen estimated price on the Tribler market. :param config: config :param chosen_est_price: Target amount of BTC to receive :return: success of offer placement """ available_mb = market_controller.get_balance('MB') if available_mb == 0: logger.log("No MB available") return False config.bump_offer_date() config.set('last_offer', {'BTC': chosen_est_price, 'MB': available_mb}) price_per_unit = max(0.0001, chosen_est_price / float(available_mb)) return market_controller.put_ask(price=price_per_unit, price_type='BTC', quantity=available_mb, quantity_type='MB', timeout=plebnet_settings.TIME_IN_HOUR)
def attempt_purchase(): """ Check if enough money to buy a server, and if so, do so, """ (provider, option, _) = config.get('chosen_provider') provider_offer_ID = str(provider).lower() + "_" + str(option).lower() if settings.wallets_testnet(): domain = 'TBTC' else: domain = 'BTC' btc_balance = satoshi_to_btc(market_controller.get_balance(domain)) vps_price = cloudomate_controller.calculate_price(provider, option) vpn_price = cloudomate_controller.calculate_price_vpn() logger.log('Selected VPS: %s (%s), %s BTC' % (provider, option, vps_price), log_name) logger.log('Selected VPN: %s, %s BTC' % ("mullvad", vpn_price), log_name) logger.log("Balance: %s %s" % (btc_balance, domain), log_name) if btc_balance >= vps_price + vpn_price: logger.log( "Before trying to purchase VPS share current QTable with other agents" ) qtable.share_qtable() logger.log("Try to buy a new server from %s" % provider, log_name) success = cloudomate_controller.purchase_choice(config) if success == plebnet_settings.SUCCESS: # Update qtable yourself positively if you are successful qtable.update_qtable(remote_tables, provider_offer_ID, True, get_reward_qlearning()) # purchase VPN with same config if server allows for it # purchase VPN with same config if server allows for it if cloudomate_controller.get_vps_providers( )[provider].TUN_TAP_SETTINGS: attempt_purchase_vpn() elif success == plebnet_settings.FAILURE: # Update qtable provider negatively if not successful qtable.update_qtable(remote_tables, provider_offer_ID, False, get_reward_qlearning()) qtable.write_dictionary() config.increment_child_index() fake_generator.generate_child_account() config.set('chosen_provider', None) config.save()
def attempt_purchase(): """ Check if rich enough to buy a server, and if so, do so :return: None :rtype: None """ # try to purchase the chosen vps. (provider, option, _) = config.get('chosen_provider') if settings.wallets_testnet(): domain = 'TBTC' else: domain = 'BTC' if market_controller.get_balance(domain) >= cloudomate_controller.calculate_price(provider, option): logger.log("Try to buy a new server from %s" % provider, log_name) success = cloudomate_controller.purchase_choice(config) if success == plebnet_settings.SUCCESS: # evolve yourself positively if you are successful DNA().evolve(True) elif success == plebnet_settings.FAILURE: # evolve provider negatively if not successful DNA().evolve(False)
def get_available_mb(self): return market_controller.get_balance('MB')
def test_get_balance_no_connection(self): self.true_logger = logger.log logger.log = MagicMock(return_value='Test') self.assertFalse(Market.get_balance('MB')) logger.log = self.true_logger