use of com.microsoft.appcenter.ingestion.models.Log in project mobile-center-sdk-android by Microsoft.
the class AnalyticsTest method testTrackPage.
@Test
public void testTrackPage() {
Analytics analytics = Analytics.getInstance();
Channel channel = mock(Channel.class);
analytics.onStarting(mAppCenterHandler);
analytics.onStarted(mock(Context.class), "", channel);
Analytics.trackPage(null, null);
verify(channel, never()).enqueue(any(Log.class), anyString());
reset(channel);
Analytics.trackPage("", null);
verify(channel, never()).enqueue(any(Log.class), anyString());
reset(channel);
Analytics.trackPage(" ", null);
verify(channel, times(1)).enqueue(any(Log.class), anyString());
reset(channel);
final String maxName = generateString(Analytics.MAX_NAME_LENGTH, '*');
Analytics.trackPage(maxName + "*", null);
verify(channel, times(1)).enqueue(argThat(new ArgumentMatcher<Log>() {
@Override
public boolean matches(Object item) {
if (item instanceof PageLog) {
PageLog pageLog = (PageLog) item;
return pageLog.getName().equals(maxName) && pageLog.getProperties() == null;
}
return false;
}
}), anyString());
reset(channel);
Analytics.trackPage(maxName, null);
verify(channel, times(1)).enqueue(any(Log.class), anyString());
reset(channel);
Analytics.trackPage("pageName", new HashMap<String, String>() {
{
put(null, null);
put("", null);
put(generateString(Analytics.MAX_PROPERTY_ITEM_LENGTH + 1, '*'), null);
put("1", null);
}
});
verify(channel, times(1)).enqueue(argThat(new ArgumentMatcher<Log>() {
@Override
public boolean matches(Object item) {
if (item instanceof PageLog) {
PageLog pageLog = (PageLog) item;
return pageLog.getProperties().size() == 0;
}
return false;
}
}), anyString());
reset(channel);
final String validMapItem = "valid";
Analytics.trackPage("pageName", new HashMap<String, String>() {
{
for (int i = 0; i < 10; i++) {
put(validMapItem + i, validMapItem);
}
}
});
verify(channel, times(1)).enqueue(argThat(new ArgumentMatcher<Log>() {
@Override
public boolean matches(Object item) {
if (item instanceof PageLog) {
PageLog pageLog = (PageLog) item;
return pageLog.getProperties().size() == 5;
}
return false;
}
}), anyString());
reset(channel);
final String longerMapItem = generateString(Analytics.MAX_PROPERTY_ITEM_LENGTH + 1, '*');
Analytics.trackPage("pageName", new HashMap<String, String>() {
{
put(longerMapItem, longerMapItem);
}
});
verify(channel, times(1)).enqueue(argThat(new ArgumentMatcher<Log>() {
@Override
public boolean matches(Object item) {
if (item instanceof PageLog) {
PageLog pageLog = (PageLog) item;
if (pageLog.getProperties().size() == 1) {
Map.Entry<String, String> entry = pageLog.getProperties().entrySet().iterator().next();
String truncatedMapItem = generateString(Analytics.MAX_PROPERTY_ITEM_LENGTH, '*');
return entry.getKey().length() == Analytics.MAX_PROPERTY_ITEM_LENGTH && entry.getValue().length() == Analytics.MAX_PROPERTY_ITEM_LENGTH;
}
}
return false;
}
}), anyString());
}
use of com.microsoft.appcenter.ingestion.models.Log in project mobile-center-sdk-android by Microsoft.
the class AnalyticsTest method testTrackEvent.
@Test
public void testTrackEvent() {
Analytics analytics = Analytics.getInstance();
Channel channel = mock(Channel.class);
analytics.onStarting(mAppCenterHandler);
analytics.onStarted(mock(Context.class), "", channel);
Analytics.trackEvent(null, null);
verify(channel, never()).enqueue(any(Log.class), anyString());
reset(channel);
Analytics.trackEvent("", null);
verify(channel, never()).enqueue(any(Log.class), anyString());
reset(channel);
Analytics.trackEvent(" ", null);
verify(channel, times(1)).enqueue(any(Log.class), anyString());
reset(channel);
final String maxName = generateString(Analytics.MAX_NAME_LENGTH, '*');
Analytics.trackEvent(maxName + "*", null);
verify(channel, times(1)).enqueue(argThat(new ArgumentMatcher<Log>() {
@Override
public boolean matches(Object item) {
if (item instanceof EventLog) {
EventLog eventLog = (EventLog) item;
return eventLog.getName().equals(maxName) && eventLog.getProperties() == null;
}
return false;
}
}), anyString());
reset(channel);
Analytics.trackEvent(maxName, null);
verify(channel, times(1)).enqueue(any(Log.class), anyString());
reset(channel);
Analytics.trackEvent("eventName", new HashMap<String, String>() {
{
put(null, null);
put("", null);
put(generateString(Analytics.MAX_PROPERTY_ITEM_LENGTH + 1, '*'), null);
put("1", null);
}
});
verify(channel, times(1)).enqueue(argThat(new ArgumentMatcher<Log>() {
@Override
public boolean matches(Object item) {
if (item instanceof EventLog) {
EventLog eventLog = (EventLog) item;
return eventLog.getProperties().size() == 0;
}
return false;
}
}), anyString());
reset(channel);
final String validMapItem = "valid";
Analytics.trackEvent("eventName", new HashMap<String, String>() {
{
for (int i = 0; i < 10; i++) {
put(validMapItem + i, validMapItem);
}
}
});
verify(channel, times(1)).enqueue(argThat(new ArgumentMatcher<Log>() {
@Override
public boolean matches(Object item) {
if (item instanceof EventLog) {
EventLog eventLog = (EventLog) item;
return eventLog.getProperties().size() == 5;
}
return false;
}
}), anyString());
reset(channel);
final String longerMapItem = generateString(Analytics.MAX_PROPERTY_ITEM_LENGTH + 1, '*');
Analytics.trackEvent("eventName", new HashMap<String, String>() {
{
put(longerMapItem, longerMapItem);
}
});
verify(channel, times(1)).enqueue(argThat(new ArgumentMatcher<Log>() {
@Override
public boolean matches(Object item) {
if (item instanceof EventLog) {
EventLog eventLog = (EventLog) item;
if (eventLog.getProperties().size() == 1) {
Map.Entry<String, String> entry = eventLog.getProperties().entrySet().iterator().next();
String truncatedMapItem = generateString(Analytics.MAX_PROPERTY_ITEM_LENGTH, '*');
return entry.getKey().length() == Analytics.MAX_PROPERTY_ITEM_LENGTH && entry.getValue().length() == Analytics.MAX_PROPERTY_ITEM_LENGTH;
}
}
return false;
}
}), anyString());
}
use of com.microsoft.appcenter.ingestion.models.Log in project mobile-center-sdk-android by Microsoft.
the class PushSerializerTest method serialize.
@Test
public void serialize() throws JSONException {
LogContainer expectedContainer = new LogContainer();
List<Log> logs = new ArrayList<>();
{
PushInstallationLog log = new PushInstallationLog();
log.setTimestamp(new Date());
log.setPushToken("TEST");
logs.add(log);
}
expectedContainer.setLogs(logs);
UUID sid = UUIDUtils.randomUUID();
for (Log log : logs) {
log.setSid(sid);
}
LogSerializer serializer = new DefaultLogSerializer();
serializer.addLogFactory(PushInstallationLog.TYPE, new PushInstallationLogFactory());
String payload = serializer.serializeContainer(expectedContainer);
LogContainer actualContainer = serializer.deserializeContainer(payload);
Assert.assertEquals(expectedContainer, actualContainer);
}
use of com.microsoft.appcenter.ingestion.models.Log in project mobile-center-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 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();
}
}
Aggregations