Bug:Fix file validation issue
[vnfsdk/refrepo.git] / vnfmarket / src / main / webapp / vnfmarket / node_modules / log4js / test / logstashUDP-test.js
1 "use strict";
2 var vows = require('vows')
3 , assert = require('assert')
4 , log4js = require('../lib/log4js')
5 , sandbox = require('sandboxed-module')
6 ;
7
8 function setupLogging(category, options) {
9   var udpSent = {};
10
11   var fakeDgram = {
12     createSocket: function (type) {
13       return {
14         send: function(buffer, offset, length, port, host, callback) {
15           udpSent.date = new Date();
16           udpSent.host = host;
17           udpSent.port = port;
18           udpSent.length = length;
19           udpSent.offset = 0;
20           udpSent.buffer = buffer;
21           callback(undefined, length);
22         }
23       };
24     }
25   };
26
27   var logstashModule = sandbox.require('../lib/appenders/logstashUDP', {
28     requires: {
29       'dgram': fakeDgram
30     }
31   });
32   log4js.clearAppenders();
33   log4js.addAppender(logstashModule.configure(options), category);
34
35   return {
36     logger: log4js.getLogger(category),
37     results: udpSent
38   };
39 }
40
41 vows.describe('logstashUDP appender').addBatch({
42   'when logging with logstash via UDP': {
43     topic: function() {
44       var setup = setupLogging('myCategory', {
45         "host": "127.0.0.1",
46         "port": 10001,
47         "type": "logstashUDP",
48         "logType": "myAppType",
49         "category": "myLogger",
50         "fields": {
51           "field1": "value1",
52           "field2": "value2"
53         },
54         "layout": {
55           "type": "pattern",
56           "pattern": "%m"
57         }
58       });
59       setup.logger.log('trace', 'Log event #1');
60       return setup;
61     },
62     'an UDP packet should be sent': function (topic) {
63       assert.equal(topic.results.host, "127.0.0.1");
64       assert.equal(topic.results.port, 10001);
65       assert.equal(topic.results.offset, 0);
66       var json = JSON.parse(topic.results.buffer.toString());
67       assert.equal(json.type, 'myAppType');
68       var fields = {
69         field1: 'value1',
70         field2: 'value2',
71         level: 'TRACE'
72       };
73       assert.equal(JSON.stringify(json.fields), JSON.stringify(fields));
74       assert.equal(json.message, 'Log event #1');
75       // Assert timestamp, up to hours resolution.
76       var date = new Date(json['@timestamp']);
77       assert.equal(
78         date.toISOString().substring(0, 14),
79         topic.results.date.toISOString().substring(0, 14)
80       );
81     }
82   },
83
84   'when missing some options': {
85     topic: function() {
86       var setup = setupLogging('myLogger', {
87         "host": "127.0.0.1",
88         "port": 10001,
89         "type": "logstashUDP",
90         "category": "myLogger",
91         "layout": {
92           "type": "pattern",
93           "pattern": "%m"
94         }
95       });
96       setup.logger.log('trace', 'Log event #1');
97       return setup;
98     },
99     'it sets some defaults': function (topic) {
100       var json = JSON.parse(topic.results.buffer.toString());
101       assert.equal(json.type, 'myLogger');
102       assert.equal(JSON.stringify(json.fields), JSON.stringify({'level': 'TRACE'}));
103     }
104   },
105
106   'when extra fields provided': {
107     topic: function() {
108       var setup = setupLogging('myLogger', {
109         "host": "127.0.0.1",
110         "port": 10001,
111         "type": "logstashUDP",
112         "category": "myLogger",
113         "layout": {
114           "type": "dummy"
115         }
116       });
117       setup.logger.log('trace', 'Log event #1', {'extra1': 'value1', 'extra2': 'value2'});
118       return setup;
119     },'they should be added to fields structure': function (topic) {
120       var json = JSON.parse(topic.results.buffer.toString());
121       var fields = {'extra1': 'value1', 'extra2': 'value2', 'level': 'TRACE'};
122       assert.equal(JSON.stringify(json.fields), JSON.stringify(fields));
123     }
124   }
125
126 }).export(module);