blob: 5eef40d3ae3fc115a126d600d68e0fcdea4f8f57 [file] [log] [blame]
// Copyright 2015 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
/**
* @fileoverview Jasmine test file for log_helper.js.
*/
describe('LogHelper', function() {
it('should convert elapsed ms to a wall time', function() {
expect(logHelper.formatElapsedMS('1')).toEqual('00:00:00.001');
expect(logHelper.formatElapsedMS('10')).toEqual('00:00:00.010');
expect(logHelper.formatElapsedMS('100')).toEqual('00:00:00.100');
expect(logHelper.formatElapsedMS('1000')).toEqual('00:00:01.000');
expect(logHelper.formatElapsedMS('10000')).toEqual('00:00:10.000');
expect(logHelper.formatElapsedMS('100000')).toEqual('00:01:40.000');
expect(logHelper.formatElapsedMS('1000000')).toEqual('00:16:40.000');
expect(logHelper.formatElapsedMS('10000000')).toEqual('02:46:40.000');
});
it('should detect syslogs', function() {
var time1 = '2015-01-06T23:33:03.478905-08:00';
var time2 = '2015-01-06T23:33:06.680764-08:00';
var time3 = '2015-01-06T23:33:06.681832-08:00';
var basicLog = [
time1 + ' wpa_supplicant[863]: nl80211: Scan trigger',
time2 + ' wpa_supplicant[863]: nl80211: Event message available',
time3 + ' wpa_supplicant[863]: nl80211: New scan results available'
];
var log;
var logLines = [
'---------- END ----------',
'',
'netlog=<multiline>',
'---------- START ----------'
];
log = logLines.concat(basicLog);
log.push('---------- END ----------');
log.push('');
log.push('syslog=<multiline>');
log.push('---------- START ----------');
log.push(time1 + ' ERR shill[807]: [ERROR:wifi.cc(978)] Disconnected ' +
'due to inability to connect to the service.');
log.push('---------- END ----------');
var logHolder = logHelper.detectFileType(log);
expect(logHolder.fileType).toEqual('system_log');
expect(logHolder.androidlog).not.toBeDefined();
expect(logHolder.netlog.length).toEqual(3);
expect(logHolder.syslog.length).toEqual(1);
expect(logHolder.brillolog).not.toBeDefined();
});
it('should detect netlogs', function() {
var time1 = '2015-01-06T23:33:03.478905-08:00';
var time2 = '2015-01-06T23:33:06.680764-08:00';
var time3 = '2015-01-06T23:33:06.681832-08:00';
var basicLog = [
time1 + ' Service 0 updated; state: Associating failure Unknown',
time2 + ' Service 0: state Idle -> Associating',
time3 + ' wpa_supplicant[863]: nl80211: New scan results available'
];
var logHolder = logHelper.detectFileType(basicLog);
expect(logHolder.fileType).toEqual('netlog');
expect(logHolder.androidlog).not.toBeDefined();
expect(logHolder.netlog.length).toEqual(3);
expect(logHolder.syslog).not.toBeDefined();
expect(logHolder.brillolog).not.toBeDefined();
});
it('should detect brillo logs', function() {
var brilloLog = [
'10-30 22:47:54.351 238 238 I /system/bin/shill: ' +
'INFO:service.cc(407)] Service 2: state Associating -> Idle',
'10-30 22:47:54.352 238 238 I /system/bin/shill: ' +
'[INFO:manager.cc(1390)] Service 2 updated; ' +
'state: Idle failure Unknown',
'01-12 00:52:22.343 0 0 I wlan : ' +
'connection failed with 00:00:00:00:00:00 reason:1 and Status:9'
];
var logHolder = logHelper.detectFileType(brilloLog);
expect(logHolder.fileType).toEqual('brillolog');
expect(logHolder.androidlog).not.toBeDefined();
expect(logHolder.netlog).not.toBeDefined();
expect(logHolder.syslog).not.toBeDefined();
expect(logHolder.brillolog.length).toEqual(3);
});
it('should detect an unknown file type', function() {
var randomFile = [
'This is not a real log',
'It should not be processed',
' wpa_supplicant[863]: nl80211: New scan results available'
];
var logHolder = logHelper.detectFileType(randomFile);
expect(logHolder.fileType).toEqual('unknown');
expect(logHolder.androidlog).not.toBeDefined();
expect(logHolder.netlog).not.toBeDefined();
expect(logHolder.syslog).not.toBeDefined();
expect(logHolder.brillolog).not.toBeDefined();
});
it('should detect an android bug report file', function() {
var androidBugReport = [
'========================================================',
'== dumpstate: 2015-11-20 12:11:35',
'========================================================',
'',
'--------- beginning of main',
'11-20 12:08:06.463 489 897 D CommandListener: Setting iface cfg',
'11-20 12:08:06.521 903 2909 D ConnectivityService: Adding iface ' +
'wlan0 to network 169',
'[logcat: 0.530s elapsed]',
'',
'------ EVENT LOG (logcat -b events -v threadtime -d *:v) -----',
];
var logHolder = logHelper.detectFileType(androidBugReport);
expect(logHolder.fileType).toEqual('android_log');
expect(logHolder.androidlog.length).toEqual(2);
expect(logHolder.netlog).not.toBeDefined();
expect(logHolder.syslog).not.toBeDefined();
expect(logHolder.brillolog).not.toBeDefined();
});
it('should ignore \"LAST LOGCAT\" section of android bug report file',
function() {
var androidBugReport = [
'========================================================',
'== dumpstate: 2015-11-20 12:11:35',
'========================================================',
'',
'Build: bullhead-userdebug 6.0.1 MMB29B 2387154 dev-keys',
'11-20 12:08:02.926 903 2909 D ConnectivityService: ' +
' sendStickyBroadcast: action=android.net.conn.CONNECTIVITY_CHANGE',
'------ LAST LOGCAT (logcat -L -v threadtime -b all -d *:v) ------',
'--------- beginning of main',
'05-26 01:34:12.948 313 313 W libsuspend: Error writing \'on\'' +
' to /sys/power/state: Invalid argument',
'[logcat: 0.015s elapsed]',
'--------- beginning of main',
'11-20 12:08:06.463 489 897 D CommandListener: Setting iface cfg',
'11-20 12:08:06.521 903 2909 D ConnectivityService: Adding iface ' +
'wlan0 to network 169',
'[logcat: 0.530s elapsed]',
'',
'------ EVENT LOG (logcat -b events -v threadtime -d *:v) -----',
'11-20 12:01:45.958 3432 9804 I gtalk_conn_close: [276,8]'
];
var logHolder = logHelper.detectFileType(androidBugReport);
expect(logHolder.fileType).toEqual('android_log');
expect(logHolder.androidlog.length).toEqual(2);
expect(logHolder.netlog).not.toBeDefined();
expect(logHolder.syslog).not.toBeDefined();
expect(logHolder.brillolog).not.toBeDefined();
});
it('should ignore info outside main subsection of android bug report file',
function() {
var androidBugReport = [
'========================================================',
'== dumpstate: 2015-11-20 12:11:35',
'========================================================',
'',
'Build: bullhead-userdebug 6.0.1 MMB29B 2387154 dev-keys',
'11-20 12:08:02.926 903 2909 D ConnectivityService: ' +
' sendStickyBroadcast: action=android.net.conn.CONNECTIVITY_CHANGE',
'--------- beginning of main',
'11-20 12:08:06.463 489 897 D CommandListener: Setting iface cfg',
'11-20 12:08:06.521 903 2909 D ConnectivityService: Adding iface ' +
'wlan0 to network 169',
'[logcat: 0.530s elapsed]',
'',
'------ EVENT LOG (logcat -b events -v threadtime -d *:v) -----',
'11-20 12:01:45.958 3432 9804 I gtalk_conn_close: [276,8]'
];
var logHolder = logHelper.detectFileType(androidBugReport);
expect(logHolder.fileType).toEqual('android_log');
expect(logHolder.androidlog.length).toEqual(2);
expect(logHolder.netlog).not.toBeDefined();
expect(logHolder.syslog).not.toBeDefined();
expect(logHolder.brillolog).not.toBeDefined();
});
it('should detect an android logcat file', function() {
var androidBugReport = [
'',
'11-20 12:08:06.463 489 897 D CommandListener: Setting iface cfg',
'11-20 12:08:06.521 903 2909 D ConnectivityService: Adding iface ' +
'wlan0 to network 169'
];
var logHolder = logHelper.detectFileType(androidBugReport);
expect(logHolder.fileType).toEqual('android_log');
expect(logHolder.androidlog.length).toEqual(3);
expect(logHolder.netlog).not.toBeDefined();
expect(logHolder.syslog).not.toBeDefined();
expect(logHolder.brillolog).not.toBeDefined();
});
it('should properly determine log offsets', function() {
var time1 = '2015-01-06T23:33:03.478905-08:00';
var time2 = '2015-01-06T23:33:06.680764-08:30';
var time3 = '2015-01-06T23:33:06.681832+04:00';
var time4 = '2015-01-06T23:33:03.478905+04:30';
var time5 = '2015-01-06T23:33:06.680764-00:00';
var time6 = '2015-01-06T23:33:06.681832+00:00';
var result = time1.match(logHelper.TIME_FORMAT);
expect(result[1]).toEqual('-');
expect(logHelper.getOffsetMS(result)).toEqual(-28800000);
result = time2.match(logHelper.TIME_FORMAT);
expect(result[1]).toEqual('-');
expect(logHelper.getOffsetMS(result)).toEqual(-30600000);
result = time3.match(logHelper.TIME_FORMAT);
expect(result[1]).toEqual('+');
expect(logHelper.getOffsetMS(result)).toEqual(14400000);
result = time4.match(logHelper.TIME_FORMAT);
expect(result[1]).toEqual('+');
expect(logHelper.getOffsetMS(result)).toEqual(16200000);
result = time5.match(logHelper.TIME_FORMAT);
expect(result[1]).toEqual('-');
var check = 0;
var check2 = 0 * -1;
expect(logHelper.getOffsetMS(result)).toEqual(0);
result = time6.match(logHelper.TIME_FORMAT);
expect(result[1]).toEqual('+');
expect(logHelper.getOffsetMS(result)).toEqual(0);
});
});