use of com.microsoft.appcenter.ingestion.models.Log in project mobile-center-sdk-android by Microsoft.
the class IngestionHttpTest method failedSerialization.
@Test
public void failedSerialization() throws Exception {
/* Build some payload. */
LogContainer container = new LogContainer();
Log log = mock(Log.class);
List<Log> logs = new ArrayList<>();
logs.add(log);
container.setLogs(logs);
LogSerializer serializer = mock(LogSerializer.class);
JSONException exception = new JSONException("mock");
when(serializer.serializeContainer(any(LogContainer.class))).thenThrow(exception);
/* Configure mock HTTP. */
HttpClientNetworkStateHandler httpClient = mock(HttpClientNetworkStateHandler.class);
whenNew(HttpClientNetworkStateHandler.class).withAnyArguments().thenReturn(httpClient);
final ServiceCall call = mock(ServiceCall.class);
final AtomicReference<HttpClient.CallTemplate> callTemplate = new AtomicReference<>();
when(httpClient.callAsync(anyString(), anyString(), anyMapOf(String.class, String.class), any(HttpClient.CallTemplate.class), any(ServiceCallback.class))).then(new Answer<ServiceCall>() {
@Override
public ServiceCall answer(InvocationOnMock invocation) throws Throwable {
callTemplate.set((HttpClient.CallTemplate) invocation.getArguments()[3]);
return call;
}
});
/* Test calling code. */
IngestionHttp ingestionHttp = new IngestionHttp(mock(Context.class), serializer);
ingestionHttp.setLogUrl("http://mock");
String appSecret = UUIDUtils.randomUUID().toString();
UUID installId = UUIDUtils.randomUUID();
ServiceCallback serviceCallback = mock(ServiceCallback.class);
assertEquals(call, ingestionHttp.sendAsync(appSecret, installId, container, serviceCallback));
/* Verify call to http client. */
HashMap<String, String> expectedHeaders = new HashMap<>();
expectedHeaders.put(IngestionHttp.APP_SECRET, appSecret);
expectedHeaders.put(IngestionHttp.INSTALL_ID, installId.toString());
verify(httpClient).callAsync(eq("http://mock/logs?api-version=1.0.0"), eq(METHOD_POST), eq(expectedHeaders), notNull(HttpClient.CallTemplate.class), eq(serviceCallback));
assertNotNull(callTemplate.get());
try {
callTemplate.get().buildRequestBody();
Assert.fail("Expected json exception");
} catch (JSONException ignored) {
}
/* Verify close. */
ingestionHttp.close();
verify(httpClient).close();
}
use of com.microsoft.appcenter.ingestion.models.Log in project mobile-center-sdk-android by Microsoft.
the class DatabasePersistenceTest method databaseOperationException.
@Test
public void databaseOperationException() throws Persistence.PersistenceException, IOException, JSONException {
/* Mock instances. */
mockStatic(AppCenterLog.class);
LogSerializer mockSerializer = mock(DefaultLogSerializer.class);
when(mockSerializer.serializeLog(any(Log.class))).thenReturn("{}");
DatabasePersistence mockPersistence = spy(new DatabasePersistence("test-persistence", "operation.exception", 1));
doReturn(mockSerializer).when(mockPersistence).getLogSerializer();
try {
/* Generate a log and persist. */
Log log = mock(Log.class);
mockPersistence.putLog("test-p1", log);
} finally {
/* Close. */
// noinspection ThrowFromFinallyBlock
mockPersistence.close();
}
verifyStatic();
AppCenterLog.error(eq(AppCenter.LOG_TAG), anyString(), any(RuntimeException.class));
}
use of com.microsoft.appcenter.ingestion.models.Log in project AppCenter-SDK-Android by Microsoft.
the class AndroidTestUtils method generateMockLogContainer.
@NonNull
public static LogContainer generateMockLogContainer() {
LogContainer container = new LogContainer();
List<Log> logs = new ArrayList<>();
logs.add(generateMockLog());
container.setLogs(logs);
return container;
}
use of com.microsoft.appcenter.ingestion.models.Log in project AppCenter-SDK-Android by Microsoft.
the class LogSerializerAndroidTest method customPropertiesLog.
@Test
public void customPropertiesLog() throws JSONException {
CustomPropertiesLog log = new CustomPropertiesLog();
Map<String, Object> properties = new HashMap<>();
properties.put("t1", "test");
properties.put("t2", new Date(0));
properties.put("t3", 0);
properties.put("t4", false);
properties.put("t5", null);
log.setProperties(properties);
UUID sid = UUIDUtils.randomUUID();
log.setSid(sid);
log.setTimestamp(new Date());
/* Verify serialize and deserialize. */
LogSerializer serializer = new DefaultLogSerializer();
serializer.addLogFactory(CustomPropertiesLog.TYPE, new CustomPropertiesLogFactory());
String payload = serializer.serializeLog(log);
Log actualContainer = serializer.deserializeLog(payload);
Assert.assertEquals(log, actualContainer);
}
use of com.microsoft.appcenter.ingestion.models.Log in project AppCenter-SDK-Android by Microsoft.
the class LogSerializerAndroidTest method startServiceLog.
@Test
public void startServiceLog() throws JSONException {
StartServiceLog log = new StartServiceLog();
List<String> services = new ArrayList<>();
services.add("FIRST");
services.add("SECOND");
log.setServices(services);
UUID sid = UUIDUtils.randomUUID();
log.setSid(sid);
log.setTimestamp(new Date());
/* Verify serialize and deserialize. */
LogSerializer serializer = new DefaultLogSerializer();
serializer.addLogFactory(StartServiceLog.TYPE, new StartServiceLogFactory());
String payload = serializer.serializeLog(log);
Log actualContainer = serializer.deserializeLog(payload);
Assert.assertEquals(log, actualContainer);
}
Aggregations