Exemple #1
0
 def test_cluster_call_and_get_better_availability(self):
     service = Service(50, 100)
     cluster = Cluster(service, 2)
     for _ in range(0, 100000):
         cluster.call()
         service.call()
     self.assertLess(cluster.get_failed_count(), service.get_failed_count())
Exemple #2
0
 def test_with_dependency_of_different_granularity(self):
     sut = Service(2, 5)
     dependency = Service(2, 30)
     try:
         sut.add_dependency(dependency)
         self.fail("Expected exception")
     except ValidationException:
         pass
Exemple #3
0
 def add_edges(self, service: Service, graph, labels: dict):
     label = service.get_name()
     if service.get_size() > 1:
         label += '[%d]' % service.get_size()
     label += ' - %.2f%%' % service.get_total_availability_percentage()
     labels[service] = label
     for dependency in service.get_dependencies():
         graph.add_edge(service, dependency)
         self.add_edges(dependency, graph, labels)
Exemple #4
0
def main():
    # Configuring microservice structure
    service = Service(5, 100, 'service')
    database = Service(5, 100, 'database')
    service.add_dependency(database)
    cluster = Cluster(service, 5)
    # Simulating calls in cycles
    cycles = 100000
    for _ in range(cycles):
        cluster.call()
    # Drawing from root
    draw = Draw()
    draw.draw_tree(cluster)
Exemple #5
0
def main():
    # Configuring microservice structure
    services = []
    maximum_number_of_services = 10
    for i in range(1, maximum_number_of_services + 1):
        service = Service(1, 100,
                          'service-%d' % (maximum_number_of_services - i + 1))
        for other_service in services:
            other_service.add_dependency(service)
        services.append(service)
    # Simulating calls in cycles
    cycles = 100000
    for _ in range(cycles):
        for service in services:
            service.call()
    # Drawing from root
    draw = Draw()
    draw.draw_radial_tree(services[0])
Exemple #6
0
def main():
    # Configuring microservice structure
    service = Service(50, 100, 'service')
    cluster = Cluster(service, 2)
    # Simulating calls in cycles
    cycles = 100000
    for _ in range(cycles):
        cluster.call()
    # Drawing from root
    draw = Draw()
    draw.draw_any(cluster)
Exemple #7
0
def main():
    # Configuring microservice structure
    poor_developer = Service(0, 100, 'hapless_developer')
    for i in range(100):
        service = Service(1, 100, 'service-%d' % i)
        poor_developer.add_dependency(service)
    # Simulating calls in cycles
    cycles = 100000
    for _ in range(cycles):
        poor_developer.call()
    # Drawing from root
    draw = Draw()
    draw.draw_radial_tree(poor_developer)
Exemple #8
0
def main():
    # Configuring microservice structure
    services = []
    maximum_number_of_services = 10
    broker = Service(5, 100, 'broker')
    broker_cluster = Cluster(broker, 2)
    for i in range(1, maximum_number_of_services + 1):
        service = Service(5, 100,
                          'service-%d' % (maximum_number_of_services - i + 1))
        service.add_dependency(broker_cluster)
        services.append(service)
    # Simulating calls in cycles
    cycles = 1000000
    for _ in range(cycles):
        for service in services:
            service.call()
    # Drawing from root
    draw = Draw()
    draw.draw_each(services)
Exemple #9
0
def main():
    # Configuring microservice structure
    proxy = Cluster(Service(5, 100, 'proxy'), 10)
    aggregate = Cluster(Service(5, 100, 'aggregate'), 5)
    app = Cluster(Service(5, 100, 'app'), 2)
    another_app = Cluster(Service(5, 100, 'another_app'), 3)
    database = Service(5, 100, 'database')
    another_app_db = Service(5, 100, 'database')
    cache = Service(5, 100, 'cache')
    proxy.add_dependency(aggregate)
    aggregate.add_dependency(app)
    aggregate.add_dependency(another_app)
    app.add_dependency(database)
    app.add_dependency(cache)
    another_app.add_dependency(cache)
    another_app.add_dependency(another_app_db)
    # Simulating calls in cycles
    cycles = 100000
    for _ in range(cycles):
        proxy.call()
    # Drawing from root
    draw = Draw()
    draw.draw_tree(proxy)
Exemple #10
0
def main():
    # Configuring microservice structure
    proxy = Service(5, 100, 'proxy')
    bff = Service(5, 100, 'BFF')
    bff_database = Service(5, 100, 'BFF_database')
    cart = Service(5, 100, 'cart')
    cart_cache = Service(5, 100, 'cart_cache')
    user = Service(5, 100, 'user')
    user_database = Service(5, 100, 'user_database')
    proxy.add_dependency(bff)
    bff.add_dependency(bff_database)
    bff.add_dependency(cart)
    cart.add_dependency(cart_cache)
    cart.add_dependency(user)
    user.add_dependency(user_database)
    # Simulating calls in cycles
    cycles = 100000
    for _ in range(cycles):
        proxy.call()
    # Drawing from root
    draw = Draw()
    draw.draw_tree(proxy)
Exemple #11
0
 def create_service_which_always_succeeds():
     return Service(0, 100)
Exemple #12
0
 def test_init(self):
     sut = Service(2, 1000)
     self.assertEqual(sut.failure_threshold, 2)
     self.assertEqual(sut.granularity, 1000)
     self.assertEqual(sut.get_self_availability_percentage(),
                      (1 - 2 / 1000) * 100)
Exemple #13
0
 def create_service_which_always_fails():
     return Service(100, 100)