apitest.js 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. const YAML = require('yaml');
  2. const TestSDK = require('./lib/TestSDK');
  3. const log_error = require('./lib/log_error');
  4. const TestRegistry = require('./lib/TestRegistry');
  5. const fs = require('node:fs');
  6. const { parseArgs } = require('node:util');
  7. const args = process.argv.slice(2);
  8. let config, report;
  9. try {
  10. ({ values: {
  11. config,
  12. report,
  13. bench,
  14. unit,
  15. }, positionals: [id] } = parseArgs({
  16. options: {
  17. config: {
  18. type: 'string',
  19. },
  20. report: {
  21. type: 'string',
  22. },
  23. bench: { type: 'boolean' },
  24. unit: { type: 'boolean' },
  25. },
  26. allowPositionals: true,
  27. }));
  28. } catch (e) {
  29. if ( args.length < 1 ) {
  30. console.error(
  31. 'Usage: apitest [OPTIONS]\n' +
  32. '\n' +
  33. 'Options:\n' +
  34. ' --config=<path> (required) Path to configuration file\n' +
  35. ' --report=<path> (optional) Output file for full test results\n' +
  36. ''
  37. );
  38. process.exit(1);
  39. }
  40. }
  41. const conf = YAML.parse(fs.readFileSync(config).toString());
  42. const main = async () => {
  43. const ts = new TestSDK(conf);
  44. try {
  45. await ts.delete('api_test', { recursive: true });
  46. } catch (e) {
  47. }
  48. await ts.mkdir('api_test', { overwrite: true });
  49. ts.cd('api_test');
  50. const registry = new TestRegistry(ts);
  51. registry.add_test_sdk('puter-rest.v1', require('./test_sdks/puter-rest')({
  52. config: conf,
  53. }));
  54. require('./tests/__entry__.js')(registry);
  55. require('./benches/simple.js')(registry);
  56. if ( id ) {
  57. if ( unit ) {
  58. await registry.run_test(id);
  59. } else if ( bench ) {
  60. await registry.run_bench(id);
  61. } else {
  62. await registry.run(id);
  63. }
  64. return;
  65. }
  66. if ( unit ) {
  67. await registry.run_all_tests();
  68. } else if ( bench ) {
  69. await registry.run_all_benches();
  70. } else {
  71. await registry.run_all();
  72. }
  73. // await ts.runTestPackage(require('./tests/write_cart'));
  74. // await ts.runTestPackage(require('./tests/move_cart'));
  75. // await ts.runTestPackage(require('./tests/copy_cart'));
  76. // await ts.runTestPackage(require('./tests/write_and_read'));
  77. // await ts.runTestPackage(require('./tests/move'));
  78. // await ts.runTestPackage(require('./tests/stat'));
  79. // await ts.runTestPackage(require('./tests/readdir'));
  80. // await ts.runTestPackage(require('./tests/mkdir'));
  81. // await ts.runTestPackage(require('./tests/batch'));
  82. // await ts.runTestPackage(require('./tests/delete'));
  83. const all = unit && bench;
  84. if ( all || unit ) ts.printTestResults();
  85. if ( all || bench ) ts.printBenchmarkResults();
  86. }
  87. const main_e = async () => {
  88. try {
  89. await main();
  90. } catch (e) {
  91. log_error(e);
  92. }
  93. }
  94. main_e();