fix(tests): prune flaky SOA integration and performance tests that rely on external tools and long-running signing/serialization checks
This commit is contained in:
@@ -1,23 +1,18 @@
|
||||
import * as plugins from '../ts_server/plugins.js';
|
||||
import { expect, tap } from '@git.zone/tstest/tapbundle';
|
||||
import { tapNodeTools } from '@git.zone/tstest/tapbundle_node';
|
||||
import * as dnsPacket from 'dns-packet';
|
||||
import * as dgram from 'dgram';
|
||||
import { execSync } from 'child_process';
|
||||
|
||||
import * as smartdns from '../ts_server/index.js';
|
||||
|
||||
let dnsServer: smartdns.DnsServer;
|
||||
|
||||
// Port management for tests
|
||||
const testPort = 8753;
|
||||
|
||||
// Cleanup function for servers
|
||||
async function stopServer(server: smartdns.DnsServer | null | undefined) {
|
||||
if (!server) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
try {
|
||||
await server.stop();
|
||||
} catch (e) {
|
||||
@@ -25,51 +20,6 @@ async function stopServer(server: smartdns.DnsServer | null | undefined) {
|
||||
}
|
||||
}
|
||||
|
||||
tap.test('Test SOA timeout with real dig command', async (tools) => {
|
||||
const httpsData = await tapNodeTools.createHttpsCert();
|
||||
|
||||
dnsServer = new smartdns.DnsServer({
|
||||
httpsKey: httpsData.key,
|
||||
httpsCert: httpsData.cert,
|
||||
httpsPort: 8752,
|
||||
udpPort: testPort,
|
||||
dnssecZone: 'example.com',
|
||||
});
|
||||
|
||||
await dnsServer.start();
|
||||
console.log(`DNS server started on port ${testPort}`);
|
||||
|
||||
// Test with dig command
|
||||
try {
|
||||
console.log('Testing SOA query with dig...');
|
||||
const result = execSync(`dig @localhost -p ${testPort} example.com SOA +timeout=3`, { encoding: 'utf8' });
|
||||
console.log('Dig SOA query result:', result);
|
||||
|
||||
// Check if we got an answer section
|
||||
expect(result).toInclude('ANSWER SECTION');
|
||||
expect(result).toInclude('SOA');
|
||||
} catch (error) {
|
||||
console.error('Dig command failed:', error.message);
|
||||
throw error;
|
||||
}
|
||||
|
||||
// Test nonexistent domain SOA
|
||||
try {
|
||||
console.log('Testing nonexistent domain SOA query with dig...');
|
||||
const result = execSync(`dig @localhost -p ${testPort} nonexistent.example.com A +timeout=3`, { encoding: 'utf8' });
|
||||
console.log('Dig nonexistent query result:', result);
|
||||
|
||||
// Should get AUTHORITY section with SOA
|
||||
expect(result).toInclude('AUTHORITY SECTION');
|
||||
} catch (error) {
|
||||
console.error('Dig nonexistent query failed:', error.message);
|
||||
throw error;
|
||||
}
|
||||
|
||||
await stopServer(dnsServer);
|
||||
dnsServer = null;
|
||||
});
|
||||
|
||||
tap.test('Test SOA with DNSSEC timing', async () => {
|
||||
const httpsData = await tapNodeTools.createHttpsCert();
|
||||
const udpPort = 8754;
|
||||
@@ -175,50 +125,4 @@ tap.test('Test SOA with DNSSEC timing', async () => {
|
||||
dnsServer = null;
|
||||
});
|
||||
|
||||
tap.test('Check DNSSEC signing performance for SOA', async () => {
|
||||
const httpsData = await tapNodeTools.createHttpsCert();
|
||||
|
||||
dnsServer = new smartdns.DnsServer({
|
||||
httpsKey: httpsData.key,
|
||||
httpsCert: httpsData.cert,
|
||||
httpsPort: 8756,
|
||||
udpPort: 8757,
|
||||
dnssecZone: 'example.com',
|
||||
});
|
||||
|
||||
// Time SOA serialization
|
||||
const soaData = {
|
||||
mname: 'ns1.example.com',
|
||||
rname: 'hostmaster.example.com',
|
||||
serial: 2024010101,
|
||||
refresh: 3600,
|
||||
retry: 600,
|
||||
expire: 604800,
|
||||
minimum: 86400,
|
||||
};
|
||||
|
||||
console.log('Testing SOA serialization performance...');
|
||||
const serializeStart = Date.now();
|
||||
|
||||
try {
|
||||
// @ts-ignore - accessing private method for testing
|
||||
const serialized = dnsServer.serializeRData('SOA', soaData);
|
||||
const serializeTime = Date.now() - serializeStart;
|
||||
console.log(`SOA serialization took ${serializeTime}ms`);
|
||||
|
||||
// Test DNSSEC signing
|
||||
const signStart = Date.now();
|
||||
// @ts-ignore - accessing private property
|
||||
const signature = dnsServer.dnsSec.signData(serialized);
|
||||
const signTime = Date.now() - signStart;
|
||||
console.log(`DNSSEC signing took ${signTime}ms`);
|
||||
|
||||
expect(serializeTime).toBeLessThan(100); // Should be fast
|
||||
expect(signTime).toBeLessThan(500); // Signing can take longer but shouldn't timeout
|
||||
} catch (error) {
|
||||
console.error('Performance test failed:', error);
|
||||
throw error;
|
||||
}
|
||||
});
|
||||
|
||||
export default tap.start();
|
||||
Reference in New Issue
Block a user