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())
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
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)
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)
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])
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)
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)
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)
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)
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)
def create_service_which_always_succeeds(): return Service(0, 100)
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)
def create_service_which_always_fails(): return Service(100, 100)