diff options
Diffstat (limited to 'platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox')
2 files changed, 140 insertions, 37 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/module/telemetry/MapEventFactoryTest.java b/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/module/telemetry/MapEventFactoryTest.java index f5c9493e21..b028911d4d 100644 --- a/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/module/telemetry/MapEventFactoryTest.java +++ b/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/module/telemetry/MapEventFactoryTest.java @@ -1,8 +1,10 @@ package com.mapbox.mapboxsdk.module.telemetry; import android.os.Build; +import android.os.Bundle; import com.google.gson.Gson; +import com.google.gson.JsonObject; import com.mapbox.mapboxsdk.BuildConfig; import com.mapbox.mapboxsdk.constants.TelemetryConstants; import com.mapbox.mapboxsdk.offline.OfflineRegion; @@ -10,8 +12,15 @@ import com.mapbox.mapboxsdk.offline.OfflineRegion; import org.junit.Before; import org.junit.Test; +import java.util.ArrayList; +import java.util.List; +import java.util.Locale; + +import static com.mapbox.mapboxsdk.module.telemetry.PerformanceEvent.PerformanceAttribute; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; public class MapEventFactoryTest { private static final float FONT_SCALE = 1.f; @@ -29,9 +38,10 @@ public class MapEventFactoryTest { private static final Double MIN_ZOOM = 1.0; private static final Double MAX_ZOOM = 10.0; private static final String STYLE_URL = "style url"; - private static final long SIZE_OF_RESOURCES_COMPLETED = 100L; - private static final long NUMBER_OF_TILE_COMPLETED = 1000L; + private static final long SIZE_OF_RESOURCES_COMPLETED = 100; + private static final long NUMBER_OF_TILE_COMPLETED = 1000; private static final int STATE = OfflineRegion.STATE_ACTIVE; + private static final String SESSION_ID = "001"; private MapState mapState; private PhoneState phoneState; @@ -121,7 +131,7 @@ public class MapEventFactoryTest { assertEquals(STYLE_URL, offlineDownloadEndEvent.getStyleURL()); assertEquals(SIZE_OF_RESOURCES_COMPLETED, offlineDownloadEndEvent.getSizeOfResourcesCompleted()); assertEquals(NUMBER_OF_TILE_COMPLETED, offlineDownloadEndEvent.getNumberOfTilesCompleted()); - assertEquals(STATE, offlineDownloadEndEvent.getState()); + assertEquals(String.valueOf(STATE), offlineDownloadEndEvent.getState()); assertEquals(CREATED, offlineDownloadEndEvent.getCreated()); String json = gson.toJson(offlineDownloadEndEvent); OfflineDownloadEndEvent event = gson.fromJson(json, OfflineDownloadEndEvent.class); @@ -141,4 +151,44 @@ public class MapEventFactoryTest { OfflineDownloadStartEvent event = gson.fromJson(json, OfflineDownloadStartEvent.class); assertEquals(offlineDownloadStartEvent, event); } + + @Test + public void testPerformanceEvent() { + String nameAttribute = "nameAttribute"; + String valueAttribute = "100"; + String nameCounters = "nameCounters"; + Double valuesCounters = 1000.0; + JsonObject metaData = new JsonObject(); + metaData.addProperty("os", "android"); + metaData.addProperty("manufacturer", Build.MANUFACTURER); + metaData.addProperty("brand", Build.BRAND); + metaData.addProperty("device", Build.MODEL); + metaData.addProperty("version", Build.VERSION.RELEASE); + metaData.addProperty("abi", Build.CPU_ABI); + metaData.addProperty("country", Locale.getDefault().getISO3Country()); + metaData.addProperty("ram", "ram"); + metaData.addProperty("screenSize", "1000"); + + Bundle data = mock(Bundle.class); + ArrayList<PerformanceEvent.PerformanceAttribute<String>> attribtueList = new ArrayList<>(); + PerformanceAttribute<String> attribute = new PerformanceAttribute<>(nameAttribute, valueAttribute); + attribtueList.add(attribute); + ArrayList<PerformanceEvent.PerformanceAttribute<Double>> countersList = new ArrayList<>(); + PerformanceAttribute<Double> counter = new PerformanceAttribute<>(nameCounters, valuesCounters); + countersList.add(counter); + when(data.getString("attributes")).thenReturn(gson.toJson(attribtueList)); + when(data.getString("counters")).thenReturn(gson.toJson(countersList)); + when(data.getString("metadata")).thenReturn(metaData.toString()); + PerformanceEvent performanceEvent = MapEventFactory.buildPerformanceEvent(phoneState, + SESSION_ID, data); + assertEquals(CREATED, performanceEvent.getCreated()); + assertEquals(metaData.toString(), performanceEvent.getMetadata().toString()); + assertEquals(SESSION_ID, performanceEvent.getSessionId()); + List<PerformanceEvent.PerformanceAttribute<String>> attributeList = performanceEvent.getAttributes(); + assertEquals(1, attribtueList.size()); + assertEquals(attribute, attribtueList.get(0)); + List<PerformanceEvent.PerformanceAttribute<Double>> counterList = performanceEvent.getCounters(); + assertEquals(1, counterList.size()); + assertEquals(counter, counterList.get(0)); + } } diff --git a/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/module/telemetry/SchemaTest.java b/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/module/telemetry/SchemaTest.java index 8c4cb09aa3..24a343137a 100644 --- a/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/module/telemetry/SchemaTest.java +++ b/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/module/telemetry/SchemaTest.java @@ -31,6 +31,9 @@ public class SchemaTest { private static final String MAP_CLICK = "map.click"; private static final String MAP_DRAG = "map.dragend"; private static final String MAP_LOAD = "map.load"; + private static final String MAP_PERFORMANCE = "mobile.performance_trace"; + private static final String OFFLINE_DOWNLOAD_END = "map.offlineDownload.end"; + private static final String OFFLINE_DOWNLOAD_START = "map.offlineDownload.start"; private static ArrayList<JsonObject> schemaArray; @BeforeClass @@ -38,8 +41,31 @@ public class SchemaTest { unpackSchemas(); } + private static ByteArrayInputStream getFileBytes() throws IOException { + InputStream inputStream = SchemaTest.class.getClassLoader().getResourceAsStream("mobile-event-schemas.jsonl.gz"); + byte[] byteOut = IOUtils.toByteArray(inputStream); + + return new ByteArrayInputStream(byteOut); + } + + private static void unpackSchemas() throws IOException { + ByteArrayInputStream bais = getFileBytes(); + GZIPInputStream gzis = new GZIPInputStream(bais); + InputStreamReader reader = new InputStreamReader(gzis); + BufferedReader in = new BufferedReader(reader); + + schemaArray = new ArrayList<>(); + + Gson gson = new Gson(); + String readed; + while ((readed = in.readLine()) != null) { + JsonObject schema = gson.fromJson(readed, JsonObject.class); + schemaArray.add(schema); + } + } + @Test - public void checkMapClickEventSize() throws Exception { + public void checkMapClickEventSize() { JsonObject schema = grabSchema(MAP_CLICK); List<Field> fields = grabClassFields(MapClickEvent.class); @@ -47,7 +73,7 @@ public class SchemaTest { } @Test - public void checkMapClickEventFields() throws Exception { + public void checkMapClickEventFields() { JsonObject schema = grabSchema(MAP_CLICK); List<Field> fields = grabClassFields(MapClickEvent.class); @@ -55,7 +81,7 @@ public class SchemaTest { } @Test - public void checkMapDragEndEventSize() throws Exception { + public void checkMapDragEndEventSize() { JsonObject schema = grabSchema(MAP_DRAG); List<Field> fields = grabClassFields(MapDragendEvent.class); @@ -63,7 +89,7 @@ public class SchemaTest { } @Test - public void checkMapDragEndEventFields() throws Exception { + public void checkMapDragEndEventFields() { JsonObject schema = grabSchema(MAP_DRAG); List<Field> fields = grabClassFields(MapDragendEvent.class); @@ -71,22 +97,69 @@ public class SchemaTest { } @Test - public void checkMapLoadEventSize() throws Exception { + public void checkOfflineDownloadEndEventSize() { + JsonObject schema = grabSchema(OFFLINE_DOWNLOAD_END); + List<Field> fields = grabClassFields(OfflineDownloadEndEvent.class); + + assertEquals(schema.size(), fields.size()); + } + + @Test + public void checkOfflineDownloadEndEventFields() { + JsonObject schema = grabSchema(OFFLINE_DOWNLOAD_END); + List<Field> fields = grabClassFields(OfflineDownloadEndEvent.class); + + schemaContainsFields(schema, fields); + } + + @Test + public void checkOfflineDownloadStartEventSize() { + JsonObject schema = grabSchema(OFFLINE_DOWNLOAD_START); + List<Field> fields = grabClassFields(OfflineDownloadStartEvent.class); + + assertEquals(schema.size(), fields.size()); + } + + @Test + public void checkOfflineDownloadStartEventFields() { + JsonObject schema = grabSchema(OFFLINE_DOWNLOAD_START); + List<Field> fields = grabClassFields(OfflineDownloadStartEvent.class); + + schemaContainsFields(schema, fields); + } + + @Test + public void checkMapLoadEventSize() { JsonObject schema = grabSchema(MAP_LOAD); List<Field> fields = grabClassFields(MapLoadEvent.class); - //FIXME: this assertion is invalid: we should introduce a concept of mandatory/optional field to schema validation - //assertEquals(schema.size(), fields.size()); + assertEquals(schema.size(), fields.size()); } @Test - public void checkMapLoadEventFields() throws Exception { + public void checkMapLoadEventFields() { JsonObject schema = grabSchema(MAP_LOAD); List<Field> fields = grabClassFields(MapLoadEvent.class); schemaContainsFields(schema, fields); } + @Test + public void checkPerformanceEventSize() { + JsonObject schema = grabSchema(MAP_PERFORMANCE); + List<Field> fields = grabClassFields(PerformanceEvent.class); + + assertEquals(schema.size(), fields.size()); + } + + @Test + public void checkPerformanceEventFields() { + JsonObject schema = grabSchema(MAP_PERFORMANCE); + List<Field> fields = grabClassFields(PerformanceEvent.class); + + schemaContainsFields(schema, fields); + } + private void schemaContainsFields(JsonObject schema, List<Field> fields) { int distanceRemainingCount = 0; int durationRemainingCount = 0; @@ -139,14 +212,17 @@ public class SchemaTest { private void typesMatch(JsonObject schema, String type) { if (type.equalsIgnoreCase("int") || type.equalsIgnoreCase("integer") - || type.equalsIgnoreCase("double") || type.equalsIgnoreCase("float")) { + || type.equalsIgnoreCase("double") || type.equalsIgnoreCase("float") + || type.equalsIgnoreCase("long")) { type = "number"; } - if (type.contains("[]")) { + if (type.contains("[]") || type.equalsIgnoreCase("list")) { type = "array"; } - + if (type.equalsIgnoreCase("jsonobject")) { + type = "object"; + } Class<? extends JsonElement> typeClass = schema.get("type").getClass(); JsonElement jsonElement = new JsonParser().parse(type.toLowerCase()); @@ -159,29 +235,6 @@ public class SchemaTest { } } - private static ByteArrayInputStream getFileBytes() throws IOException { - InputStream inputStream = SchemaTest.class.getClassLoader().getResourceAsStream("mobile-event-schemas.jsonl.gz"); - byte[] byteOut = IOUtils.toByteArray(inputStream); - - return new ByteArrayInputStream(byteOut); - } - - private static void unpackSchemas() throws IOException { - ByteArrayInputStream bais = getFileBytes(); - GZIPInputStream gzis = new GZIPInputStream(bais); - InputStreamReader reader = new InputStreamReader(gzis); - BufferedReader in = new BufferedReader(reader); - - schemaArray = new ArrayList<>(); - - Gson gson = new Gson(); - String readed; - while ((readed = in.readLine()) != null) { - JsonObject schema = gson.fromJson(readed, JsonObject.class); - schemaArray.add(schema); - } - } - private JsonObject grabSchema(String eventName) { for (JsonObject thisSchema : schemaArray) { String name = thisSchema.get("name").getAsString(); |