def test_calculate_price(self): self.options = cloudomate.options self.logger = Logger.log self.providers = cloudomate_providers.__init__ cloudomate.get_vps_option = MagicMock() Logger.log = MagicMock() cloudomate_providers.__init__ = MagicMock() cloudomate.calculate_price('BlueAngelHost', 'option') cloudomate.get_vps_option.assert_called_once() self.options = cloudomate.options = self.options Logger.log = self.logger cloudomate_providers.__init__ = self.providers
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 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_replication_price(vps_provider, option, vpn_provider='azirevpn'): return (calculate_price(vps_provider, option) + calculate_price_vpn(vpn_provider)) * BTC_FLUCTUATION_MARGIN