import { statSync } from "fs"; async function getPage(path) { return fetch(`http://localhost:8923${path}`, { headers: { "User-Agent": "CHALLENGE", }, }) .then((resp) => { if (resp.status !== 200) { throw new Error(`wanted status 200, got status: ${resp.status}`); } return resp; }) .then((resp) => resp.text()); } async function getFileSize(filePath) { try { return statSync(filePath).size; } catch (error) { return 0; } } (async () => { const logFilePath = "./var/nuke.log"; // Get initial log file size const initialSize = await getFileSize(logFilePath); console.log(`Initial log file size: ${initialSize} bytes`); // Make 35 requests with different paths const requests = []; for (let i = 0; i < 35; i++) { requests.push(`/test${i}`); } const resultSheet = {}; let failed = false; for (const path of requests) { try { const resp = await getPage(path); resultSheet[path] = { success: true, line: resp.split("\n")[0], }; } catch (error) { resultSheet[path] = { success: false, error: error.message, }; console.log(`✗ Request to ${path} failed: ${error.message}`); failed = true; } } // Check final log file size const finalSize = await getFileSize(logFilePath); console.log(`Final log file size: ${finalSize} bytes`); console.log(`Size increase: ${finalSize - initialSize} bytes`); // Verify that log file size increased if (finalSize <= initialSize) { console.error( "ERROR: Log file size did not increase after making requests!", ); failed = true; } let successCount = 0; for (let [k, v] of Object.entries(resultSheet)) { if (!v.success) { console.error({ path: k, error: v.error }); } else { successCount++; } } console.log(`Successful requests: ${successCount}/${requests.length}`); if (failed) { console.error( "Test failed: Some requests failed or log file size did not increase", ); process.exit(1); } else { console.log( "Test passed: All requests succeeded and log file size increased", ); process.exit(0); } })();