Search in sources :

Example 1 with DateTimeTypedProperty

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());
}
Also used : DateTimeTypedProperty(com.microsoft.appcenter.ingestion.models.properties.DateTimeTypedProperty) Matchers.anyString(org.mockito.Matchers.anyString) Date(java.util.Date) Test(org.junit.Test) PrepareForTest(org.powermock.core.classloader.annotations.PrepareForTest)

Example 2 with DateTimeTypedProperty

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());
}
Also used : DoubleTypedProperty(com.microsoft.appcenter.ingestion.models.properties.DoubleTypedProperty) DateTimeTypedProperty(com.microsoft.appcenter.ingestion.models.properties.DateTimeTypedProperty) LongTypedProperty(com.microsoft.appcenter.ingestion.models.properties.LongTypedProperty) BooleanTypedProperty(com.microsoft.appcenter.ingestion.models.properties.BooleanTypedProperty) ArrayList(java.util.ArrayList) TestUtils.generateString(com.microsoft.appcenter.test.TestUtils.generateString) StringTypedProperty(com.microsoft.appcenter.ingestion.models.properties.StringTypedProperty) Date(java.util.Date) DoubleTypedProperty(com.microsoft.appcenter.ingestion.models.properties.DoubleTypedProperty) LongTypedProperty(com.microsoft.appcenter.ingestion.models.properties.LongTypedProperty) BooleanTypedProperty(com.microsoft.appcenter.ingestion.models.properties.BooleanTypedProperty) StringTypedProperty(com.microsoft.appcenter.ingestion.models.properties.StringTypedProperty) TypedProperty(com.microsoft.appcenter.ingestion.models.properties.TypedProperty) DateTimeTypedProperty(com.microsoft.appcenter.ingestion.models.properties.DateTimeTypedProperty) Test(org.junit.Test)

Example 3 with DateTimeTypedProperty

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);
}
Also used : DoubleTypedProperty(com.microsoft.appcenter.ingestion.models.properties.DoubleTypedProperty) StartSessionLog(com.microsoft.appcenter.analytics.ingestion.models.StartSessionLog) PageLog(com.microsoft.appcenter.analytics.ingestion.models.PageLog) EventLog(com.microsoft.appcenter.analytics.ingestion.models.EventLog) Log(com.microsoft.appcenter.ingestion.models.Log) HashMap(java.util.HashMap) Device(com.microsoft.appcenter.ingestion.models.Device) PageLog(com.microsoft.appcenter.analytics.ingestion.models.PageLog) EventLog(com.microsoft.appcenter.analytics.ingestion.models.EventLog) ArrayList(java.util.ArrayList) PageLogFactory(com.microsoft.appcenter.analytics.ingestion.models.json.PageLogFactory) DefaultLogSerializer(com.microsoft.appcenter.ingestion.models.json.DefaultLogSerializer) LogSerializer(com.microsoft.appcenter.ingestion.models.json.LogSerializer) Date(java.util.Date) DateTimeTypedProperty(com.microsoft.appcenter.ingestion.models.properties.DateTimeTypedProperty) LongTypedProperty(com.microsoft.appcenter.ingestion.models.properties.LongTypedProperty) StartSessionLogFactory(com.microsoft.appcenter.analytics.ingestion.models.json.StartSessionLogFactory) StartSessionLog(com.microsoft.appcenter.analytics.ingestion.models.StartSessionLog) BooleanTypedProperty(com.microsoft.appcenter.ingestion.models.properties.BooleanTypedProperty) ArrayList(java.util.ArrayList) List(java.util.List) LogContainer(com.microsoft.appcenter.ingestion.models.LogContainer) StringTypedProperty(com.microsoft.appcenter.ingestion.models.properties.StringTypedProperty) UUID(java.util.UUID) EventLogFactory(com.microsoft.appcenter.analytics.ingestion.models.json.EventLogFactory) DefaultLogSerializer(com.microsoft.appcenter.ingestion.models.json.DefaultLogSerializer) Test(org.junit.Test)

Example 4 with DateTimeTypedProperty

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;
}
Also used : DateTimeTypedProperty(com.microsoft.appcenter.ingestion.models.properties.DateTimeTypedProperty)

Example 5 with DateTimeTypedProperty

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;
}
Also used : DateTimeTypedProperty(com.microsoft.appcenter.ingestion.models.properties.DateTimeTypedProperty) DoubleTypedProperty(com.microsoft.appcenter.ingestion.models.properties.DoubleTypedProperty) LongTypedProperty(com.microsoft.appcenter.ingestion.models.properties.LongTypedProperty) BooleanTypedProperty(com.microsoft.appcenter.ingestion.models.properties.BooleanTypedProperty) StringTypedProperty(com.microsoft.appcenter.ingestion.models.properties.StringTypedProperty) DoubleTypedProperty(com.microsoft.appcenter.ingestion.models.properties.DoubleTypedProperty) LongTypedProperty(com.microsoft.appcenter.ingestion.models.properties.LongTypedProperty) BooleanTypedProperty(com.microsoft.appcenter.ingestion.models.properties.BooleanTypedProperty) StringTypedProperty(com.microsoft.appcenter.ingestion.models.properties.StringTypedProperty) TypedProperty(com.microsoft.appcenter.ingestion.models.properties.TypedProperty) DateTimeTypedProperty(com.microsoft.appcenter.ingestion.models.properties.DateTimeTypedProperty)

Aggregations

DateTimeTypedProperty (com.microsoft.appcenter.ingestion.models.properties.DateTimeTypedProperty)9 BooleanTypedProperty (com.microsoft.appcenter.ingestion.models.properties.BooleanTypedProperty)6 DoubleTypedProperty (com.microsoft.appcenter.ingestion.models.properties.DoubleTypedProperty)6 LongTypedProperty (com.microsoft.appcenter.ingestion.models.properties.LongTypedProperty)6 StringTypedProperty (com.microsoft.appcenter.ingestion.models.properties.StringTypedProperty)6 Date (java.util.Date)5 Test (org.junit.Test)5 TypedProperty (com.microsoft.appcenter.ingestion.models.properties.TypedProperty)3 ArrayList (java.util.ArrayList)3 EventLog (com.microsoft.appcenter.analytics.ingestion.models.EventLog)2 JSONObject (org.json.JSONObject)2 Context (android.content.Context)1 PageLog (com.microsoft.appcenter.analytics.ingestion.models.PageLog)1 StartSessionLog (com.microsoft.appcenter.analytics.ingestion.models.StartSessionLog)1 EventLogFactory (com.microsoft.appcenter.analytics.ingestion.models.json.EventLogFactory)1 PageLogFactory (com.microsoft.appcenter.analytics.ingestion.models.json.PageLogFactory)1 StartSessionLogFactory (com.microsoft.appcenter.analytics.ingestion.models.json.StartSessionLogFactory)1 CommonSchemaEventLog (com.microsoft.appcenter.analytics.ingestion.models.one.CommonSchemaEventLog)1 Channel (com.microsoft.appcenter.channel.Channel)1 Device (com.microsoft.appcenter.ingestion.models.Device)1