use of com.microsoft.azure.mobile.ingestion.models.json.LogSerializer in project mobile-center-sdk-android by Microsoft.
the class DatabasePersistenceAndroidTest method deleteLogsForGroup.
@Test
public void deleteLogsForGroup() throws PersistenceException, IOException {
/* Initialize database persistence. */
DatabasePersistence persistence = new DatabasePersistence("test-persistence", "deleteLogsForGroup", 1);
/* Set a mock log serializer. */
LogSerializer logSerializer = new DefaultLogSerializer();
logSerializer.addLogFactory(MOCK_LOG_TYPE, new MockLogFactory());
persistence.setLogSerializer(logSerializer);
try {
/* Generate a log and persist. */
Log log1 = AndroidTestUtils.generateMockLog();
Log log2 = AndroidTestUtils.generateMockLog();
Log log3 = AndroidTestUtils.generateMockLog();
Log log4 = AndroidTestUtils.generateMockLog();
persistence.putLog("test-p1", log1);
persistence.putLog("test-p1", log2);
persistence.putLog("test-p2", log3);
persistence.putLog("test-p3", log4);
/* Get a log from persistence. */
List<Log> outputLogs = new ArrayList<>();
String id1 = persistence.getLogs("test-p1", 5, outputLogs);
String id2 = persistence.getLogs("test-p2", 5, outputLogs);
assertNotNull(id1);
assertNotNull(id2);
/* Delete. */
persistence.deleteLogs("test-p1");
persistence.deleteLogs("test-p3");
/* Try another get for verification. */
outputLogs.clear();
persistence.getLogs("test-p3", 5, outputLogs);
/* Verify. */
Map<String, List<Long>> pendingGroups = persistence.mPendingDbIdentifiersGroups;
assertNull(pendingGroups.get("test-p1" + id1));
assertEquals(1, pendingGroups.get("test-p2" + id2).size());
assertEquals(1, pendingGroups.size());
assertEquals(0, outputLogs.size());
assertEquals(1, persistence.mDatabaseStorage.size());
/* Verify one log still persists in the database. */
persistence.clearPendingLogState();
outputLogs.clear();
persistence.getLogs("test-p2", 5, outputLogs);
assertEquals(1, outputLogs.size());
assertEquals(log3, outputLogs.get(0));
/* Count for groups. */
assertEquals(0, persistence.countLogs("test-p1"));
assertEquals(1, persistence.countLogs("test-p2"));
assertEquals(0, persistence.countLogs("test-p3"));
} finally {
/* Close. */
//noinspection ThrowFromFinallyBlock
persistence.close();
}
}
use of com.microsoft.azure.mobile.ingestion.models.json.LogSerializer in project mobile-center-sdk-android by Microsoft.
the class DatabasePersistenceAndroidTest method deleteLogs.
@Test
public void deleteLogs() throws PersistenceException, IOException {
/* Initialize database persistence. */
DatabasePersistence persistence = new DatabasePersistence("test-persistence", "deleteLogs", 1);
/* Set a mock log serializer. */
LogSerializer logSerializer = new DefaultLogSerializer();
logSerializer.addLogFactory(MOCK_LOG_TYPE, new MockLogFactory());
persistence.setLogSerializer(logSerializer);
try {
/* Generate a log and persist. */
Log log1 = AndroidTestUtils.generateMockLog();
Log log2 = AndroidTestUtils.generateMockLog();
Log log3 = AndroidTestUtils.generateMockLog();
Log log4 = AndroidTestUtils.generateMockLog();
persistence.putLog("test-p1", log1);
persistence.putLog("test-p1", log2);
persistence.putLog("test-p2", log3);
persistence.putLog("test-p3", log4);
assertEquals(2, persistence.countLogs("test-p1"));
assertEquals(1, persistence.countLogs("test-p2"));
assertEquals(1, persistence.countLogs("test-p3"));
/* Get a log from persistence. */
List<Log> outputLogs1 = new ArrayList<>();
List<Log> outputLogs2 = new ArrayList<>();
List<Log> outputLogs3 = new ArrayList<>();
String id = persistence.getLogs("test-p1", 5, outputLogs1);
persistence.getLogs("test-p2", 5, outputLogs2);
persistence.getLogs("test-p3", 5, outputLogs3);
/* Verify. */
assertNotNull(id);
assertNotEquals("", id);
assertEquals(2, outputLogs1.size());
assertEquals(1, outputLogs2.size());
assertEquals(1, outputLogs3.size());
/* Delete. */
persistence.deleteLogs("", id);
/* Access DatabaseStorage directly to verify the deletions. */
DatabaseScanner scanner1 = persistence.mDatabaseStorage.getScanner(DatabasePersistence.COLUMN_GROUP, "test-p1");
DatabaseScanner scanner2 = persistence.mDatabaseStorage.getScanner(DatabasePersistence.COLUMN_GROUP, "test-p2");
DatabaseScanner scanner3 = persistence.mDatabaseStorage.getScanner(DatabasePersistence.COLUMN_GROUP, "test-p3");
//noinspection TryFinallyCanBeTryWithResources
try {
/* Verify. */
assertEquals(2, getIteratorSize(scanner1.iterator()));
assertEquals(1, getIteratorSize(scanner2.iterator()));
assertEquals(1, getIteratorSize(scanner3.iterator()));
} finally {
/* Close. */
scanner1.close();
scanner2.close();
scanner3.close();
}
/* Delete. */
persistence.deleteLogs("test-p1", id);
/* Access DatabaseStorage directly to verify the deletions. */
DatabaseScanner scanner4 = persistence.mDatabaseStorage.getScanner(DatabasePersistence.COLUMN_GROUP, "test-p1");
//noinspection TryFinallyCanBeTryWithResources
try {
/* Verify. */
assertEquals(0, getIteratorSize(scanner4.iterator()));
} finally {
/* Close. */
scanner4.close();
}
/* Count logs after delete. */
assertEquals(0, persistence.countLogs("test-p1"));
assertEquals(1, persistence.countLogs("test-p2"));
assertEquals(1, persistence.countLogs("test-p3"));
} finally {
/* Close. */
//noinspection ThrowFromFinallyBlock
persistence.close();
}
}
use of com.microsoft.azure.mobile.ingestion.models.json.LogSerializer in project mobile-center-sdk-android by Microsoft.
the class DatabasePersistenceAndroidTest method putLog.
@Test
public void putLog() throws PersistenceException, IOException {
/* Initialize database persistence. */
DatabasePersistence persistence = new DatabasePersistence("test-persistence", "putLog", 1);
/* Set a mock log serializer. */
LogSerializer logSerializer = new DefaultLogSerializer();
logSerializer.addLogFactory(MOCK_LOG_TYPE, new MockLogFactory());
persistence.setLogSerializer(logSerializer);
try {
/* Initial count is 0. */
assertEquals(0, persistence.countLogs("test-p1"));
/* Generate a log and persist. */
Log log = AndroidTestUtils.generateMockLog();
persistence.putLog("test-p1", log);
/* Count logs. */
assertEquals(1, persistence.countLogs("test-p1"));
/* Get a log from persistence. */
List<Log> outputLogs = new ArrayList<>();
persistence.getLogs("test-p1", 1, outputLogs);
assertEquals(1, outputLogs.size());
assertEquals(log, outputLogs.get(0));
assertEquals(1, persistence.countLogs("test-p1"));
} finally {
/* Close. */
//noinspection ThrowFromFinallyBlock
persistence.close();
}
}
use of com.microsoft.azure.mobile.ingestion.models.json.LogSerializer in project mobile-center-sdk-android by Microsoft.
the class DatabasePersistenceAndroidTest method getLogsException.
@Test
public void getLogsException() throws PersistenceException, IOException, JSONException {
/* Initialize database persistence. */
DatabasePersistence persistence = new DatabasePersistence("test-persistence", "getLogs", 1);
/* Set a mock log serializer. */
LogSerializer logSerializer = spy(new DefaultLogSerializer());
/* Throw a JSON exception for the first call. */
doThrow(new JSONException("JSON exception")).doReturn(AndroidTestUtils.generateMockLog()).doThrow(new JSONException("JSON exception")).doReturn(AndroidTestUtils.generateMockLog()).when(logSerializer).deserializeLog(anyString());
persistence.setLogSerializer(logSerializer);
try {
/* Test constants. */
int numberOfLogs = 4;
/* Generate a log and persist. */
Log[] logs = new Log[numberOfLogs];
for (int i = 0; i < logs.length; i++) logs[i] = AndroidTestUtils.generateMockLog();
/* Put. */
for (Log log : logs) persistence.putLog("test", log);
/* Get. */
List<Log> outputLogs = new ArrayList<>();
persistence.getLogs("test", 10, outputLogs);
assertEquals(numberOfLogs / 2, outputLogs.size());
assertEquals(2, persistence.mDatabaseStorage.size());
} finally {
/* Close. */
//noinspection ThrowFromFinallyBlock
persistence.close();
}
}
use of com.microsoft.azure.mobile.ingestion.models.json.LogSerializer in project mobile-center-sdk-android by Microsoft.
the class CrashesTest method queuePendingCrashesShouldProcess.
@Test
public void queuePendingCrashesShouldProcess() throws IOException, ClassNotFoundException, JSONException {
/* Setup mock. */
Context mockContext = mock(Context.class);
Channel mockChannel = mock(Channel.class);
ErrorReport report = new ErrorReport();
mockStatic(ErrorLogHelper.class);
when(ErrorLogHelper.getStoredErrorLogFiles()).thenReturn(new File[] { mock(File.class) });
when(ErrorLogHelper.getStoredThrowableFile(any(UUID.class))).thenReturn(mock(File.class));
when(ErrorLogHelper.getErrorReportFromErrorLog(any(ManagedErrorLog.class), any(Throwable.class))).thenReturn(report);
when(StorageHelper.InternalStorage.read(any(File.class))).thenReturn("");
when(StorageHelper.InternalStorage.readObject(any(File.class))).thenReturn(new RuntimeException());
CrashesListener mockListener = mock(CrashesListener.class);
when(mockListener.shouldProcess(report)).thenReturn(true);
when(mockListener.shouldAwaitUserConfirmation()).thenReturn(false);
ErrorAttachmentLog mockAttachment = mock(ErrorAttachmentLog.class);
when(mockAttachment.getId()).thenReturn(UUID.randomUUID());
when(mockAttachment.getErrorId()).thenReturn(UUID.randomUUID());
when(mockAttachment.getContentType()).thenReturn("");
when(mockAttachment.getFileName()).thenReturn("");
when(mockAttachment.getData()).thenReturn(new byte[0]);
when(mockAttachment.isValid()).thenReturn(true);
ErrorAttachmentLog mockEmptyAttachment = mock(ErrorAttachmentLog.class);
final int skipAttachmentLogsCount = 2;
List<ErrorAttachmentLog> errorAttachmentLogList = Arrays.asList(mockAttachment, mockAttachment, mockEmptyAttachment, null);
when(mockListener.getErrorAttachments(report)).thenReturn(errorAttachmentLogList);
LogSerializer logSerializer = mock(LogSerializer.class);
when(logSerializer.deserializeLog(anyString())).thenReturn(mErrorLog);
Crashes crashes = Crashes.getInstance();
crashes.setLogSerializer(logSerializer);
crashes.setInstanceListener(mockListener);
crashes.onStarted(mockContext, "", mockChannel);
/* Test. */
verify(mockListener).shouldProcess(report);
verify(mockListener).shouldAwaitUserConfirmation();
verify(mockListener).getErrorAttachments(report);
verify(mockChannel).enqueue(argThat(new ArgumentMatcher<Log>() {
@Override
public boolean matches(Object log) {
return log.equals(mErrorLog);
}
}), eq(crashes.getGroupName()));
verify(mockChannel, times(errorAttachmentLogList.size() - skipAttachmentLogsCount)).enqueue(mockAttachment, crashes.getGroupName());
}
Aggregations