test(java-oracle): DnsRun records DNS as Java FILIUS runs it
A resolver's lookup on the new dns-lan network (A, MX, a referral by NS, an unknown name, a missing server): every frame and the call's result. ScenarioNetwork installs a scenario's DNS servers. The Swift comparison reads only scenarios with a Swift result. Measured: Java's text messages (ID=... QR=... header, question and record lines), no question in the answer, RCODE 0 always, a referral in the answer section, an iterative resolver waiting 5 RTT per query. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -18,6 +18,7 @@ import filius.hardware.knoten.Rechner;
|
||||
import filius.hardware.knoten.Switch;
|
||||
import filius.rahmenprogramm.nachrichten.Lauscher;
|
||||
import filius.software.dhcp.DHCPServer;
|
||||
import filius.software.dns.DNSServer;
|
||||
import filius.software.netzzugangsschicht.EthernetFrame;
|
||||
import filius.software.system.InternetKnotenBetriebssystem;
|
||||
import filius.software.transportschicht.Segment;
|
||||
@@ -121,6 +122,21 @@ public class ScenarioNetwork {
|
||||
server.setAktiv(Boolean.TRUE.equals(config.get("active")));
|
||||
servers.add(entry.getKey());
|
||||
}
|
||||
// A DNS server: installed, its records written to /dns/hosts (TTL 3600), switched on.
|
||||
for (Map.Entry<String, Object> entry : map(scenario.getOrDefault("dnsServers", new HashMap<>())).entrySet()) {
|
||||
Map<String, Object> config = map(entry.getValue());
|
||||
InternetKnotenBetriebssystem os = system(nodes.get(entry.getKey()));
|
||||
DNSServer dns = new DNSServer();
|
||||
dns.setSystemSoftware(os);
|
||||
os.getInstallierteAnwendungen().put("filius.software.dns.DNSServer", dns);
|
||||
for (Object line : list(config.getOrDefault("records", new ArrayList<>()))) {
|
||||
String[] parts = ((String) line).split(" ");
|
||||
dns.hinzuRecord(parts[0], parts[1], parts[2]);
|
||||
}
|
||||
dns.setRecursiveResolutionEnabled(Boolean.TRUE.equals(config.get("recursive")));
|
||||
dns.setAktiv(true);
|
||||
servers.add(entry.getKey());
|
||||
}
|
||||
for (Object each : list(scenario.getOrDefault("dhcpClients", new ArrayList<>()))) {
|
||||
system(nodes.get((String) each)).setDHCPKonfiguration(true);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user