64 lines
2.7 KiB
Python
64 lines
2.7 KiB
Python
from primaite.simulator.network.hardware.node_operating_state import NodeOperatingState
|
|
from primaite.simulator.network.hardware.nodes.computer import Computer
|
|
from primaite.simulator.network.hardware.nodes.server import Server
|
|
from primaite.simulator.system.services.dns.dns_client import DNSClient
|
|
from primaite.simulator.system.services.dns.dns_server import DNSServer
|
|
from primaite.simulator.system.services.service import ServiceOperatingState
|
|
|
|
|
|
def test_dns_client_server(uc2_network):
|
|
client_1: Computer = uc2_network.get_node_by_hostname("client_1")
|
|
domain_controller: Server = uc2_network.get_node_by_hostname("domain_controller")
|
|
|
|
dns_client: DNSClient = client_1.software_manager.software["DNSClient"]
|
|
dns_server: DNSServer = domain_controller.software_manager.software["DNSServer"]
|
|
|
|
assert dns_client.operating_state == ServiceOperatingState.RUNNING
|
|
assert dns_server.operating_state == ServiceOperatingState.RUNNING
|
|
|
|
dns_server.show()
|
|
|
|
# fake domain should not be added to dns cache
|
|
assert not dns_client.check_domain_exists(target_domain="fake-domain.com")
|
|
assert dns_client.dns_cache.get("fake-domain.com", None) is None
|
|
|
|
# arcd.com is registered in dns server and should be saved to cache
|
|
assert dns_client.check_domain_exists(target_domain="arcd.com")
|
|
assert dns_client.dns_cache.get("arcd.com", None) is not None
|
|
|
|
assert len(dns_client.dns_cache) == 1
|
|
|
|
|
|
def test_dns_client_requests_offline_dns_server(uc2_network):
|
|
client_1: Computer = uc2_network.get_node_by_hostname("client_1")
|
|
domain_controller: Server = uc2_network.get_node_by_hostname("domain_controller")
|
|
|
|
dns_client: DNSClient = client_1.software_manager.software["DNSClient"]
|
|
dns_server: DNSServer = domain_controller.software_manager.software["DNSServer"]
|
|
|
|
assert dns_client.operating_state == ServiceOperatingState.RUNNING
|
|
assert dns_server.operating_state == ServiceOperatingState.RUNNING
|
|
|
|
dns_server.show()
|
|
|
|
# arcd.com is registered in dns server
|
|
assert dns_client.check_domain_exists(target_domain="arcd.com")
|
|
assert dns_client.dns_cache.get("arcd.com", None) is not None
|
|
|
|
assert len(dns_client.dns_cache) == 1
|
|
dns_client.dns_cache = {}
|
|
|
|
domain_controller.power_off()
|
|
|
|
for i in range(domain_controller.shut_down_duration + 1):
|
|
uc2_network.apply_timestep(timestep=i)
|
|
|
|
assert domain_controller.operating_state == NodeOperatingState.OFF
|
|
assert dns_server.operating_state == ServiceOperatingState.STOPPED
|
|
|
|
# this time it should not cache because dns server is not online
|
|
assert dns_client.check_domain_exists(target_domain="arcd.com") is False
|
|
assert dns_client.dns_cache.get("arcd.com", None) is None
|
|
|
|
assert len(dns_client.dns_cache) == 0
|