def test_process_inotify_event_flock_error( firewall_flock_mock, active_service_groups_mock, ensure_service_chains_mock, log_mock, ): active_service_groups_mock.return_value = { firewall.ServiceGroup("myservice", "myinstance"): {"00:00:00:00:00:00"}, firewall.ServiceGroup("anotherservice", "instance"): {"11:11:11:11:11:11"}, firewall.ServiceGroup("thirdservice", "instance"): {"22:22:22:22:22:22"}, } services_by_dependencies = { "mydep.depinstance": { ("myservice", "myinstance"), ("anotherservice", "instance"), } } soa_dir = mock.Mock() synapse_service_dir = mock.Mock() firewall_update.process_inotify_event( (None, None, None, b"mydep.depinstance.json"), services_by_dependencies, soa_dir, synapse_service_dir, ) assert log_mock.debug.call_count == 1 assert log_mock.error.call_count == 1
def test_process_inotify_event_flock_error( firewall_flock_mock, active_service_groups_mock, ensure_service_chains_mock, log_mock, ): active_service_groups_mock.return_value = { firewall.ServiceGroup('myservice', 'myinstance'): {'00:00:00:00:00:00'}, firewall.ServiceGroup('anotherservice', 'instance'): {'11:11:11:11:11:11'}, firewall.ServiceGroup('thirdservice', 'instance'): {'22:22:22:22:22:22'}, } services_by_dependencies = { 'mydep.depinstance': {('myservice', 'myinstance'), ('anotherservice', 'instance')}, } soa_dir = mock.Mock() synapse_service_dir = mock.Mock() firewall_update.process_inotify_event( (None, None, None, b'mydep.depinstance.json'), services_by_dependencies, soa_dir, synapse_service_dir, ) assert log_mock.debug.call_count == 1 assert log_mock.error.call_count == 1
def test_process_inotify_event( firewall_flock_mock, active_service_groups_mock, ensure_service_chains_mock, log_mock, ): active_service_groups_mock.return_value = { firewall.ServiceGroup("myservice", "myinstance"): {"00:00:00:00:00:00"}, firewall.ServiceGroup("anotherservice", "instance"): {"11:11:11:11:11:11"}, firewall.ServiceGroup("thirdservice", "instance"): {"22:22:22:22:22:22"}, } services_by_dependencies = { "mydep.depinstance": { ("myservice", "myinstance"), ("anotherservice", "instance"), } } soa_dir = mock.Mock() synapse_service_dir = mock.Mock() firewall_update.process_inotify_event( (None, None, None, b"mydep.depinstance.json"), services_by_dependencies, soa_dir, synapse_service_dir, ) assert log_mock.debug.call_count == 3 log_mock.debug.assert_any_call("Updated ('myservice', 'myinstance')") log_mock.debug.assert_any_call("Updated ('anotherservice', 'instance')") assert ensure_service_chains_mock.mock_calls == [ mock.call( { firewall.ServiceGroup("myservice", "myinstance"): {"00:00:00:00:00:00"}, firewall.ServiceGroup("anotherservice", "instance"): {"11:11:11:11:11:11"}, }, soa_dir, synapse_service_dir, ) ] assert firewall_flock_mock.return_value.__enter__.called is True # Verify that tmp writes do not apply log_mock.reset_mock() ensure_service_chains_mock.reset_mock() firewall_update.process_inotify_event( (None, None, None, b"mydep.depinstance.tmp"), services_by_dependencies, soa_dir, synapse_service_dir, ) assert log_mock.debug.call_count == 1 assert ensure_service_chains_mock.call_count == 0
def test_active_service_groups(mock_service_config, mock_services_running_here): assert firewall.active_service_groups() == { firewall.ServiceGroup("example_happyhour", "main"): { "02:42:a9:fe:00:00", "02:42:a9:fe:00:01", }, firewall.ServiceGroup("example_happyhour", "batch"): {"02:42:a9:fe:00:02"}, firewall.ServiceGroup("my_cool_service", "web"): { "02:42:a9:fe:00:03", "02:42:a9:fe:00:04", }, }
def test_active_service_groups(mock_service_config, mock_services_running_here): assert firewall.active_service_groups() == { firewall.ServiceGroup('example_happyhour', 'main'): { '02:42:a9:fe:00:00', '02:42:a9:fe:00:01', }, firewall.ServiceGroup('example_happyhour', 'batch'): { '02:42:a9:fe:00:02', }, firewall.ServiceGroup('my_cool_service', 'web'): { '02:42:a9:fe:00:03', '02:42:a9:fe:00:04', }, }
def mock_active_service_groups(): groups = { firewall.ServiceGroup("cool_service", "main"): { "02:42:a9:fe:00:02", "fe:a3:a3:da:2d:51", "fe:a3:a3:da:2d:50", }, firewall.ServiceGroup("cool_service", "main"): {"fe:a3:a3:da:2d:40"}, firewall.ServiceGroup("dumb_service", "other"): { "fe:a3:a3:da:2d:30", "fe:a3:a3:da:2d:31", }, } return groups
def mock_active_service_groups(): groups = { firewall.ServiceGroup('cool_service', 'main'): { '02:42:a9:fe:00:02', 'fe:a3:a3:da:2d:51', 'fe:a3:a3:da:2d:50', }, firewall.ServiceGroup('cool_service', 'main'): { 'fe:a3:a3:da:2d:40', }, firewall.ServiceGroup('dumb_service', 'other'): { 'fe:a3:a3:da:2d:30', 'fe:a3:a3:da:2d:31', }, } return groups
def smartstack_dependencies_of_running_firewalled_services( soa_dir=DEFAULT_SOA_DIR): dependencies_to_services = defaultdict(set) for service, instance, _, _ in firewall.services_running_here(): config = get_instance_config( service, instance, load_system_paasta_config().get_cluster(), load_deployments=False, soa_dir=soa_dir, ) outbound_firewall = config.get_outbound_firewall() if not outbound_firewall: continue dependencies = config.get_dependencies() or () smartstack_dependencies = [ d['smartstack'] for d in dependencies if d.get('smartstack') ] for smartstack_dependency in smartstack_dependencies: # TODO: filter down to only services that have no proxy_port dependencies_to_services[smartstack_dependency].add( firewall.ServiceGroup(service, instance)) return dependencies_to_services
def test_process_inotify_event(firewall_flock_mock, active_service_groups_mock, ensure_service_chains_mock, log_mock): active_service_groups_mock.return_value = { firewall.ServiceGroup('myservice', 'myinstance'): {'00:00:00:00:00:00'}, firewall.ServiceGroup('anotherservice', 'instance'): {'11:11:11:11:11:11'}, firewall.ServiceGroup('thirdservice', 'instance'): {'22:22:22:22:22:22'}, } services_by_dependencies = { 'mydep.depinstance': {('myservice', 'myinstance'), ('anotherservice', 'instance')} } soa_dir = mock.Mock() synapse_service_dir = mock.Mock() firewall_update.process_inotify_event( (None, None, None, 'mydep.depinstance.json'), services_by_dependencies, soa_dir, synapse_service_dir) assert log_mock.debug.call_count == 2 log_mock.debug.assert_any_call('Updated ', ('myservice', 'myinstance')) log_mock.debug.assert_any_call('Updated ', ('anotherservice', 'instance')) assert ensure_service_chains_mock.mock_calls == [ mock.call( { firewall.ServiceGroup('myservice', 'myinstance'): {'00:00:00:00:00:00'}, firewall.ServiceGroup('anotherservice', 'instance'): {'11:11:11:11:11:11'}, }, soa_dir, synapse_service_dir) ] assert firewall_flock_mock.return_value.__enter__.called is True # Verify that tmp writes do not apply log_mock.reset_mock() ensure_service_chains_mock.reset_mock() firewall_update.process_inotify_event( (None, None, None, 'mydep.depinstance.tmp'), services_by_dependencies, soa_dir, synapse_service_dir) assert log_mock.debug.call_count == 0 assert ensure_service_chains_mock.call_count == 0
def mock_active_service_groups(): groups = { firewall.ServiceGroup('cool_service', 'main', DEFAULT_SOA_DIR): { '02:42:a9:fe:00:02', 'fe:a3:a3:da:2d:51', 'fe:a3:a3:da:2d:50', }, firewall.ServiceGroup('cool_service', 'main', DEFAULT_SOA_DIR): { 'fe:a3:a3:da:2d:40', }, firewall.ServiceGroup('dumb_service', 'other', DEFAULT_SOA_DIR): { 'fe:a3:a3:da:2d:30', 'fe:a3:a3:da:2d:31', }, } with mock.patch.object( firewall, 'active_service_groups', autospec=True, return_value=groups, ): yield
def service_group(): return firewall.ServiceGroup( service='my_cool_service', instance='web', )
def service_group(): return firewall.ServiceGroup(service="my_cool_service", instance="web")
def service_group(): return firewall.ServiceGroup( service='my_cool_service', instance='web', soa_dir=DEFAULT_SOA_DIR, )