def test_cull_services_list(): consul_check = ConsulCheck(common.CHECK_NAME, {}, [{}]) my_mocks = consul_mocks._get_consul_mocks() consul_mocks.mock_check(consul_check, my_mocks) consul_check.check(consul_mocks.MOCK_CONFIG_LEADER_CHECK) # Pad num_services to kick in truncation logic num_services = consul_check.MAX_SERVICES + 20 # Max services parameter (from consul.yaml) set to be bigger than MAX_SERVICES and smaller than total of services max_services = num_services - 10 # Big whitelist services = consul_mocks.mock_get_n_services_in_cluster(num_services) whitelist = ['service_{}'.format(k) for k in range(num_services)] assert len(consul_check._cull_services_list(services, whitelist)) == consul_check.MAX_SERVICES # Big whitelist with max_services assert len(consul_check._cull_services_list(services, whitelist, max_services)) == max_services # Whitelist < MAX_SERVICES should spit out the whitelist whitelist = ['service_{}'.format(k) for k in range(consul_check.MAX_SERVICES - 1)] assert set(consul_check._cull_services_list(services, whitelist)) == set(whitelist) # Whitelist < max_services param should spit out the whitelist whitelist = ['service_{}'.format(k) for k in range(max_services - 1)] assert set(consul_check._cull_services_list(services, whitelist, max_services)) == set(whitelist) # No whitelist, still triggers truncation whitelist = [] assert len(consul_check._cull_services_list(services, whitelist)) == consul_check.MAX_SERVICES # No whitelist with max_services set, also triggers truncation whitelist = [] assert len(consul_check._cull_services_list(services, whitelist, max_services)) == max_services # Num. services < MAX_SERVICES should be no-op in absence of whitelist num_services = consul_check.MAX_SERVICES - 1 services = consul_mocks.mock_get_n_services_in_cluster(num_services) assert len(consul_check._cull_services_list(services, whitelist)) == num_services # Num. services < MAX_SERVICES should spit out only the whitelist when one is defined whitelist = ['service_1', 'service_2', 'service_3'] assert set(consul_check._cull_services_list(services, whitelist)) == set(whitelist) # Num. services < max_services (from consul.yaml) should be no-op in absence of whitelist num_services = max_services - 1 whitelist = [] services = consul_mocks.mock_get_n_services_in_cluster(num_services) assert len(consul_check._cull_services_list(services, whitelist, max_services)) == num_services # Num. services < max_services should spit out only the whitelist when one is defined whitelist = ['service_1', 'service_2', 'service_3'] assert set(consul_check._cull_services_list(services, whitelist, max_services)) == set(whitelist)
def test_cull_services_list(): consul_check = ConsulCheck(common.CHECK_NAME, {}, [consul_mocks.MOCK_CONFIG_LEADER_CHECK]) my_mocks = consul_mocks._get_consul_mocks() consul_mocks.mock_check(consul_check, my_mocks) # Pad num_services to kick in truncation logic num_services = MAX_SERVICES + 20 # Max services parameter (from consul.yaml) set to be bigger than MAX_SERVICES and smaller than total of services max_services = num_services - 10 # Big include list services = consul_mocks.mock_get_n_services_in_cluster(num_services) consul_check.services_include = [ 'service_{}'.format(k) for k in range(num_services) ] assert len(consul_check._cull_services_list(services)) == MAX_SERVICES # Big include list with max_services consul_check.max_services = max_services assert len(consul_check._cull_services_list(services)) == max_services # include list < MAX_SERVICES should spit out the include list consul_check.services_include = [ 'service_{}'.format(k) for k in range(MAX_SERVICES - 1) ] assert set(consul_check._cull_services_list(services)) == set( consul_check.services_include) # include list < max_services param should spit out the include list consul_check.services_include = [ 'service_{}'.format(k) for k in range(max_services - 1) ] assert set(consul_check._cull_services_list(services)) == set( consul_check.services_include) # No include list, still triggers truncation consul_check.services_include = [] consul_check.max_services = MAX_SERVICES assert len(consul_check._cull_services_list(services)) == MAX_SERVICES # No include list with max_services set, also triggers truncation consul_check.services_include = [] consul_check.max_services = max_services assert len(consul_check._cull_services_list(services)) == max_services # Num. services < MAX_SERVICES should be no-op in absence of include list num_services = MAX_SERVICES - 1 services = consul_mocks.mock_get_n_services_in_cluster(num_services) assert len(consul_check._cull_services_list(services)) == num_services # Num. services < MAX_SERVICES should spit out only the include list when one is defined consul_check.services_include = ['service_1', 'service_2', 'service_3'] assert set(consul_check._cull_services_list(services)) == set( consul_check.services_include) # Num. services < max_services (from consul.yaml) should be no-op in absence of include list num_services = max_services - 1 consul_check.services_include = [] services = consul_mocks.mock_get_n_services_in_cluster(num_services) assert len(consul_check._cull_services_list(services)) == num_services # Num. services < max_services should spit out only the include list when one is defined consul_check.services_include = ['service_1', 'service_2', 'service_3'] assert set(consul_check._cull_services_list(services)) == set( consul_check.services_include) # Excluded services will not be in final service list consul_check.services_exclude = ['service_1', 'service_2', 'service_3'] assert set(consul_check.services_exclude) not in set( consul_check._cull_services_list(services)) # Excluded services will be prioritized over include list services consul_check.services_exclude = ['service_1', 'service_2', 'service_3'] consul_check.services_include = ['service_4', 'service_5', 'service_6'] test_include_length = len(consul_check.services_include) test_service_list_length = len( set(consul_check._cull_services_list(services))) assert (set(consul_check.services_exclude) not in set( consul_check._cull_services_list(services)) and test_service_list_length > test_include_length) # Use of services exclude will still trigger truncation logic services = consul_mocks.mock_get_n_services_in_cluster(num_services) consul_check.services_exclude = ['service_1', 'service_2', 'service_3'] consul_check.max_services = MAX_SERVICES assert len(consul_check._cull_services_list( services)) == consul_check.max_services # Num. services < MAX_SERVICES (from consul.yaml) should be no-op in absence of services exclude num_services = MAX_SERVICES + 1 consul_check.services_exclude = [] services = consul_mocks.mock_get_n_services_in_cluster(num_services) assert len(consul_check._cull_services_list(services)) == MAX_SERVICES