use of com.microsoft.azure.mobile.ingestion.models.Log in project mobile-center-sdk-android by Microsoft.
the class DatabasePersistenceAndroidTest method getAllLogs.
private void getAllLogs(DatabasePersistence persistence, int numberOfLogs, int sizeForGetLogs) {
List<Log> outputLogs = new ArrayList<>();
int expected = 0;
do {
numberOfLogs -= expected;
persistence.getLogs("test", sizeForGetLogs, outputLogs);
expected = Math.min(Math.max(numberOfLogs, 0), sizeForGetLogs);
assertEquals(expected, outputLogs.size());
outputLogs.clear();
} while (numberOfLogs > 0);
/* Get should be 0 now. */
persistence.getLogs("test", sizeForGetLogs, outputLogs);
assertEquals(0, outputLogs.size());
}
use of com.microsoft.azure.mobile.ingestion.models.Log in project mobile-center-sdk-android by Microsoft.
the class DatabasePersistenceAndroidTest method putTooManyLogs.
@Test
public void putTooManyLogs() throws PersistenceException, IOException {
/* Initialize database persistence. */
DatabasePersistence persistence = new DatabasePersistence("test-persistence", "putTooManyLogs", 1, 2);
/* Set a mock log serializer. */
LogSerializer logSerializer = new DefaultLogSerializer();
logSerializer.addLogFactory(MOCK_LOG_TYPE, new MockLogFactory());
persistence.setLogSerializer(logSerializer);
try {
/* Generate too many logs 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-p1", log3);
persistence.putLog("test-p1", log4);
/* Get logs from persistence. */
List<Log> outputLogs = new ArrayList<>();
persistence.getLogs("test-p1", 4, outputLogs);
assertEquals(2, outputLogs.size());
assertEquals(log3, outputLogs.get(0));
assertEquals(log4, outputLogs.get(1));
assertEquals(2, persistence.countLogs("test-p1"));
} finally {
/* Close. */
//noinspection ThrowFromFinallyBlock
persistence.close();
}
}
use of com.microsoft.azure.mobile.ingestion.models.Log in project mobile-center-sdk-android by Microsoft.
the class DatabasePersistenceAndroidTest method getLogs.
@Test
public void getLogs() throws PersistenceException, IOException {
/* Initialize database persistence. */
DatabasePersistence persistence = new DatabasePersistence("test-persistence", "getLogs", 1);
/* Set a mock log serializer. */
LogSerializer logSerializer = new DefaultLogSerializer();
logSerializer.addLogFactory(MOCK_LOG_TYPE, new MockLogFactory());
persistence.setLogSerializer(logSerializer);
try {
/* Test constants. */
int numberOfLogs = 10;
int sizeForGetLogs = 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. */
getAllLogs(persistence, numberOfLogs, sizeForGetLogs);
/* Clear ids, we should be able to get the logs again in the same sequence. */
persistence.clearPendingLogState();
getAllLogs(persistence, numberOfLogs, sizeForGetLogs);
/* Count. */
assertEquals(10, persistence.countLogs("test"));
/* Clear. Nothing to get after. */
persistence.mDatabaseStorage.clear();
List<Log> outputLogs = new ArrayList<>();
assertNull(persistence.getLogs("test", sizeForGetLogs, outputLogs));
assertTrue(outputLogs.isEmpty());
assertEquals(0, persistence.countLogs("test"));
} finally {
/* Close. */
//noinspection ThrowFromFinallyBlock
persistence.close();
}
}
use of com.microsoft.azure.mobile.ingestion.models.Log in project mobile-center-sdk-android by Microsoft.
the class ChannelLogDecorateTest method checkLogAttributes.
@Test
public void checkLogAttributes() throws DeviceInfoHelper.DeviceInfoException {
mockStatic(DeviceInfoHelper.class);
Device device = mock(Device.class);
when(DeviceInfoHelper.getDeviceInfo(any(Context.class))).thenReturn(device);
mockStatic(IdHelper.class);
Channel channel = new DefaultChannel(mock(Context.class), UUID.randomUUID().toString(), mock(Persistence.class), mock(Ingestion.class));
channel.addGroup("", 0, 0, 0, null);
/* Test a log that should be decorated. */
for (int i = 0; i < 3; i++) {
Log log = mock(Log.class);
channel.enqueue(log, "");
verify(log).setDevice(device);
verify(log).setToffset(anyLong());
}
/* Check cache was used, meaning only 1 call to generate a device. */
verifyStatic();
DeviceInfoHelper.getDeviceInfo(any(Context.class));
/* Test a log that is already decorated. */
Log log2 = mock(Log.class);
when(log2.getDevice()).thenReturn(device);
when(log2.getToffset()).thenReturn(123L);
channel.enqueue(log2, "");
verify(log2, never()).setDevice(any(Device.class));
verify(log2, never()).setToffset(anyLong());
/* Simulate update to wrapper SDK. */
Device device2 = mock(Device.class);
when(DeviceInfoHelper.getDeviceInfo(any(Context.class))).thenReturn(device2);
channel.invalidateDeviceCache();
/* Generate some logs to verify device properties have been updated. */
for (int i = 0; i < 3; i++) {
Log log3 = mock(Log.class);
channel.enqueue(log3, "");
verify(log3).setDevice(device2);
verify(log3).setToffset(anyLong());
}
/* Check only 1 device has been generated after cache invalidate. */
verifyStatic(times(2));
DeviceInfoHelper.getDeviceInfo(any(Context.class));
}
Aggregations