Пример #1
0
def pick_provider(providers):
    provider = DNA.choose_provider(providers)
    gateway = cloudomate_providers[provider].gateway
    option, price, currency = pick_option(provider)
    btc_price = gateway.estimate_price(
        cloudomate.wallet.get_price(
            price, currency)) + cloudomate.wallet.get_network_fee()
    return provider, option, btc_price
Пример #2
0
def pick_provider(providers):
    """
    This method picks a provider based on the DNA o the agent.
    :param providers:
    :return:
    """
    provider = DNA.choose_provider(providers)
    gateway = get_vps_providers()[provider].get_gateway()
    option, price, currency = pick_option(provider)
    btc_price = gateway.estimate_price(wallet_util.get_price(price, currency))
    return provider, option, btc_price
Пример #3
0
class TestDna(unittest.TestCase):

    test_dna = None

    def setUp(self):
        self.test_dna = DNA()
        self.test_dna.rate = 1
        self.test_dna.length = 0.0
        self.test_dna.dictionary = {}
        self.test_dna.vps = {}

    def tearDown(self):
        pass

    def test_add_provider(self):
        self.test_dna.add_provider("provider1")
        self.assertEqual(self.test_dna.vps, {'provider1': 0.5})

    def test_remove_provider(self):
        self.test_dna.add_provider("provider1")
        self.test_dna.remove_provider("provider1")
        self.assertEqual({}, self.test_dna.vps)

    def test_normalize(self):
        self.test_dna.add_provider("provider1")
        self.test_dna.normalize()
        self.assertEqual({'provider1': 1}, self.test_dna.vps)

    def test_mutate_false(self):
        self.test_dna.add_provider("provider1")
        self.assertFalse(self.test_dna.mutate("provider2"))

    def test_mutate_true(self):
        self.test_dna.add_provider("provider1")
        self.test_dna.mutate("provider1")
        self.assertEqual({'provider1': 1.5}, self.test_dna.vps)

    def test_demutate_false(self):
        self.test_dna.add_provider("provider1")
        self.assertFalse(self.test_dna.demutate("provider2"))

    def test_demutate_enough(self):
        self.test_dna.add_provider("provider1")
        self.test_dna.rate = 0.5
        self.test_dna.demutate("provider1")
        self.assertEqual({'provider1': 0.0}, self.test_dna.vps)

    def test_demutate_not_enough(self):
        self.test_dna.add_provider("provider1")
        self.test_dna.rate = 0.2
        self.test_dna.demutate("provider1")
        self.test_dna.rate = 0.4
        self.test_dna.demutate("provider1")
        self.assertEqual({'provider1': 0.3}, self.test_dna.vps)

    def test_denormalize(self):
        self.test_dna.add_provider("provider1")
        self.test_dna.add_provider("provider2")
        self.test_dna.normalize()

        self.test_dna.length = 7
        self.test_dna.denormalize()

        self.assertEqual({'provider1': 3.5, 'provider2': 3.5}, self.test_dna.vps)

    @mock.patch('random.uniform', return_value=0.7)
    def test_choose_provider(self, mock1):
        self.test_dna.add_provider("provider1")
        self.test_dna.add_provider("provider2")
        self.assertEqual(self.test_dna.choose_provider(self.test_dna.vps), 'provider2')

    def test_exclude(self):
        self.test_dna.add_provider("provider1")
        self.test_dna.add_provider("provider2")
        self.test_dna.add_provider("provider3")
        new = self.test_dna.exclude("provider2")

        self.assertEqual({'provider1': 0.5, 'provider3': 0.5}, new)
        self.assertEqual({'provider1': 0.5, 'provider2': 0.5, 'provider3': 0.5}, self.test_dna.vps)

    def test_normalize_excluded(self):
        test_dict = {'provider1': 0.5}
        res_dict = self.test_dna.normalize_excluded(test_dict)
        self.assertEqual({'provider1': 1}, res_dict)

    @mock.patch('plebnet.agent.dna.DNA.write_dictionary', return_value=None)
    def test_positive_evolve(self, mock):
        self.test_dna.add_provider("provider1")
        self.test_dna.add_provider("provider2")
        self.test_dna.rate = 0.25
        self.test_dna.positive_evolve("provider2")

        result = self.test_dna.exclude("provider2")
        self.assertEqual({'provider1': 0.4}, result)

    @mock.patch('plebnet.agent.dna.DNA.write_dictionary', return_value=None)
    def test_negative_evolve(self, mock):
        self.test_dna.add_provider("provider1")
        self.test_dna.add_provider("provider2")
        self.test_dna.rate = 0.5
        self.test_dna.negative_evolve("provider2")
        self.assertEqual({'provider1': 1.0, 'provider2': 0.0}, self.test_dna.vps)

    @mock.patch('plebnet.agent.dna.DNA.write_dictionary', return_value=None)
    def test_set_and_get_own_provider(self, mock):
        self.test_dna.set_own_provider("provider2")
        self.assertEqual("provider2", self.test_dna.get_own_provider())

    @mock.patch('plebnet.agent.dna.DNA.write_dictionary', return_value=None)
    def test_evolve_positive(self, mock):
        self.test_dna.add_provider("provider1")
        self.test_dna.add_provider("provider2")
        self.test_dna.set_own_provider("provider2")

        self.test_dna.evolve(True)
        self.assertEqual({'provider1': 0.25, 'provider2': 0.75}, self.test_dna.vps)

    @mock.patch('plebnet.agent.dna.DNA.write_dictionary', return_value=None)
    def test_evolve_negative(self, mock):
        self.test_dna.add_provider("provider1")
        self.test_dna.add_provider("provider2")
        self.test_dna.set_own_provider("provider2")

        self.test_dna.rate = 0.5
        self.test_dna.evolve(False)
        self.assertEqual({'provider1': 1.0, 'provider2': 0.0}, self.test_dna.vps)
Пример #4
0
class TestDna(unittest.TestCase):

    test_dna = None

    def setUp(self):
        self.test_dna = DNA()
        self.test_dna.rate = 1
        self.test_dna.length = 0.0
        self.test_dna.dictionary = {}
        self.test_dna.vps = {}

    def tearDown(self):
        pass

    def test_add_provider(self):
        self.test_dna.add_provider("provider1")
        self.assertEqual(self.test_dna.vps, {'provider1': 0.5})

    def test_remove_provider(self):
        self.test_dna.add_provider("provider1")
        self.test_dna.remove_provider("provider1")
        self.assertEqual({}, self.test_dna.vps)

    def test_normalize(self):
        self.test_dna.add_provider("provider1")
        self.test_dna.normalize()
        self.assertEqual({'provider1': 1}, self.test_dna.vps)

    def test_mutate_false(self):
        self.test_dna.add_provider("provider1")
        self.assertFalse(self.test_dna.mutate("provider2"))

    def test_mutate_true(self):
        self.test_dna.add_provider("provider1")
        self.test_dna.mutate("provider1")
        self.assertEqual({'provider1': 1.5}, self.test_dna.vps)

    def test_demutate_false(self):
        self.test_dna.add_provider("provider1")
        self.assertFalse(self.test_dna.demutate("provider2"))

    def test_demutate_enough(self):
        self.test_dna.add_provider("provider1")
        self.test_dna.rate = 0.5
        self.test_dna.demutate("provider1")
        self.assertEqual({'provider1': 0.0}, self.test_dna.vps)

    def test_demutate_not_enough(self):
        self.test_dna.add_provider("provider1")
        self.test_dna.rate = 0.2
        self.test_dna.demutate("provider1")
        self.test_dna.rate = 0.4
        self.test_dna.demutate("provider1")
        self.assertEqual({'provider1': 0.3}, self.test_dna.vps)

    def test_denormalize(self):
        self.test_dna.add_provider("provider1")
        self.test_dna.add_provider("provider2")
        self.test_dna.normalize()

        self.test_dna.length = 7
        self.test_dna.denormalize()

        self.assertEqual({
            'provider1': 3.5,
            'provider2': 3.5
        }, self.test_dna.vps)

    @mock.patch('random.uniform', return_value=0.7)
    def test_choose_provider(self, mock1):
        self.test_dna.add_provider("provider1")
        self.test_dna.add_provider("provider2")
        self.assertEqual(self.test_dna.choose_provider(self.test_dna.vps),
                         'provider2')
Пример #5
0
class TestDna(unittest.TestCase):

    test_dna = None

    def setUp(self):
        self.test_dna = DNA()
        self.test_dna.rate = 1
        self.test_dna.length = 0.0
        self.test_dna.dictionary = {}
        self.test_dna.vps = {}

    def tearDown(self):
        pass

    def test_add_provider(self):
        self.test_dna.add_provider("provider1")
        self.assertEqual(self.test_dna.vps, {'provider1': 0.5})

    def test_remove_provider(self):
        self.test_dna.add_provider("provider1")
        self.test_dna.remove_provider("provider1")
        self.assertEqual({}, self.test_dna.vps)

    def test_normalize(self):
        self.test_dna.add_provider("provider1")
        self.test_dna.normalize()
        self.assertEqual({'provider1': 1}, self.test_dna.vps)

    def test_mutate_false(self):
        self.test_dna.add_provider("provider1")
        self.assertFalse(self.test_dna.mutate("provider2"))

    def test_mutate_true(self):
        self.test_dna.add_provider("provider1")
        self.test_dna.mutate("provider1")
        self.assertEqual({'provider1': 1.5}, self.test_dna.vps)

    def test_demutate_false(self):
        self.test_dna.add_provider("provider1")
        self.assertFalse(self.test_dna.demutate("provider2"))

    def test_demutate_enough(self):
        self.test_dna.add_provider("provider1")
        self.test_dna.rate = 0.5
        self.test_dna.demutate("provider1")
        self.assertEqual({'provider1': 0.0}, self.test_dna.vps)

    def test_demutate_not_enough(self):
        self.test_dna.add_provider("provider1")
        self.test_dna.rate = 0.2
        self.test_dna.demutate("provider1")
        self.test_dna.rate = 0.4
        self.test_dna.demutate("provider1")
        self.assertEqual({'provider1': 0.3}, self.test_dna.vps)

    def test_denormalize(self):
        self.test_dna.add_provider("provider1")
        self.test_dna.add_provider("provider2")
        self.test_dna.normalize()

        self.test_dna.length = 7
        self.test_dna.denormalize()

        self.assertEqual({
            'provider1': 3.5,
            'provider2': 3.5
        }, self.test_dna.vps)

    @mock.patch('random.uniform', return_value=0.7)
    def test_choose_provider(self, mock1):
        self.test_dna.add_provider("provider1")
        self.test_dna.add_provider("provider2")
        self.assertEqual(self.test_dna.choose_provider(self.test_dna.vps),
                         'provider2')

    def test_exclude(self):
        self.test_dna.add_provider("provider1")
        self.test_dna.add_provider("provider2")
        self.test_dna.add_provider("provider3")
        new = self.test_dna.exclude("provider2")

        self.assertEqual({'provider1': 0.5, 'provider3': 0.5}, new)
        self.assertEqual({
            'provider1': 0.5,
            'provider2': 0.5,
            'provider3': 0.5
        }, self.test_dna.vps)

    def test_normalize_excluded(self):
        test_dict = {'provider1': 0.5}
        res_dict = self.test_dna.normalize_excluded(test_dict)
        self.assertEqual({'provider1': 1}, res_dict)

    @mock.patch('plebnet.agent.dna.DNA.write_dictionary', return_value=None)
    def test_positive_evolve(self, mock):
        self.test_dna.add_provider("provider1")
        self.test_dna.add_provider("provider2")
        self.test_dna.rate = 0.25
        self.test_dna.positive_evolve("provider2")

        result = self.test_dna.exclude("provider2")
        self.assertEqual({'provider1': 0.4}, result)

    @mock.patch('plebnet.agent.dna.DNA.write_dictionary', return_value=None)
    def test_negative_evolve(self, mock):
        self.test_dna.add_provider("provider1")
        self.test_dna.add_provider("provider2")
        self.test_dna.rate = 0.5
        self.test_dna.negative_evolve("provider2")
        self.assertEqual({
            'provider1': 1.0,
            'provider2': 0.0
        }, self.test_dna.vps)

    @mock.patch('plebnet.agent.dna.DNA.write_dictionary', return_value=None)
    def test_set_and_get_own_provider(self, mock):
        self.test_dna.set_own_provider("provider2")
        self.assertEqual("provider2", self.test_dna.get_own_provider())

    @mock.patch('plebnet.agent.dna.DNA.write_dictionary', return_value=None)
    def test_evolve_positive(self, mock):
        self.test_dna.add_provider("provider1")
        self.test_dna.add_provider("provider2")
        self.test_dna.set_own_provider("provider2")

        self.test_dna.evolve(True)
        self.assertEqual({
            'provider1': 0.25,
            'provider2': 0.75
        }, self.test_dna.vps)

    @mock.patch('plebnet.agent.dna.DNA.write_dictionary', return_value=None)
    def test_evolve_negative(self, mock):
        self.test_dna.add_provider("provider1")
        self.test_dna.add_provider("provider2")
        self.test_dna.set_own_provider("provider2")

        self.test_dna.rate = 0.5
        self.test_dna.evolve(False, "provider1")
        self.assertEqual({
            'provider1': 0.0,
            'provider2': 1.0
        }, self.test_dna.vps)

    def test_read_dictionary(self):
        initial_dict = {
            'Self': 'unknown',
            'parent': 'unknown',
            'transaction_hash': '',
            'VPS': 'TEST'
        }

        self.ex = os.path.exists
        self.ini = DNA.create_initial_dict
        self.wri = DNA.write_dictionary

        os.path.exists = MagicMock(return_value=None)
        DNA.create_initial_dict = MagicMock(return_value=initial_dict)
        DNA.write_dictionary = MagicMock()

        dna = DNA()
        dna.read_dictionary()
        self.assertEqual(dna.vps, 'TEST')

        os.path.exists = self.ex
        DNA.create_initial_dict = self.ini
        DNA.write_dictionary = self.wri