use of com.microsoft.appcenter.ingestion.models.Log in project mobile-center-sdk-android by Microsoft.
the class PartAUtilsTest method checkPartAConversion.
/**
* Convert to Part A and check.
*/
private void checkPartAConversion(int appCenterTimeZoneOffset, String commonSchemaTimeZoneOffset) {
Device device = getDevice(appCenterTimeZoneOffset);
/* App Center timestamp and transmission targets. */
Date timestamp = new Date();
String transmissionTarget = "T1UUID1-T2UUID2";
Log log = mock(Log.class);
when(log.getDevice()).thenReturn(device);
when(log.getTimestamp()).thenReturn(timestamp);
when(log.getUserId()).thenReturn("alice");
/* Convert. */
MockCommonSchemaLog commonSchemaLog = new MockCommonSchemaLog();
PartAUtils.addPartAFromLog(log, commonSchemaLog, transmissionTarget);
/* Verify conversion. */
assertEquals("3.0", commonSchemaLog.getVer());
assertEquals(timestamp, commonSchemaLog.getTimestamp());
assertEquals("o:T1UUID1", commonSchemaLog.getIKey());
assertNotNull(commonSchemaLog.getExt());
assertNotNull(commonSchemaLog.getExt().getProtocol());
assertEquals("model", commonSchemaLog.getExt().getProtocol().getDevModel());
assertEquals("oemName", commonSchemaLog.getExt().getProtocol().getDevMake());
assertNotNull(commonSchemaLog.getExt().getUser());
assertEquals("c:alice", commonSchemaLog.getExt().getUser().getLocalId());
assertEquals("en-US", commonSchemaLog.getExt().getUser().getLocale());
assertNotNull(commonSchemaLog.getExt().getOs());
assertEquals("osName", commonSchemaLog.getExt().getOs().getName());
assertEquals("8.1.0-ABC.123-23", commonSchemaLog.getExt().getOs().getVer());
assertNotNull(commonSchemaLog.getExt().getApp());
assertEquals("1.0.0", commonSchemaLog.getExt().getApp().getVer());
assertEquals("a:com.appcenter.test", commonSchemaLog.getExt().getApp().getId());
assertNotNull(commonSchemaLog.getExt().getNet());
assertEquals("carrierName", commonSchemaLog.getExt().getNet().getProvider());
assertNotNull(commonSchemaLog.getExt().getSdk());
assertEquals("appcenter.android-1.5.0", commonSchemaLog.getExt().getSdk().getLibVer());
assertNotNull(commonSchemaLog.getExt().getLoc());
assertEquals(commonSchemaTimeZoneOffset, commonSchemaLog.getExt().getLoc().getTz());
assertEquals(Collections.singleton(transmissionTarget), commonSchemaLog.getTransmissionTargetTokens());
assertNotNull(commonSchemaLog.getExt().getDevice());
}
use of com.microsoft.appcenter.ingestion.models.Log in project mobile-center-sdk-android by Microsoft.
the class PartAUtilsTest method checkPartAConversionDoesNotInstantiateExtensionObjectAgain.
@Test
public void checkPartAConversionDoesNotInstantiateExtensionObjectAgain() {
Log log = mock(Log.class);
when(log.getDevice()).thenReturn(getDevice(0));
MockCommonSchemaLog commonSchemaLog = new MockCommonSchemaLog();
Extensions extensions = new Extensions();
commonSchemaLog.setExt(extensions);
PartAUtils.addPartAFromLog(log, commonSchemaLog, "T1UUID1-T2UUID2");
assertEquals(extensions, commonSchemaLog.getExt());
}
use of com.microsoft.appcenter.ingestion.models.Log in project mobile-center-sdk-android by Microsoft.
the class CrashesTest method trackExceptionForWrapperSdk.
@Test
public void trackExceptionForWrapperSdk() {
StackFrame frame = new StackFrame();
frame.setClassName("1");
frame.setFileName("2");
frame.setLineNumber(3);
frame.setMethodName("4");
final com.microsoft.appcenter.crashes.ingestion.models.Exception exception = new com.microsoft.appcenter.crashes.ingestion.models.Exception();
exception.setType("5");
exception.setMessage("6");
exception.setFrames(singletonList(frame));
Crashes crashes = Crashes.getInstance();
Channel mockChannel = mock(Channel.class);
WrapperSdkExceptionManager.trackException(exception);
verify(mockChannel, never()).enqueue(any(Log.class), eq(crashes.getGroupName()));
crashes.onStarting(mAppCenterHandler);
crashes.onStarted(mock(Context.class), "", mockChannel);
WrapperSdkExceptionManager.trackException(exception);
verify(mockChannel).enqueue(argThat(new ArgumentMatcher<Log>() {
@Override
public boolean matches(Object item) {
return item instanceof HandledErrorLog && exception.equals(((HandledErrorLog) item).getException());
}
}), eq(crashes.getGroupName()));
reset(mockChannel);
WrapperSdkExceptionManager.trackException(exception, new HashMap<String, String>() {
{
put(null, null);
put("", null);
put(generateString(ErrorLogHelper.MAX_PROPERTY_ITEM_LENGTH + 1, '*'), null);
put("1", null);
}
});
verify(mockChannel).enqueue(argThat(new ArgumentMatcher<Log>() {
@Override
public boolean matches(Object item) {
return item instanceof HandledErrorLog && exception.equals(((HandledErrorLog) item).getException()) && ((HandledErrorLog) item).getProperties().size() == 0;
}
}), eq(crashes.getGroupName()));
reset(mockChannel);
WrapperSdkExceptionManager.trackException(exception, new HashMap<String, String>() {
{
for (int i = 0; i < 10; i++) {
put("valid" + i, "valid");
}
}
});
verify(mockChannel).enqueue(argThat(new ArgumentMatcher<Log>() {
@Override
public boolean matches(Object item) {
return item instanceof HandledErrorLog && exception.equals(((HandledErrorLog) item).getException()) && ((HandledErrorLog) item).getProperties().size() == 5;
}
}), eq(crashes.getGroupName()));
reset(mockChannel);
final String longerMapItem = generateString(ErrorLogHelper.MAX_PROPERTY_ITEM_LENGTH + 1, '*');
WrapperSdkExceptionManager.trackException(exception, new HashMap<String, String>() {
{
put(longerMapItem, longerMapItem);
}
});
verify(mockChannel).enqueue(argThat(new ArgumentMatcher<Log>() {
@Override
public boolean matches(Object item) {
if (item instanceof HandledErrorLog) {
HandledErrorLog errorLog = (HandledErrorLog) item;
if (exception.equals((errorLog.getException()))) {
if (errorLog.getProperties().size() == 1) {
Map.Entry<String, String> entry = errorLog.getProperties().entrySet().iterator().next();
String truncatedMapItem = generateString(ErrorLogHelper.MAX_PROPERTY_ITEM_LENGTH, '*');
return entry.getKey().length() == ErrorLogHelper.MAX_PROPERTY_ITEM_LENGTH && entry.getValue().length() == ErrorLogHelper.MAX_PROPERTY_ITEM_LENGTH;
}
}
}
return false;
}
}), eq(crashes.getGroupName()));
}
use of com.microsoft.appcenter.ingestion.models.Log in project mobile-center-sdk-android by Microsoft.
the class DatabasePersistenceAndroidTest method putLogException.
@Test(expected = PersistenceException.class)
public void putLogException() throws PersistenceException, IOException, JSONException {
/* Initialize database persistence. */
DatabasePersistence persistence = new DatabasePersistence("test-persistence", "putLogException", 1);
/* Set a mock log serializer. */
LogSerializer logSerializer = mock(LogSerializer.class);
doThrow(new JSONException("JSON exception")).when(logSerializer).serializeLog(any(Log.class));
persistence.setLogSerializer(logSerializer);
try {
/* Generate a log and persist. */
Log log = AndroidTestUtils.generateMockLog();
persistence.putLog("test-p1", log);
} finally {
/* Close. */
// noinspection ThrowFromFinallyBlock
persistence.close();
}
}
use of com.microsoft.appcenter.ingestion.models.Log 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();
}
}
Aggregations