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
Esempio n. 2
0
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()
Esempio n. 3
0
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()
Esempio n. 4
0
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)
Esempio n. 5
0
 def get_replication_price(vps_provider, option, vpn_provider='azirevpn'):
     return (calculate_price(vps_provider, option) +
             calculate_price_vpn(vpn_provider)) * BTC_FLUCTUATION_MARGIN