test.mjs 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. import { statSync } from "fs";
  2. async function getPage(path) {
  3. return fetch(`http://localhost:8923${path}`, {
  4. headers: {
  5. "User-Agent": "CHALLENGE",
  6. },
  7. })
  8. .then((resp) => {
  9. if (resp.status !== 200) {
  10. throw new Error(`wanted status 200, got status: ${resp.status}`);
  11. }
  12. return resp;
  13. })
  14. .then((resp) => resp.text());
  15. }
  16. async function getFileSize(filePath) {
  17. try {
  18. return statSync(filePath).size;
  19. } catch (error) {
  20. return 0;
  21. }
  22. }
  23. (async () => {
  24. const logFilePath = "./var/anubis.log";
  25. // Get initial log file size
  26. const initialSize = await getFileSize(logFilePath);
  27. console.log(`Initial log file size: ${initialSize} bytes`);
  28. // Make 35 requests with different paths
  29. const requests = [];
  30. for (let i = 0; i < 35; i++) {
  31. requests.push(`/test${i}`);
  32. }
  33. const resultSheet = {};
  34. let failed = false;
  35. for (const path of requests) {
  36. try {
  37. const resp = await getPage(path);
  38. resultSheet[path] = {
  39. success: true,
  40. line: resp.split("\n")[0],
  41. };
  42. } catch (error) {
  43. resultSheet[path] = {
  44. success: false,
  45. error: error.message,
  46. };
  47. console.log(`✗ Request to ${path} failed: ${error.message}`);
  48. failed = true;
  49. }
  50. }
  51. // Check final log file size
  52. const finalSize = await getFileSize(logFilePath);
  53. console.log(`Final log file size: ${finalSize} bytes`);
  54. console.log(`Size increase: ${finalSize - initialSize} bytes`);
  55. // Verify that log file size increased
  56. if (finalSize <= initialSize) {
  57. console.error(
  58. "ERROR: Log file size did not increase after making requests!",
  59. );
  60. failed = true;
  61. }
  62. let successCount = 0;
  63. for (let [k, v] of Object.entries(resultSheet)) {
  64. if (!v.success) {
  65. console.error({ path: k, error: v.error });
  66. } else {
  67. successCount++;
  68. }
  69. }
  70. console.log(`Successful requests: ${successCount}/${requests.length}`);
  71. if (failed) {
  72. console.error(
  73. "Test failed: Some requests failed or log file size did not increase",
  74. );
  75. process.exit(1);
  76. } else {
  77. console.log(
  78. "Test passed: All requests succeeded and log file size increased",
  79. );
  80. process.exit(0);
  81. }
  82. })();