use of com.microsoft.appcenter.ingestion.models.properties.DateTimeTypedProperty in project mobile-center-sdk-android by Microsoft.
the class EventPropertiesTest method setDate.
@Test
public void setDate() {
String key = "test";
EventProperties properties = new EventProperties();
assertEquals(0, properties.getProperties().size());
/* Null value. */
properties.set(key, (Date) null);
assertEquals(0, properties.getProperties().size());
verifyStatic(times(1));
AppCenterLog.error(eq(Analytics.LOG_TAG), anyString());
/* Normal value. */
Date normalValue = new Date(0);
properties.set(key, normalValue);
assertEquals(1, properties.getProperties().size());
DateTimeTypedProperty expected = new DateTimeTypedProperty();
expected.setName(key);
expected.setValue(normalValue);
assertEquals(expected, properties.getProperties().get(key));
verifyStatic(times(1));
AppCenterLog.error(eq(Analytics.LOG_TAG), anyString());
}
use of com.microsoft.appcenter.ingestion.models.properties.DateTimeTypedProperty in project mobile-center-sdk-android by Microsoft.
the class AnalyticsValidatorForEventLogTest method shouldFilterTooLongPropertyKeysOfAnyType.
@Test
public void shouldFilterTooLongPropertyKeysOfAnyType() {
/* Set event name. */
String validEventName = "eventName";
mEventLog.setName(validEventName);
/* Use a long key for every property type. */
String longKey = generateString(MAX_PROPERTY_ITEM_LENGTH + 1, '*');
StringTypedProperty originalStringProperty = new StringTypedProperty();
originalStringProperty.setName(longKey);
originalStringProperty.setValue("does not matter");
BooleanTypedProperty originalBoolProperty = new BooleanTypedProperty();
originalBoolProperty.setName(longKey);
originalBoolProperty.setValue(true);
DoubleTypedProperty originalDoubleProperty = new DoubleTypedProperty();
originalDoubleProperty.setName(longKey);
originalDoubleProperty.setValue(3.14);
LongTypedProperty originalLongProperty = new LongTypedProperty();
originalLongProperty.setName(longKey);
originalLongProperty.setValue(-123);
DateTimeTypedProperty originalDateProperty = new DateTimeTypedProperty();
originalDateProperty.setName(longKey);
originalDateProperty.setValue(new Date());
/* Submit property list to validation, should pass with truncate. */
List<TypedProperty> typedProperties = new ArrayList<>();
typedProperties.add(originalStringProperty);
typedProperties.add(originalBoolProperty);
typedProperties.add(originalDoubleProperty);
typedProperties.add(originalLongProperty);
typedProperties.add(originalDateProperty);
mEventLog.setTypedProperties(typedProperties);
assertFalse(mAnalyticsValidator.shouldFilter(mEventLog));
/* Check name and number of property not modified. */
assertEquals(validEventName, mEventLog.getName());
assertEquals(5, mEventLog.getTypedProperties().size());
/* Verify all property names truncated. */
for (TypedProperty property : mEventLog.getTypedProperties()) {
assertEquals(MAX_PROPERTY_ITEM_LENGTH, property.getName().length());
}
/* Check all property changes were made by copy. */
assertSame(longKey, originalStringProperty.getName());
assertSame(longKey, originalBoolProperty.getName());
assertSame(longKey, originalDoubleProperty.getName());
assertSame(longKey, originalLongProperty.getName());
assertSame(longKey, originalDateProperty.getName());
}
use of com.microsoft.appcenter.ingestion.models.properties.DateTimeTypedProperty in project mobile-center-sdk-android by Microsoft.
the class AnalyticsSerializerTest method someBatch.
@Test
public void someBatch() throws JSONException {
LogContainer expectedContainer = new LogContainer();
Device device = new Device();
device.setSdkName("appcenter.android");
device.setSdkVersion("1.2.3");
device.setModel("S5");
device.setOemName("HTC");
device.setOsName("Android");
device.setOsVersion("4.0.3");
device.setOsBuild("LMY47X");
device.setOsApiLevel(15);
device.setLocale("en_US");
device.setTimeZoneOffset(120);
device.setScreenSize("800x600");
device.setAppVersion("3.2.1");
device.setAppBuild("42");
List<Log> logs = new ArrayList<>();
{
StartSessionLog startSessionLog = new StartSessionLog();
startSessionLog.setTimestamp(new Date());
logs.add(startSessionLog);
}
expectedContainer.setLogs(logs);
{
PageLog pageLog = new PageLog();
pageLog.setTimestamp(new Date());
pageLog.setName("home");
logs.add(pageLog);
}
{
PageLog pageLog = new PageLog();
pageLog.setTimestamp(new Date());
pageLog.setName("settings");
pageLog.setProperties(new HashMap<String, String>() {
{
put("from", "home_menu");
put("orientation", "portrait");
}
});
logs.add(pageLog);
}
{
EventLog eventLog = new EventLog();
eventLog.setTimestamp(new Date());
eventLog.setId(UUID.randomUUID());
eventLog.setName("subscribe");
logs.add(eventLog);
}
{
EventLog eventLog = new EventLog();
eventLog.setTimestamp(new Date());
eventLog.setId(UUID.randomUUID());
eventLog.setName("click");
eventLog.setProperties(new HashMap<String, String>() {
{
put("x", "1");
put("y", "2");
}
});
logs.add(eventLog);
}
{
List<TypedProperty> properties = new ArrayList<>();
BooleanTypedProperty bp = new BooleanTypedProperty();
bp.setName("n1");
bp.setValue(true);
properties.add(bp);
DateTimeTypedProperty dtp = new DateTimeTypedProperty();
dtp.setName("n2");
dtp.setValue(new Date());
properties.add(dtp);
DoubleTypedProperty dp = new DoubleTypedProperty();
dp.setName("n3");
dp.setValue(10);
properties.add(dp);
LongTypedProperty lp = new LongTypedProperty();
lp.setName("n4");
lp.setValue(10000000000L);
properties.add(lp);
StringTypedProperty sp = new StringTypedProperty();
sp.setName("n5");
sp.setValue("value");
properties.add(sp);
EventLog eventLog = new EventLog();
eventLog.setTimestamp(new Date());
eventLog.setId(UUID.randomUUID());
eventLog.setName("event");
eventLog.setTypedProperties(properties);
logs.add(eventLog);
}
UUID sid = UUID.randomUUID();
for (Log log : logs) {
log.setSid(sid);
log.setDevice(device);
}
LogSerializer serializer = new DefaultLogSerializer();
serializer.addLogFactory(StartSessionLog.TYPE, new StartSessionLogFactory());
serializer.addLogFactory(PageLog.TYPE, new PageLogFactory());
serializer.addLogFactory(EventLog.TYPE, new EventLogFactory());
String payload = serializer.serializeContainer(expectedContainer);
android.util.Log.v(TAG, payload);
LogContainer actualContainer = serializer.deserializeContainer(payload, null);
Assert.assertEquals(expectedContainer, actualContainer);
}
use of com.microsoft.appcenter.ingestion.models.properties.DateTimeTypedProperty in project mobile-center-sdk-android by Microsoft.
the class EventProperties method set.
/**
* Set the specified property value with the specified key.
* If the properties previously contained a property for the key, the old
* value is replaced.
*
* @param key key with which the specified value is to be set.
* @param value value to be set with the specified key.
* @return this instance.
*/
public EventProperties set(String key, Date value) {
if (isValidKey(key) && isValidValue(value)) {
DateTimeTypedProperty property = new DateTimeTypedProperty();
property.setName(key);
property.setValue(value);
mProperties.put(key, property);
}
return this;
}
use of com.microsoft.appcenter.ingestion.models.properties.DateTimeTypedProperty in project mobile-center-sdk-android by Microsoft.
the class AnalyticsValidator method copyProperty.
private static TypedProperty copyProperty(TypedProperty property, String newKey) {
String type = property.getType();
TypedProperty copy;
if (BooleanTypedProperty.TYPE.equals(type)) {
BooleanTypedProperty typedCopy = new BooleanTypedProperty();
typedCopy.setValue(((BooleanTypedProperty) property).getValue());
copy = typedCopy;
} else if (DateTimeTypedProperty.TYPE.equals(type)) {
DateTimeTypedProperty typedCopy = new DateTimeTypedProperty();
typedCopy.setValue(((DateTimeTypedProperty) property).getValue());
copy = typedCopy;
} else if (DoubleTypedProperty.TYPE.equals(type)) {
DoubleTypedProperty typedCopy = new DoubleTypedProperty();
typedCopy.setValue(((DoubleTypedProperty) property).getValue());
copy = typedCopy;
} else if (LongTypedProperty.TYPE.equals(type)) {
LongTypedProperty typedCopy = new LongTypedProperty();
typedCopy.setValue(((LongTypedProperty) property).getValue());
copy = typedCopy;
} else {
/* SDK invariant: unknown property type is not possible with public APIs. */
StringTypedProperty typedCopy = new StringTypedProperty();
typedCopy.setValue(((StringTypedProperty) property).getValue());
copy = typedCopy;
}
copy.setName(newKey);
return copy;
}
Aggregations