1 |
|
2 |
|
3 |
|
4 | var PropertiesReader = require('properties-reader');
|
5 | var fs = require('fs');
|
6 | var path = require('path');
|
7 | var util = require('./util');
|
8 | var big_integer = require('./utils/BigInteger');
|
9 | var cluster = require('cluster');
|
10 | var StringBuffer = require('./flowpath/StringBuffer').StringBuffer;
|
11 | var NDCServerConfig = require('./NDCServerConfig');
|
12 | var defaultTier = 'NodeJS';
|
13 | var defaultServer = 'Nsecom';
|
14 | var defaultInstance = 'Nsecom';
|
15 | var defaultNdcPort = '7892';
|
16 | var defaultNdcHost = 'localhost';
|
17 |
|
18 | var NDHttpReqRespCaptureSettings = require('./HttpHeader/NDHttpReqRespCaptureSettings');
|
19 | var cavNdSessionManager = require('./HttpHeader/cavNdSessionManager');
|
20 | var os = require('os');
|
21 | function AgentSetting() {}
|
22 |
|
23 | var ENCODED_VAL_COMMA = ",";
|
24 | var ENCODED_VAL_NEW_LINE = "
";
|
25 | var ENCODED_VAL_SINGLE_QUOTE = "'";
|
26 | var ENCODED_VAL_DOUBLE_QUOTE = """;
|
27 | var ENCODED_VAL_BACKSLASH = "\";
|
28 | var ENCODED_VAL_PIPE_SYMBOL = "|";
|
29 | var ENCODED_VAL_DOT_SYMBOL = ".";
|
30 | var ENCODED_VAL_COLON_SYMBOL = ":";
|
31 | var ENCODED_VAL_TO_SPACE = " ";
|
32 |
|
33 | AgentSetting.appID=0;
|
34 | AgentSetting.serverID=0;
|
35 | AgentSetting.tierID=0;
|
36 | AgentSetting.ndVectorSeparator='<';
|
37 | AgentSetting.status=''
|
38 | AgentSetting.nodejsCpuProfilingTime = 10000
|
39 | AgentSetting.vectorPrefix = '';
|
40 | AgentSetting.vectorPrefixID ='';
|
41 | AgentSetting.vectorPrefixForNodeMonitors='';
|
42 | AgentSetting.currentTestRun= 0 ;
|
43 | AgentSetting.enableWraping = false;
|
44 | AgentSetting.previousTestRun= 0 ;
|
45 | AgentSetting.isTestRunning=false;
|
46 | AgentSetting.cavEpochDiff=0;
|
47 | AgentSetting.cavEpochDiffInMills = 1388534400000 ;
|
48 | AgentSetting.continousRunningTest=false;
|
49 | AgentSetting.correlationIDHeader='';
|
50 | AgentSetting.diffTimeFromNDC = 0;
|
51 | AgentSetting.bciInstrSessionPct ;
|
52 | AgentSetting.ndSettingFile = "NA" ;
|
53 | AgentSetting.clusterMode = false;
|
54 | AgentSetting.maxCharInSeqBlob = 600;
|
55 | AgentSetting.bciMaxNonServiceMethodsPerFP = 5000;
|
56 | AgentSetting.enableForcedFPChain=1
|
57 | AgentSetting.bciInstrSessionPct = 0;
|
58 | AgentSetting.enableBTMonitor = 1;
|
59 | AgentSetting.isBackendMonitorEnabled = true;
|
60 | AgentSetting.startInstrResponse = false
|
61 | AgentSetting.startInstrResTimeout = 60000
|
62 | AgentSetting.runTimeChange = false;
|
63 | AgentSetting.enableMultiInstMode=false;
|
64 | var envSettinfFile ;
|
65 |
|
66 | var pathOfSettingFile = path.join('/opt/cavisson/netdiagnostics/ndsettings.conf');
|
67 | var settingFileAccProject = path.resolve(path.join(__dirname,'/../../../ndsettings.conf'));
|
68 | var builtinCoreModules = [ 'assert','buffer','child_process','cluster','crypto','dgram','dns','domain','events','fs','http','https','net','os','path','punycode','querystring', 'readline','stream','string_decoder','tls','tty','url','util','vm','zlib','smalloc' ];
|
69 | AgentSetting.settingFileMode = "exclusive";
|
70 | AgentSetting.normalModulesMap = {};
|
71 | AgentSetting.monitorName = undefined ;
|
72 | AgentSetting.ndMonitorInterval = 60000;
|
73 |
|
74 | AgentSetting.RECORD_SEPRATOR_COMMA = ",";
|
75 | AgentSetting.RECORD_SEPRATOR_SPACE = " ";
|
76 | AgentSetting.THREAD_NAME = "Event Dispatch Thread";
|
77 | AgentSetting.THREAD_STATE = "Running";
|
78 | AgentSetting.THREAD_PRIORITY = "0";
|
79 | AgentSetting.FUTURE_FIELDS = "0,0,0,0,0,";
|
80 | AgentSetting.excludeMethodOnRespTime = 0;
|
81 | AgentSetting.enableStateMC = true;
|
82 | AgentSetting.dynamicThreshold = 0;
|
83 | AgentSetting.enable_eventLoop_monitor = 1
|
84 | AgentSetting.enable_garbage_profiler = 1
|
85 | AgentSetting.BCILoggingMode = 'FILE'
|
86 | AgentSetting.logLevel = 'debug';
|
87 | AgentSetting.agentMode = 3 ;
|
88 | AgentSetting.httpReqCapturingSettings = new NDHttpReqRespCaptureSettings();
|
89 | AgentSetting.httpResCapturingSettings = new NDHttpReqRespCaptureSettings();
|
90 | AgentSetting.invalidFileFormatMsg = true;
|
91 | AgentSetting.maxBTCount = 256
|
92 | AgentSetting.bciDataBufferMaxCount = 512;
|
93 | AgentSetting.bciDataBufferMaxSize = 32768;
|
94 | AgentSetting.ASDataBufferSize = 64000;
|
95 | AgentSetting.ASDataBufferMaxCount = 256;
|
96 | AgentSetting.ndDataBufferSize=16777216;
|
97 | AgentSetting.ndASBufferSize=16384000;
|
98 | AgentSetting.isAsyncEventMonitorEnable = false;
|
99 | AgentSetting.enableUpdateLogMsgForNF=0;
|
100 | AgentSetting.mapForWinstonLogMeths = {};
|
101 | AgentSetting.mapForConsoleMeths = {};
|
102 |
|
103 |
|
104 | AgentSetting.dumpFPForcefullyTimer = undefined;
|
105 | AgentSetting.FPMaxAllowedAgeInMillis = -1;
|
106 | AgentSetting.forceFPDumpInterval = 90000;
|
107 | AgentSetting.forceFPThresholdValue=20;
|
108 |
|
109 |
|
110 | AgentSetting.enableBTMonitorTrace = 0;
|
111 | AgentSetting.enableBackendMonTrace= 0;
|
112 | AgentSetting.ndMethodMonTraceLevel= 0;
|
113 | AgentSetting.enableBciDebug= 0;
|
114 | AgentSetting.captureHttpTraceLevel = 0;
|
115 | AgentSetting.enableNDSession = new cavNdSessionManager();
|
116 | AgentSetting.nodeServerMonitor = 0;
|
117 | AgentSetting.healthCheckInterval = 60000;
|
118 | AgentSetting.healthCheckThreshold= 20
|
119 | AgentSetting.reconnectTimer = undefined;
|
120 | AgentSetting.isHeapDumpInProgress = false;
|
121 | AgentSetting.autoSensorConnHandler =undefined
|
122 | AgentSetting.dataConnHandler =undefined
|
123 | AgentSetting.lastModifiedSize = undefined;
|
124 | AgentSetting.lastModifiedTime = undefined;
|
125 | AgentSetting.corelateEventCallback = 0;
|
126 | AgentSetting.wrapAsyncApi = false;
|
127 | AgentSetting.filterHSEvents = undefined;
|
128 | AgentSetting.enableHSLongStack = 0;
|
129 | AgentSetting.isdumpBtMetaData = false;
|
130 | AgentSetting.enableHSLongStackDepth = 5;
|
131 | AgentSetting.isClusterMode = 0;
|
132 | AgentSetting.requestType = 1;
|
133 | AgentSetting.lastConnTimeStamp = 0;
|
134 | AgentSetting.connDuration = 0;
|
135 | AgentSetting.lastConnHost = '';
|
136 | AgentSetting.lastConnPort = '';
|
137 | AgentSetting.ndcHeartBeatThreshold = 15 * 60 * 1000 ;
|
138 | AgentSetting.lastHeartBeatReceived = new Date().getTime();
|
139 | AgentSetting.isAppNameSame = false;
|
140 | AgentSetting.enableDumpAsyncId = 0;
|
141 | AgentSetting.tDigestPercentileBT = {enable:0,aggInterval:'5m',sMode:2,delta:100,k:100,groupId:10793,graphId:1};
|
142 | AgentSetting.tDigestPercentileIP = {enable:0,aggInterval:'5m',sMode:2,delta:100,k:100,groupId:10794,graphId:1};
|
143 |
|
144 |
|
145 | AgentSetting.isCluster = function(){
|
146 | var instance ;
|
147 |
|
148 | var clusterPath = '/tmp/cavisson/cluster';
|
149 | if(!cluster.isMaster)
|
150 | {
|
151 | if(fs.existsSync(clusterPath)) {
|
152 | fs.readdir(clusterPath, function (err, files) {
|
153 | try {
|
154 | if (err)util.logger.warn(err);
|
155 | files.forEach(function (file) {
|
156 |
|
157 | var index = file.split('.')[0];
|
158 |
|
159 | var data = fs.readFileSync(clusterPath + '/' + file).toString();
|
160 |
|
161 | if (data == process.pid) {
|
162 | instance = AgentSetting.instance
|
163 | if (instance.indexOf('_') != -1) {
|
164 | instance = instance.split('_')[0];
|
165 | }
|
166 | instance = instance + '_' + index;
|
167 |
|
168 | AgentSetting.instance = instance;
|
169 | }
|
170 | });
|
171 | }catch(err){util.logger.warn(err)}
|
172 | });
|
173 | }
|
174 | }
|
175 | }
|
176 |
|
177 | AgentSetting.initAllMap = function(args)
|
178 | {
|
179 | try {
|
180 | AgentSetting.btrecordMap = new Object();
|
181 | AgentSetting.categoryMap = new Object();
|
182 | AgentSetting.backendRecordMap = new Object();
|
183 | AgentSetting.instrumentationMap = {};
|
184 | AgentSetting.coreInstrumentationMap= {};
|
185 |
|
186 | AgentSetting.flowMap = new Object();
|
187 |
|
188 |
|
189 |
|
190 | AgentSetting.backendID = 0;
|
191 | AgentSetting.seqId = 0;
|
192 |
|
193 |
|
194 | AgentSetting.BCILoggingMode = args.BCILoggingMode;
|
195 | AgentSetting.logLevel = args.logLevel;
|
196 | if(args.agentMode >=0 && args.agentMode <= 3)
|
197 | AgentSetting.agentMode = args.agentMode
|
198 | }
|
199 | catch(err){util.logger.warn(err)}
|
200 |
|
201 | }
|
202 |
|
203 | AgentSetting.generateFPMask = function()
|
204 | {
|
205 |
|
206 |
|
207 | try {
|
208 | var FP_shifting_56 = (big_integer(big_integer('0x0F',16).and('0')).shiftLeft('56')).toString();
|
209 | var FP_shifting_46 = (big_integer(big_integer('0x03FF',16).and('0')).shiftLeft('46')).toString();
|
210 |
|
211 | var FP_data = (big_integer(FP_shifting_56).add(FP_shifting_46)).toString();
|
212 | var flowPathInstanceInitial = big_integer('4000000000000000',16).add(FP_data);
|
213 |
|
214 | AgentSetting.flowPathInstanceInitialID = flowPathInstanceInitial.toString();
|
215 | AgentSetting.timeStampMask = parseInt('0x3FFFFFFFFF',16);
|
216 | AgentSetting.seqNoDigits = 8;
|
217 | AgentSetting.seqNumMask = parseInt('0xFF', 16);
|
218 |
|
219 | }catch(err){util.logger.warn(err)}
|
220 |
|
221 | }
|
222 |
|
223 | AgentSetting.setDefault = function () {
|
224 | AgentSetting.tier = defaultTier;
|
225 | AgentSetting.server = defaultServer;
|
226 | AgentSetting.instance = defaultInstance;
|
227 | AgentSetting.ndcPort = defaultNdcPort;
|
228 | AgentSetting.ndcHost = defaultNdcHost;
|
229 |
|
230 |
|
231 |
|
232 | }
|
233 |
|
234 | AgentSetting.parseInstrProfile = function(data){
|
235 | try {
|
236 | var instrData = JSON.parse(data);
|
237 |
|
238 | for (var i in instrData) {
|
239 | AgentSetting.instrumentationMap[instrData[i].modulename] = instrData[i];
|
240 | for (j in builtinCoreModules) {
|
241 | if (instrData[i].modulename === builtinCoreModules[j]) {
|
242 | delete AgentSetting.instrumentationMap[instrData[i].modulename];
|
243 | AgentSetting.coreInstrumentationMap[instrData[i].modulename] = instrData[i];
|
244 | }
|
245 | }
|
246 | }
|
247 | }
|
248 | catch(err){
|
249 | console.log(err)
|
250 | }
|
251 | }
|
252 |
|
253 |
|
254 | AgentSetting.checkNDSettingFile = function()
|
255 | {
|
256 | util.logger.info("Checking setting file is changed or not .");
|
257 | try {
|
258 |
|
259 |
|
260 | var stat = fs.statSync(AgentSetting.ndSettingFile);
|
261 |
|
262 | if ((stat.size === AgentSetting.lastModifiedSize) && (stat.mtime.toString() === AgentSetting.lastModifiedTime.toString())) {
|
263 | util.logger.info(AgentSetting.currentTestRun + " | Size is same : " + stat.size + "==" + AgentSetting.lastModifiedSize + " , " + stat.mtime + "==" + AgentSetting.lastModifiedTime);
|
264 | return;
|
265 | }
|
266 | else {
|
267 | util.logger.info(AgentSetting.currentTestRun + " | ndSetting File is changed , Going to read ." + stat.size + "==" + AgentSetting.lastModifiedSize + " , " + stat.mtime + "==" + AgentSetting.lastModifiedTime);
|
268 | AgentSetting.lastModifiedSize = stat.size
|
269 | AgentSetting.lastModifiedTime = stat.mtime
|
270 | util.logger.info(AgentSetting.currentTestRun+" | reading settings from : "+AgentSetting.ndSettingFile+" . Size : "+stat.size+" , lmd : "+stat.mtime);
|
271 | AgentSetting.getData();
|
272 | }
|
273 | }catch(err){util.logger.warn(err)};
|
274 | };
|
275 |
|
276 | AgentSetting.checkNDHome = function(){
|
277 | AgentSetting.ndHome = process.env.ndHome ? process.env.ndHome : undefined;
|
278 | util.logger.info(AgentSetting.currentTestRun+" | NDHome is : "+AgentSetting.ndHome)
|
279 | if(AgentSetting.ndHome !== undefined ) {
|
280 | envSettinfFile = path.join(AgentSetting.ndHome, '/ndsettings.conf');
|
281 | }
|
282 | return envSettinfFile;
|
283 |
|
284 | }
|
285 |
|
286 | AgentSetting.checkNDSettingsInEnv = function(){
|
287 | if(process.env.CAV_NDC_HOST != undefined && process.env.CAV_NDC_PORT != undefined && process.env.CAV_TIER != undefined ){
|
288 | AgentSetting.ndcHost = process.env.CAV_NDC_HOST;
|
289 | AgentSetting.ndcPort = process.env.CAV_NDC_PORT;
|
290 | AgentSetting.tier = process.env.CAV_TIER;
|
291 | if((AgentSetting.tier == undefined) || (AgentSetting.tier == 0) )
|
292 | AgentSetting.tier = "";
|
293 |
|
294 | util.logger.info(AgentSetting.currentTestRun + " | Reading Settings from environment ");
|
295 | util.logger.info(AgentSetting.currentTestRun + " | NDCHost is : " + AgentSetting.ndcHost);
|
296 | util.logger.info(AgentSetting.currentTestRun + " | NDCPort is : " + AgentSetting.ndcPort);
|
297 | util.logger.info(AgentSetting.currentTestRun + " | tier is : " + AgentSetting.tier);
|
298 | return true
|
299 | }
|
300 | else
|
301 | return false
|
302 | }
|
303 |
|
304 | AgentSetting.readSettingFile = function()
|
305 | {
|
306 | try {
|
307 | if(fs.existsSync(settingFileAccProject) && util.canWrite(settingFileAccProject)){
|
308 | AgentSetting.ndSettingFile = settingFileAccProject;
|
309 | util.logger.info(AgentSetting.currentTestRun+" | path acc to project : "+AgentSetting.ndSettingFile);
|
310 | this.checkNDSettingFile();
|
311 | }
|
312 | else if (fs.existsSync(pathOfSettingFile) && util.canWrite(pathOfSettingFile)) {
|
313 | AgentSetting.ndSettingFile = pathOfSettingFile;
|
314 | util.logger.info(AgentSetting.currentTestRun+" | NDHome is not set , so taking default path: "+AgentSetting.ndSettingFile);
|
315 | this.checkNDSettingFile();
|
316 | }
|
317 | else if(fs.existsSync(this.checkNDHome()) && util.canWrite(envSettinfFile)) {
|
318 | AgentSetting.ndSettingFile = envSettinfFile;
|
319 | util.logger.info(AgentSetting.currentTestRun+" | NDHome is set : "+AgentSetting.ndHome+" ,and file path is : "+AgentSetting.ndSettingFile);
|
320 | this.checkNDSettingFile();
|
321 | }
|
322 | else if(this.checkNDSettingsInEnv()) {
|
323 | if((AgentSetting.ndcHost == null) || (AgentSetting.ndcHost == undefined) || (AgentSetting.ndcHost == 0)) {
|
324 | AgentSetting.ndcHost = '';
|
325 | util.logger.error(AgentSetting.currentTestRun + " | ndcHost is not present in ndsetting file , so setting it to default ");
|
326 | }
|
327 | if((AgentSetting.ndcPort == null) || (AgentSetting.ndcPort == undefined) || (AgentSetting.ndcPort == 0)) {
|
328 | AgentSetting.ndcPort = defaultNdcPort;
|
329 | util.logger.error(AgentSetting.currentTestRun + " | ndcPort is not present in ndsetting file , so setting it to default" );
|
330 | }
|
331 | NDCServerConfig.addServers([{host:AgentSetting.ndcHost,port:AgentSetting.ndcPort,type:1}])
|
332 | }
|
333 | else{
|
334 | util.logger.error(AgentSetting.currentTestRun+ " | No NdSetting file is prsent on server");
|
335 | AgentSetting.ndSettingFile = AgentSetting.lastModifiedSize = AgentSetting.lastModifiedTime = undefined;
|
336 | return;
|
337 | }
|
338 | }
|
339 | catch(err)
|
340 | {util.logger.warn(err)}
|
341 | };
|
342 |
|
343 | AgentSetting.getData = function () {
|
344 | try {
|
345 | var filename= AgentSetting.ndSettingFile
|
346 |
|
347 | AgentSetting.isToInstrument = false;
|
348 | AgentSetting.isRequested = false;
|
349 | AgentSetting.bciStartUpTime = new Date().getTime();
|
350 |
|
351 | var properties = null;
|
352 | try {
|
353 | properties = PropertiesReader(filename);
|
354 | }
|
355 | catch (err) {
|
356 | util.logger.warn(AgentSetting.currentTestRun + " | Cannot read propery file due to : " + err);
|
357 | return ;
|
358 | }
|
359 | var tier = properties.get('tier');
|
360 | var server = properties.get('server');
|
361 | var instance = properties.get('instance');
|
362 | var ndcPort = properties.get('ndcPort');
|
363 | var ndcHost = properties.get('ndcHost');
|
364 | var backupNdcHostName = properties.get('backupNdcHostName');
|
365 | var backupNdcPort = properties.get('backupNdcPort');
|
366 | var agentMode = properties.get('agentMode');
|
367 | var enableStateMC = properties.get('enableStateMC')
|
368 | var excludeMethodOnRespTime = properties.get('excludeMethodOnRespTime');
|
369 | var dynamicThreshold = properties.get('dynamicSlowVslowThreshold');
|
370 | var enableWraping = properties.get('enableWraping');
|
371 | AgentSetting.enableWraping = (enableWraping === true) ? true : false ;
|
372 | var corelateEventCallback = properties.get('corelateEventCallback');
|
373 | var enableHSLongStackDepth = properties.get('enableHSLongStackDepth');
|
374 | AgentSetting.setCorelateEventCBValue(corelateEventCallback);
|
375 | var filterHSEvents = properties.get('filterHSEvents');
|
376 | var protocols = properties.get('NDC_COMM_PROTOCOL');
|
377 | var Mode = properties.get('Mode');
|
378 | AgentSetting.ndcPort = ndcPort;
|
379 | AgentSetting.ndcHost = ndcHost;
|
380 |
|
381 | if(Mode != undefined && Mode != null && Mode != 0){
|
382 | if(Mode.toUpperCase() == 'SHARED'){
|
383 | AgentSetting.clusterMode = true ;
|
384 | AgentSetting.settingFileMode = Mode ;
|
385 | }
|
386 | }
|
387 |
|
388 | if((AgentSetting.ndcHost == null) || (AgentSetting.ndcHost == undefined) || (AgentSetting.ndcHost == 0)) {
|
389 | AgentSetting.ndcHost = '';
|
390 | util.logger.error(AgentSetting.currentTestRun + " | ndcHost is not present in ndsetting file , so setting it to default : " + filename);
|
391 | }
|
392 | if((AgentSetting.ndcPort == null) || (AgentSetting.ndcPort == undefined) || (AgentSetting.ndcPort == 0)) {
|
393 | AgentSetting.ndcPort = defaultNdcPort;
|
394 | util.logger.error(AgentSetting.currentTestRun + " | ndcPort is not present in ndsetting file , so setting it to default: " + filename);
|
395 | }
|
396 | NDCServerConfig.addServers([{host:AgentSetting.ndcHost,port:AgentSetting.ndcPort,type:1,protocols : protocols},{host:backupNdcHostName,port:backupNdcPort,type:0,protocols : protocols}])
|
397 |
|
398 | AgentSetting.enableMultiInstMode=properties.get('enableMultiInstMode');
|
399 | if(enableHSLongStackDepth !== undefined && enableHSLongStackDepth !== null && enableHSLongStackDepth > 0){
|
400 | AgentSetting.enableHSLongStackDepth = enableHSLongStackDepth
|
401 | }
|
402 | if(agentMode !== undefined && agentMode !== null && agentMode >= 0 && agentMode <=3 ){
|
403 | AgentSetting.agentMode = agentMode;
|
404 | }
|
405 | if(filterHSEvents != undefined && filterHSEvents != null && filterHSEvents != 0)
|
406 | AgentSetting.filterHSEvents = filterHSEvents;
|
407 |
|
408 | AgentSetting.dynamicThreshold = dynamicThreshold;
|
409 | if((AgentSetting.dynamicThreshold == null) || (AgentSetting.dynamicThreshold == undefined) || (AgentSetting.dynamicThreshold == 0)){
|
410 | AgentSetting.dynamicThreshold = 0;
|
411 | }
|
412 | if((AgentSetting.enableMultiInstMode == null) || (AgentSetting.enableMultiInstMode == undefined) || (AgentSetting.enableMultiInstMode == 0)){
|
413 | AgentSetting.enableMultiInstMode = false;
|
414 | }
|
415 | AgentSetting.enableStateMC = enableStateMC
|
416 | if(AgentSetting.enableStateMC == null || AgentSetting.enableStateMC == undefined || ( AgentSetting.enableStateMC === 1)){
|
417 | AgentSetting.enableStateMC = true;
|
418 | }
|
419 | AgentSetting.excludeMethodOnRespTime = excludeMethodOnRespTime;
|
420 | if(AgentSetting.excludeMethodOnRespTime == null || AgentSetting.excludeMethodOnRespTime == undefined){
|
421 | AgentSetting.excludeMethodOnRespTime = 0
|
422 | }
|
423 | AgentSetting.backupNdcHostName = backupNdcHostName;
|
424 | AgentSetting.backupNdcPort = backupNdcPort;
|
425 |
|
426 |
|
427 | if(AgentSetting.settingFileMode.toUpperCase() == "SHARED"){
|
428 | if(!AgentSetting.tier)
|
429 | AgentSetting.tier =tier;
|
430 | if(!AgentSetting.server)
|
431 | AgentSetting.server =server;
|
432 | if(!AgentSetting.instance)
|
433 | AgentSetting.instance = instance;
|
434 | }
|
435 | else{
|
436 | AgentSetting.tier = tier;
|
437 | AgentSetting.server = server;
|
438 | AgentSetting.instance = instance;
|
439 | }
|
440 |
|
441 | if((AgentSetting.tier == null) || (AgentSetting.tier == 0) )
|
442 | AgentSetting.tier = "";
|
443 | if((AgentSetting.server == null) || (AgentSetting.server == 0) )
|
444 | AgentSetting.server = os.hostname();
|
445 | if((AgentSetting.instance == null) || (AgentSetting.instance == 0) )
|
446 | AgentSetting.instance = "";
|
447 |
|
448 |
|
449 |
|
450 | AgentSetting.enable_eventLoop_monitor = properties.get('eventLoopMonitor');
|
451 | AgentSetting.enable_garbage_profiler = properties.get('gcProfiler');
|
452 |
|
453 | util.logger.info(AgentSetting.currentTestRun + " | Tier is : " + AgentSetting.tier);
|
454 | util.logger.info(AgentSetting.currentTestRun + " | Server is : " + AgentSetting.server);
|
455 | util.logger.info(AgentSetting.currentTestRun + " | Instance is : " + AgentSetting.instance);
|
456 | util.logger.info(AgentSetting.currentTestRun + " | NDCHost is : " + AgentSetting.ndcHost);
|
457 | util.logger.info(AgentSetting.currentTestRun + " | NDCPort is : " + AgentSetting.ndcPort);
|
458 | util.logger.info(AgentSetting.currentTestRun + " | eventLoopMonitor : " + AgentSetting.enable_eventLoop_monitor);
|
459 | util.logger.info(AgentSetting.currentTestRun + " | gcProfiler : " + AgentSetting.enable_garbage_profiler);
|
460 | util.logger.info(AgentSetting.currentTestRun + " | Mode : " + AgentSetting.settingFileMode);
|
461 | util.logger.info(AgentSetting.currentTestRun + " | EnableStateMC : ", AgentSetting.enableStateMC );
|
462 | util.logger.info(AgentSetting.currentTestRun + " | dynamicSlowVslowThreshold : " + AgentSetting.dynamicThreshold);
|
463 | util.logger.info(AgentSetting.currentTestRun + " | ExcludeMethodOnRespTime : " + AgentSetting.excludeMethodOnRespTime);
|
464 | util.logger.info(AgentSetting.currentTestRun + " | agentMode : " + AgentSetting.agentMode);
|
465 | util.logger.info(AgentSetting.currentTestRun + " | backupNdcHostName : " + AgentSetting.backupNdcHostName);
|
466 | util.logger.info(AgentSetting.currentTestRun + " | backupNdcPort : " + AgentSetting.backupNdcPort);
|
467 | util.logger.info(AgentSetting.currentTestRun + " | corelateEventCallback : " + corelateEventCallback);
|
468 | util.logger.info(AgentSetting.currentTestRun + " | enableHSLongStackDepth : " + enableHSLongStackDepth);
|
469 | util.logger.info(AgentSetting.currentTestRun + " | filterHSEvents : " + AgentSetting.filterHSEvents);
|
470 | }catch(err){util.logger.warn(err)}
|
471 | };
|
472 |
|
473 | AgentSetting.setCorelateEventCBValue = function(value){
|
474 | if((value == null) || (value == undefined) || (value == 0)){
|
475 | AgentSetting.corelateEventCallback = 0;
|
476 | }
|
477 | else {
|
478 | if(value.toString().indexOf('%') > -1) {
|
479 | var tmp = value.toString().split('%')
|
480 | if (tmp[0] >= 0) {
|
481 | AgentSetting.corelateEventCallback = tmp[0]
|
482 | AgentSetting.wrapAsyncApi = tmp[1] > 0 ? true : false
|
483 | }
|
484 | }else{
|
485 | AgentSetting.corelateEventCallback = value;
|
486 | AgentSetting.wrapAsyncApi=false
|
487 | }
|
488 | }
|
489 | }
|
490 |
|
491 | AgentSetting.setEnableHSLongStackValue = function(value){
|
492 |
|
493 | if(value == undefined && value == null){
|
494 | return
|
495 | }
|
496 | else if(value){
|
497 |
|
498 | var temp = value.toString().split('%')
|
499 | if(temp.length > 2){
|
500 | AgentSetting.enableHSLongStack = temp[0]
|
501 | AgentSetting.enableHSLongStackDepth = temp[1]
|
502 | AgentSetting.filterHSEvents = temp[2]
|
503 | }
|
504 | if(temp.length > 1){
|
505 | AgentSetting.enableHSLongStack = temp[0]
|
506 | AgentSetting.enableHSLongStackDepth =temp[1]
|
507 | }
|
508 | if(temp.length > 0){
|
509 | AgentSetting.enableHSLongStack = temp[0]
|
510 | }
|
511 | }
|
512 | util.logger.info("0 | EnableHSLongStack : "+AgentSetting.enableHSLongStack ,AgentSetting.enableHSLongStackDepth ,AgentSetting.filterHSEvents);
|
513 | }
|
514 |
|
515 | AgentSetting.getBCIStartUpTime = function () {
|
516 | return AgentSetting.bciStartUpTime;
|
517 | };
|
518 |
|
519 | AgentSetting.getTierName = function () {
|
520 | return AgentSetting.tier;
|
521 | };
|
522 |
|
523 | AgentSetting.getServerName = function () {
|
524 | return AgentSetting.server;
|
525 | };
|
526 |
|
527 | AgentSetting.getInstance = function () {
|
528 | return AgentSetting.instance;
|
529 | };
|
530 |
|
531 | AgentSetting.getNDCHost = function () {
|
532 | return AgentSetting.ndcHost;
|
533 | };
|
534 | AgentSetting.getAgentInfo = function () {
|
535 | util.logger.info(AgentSetting.currentTestRun, "| RunTime change for Agent info------>")
|
536 | var arr =[]
|
537 | for(var i in AgentSetting) {
|
538 | arr.push(i+'='+AgentSetting[i])
|
539 | }
|
540 | util.logger.info(arr)
|
541 | };
|
542 | AgentSetting.getPort = function () {
|
543 |
|
544 | var port = AgentSetting.ndcPort;
|
545 |
|
546 | try {
|
547 | return parseInt(port);
|
548 | }
|
549 | catch (err) {
|
550 | return defaultNdcPort;
|
551 | }
|
552 |
|
553 | };
|
554 |
|
555 | AgentSetting.getFlowPathIdFromRequest= function(){
|
556 | var getNamespace = require('./utils/continuation-local-storage').getNamespace,
|
557 | namespace = getNamespace('cavissonNamespace');
|
558 | if(!namespace)
|
559 | return ;
|
560 |
|
561 | var requestedObj = namespace.get('httpReq');
|
562 | return requestedObj;
|
563 |
|
564 | };
|
565 | var localStorage = require('./utils/continuation-local-storage');
|
566 | AgentSetting.isInstrumentTx = function(context){
|
567 | return (localStorage && localStorage.getNamespace('cavissonNamespace') && (context=localStorage.getNamespace('cavissonNamespace').get('httpReq'))&&
|
568 | localStorage.getNamespace('cavissonNamespace').get('httpReq').cavIncludeFp);
|
569 | }
|
570 |
|
571 |
|
572 | AgentSetting.getContextObj = function () {
|
573 |
|
574 | return localStorage && localStorage.getNamespace('cavissonNamespace') && localStorage.getNamespace('cavissonNamespace').get('httpReq');
|
575 | }
|
576 |
|
577 | AgentSetting.encodeURI = function(sb,command){
|
578 | var len = command.length;
|
579 | for(var i=0; i<len; i++){
|
580 | var c = command.charAt(i);
|
581 | switch (c){
|
582 | case ',':
|
583 | sb.add(ENCODED_VAL_COMMA);
|
584 | break;
|
585 | case '\n':
|
586 | sb.add(ENCODED_VAL_NEW_LINE);
|
587 | break;
|
588 | case '\'':
|
589 | sb.add(ENCODED_VAL_SINGLE_QUOTE);
|
590 | break;
|
591 | case '\"':
|
592 | sb.add(ENCODED_VAL_DOUBLE_QUOTE);
|
593 | break;
|
594 | case '\\':
|
595 | sb.add(ENCODED_VAL_BACKSLASH);
|
596 | break;
|
597 | case '|':
|
598 | sb.add(ENCODED_VAL_PIPE_SYMBOL);
|
599 | break;
|
600 | default:
|
601 | sb.add(c);
|
602 | break;
|
603 | }
|
604 | }
|
605 | return sb ;
|
606 | }
|
607 |
|
608 |
|
609 |
|
610 | AgentSetting.checkforCorrelationIdInReqRes = function (reqOrResObj, flowpathObj) {
|
611 | try {
|
612 | if (reqOrResObj) {
|
613 | var correlationId = (reqOrResObj.headers && (reqOrResObj.headers[AgentSetting.correlationIDHeader.toLowerCase()] ||
|
614 | reqOrResObj.headers[AgentSetting.correlationIDHeader]) || reqOrResObj.getHeader &&
|
615 | (reqOrResObj.getHeader(AgentSetting.correlationIDHeader.toLowerCase()) ||
|
616 | reqOrResObj.getHeader(AgentSetting.correlationIDHeader)));
|
617 |
|
618 | if (correlationId && flowpathObj) {
|
619 | var sb = new StringBuffer();
|
620 | flowpathObj.correlationIDHeader = AgentSetting.encodeURI(sb, correlationId).toString()
|
621 | sb.clear();
|
622 | }
|
623 | }
|
624 | }catch(err){util.logger.warn(AgentSetting.currentTestRun, "| Error occured when getting Co-rrelation id from Request or Response.")}
|
625 | }
|
626 |
|
627 | AgentSetting.escapeHTMLForBackend = function(backendName){
|
628 | try{
|
629 | var encodedStr = []
|
630 | for(var i in backendName){
|
631 | var c = backendName.charAt(i)
|
632 | switch (c){
|
633 | case ' ':encodedStr[i] = '-'
|
634 | break;;
|
635 | case '\n':encodedStr[i] = '-'
|
636 | break;
|
637 | case '\'':encodedStr[i] = '''
|
638 | break;
|
639 | case '\"':encodedStr[i] = '"'
|
640 | break;
|
641 | case '\\':encodedStr[i] = '\'
|
642 | break;
|
643 | case '|':encodedStr[i] = '|'
|
644 | break;
|
645 | case '.':encodedStr[i] = '.'
|
646 | break;
|
647 | case ':':encodedStr[i] = ':'
|
648 | break;
|
649 | default : encodedStr[i] = c
|
650 | }
|
651 | }
|
652 | return encodedStr.join('');
|
653 | }catch(e){
|
654 | util.logger.error('Error while Encoding the Backend Name',e)
|
655 | }
|
656 | }
|
657 |
|
658 | module.exports = AgentSetting;
|