@Test public void testGenerateCompiledLogsEmail() throws IOException { AppLogLine typicalLogLine = new AppLogLine(); typicalLogLine.setLogLevel(LogLevel.ERROR); typicalLogLine.setLogMessage("Typical log message"); AppLogLine logLineWithLineBreak = new AppLogLine(); logLineWithLineBreak.setLogLevel(LogLevel.ERROR); logLineWithLineBreak.setLogMessage("Log line \n with line break <br> and also HTML br tag"); EmailWrapper email = new EmailGenerator().generateCompiledLogsEmail( Arrays.asList(typicalLogLine, logLineWithLineBreak)); String subject = String.format(EmailType.SEVERE_LOGS_COMPILATION.getSubject(), Config.APP_VERSION); verifyEmail(email, Config.SUPPORT_EMAIL, subject, "/severeLogsCompilationEmail.html"); }
@Override public void processLog(RequestLogs log) { nickname = log.getNickname(); ip = log.getIp(); userAgent = log.getUserAgent(); }
@Test public void logEntry_withMalformationAppLogLine_constructionFail() { ______TS("Fail: log message not in correct format"); AppLogLine appLog = new AppLogLine(); appLog.setLogMessage("TEAMMATESLOG||RANDOM"); ActivityLogEntry entry = ActivityLogEntry.buildFromAppLog(appLog); assertTrue(entry.generateLogMessage().contains(Const.ActivityLog.MESSAGE_ERROR_LOG_MESSAGE_FORMAT)); String logMessageMalformation = "TEAMMATESLOG|||instructorHome|||Pageload|||true|||Instructor" + "|||UserName|||UserId|||UserEmail|||Message|||URL"; appLog.setLogMessage(logMessageMalformation); entry = ActivityLogEntry.buildFromAppLog(appLog); assertTrue(entry.generateLogMessage().contains(Const.ActivityLog.MESSAGE_ERROR_LOG_MESSAGE_FORMAT)); }
public Iterable<RequestLogs> queryForLogs(long logRangeStartMs, long logRangeEndMs, LogsExportConfiguration exportConfig, LogsFieldExporterSet exporterSet) { LogService ls = LogServiceFactory.getLogService(); LogQuery lq = new LogQuery(); lq = lq.startTimeMillis(logRangeStartMs) .endTimeMillis(logRangeEndMs) .includeAppLogs(true); if (exportConfig.getLogLevel() != null) { lq = lq.minLogLevel(exportConfig.getLogLevel()); } List<Version> appVersions = exporterSet.applicationVersionsToExport(); if (appVersions != null && appVersions.size() > 0) { lq = lq.versions(appVersions); } Iterable<RequestLogs> logs = ls.fetch(lq); return logs; } }
@Override public void processLog(RequestLogs log) { cost = log.getCost(); responseSize = log.getResponseSize(); mcycles = log.getMcycles(); loadingRequest = log.isLoadingRequest(); pendingTimeUsec = log.getPendingTimeUsec(); latencyUsec = log.getLatencyUsec(); }
public RequestLogs getCurrentRequestLogs() { LogQuery logQuery = new LogQuery() .includeAppLogs(true) .includeIncomplete(true) .startTimeMillis(System.currentTimeMillis() - 20000); for (RequestLogs requestLogs : LogServiceFactory.getLogService().fetch(logQuery)) { if (requestLogs.getRequestId().equals(getCurrentRequestId())) { return requestLogs; } } fail("Could not find RequestLogs for current request"); return null; // not sure, why the following code throws LogServiceException: An error occurred retrieving logs from storage. // LogQuery logQuery = new LogQuery() // .includeAppLogs(true) // .requestIds(Collections.singletonList(getCurrentRequestId())); // Iterable<RequestLogs> iterable = LogServiceFactory.getLogService().fetch(logQuery); // assertTrue("Could not find RequestLogs for current request", iterable.iterator().hasNext()); // return iterable.iterator().next(); } }
@Override public void processLog(RequestLogs log) { httpStatus = log.getStatus(); method = log.getMethod(); httpVersion = log.getHttpVersion(); requestId = log.getRequestId(); }
@Test @InSequence(20) public void testRequestIds() throws Exception { LogService service = LogServiceFactory.getLogService(); LogQuery logQuery = new LogQuery().requestIds(Arrays.asList(request1Id, request2Id)); Iterator<RequestLogs> iterator = service.fetch(logQuery).iterator(); assertEquals(request1Id, iterator.next().getRequestId()); assertEquals(request2Id, iterator.next().getRequestId()); assertFalse(iterator.hasNext()); logQuery = new LogQuery().requestIds(Arrays.asList(request2Id)); iterator = service.fetch(logQuery).iterator(); assertEquals(request2Id, iterator.next().getRequestId()); assertFalse(iterator.hasNext()); }
@Test @InSequence(20) public void testGetBatchSize() throws Exception { long size = 1; LogService service = LogServiceFactory.getLogService(); LogQuery logQuery = new LogQuery().requestIds(Arrays.asList(request1Id, request2Id)).batchSize((int)size); Iterator<RequestLogs> iterator = service.fetch(logQuery).iterator(); assertNotNull(iterator.next()); // TODO: renable when expected behavior is confirmed. // assertFalse("Batch size 1 so there should not be another log", iterator.hasNext()); long batchSize = logQuery.getBatchSize(); assertEquals(size, batchSize); }
protected AppLogLine findLogLine(String text, LogQuery logQuery) { Iterable<RequestLogs> iterable = LogServiceFactory.getLogService().fetch(logQuery); for (RequestLogs logs : iterable) { for (AppLogLine logLine : logs.getAppLogLines()) { if (logLine.getLogMessage().contains(text)) { return logLine; } } } return null; }
private void executeQuery(LogQuery logQuery) { LogService service = LogServiceFactory.getLogService(); Iterator<RequestLogs> iterator = service.fetch(logQuery).iterator(); }
@Override public void processLog(RequestLogs log) { versionId = log.getVersionId(); moduleId = log.getModuleId(); }
@Override public void processLog(RequestLogs log) { host = log.getHost(); resource = log.getResource(); path = resource.indexOf("?") > -1 ? resource.substring(0, resource.indexOf("?")) : resource; }
@Before public void setUp() throws Exception { service = LogServiceFactory.getLogService(); }
@Override public void processLog(RequestLogs log) { instanceKey = log.getInstanceKey(); }
@Override public void processLog(RequestLogs log) { timestamp = log.getStartTimeUsec(); }
protected void assertLogContains(String text, LogService.LogLevel logLevel) { int retryMax = 4; AppLogLine logLine = findLogLineContaining(text, retryMax); assertNotNull("log should contain '" + text + "', but it does not", logLine); if (logLevel != null) { assertEquals("incorrect logLevel for text '" + text + "'", logLevel, logLine.getLogLevel()); } }
protected Iterator<RequestLogs> findLogLine(LogQuery query, int retryMax) { LogService service = LogServiceFactory.getLogService(); Iterator<RequestLogs> iterator = null; for (int i = 0; i <= retryMax; i++) { iterator = service.fetch(query).iterator(); if (iterator.hasNext()) { return iterator; } pause(1500); } return iterator; }
@Test public void logEntry_withAppLogLine_constructSuccessfully() { ______TS("Success: Generate activityLog from appLogLine (with TimeTaken)"); String logMessageWithoutTimeTaken = "TEAMMATESLOG|||instructorHome|||Pageload|||true|||Instructor" + "|||UserName|||UserId|||UserEmail|||Message|||URL|||UserId20151019143729608"; AppLogLine appLog = new AppLogLine(); appLog.setLogMessage(logMessageWithoutTimeTaken + Const.ActivityLog.FIELD_SEPARATOR + "20"); ActivityLogEntry entry = ActivityLogEntry.buildFromAppLog(appLog); assertEquals(logMessageWithoutTimeTaken, entry.generateLogMessage()); assertEquals(20, entry.getActionTimeTaken()); ______TS("Success: Generate activityLog from appLogLine (without TimeTaken)"); appLog.setLogMessage(logMessageWithoutTimeTaken); entry = ActivityLogEntry.buildFromAppLog(appLog); assertEquals(logMessageWithoutTimeTaken, entry.generateLogMessage()); assertEquals(0, entry.getActionTimeTaken()); ______TS("Success with severe log: timeTaken not in correct format"); appLog.setLogMessage(logMessageWithoutTimeTaken + Const.ActivityLog.FIELD_SEPARATOR + "random"); entry = ActivityLogEntry.buildFromAppLog(appLog); assertEquals(logMessageWithoutTimeTaken, entry.generateLogMessage()); assertEquals(0, entry.getActionTimeTaken()); }
protected static void clear() { LogService service = LogServiceFactory.getLogService(); TestLifecycleEvent event = TestLifecycles.createServiceLifecycleEvent(LoggingTestBase.class, service); TestLifecycles.after(event); }