def __init__(self): self.logger = logger self.faucet_event = [] self.controller = Config().get_config() self.controller['max_concurrent_reinvestigations'] = 10 self.s = SDNConnect() if 'POSEIDON_TRAVIS' in os.environ: self.s.r = redis.StrictRedis(host='localhost', port=6379, db=0, decode_responses=True) endpoint = Endpoint('foo') endpoint.endpoint_data = { 'tenant': 'foo', 'mac': '00:00:00:00:00:00', 'segment': 'foo', 'port': '1'} endpoint.mirror() endpoint.known() self.s.endpoints.append(endpoint) endpoint = Endpoint('foo2') endpoint.endpoint_data = { 'tenant': 'foo', 'mac': '00:00:00:00:00:00', 'segment': 'foo', 'port': '1'} endpoint.mirror() endpoint.known() self.s.endpoints.append(endpoint) self.s.store_endpoints() self.s.get_stored_endpoints()
def test_get_ipv4_subnet(): endpoint = Endpoint('foo') endpoint.endpoint_data = {'tenant': 'foo', 'mac': '00:00:00:00:00:00', 'segment': 'foo', 'port': '1', 'ipv4': '0.0.0.0'} ipv4_subnet = GetData._get_ipv4_subnet(endpoint) assert ipv4_subnet == 'NO DATA' endpoint.endpoint_data = {'tenant': 'foo', 'mac': '00:00:00:00:00:00', 'segment': 'foo', 'port': '1', 'ipv4': '0.0.0.0', 'ipv4_subnet': '0.0.0.0/24'} ipv4_subnet = GetData._get_ipv4_subnet(endpoint) assert ipv4_subnet == '0.0.0.0/24'
def test_get_ether_vendor(): endpoint = Endpoint('foo') endpoint.endpoint_data = {'tenant': 'foo', 'mac': '00:00:00:00:00:00', 'segment': 'foo', 'port': '1', 'ipv4': '0.0.0.0', 'ipv4_subnet': '0.0.0.0/24'} ether_vendor = GetData._get_ether_vendor(endpoint) assert ether_vendor == 'NO DATA' endpoint.endpoint_data = {'ether_vendor': 'VENDOR', 'tenant': 'foo', 'mac': '00:00:00:00:00:00', 'segment': 'foo', 'port': '1', 'ipv4': '0.0.0.0', 'ipv4_subnet': '0.0.0.0/24'} ether_vendor = GetData._get_ether_vendor(endpoint) assert ether_vendor == 'VENDOR'
def test_get_ipv6_rdns(): endpoint = Endpoint('foo') endpoint.endpoint_data = {'tenant': 'foo', 'mac': '00:00:00:00:00:00', 'segment': 'foo', 'port': '1', 'ipv4': '0.0.0.0', 'ipv4_subnet': '0.0.0.0/24'} ipv6_rdns = GetData._get_ipv6_rdns(endpoint) assert ipv6_rdns == 'NO DATA' endpoint.endpoint_data = {'ipv6_rdns': 'foo.internal', 'tenant': 'foo', 'mac': '00:00:00:00:00:00', 'segment': 'foo', 'port': '1', 'ipv4': '0.0.0.0', 'ipv4_subnet': '0.0.0.0/24'} ipv6_rdns = GetData._get_ipv6_rdns(endpoint) assert ipv6_rdns == 'foo.internal'
def test_get_ipv6_subnet(): endpoint = Endpoint('foo') endpoint.endpoint_data = {'tenant': 'foo', 'mac': '00:00:00:00:00:00', 'segment': 'foo', 'port': '1', 'ipv6': '1212::1'} ipv6_subnet = GetData._get_ipv6_subnet(endpoint) assert ipv6_subnet == 'NO DATA' endpoint.endpoint_data = {'tenant': 'foo', 'mac': '00:00:00:00:00:00', 'segment': 'foo', 'port': '1', 'ipv6': '1212::1', 'ipv6_subnet': '1212::1/64'} ipv6_subnet = GetData._get_ipv6_subnet(endpoint) assert ipv6_subnet == '1212::1/64'
def test_get_controller_type(): endpoint = Endpoint('foo') endpoint.endpoint_data = { 'tenant': 'foo', 'mac': '00:00:00:00:00:00', 'segment': 'foo', 'port': '1', 'controller_type': 'foo'} controller_type = GetData._get_controller_type(endpoint) assert controller_type == 'foo' endpoint = Endpoint('foo') endpoint.endpoint_data = { 'tenant': 'foo', 'mac': '00:00:00:00:00:00', 'segment': 'foo', 'port': '1'} controller_type = GetData._get_controller_type(endpoint) assert controller_type == 'NO DATA'
def __init__(self): self.logger = logger self.fa_rabbit_routing_key = 'FAUCET.Event' self.faucet_event = None self.controller = Config().get_config() self.s = SDNConnect() self.s.controller['TYPE'] = 'None' self.s.get_sdn_context() self.s.controller['TYPE'] = 'bcf' self.s.get_sdn_context() self.s.controller['TYPE'] = 'faucet' self.s.get_sdn_context() if 'POSEIDON_TRAVIS' in os.environ: self.s.r = redis.StrictRedis(host='localhost', port=6379, db=0, decode_responses=True) endpoint = Endpoint('foo') endpoint.endpoint_data = { 'tenant': 'foo', 'mac': '00:00:00:00:00:00', 'segment': 'foo', 'port': '1' } endpoint.mirror() endpoint.p_prev_states.append((endpoint.state, int(time.time()))) self.s.endpoints.append(endpoint) endpoint = Endpoint('foo2') endpoint.endpoint_data = { 'tenant': 'foo', 'mac': '00:00:00:00:00:00', 'segment': 'foo', 'port': '1' } endpoint.p_next_state = 'mirror' endpoint.queue() endpoint.p_prev_states.append((endpoint.state, int(time.time()))) self.s.endpoints.append(endpoint) endpoint = Endpoint('foo3') endpoint.endpoint_data = { 'tenant': 'foo', 'mac': '00:00:00:00:00:00', 'segment': 'foo', 'port': '1' } self.s.endpoints.append(endpoint) self.s.store_endpoints() self.s.get_stored_endpoints()
def test_Collector(): """ Tests Collector """ endpoint = Endpoint('foo') endpoint.endpoint_data = {'mac': '00:00:00:00:00:00'} a = Collector(endpoint, 'foo') a.start_vent_collector() a.stop_vent_collector() a.get_vent_collectors() a.host_has_active_collectors('foo') endpoint = Endpoint('foo') endpoint.endpoint_data = { 'mac': '00:00:00:00:00:00', 'container_id': 'foo'} a = Collector(endpoint, 'foo') a.stop_vent_collector()
def test_display_results(): parser = Parser() endpoint = Endpoint('foo') endpoint.endpoint_data = { 'tenant': 'foo', 'mac': '00:00:00:00:00:00', 'segment': 'foo', 'port': '1', 'ipv4': '0.0.0.0', 'ipv6': '1212::1' } endpoints = [endpoint] parser.display_results( endpoints, ['ID', 'MAC Address', 'Switch', 'Port', 'VLAN', 'IPv4', 'IPv6'], ipv4_only=False, ipv6_only=True) parser.display_results( endpoints, ['ID', 'MAC Address', 'Switch', 'Port', 'VLAN', 'IPv6'], ipv4_only=False, ipv4_and_ipv6=True) parser.display_results( endpoints, ['ID', 'MAC Address', 'Switch', 'Port', 'VLAN', 'IPv4'], ipv4_only=False, ipv4_and_ipv6=True)
def test_remove_endpoint(): s = SDNConnect() endpoint = Endpoint('foo') endpoint.endpoint_data = { 'tenant': 'foo', 'mac': '00:00:00:00:00:00'} s.endpoints.append(endpoint) s.remove_endpoint(endpoint)
def test_get_prev_ipv6_oses(): endpoint = Endpoint('foo') endpoint.endpoint_data = { 'tenant': 'foo', 'mac': '00:00:00:00:00:00', 'segment': 'foo', 'port': '1' } GetData._get_prev_ipv6_oses(endpoint)
def test_get_ipv6_os(): endpoint = Endpoint('foo') endpoint.endpoint_data = { 'tenant': 'foo', 'mac': '00:00:00:00:00:00', 'segment': 'foo', 'port': '1', 'ipv6': '1212::1'} endpoint.metadata = {'ipv6_addresses': {}} ipv6_os = GetData._get_ipv6_os(endpoint) assert ipv6_os == 'NO DATA' endpoint.metadata = {'ipv6_addresses': {'1212::1': {'os': 'foo'}}} ipv6_os = GetData._get_ipv6_os(endpoint) assert ipv6_os == 'foo'
def test_get_switch(): endpoint = Endpoint('foo') endpoint.endpoint_data = { 'tenant': 'foo', 'mac': '00:00:00:00:00:00', 'segment': 'foo', 'port': '1' } switch = GetData._get_switch(endpoint) assert switch == 'foo'
def test_endpoints_by_mac(): s = SDNConnect() endpoints = s.endpoints_by_mac('00:00:00:00:00:01') assert endpoints == [] endpoint = Endpoint('foo') endpoint.endpoint_data = { 'tenant': 'foo', 'mac': '00:00:00:00:00:00', 'segment': 'foo', 'port': '1'} s.endpoints.append(endpoint) endpoint2 = s.endpoints_by_mac('00:00:00:00:00:00') assert [endpoint] == endpoint2
def test_get_next_state(): endpoint = Endpoint('foo') endpoint.endpoint_data = { 'tenant': 'foo', 'mac': '00:00:00:00:00:00', 'segment': 'foo', 'port': '1' } state = GetData._get_next_state(endpoint) assert state == 'None'
def test_get_last_seen(): endpoint = Endpoint('foo') endpoint.endpoint_data = { 'tenant': 'foo', 'mac': '00:00:00:00:00:00', 'segment': 'foo', 'port': '1' } endpoint.p_prev_states = [('unknown', 1551711125)] GetData._get_last_seen(endpoint)
def test_get_port(): endpoint = Endpoint('foo') endpoint.endpoint_data = { 'tenant': 'foo', 'mac': '00:00:00:00:00:00', 'segment': 'foo', 'port': '1' } port = GetData._get_port(endpoint) assert port == '1'
def test_get_ignored(): endpoint = Endpoint('foo') endpoint.endpoint_data = { 'tenant': 'foo', 'mac': '00:00:00:00:00:00', 'segment': 'foo', 'port': '1' } ignored = GetData._get_ignored(endpoint) assert ignored == 'False'
def test_get_vlan(): endpoint = Endpoint('foo') endpoint.endpoint_data = { 'vlan': 'foo', 'mac': '00:00:00:00:00:00', 'segment': 'foo', 'port': '1' } vlan = GetData._get_vlan(endpoint) assert vlan == 'foo'
def test_get_mac(): endpoint = Endpoint('foo') endpoint.endpoint_data = { 'tenant': 'foo', 'mac': '00:00:00:00:00:00', 'segment': 'foo', 'port': '1' } mac = GetData._get_mac(endpoint) assert mac == '00:00:00:00:00:00'
def test_endpoints_by_ip(): s = SDNConnect() endpoints = s.endpoints_by_ip('10.0.0.1') assert endpoints == [] endpoint = Endpoint('foo') endpoint.endpoint_data = { 'tenant': 'foo', 'mac': '00:00:00:00:00:00', 'segment': 'foo', 'port': '1', 'ipv4': '10.0.0.1', 'ipv6': 'None'} s.endpoints.append(endpoint) endpoint2 = s.endpoints_by_ip('10.0.0.1') assert [endpoint] == endpoint2
def test_get_name(): endpoint = Endpoint('foo') endpoint.endpoint_data = { 'tenant': 'foo', 'mac': '00:00:00:00:00:00', 'segment': 'foo', 'port': '1' } name = GetData._get_name(endpoint) assert name == 'foo'
def test_endpoint_by_name(): s = SDNConnect() endpoint = s.endpoint_by_name('foo') assert endpoint == None endpoint = Endpoint('foo') endpoint.endpoint_data = { 'tenant': 'foo', 'mac': '00:00:00:00:00:00', 'segment': 'foo', 'port': '1'} s.endpoints[endpoint.name] = endpoint endpoint2 = s.endpoint_by_name('foo') assert endpoint == endpoint2
def test_endpoint_by_hash(): s = SDNConnect() endpoint = s.endpoint_by_hash('foo') assert endpoint == None endpoint = Endpoint('foo') endpoint.endpoint_data = { 'tenant': 'foo', 'mac': '00:00:00:00:00:00', 'segment': 'foo', 'port': '1'} s.endpoints.append(endpoint) endpoint2 = s.endpoint_by_hash('foo') assert endpoint == endpoint2
def test_display_results(): parser = Parser() endpoint = Endpoint('foo') endpoint.endpoint_data = { 'vlan': 'foo', 'mac': '00:00:00:00:00:00', 'segment': 'foo', 'port': '1', 'ipv4': '0.0.0.0', 'ipv6': '1212::1' } endpoints = [endpoint] parser.display_results( endpoints, ['ID', 'MAC Address', 'Switch', 'Port', 'VLAN', 'IPv4', 'IPv6'], ipv4_only=False, ipv6_only=True) parser.display_results( endpoints, ['ID', 'MAC Address', 'Switch', 'Port', 'VLAN', 'IPv6'], ipv4_only=False, ipv4_and_ipv6=True) parser.display_results( endpoints, ['ID', 'MAC Address', 'Switch', 'Port', 'VLAN', 'IPv4'], ipv4_only=False, ipv4_and_ipv6=True) parser.display_results( endpoints, ['ID', 'MAC Address', 'Switch', 'Port', 'VLAN', 'IPv4'], ipv4_only=False, ipv4_and_ipv6=True, unique=True) parser.display_results( endpoints, ['ID', 'MAC Address', 'Switch', 'Port', 'VLAN', 'IPv4'], ipv4_only=False, ipv4_and_ipv6=True, nonzero=True) parser.display_results( endpoints, ['ID', 'MAC Address', 'Switch', 'Port', 'VLAN', 'IPv4'], ipv4_only=False, ipv4_and_ipv6=True, nonzero=True, unique=True) parser.display_results( endpoints, ['ID', 'MAC Address', 'Switch', 'Port', 'VLAN', 'IPv4'], ipv4_only=False, ipv4_and_ipv6=True, nonzero=True, unique=True, output_format="csv") parser.display_results( endpoints, ['ID', 'MAC Address', 'Switch', 'Port', 'VLAN', 'IPv4'], ipv4_only=False, ipv4_and_ipv6=True, nonzero=True, unique=True, output_format="json")
def test_get_behavior(): endpoint = Endpoint('foo') endpoint.endpoint_data = { 'tenant': 'foo', 'mac': '00:00:00:00:00:00', 'segment': 'foo', 'port': '1'} endpoint.metadata = {'mac_addresses': {}} behavior = GetData._get_behavior(endpoint) assert behavior == 'NO DATA' endpoint.metadata = {'mac_addresses': { '00:00:00:00:00:00': {'1551711125': {'behavior': 'abnormal'}}}} behavior = GetData._get_behavior(endpoint) assert behavior == 'abnormal'
def test_get_ipv6(): endpoint = Endpoint('foo') endpoint.endpoint_data = { 'tenant': 'foo', 'mac': '00:00:00:00:00:00', 'segment': 'foo', 'port': '1', 'ipv6': '1212::1' } ipv6 = GetData._get_ipv6(endpoint) assert ipv6 == '1212::1'
def test_get_ipv4(): endpoint = Endpoint('foo') endpoint.endpoint_data = { 'tenant': 'foo', 'mac': '00:00:00:00:00:00', 'segment': 'foo', 'port': '1', 'ipv4': '0.0.0.0' } ipv4 = GetData._get_ipv4(endpoint) assert ipv4 == '0.0.0.0'
def test_get_controller(): endpoint = Endpoint('foo') endpoint.endpoint_data = { 'tenant': 'foo', 'mac': '00:00:00:00:00:00', 'segment': 'foo', 'port': '1', 'controller': 'foo' } controller = GetData._get_controller(endpoint) assert controller == 'foo' endpoint = Endpoint('foo') endpoint.endpoint_data = { 'tenant': 'foo', 'mac': '00:00:00:00:00:00', 'segment': 'foo', 'port': '1' } controller = GetData._get_controller(endpoint) assert controller == NO_DATA
def test_get_role_confidence(): endpoint = Endpoint('foo') endpoint.endpoint_data = { 'tenant': 'foo', 'mac': '00:00:00:00:00:00', 'segment': 'foo', 'port': '1'} endpoint.metadata = {'mac_addresses': {}} confidence = GetData._get_role_confidence(endpoint) assert confidence == 'NO DATA' endpoint.metadata = {'mac_addresses': { '00:00:00:00:00:00': {'1551711125': {'confidences': [10.0]}}}} confidence = GetData._get_role_confidence(endpoint) assert confidence == '10.0'