test.js 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. var fsr = require('./index');
  2. var assert = require('assert');
  3. var fs = require('fs');
  4. var tests = {
  5. testFileSizes: function () {
  6. [
  7. ["3k",3072],
  8. ["5M",5242880],
  9. ["0.5G",536870912],
  10. ["0.5T",null],
  11. ["1mega",null],
  12. ["10 giga",null]
  13. ].map(function(fsize){
  14. console.log(fsize[0],fsize[1],fsr.parseFileSize(fsize[0]));
  15. assert.ok(fsize[1] == fsr.parseFileSize(fsize[0]));
  16. })
  17. },
  18. testFrequency: function () {
  19. var opt1 = 'M544';
  20. var opt2 = '5m';
  21. var opt3 = '1H';
  22. var opt4 = '3h';
  23. var opt5 = 'daily';
  24. var opt6 = 'test';
  25. var opt7 = '3W';
  26. var opt8 = '-1h';
  27. var opt9 = '25h';
  28. var opt10 = '24h';
  29. var opt11 = '23h';
  30. var opt12 = '59m';
  31. var opt13 = '60m';
  32. var opt14 = '61m';
  33. var opt15 = '-1m';
  34. assert.ok(!fsr.getFrequency(opt1));
  35. var obj = fsr.getFrequency(opt2);
  36. console.log('obj =', obj);
  37. assert.ok(typeof obj == 'object');
  38. assert.equal(obj.type, 'm');
  39. assert.equal(obj.digit, 5);
  40. obj = fsr.getFrequency(opt3);
  41. assert.ok(typeof obj == 'object');
  42. assert.equal(obj.type, 'h');
  43. assert.equal(obj.digit, 1);
  44. obj = fsr.getFrequency(opt4);
  45. assert.ok(typeof obj == 'object');
  46. assert.equal(obj.type, 'h');
  47. assert.equal(obj.digit, 3);
  48. obj = fsr.getFrequency(opt5);
  49. assert.ok(typeof obj == 'object');
  50. assert.equal(obj.type, 'daily');
  51. assert.equal(obj.digit, undefined);
  52. obj = fsr.getFrequency(opt6);
  53. assert.ok(typeof obj == 'object');
  54. assert.equal(obj.type, 'test');
  55. assert.equal(obj.digit, 0);
  56. obj = fsr.getFrequency(opt7);
  57. assert.ok(obj === false);
  58. obj = fsr.getFrequency(opt8);
  59. assert.ok(obj === false);
  60. obj = fsr.getFrequency(opt9);
  61. assert.ok(obj === false);
  62. obj = fsr.getFrequency(opt10);
  63. console.log('obj =', obj);
  64. assert.ok(typeof obj == 'object');
  65. assert.equal(obj.type, 'h');
  66. assert.equal(obj.digit, 24);
  67. obj = fsr.getFrequency(opt11);
  68. console.log('obj =', obj);
  69. assert.ok(typeof obj == 'object');
  70. assert.equal(obj.type, 'h');
  71. assert.equal(obj.digit, 23);
  72. obj = fsr.getFrequency(opt12);
  73. assert.ok(typeof obj == 'object');
  74. assert.equal(obj.type, 'm');
  75. assert.equal(obj.digit, 59);
  76. obj = fsr.getFrequency(opt13);
  77. assert.ok(typeof obj == 'object');
  78. assert.equal(obj.type, 'm');
  79. assert.equal(obj.digit, 60);
  80. obj = fsr.getFrequency(opt14);
  81. assert.ok(obj === false);
  82. obj = fsr.getFrequency(opt15);
  83. assert.ok(obj === false);
  84. },
  85. testGetDate: function () {
  86. var opt = {type: 'test', digit: 0};
  87. var opt1 = {type: 'daily', digit: 0};
  88. var opt2 = {type: 'h', digit: 1};
  89. var opt3 = {type: 'm', digit: 30};
  90. var opt4 = {type: 'm', digit: 45};
  91. var opt5 = {type: 'h', digit: 3};
  92. var opt6 = {type: 'm', digit: 5};
  93. var format1 = 'YYYYMMDD';
  94. var format2 = 'YYYY-MM-DD';
  95. var format3 = 'YYYYMMDD.HHmmss';
  96. var format4 = 'YYYY-MM-DD:HH:mm:ss';
  97. console.log(fsr.getDate(opt));
  98. console.log(fsr.getDate(opt1));
  99. console.log(fsr.getDate(opt2));
  100. console.log(fsr.getDate(opt3));
  101. console.log(fsr.getDate(opt4));
  102. console.log(fsr.getDate(opt5));
  103. console.log(fsr.getDate(opt6));
  104. console.log(fsr.getDate({type: 'test', digit: 0},format1));
  105. console.log(fsr.getDate({type: 'test', digit: 0},format2));
  106. console.log(fsr.getDate({type: 'test', digit: 0},format3));
  107. console.log(fsr.getDate({type: 'test', digit: 0},format4));
  108. },
  109. testAuditSettings: function(){
  110. var a = fsr.setAuditLog("10d","","/tmp/a/b/c/files/%DATE%/logs");
  111. console.log(a)
  112. assert.equal(a.auditLog,"/tmp/a/b/c/files/.audit.json");
  113. assert.equal(a.keep.amount,10);
  114. assert.equal(a.keep.days,true);
  115. assert.equal(a.files.length,0);
  116. a = fsr.setAuditLog("10","/tmp/a/b/log_audit_file.json","/tmp/a/b/c/files/%DATE%/logs1");
  117. console.log(a)
  118. assert.equal(a.auditLog,"/tmp/a/b/log_audit_file.json");
  119. assert.equal(a.keep.amount,10);
  120. assert.equal(a.keep.days,false);
  121. assert.equal(a.files.length,0);
  122. // var b = fsr.writeAuditLog({keep:{days:true,amount:10},auditLog: "/tmp/aa/a/e/a/b/c/a/b/b/ba_log.json",files:[{date:Date.now(), name:"/tmp/a/b/c.log"}]});
  123. },
  124. testGetStream: function() {
  125. return;
  126. var logdir = __dirname + '/log/';
  127. var test = function() {
  128. var options1 = { filename: logdir + 'program1.log', frequency: '1m', verbose: true, date_format: 'YYYY-MM-DD' };
  129. var options2 = { filename: logdir + 'program2.log', frequency: '1m', verbose: true};
  130. var options3 = { filename: logdir + 'program3-%DATE%.log', frequency: '1m', verbose: true, date_format: 'YYYY-MM-DD'};
  131. var options4 = { filename: logdir + 'program4-%DATE%.log', verbose: true, date_format: 'YYYY-MM-DD'};
  132. var options5 = { filename: logdir + 'program5-%DATE%.log', verbose: true};
  133. var stream1 = fsr.getStream(options1);
  134. stream1.write('formatted date');
  135. var stream2 = fsr.getStream(options2);
  136. stream2.write('default date');
  137. var stream3 = fsr.getStream(options3);
  138. stream3.write('date mid filename');
  139. var stream4 = fsr.getStream(options4);
  140. stream4.write('date mid filename without rotation');
  141. var stream5 = fsr.getStream(options5);
  142. stream5.write('dafault date mid filename without rotation');
  143. var options = { filename: logdir + 'program-%DATE%.log', frequency: '1m', verbose: true, date_format: 'YYYY-MM-DD:HH:mm' };
  144. var stream = fsr.getStream(options);
  145. process.__defineGetter__('stdout', function() { return stream;});
  146. process.__defineGetter__('stderr', function() { return stream;});
  147. setTimeout(function(){
  148. stream.write('Foo bar');
  149. }, 3000)
  150. setTimeout(function(){
  151. stream.write('Foo bar');
  152. }, 60000);
  153. }
  154. fs.exists(logdir, function(exists) {
  155. if(!exists) {
  156. console.log('Creating the log directory as one doesnt exist');
  157. fs.mkdir(logdir, function(err) {
  158. if(err) {
  159. console.error('Trouble creating directory %s', logdir);
  160. throw err;
  161. }
  162. test();
  163. });
  164. }else{
  165. test();
  166. }
  167. });
  168. },
  169. }
  170. Object.keys(tests).forEach(function (test) {
  171. if (typeof tests[test] == 'function') {
  172. tests[test]();
  173. }
  174. });