Bug 1409860 - Move os to correct place in android sync ping r?Grisha draft
authorThom Chiovoloni <tchiovoloni@mozilla.com>
Thu, 19 Oct 2017 13:35:16 -0400
changeset 683432 acd84b8daf104fdd94c0757f1f9e4e558ce26546
parent 681761 34db1d5769c1b2c24ee6f50fcee59cd3dac038ab
child 736650 d8523359a87fc9dd5bdaf77fc0803b034c942e69
push id85379
push userbmo:tchiovoloni@mozilla.com
push dateThu, 19 Oct 2017 18:10:24 +0000
reviewersGrisha
bugs1409860
milestone58.0a1
Bug 1409860 - Move os to correct place in android sync ping r?Grisha MozReview-Commit-ID: DBn8MMVgKPM
mobile/android/base/java/org/mozilla/gecko/telemetry/pingbuilders/TelemetrySyncPingBundleBuilder.java
mobile/android/tests/background/junit4/src/org/mozilla/gecko/telemetry/pingbuilders/TelemetrySyncPingBundleBuilderTest.java
--- a/mobile/android/base/java/org/mozilla/gecko/telemetry/pingbuilders/TelemetrySyncPingBundleBuilder.java
+++ b/mobile/android/base/java/org/mozilla/gecko/telemetry/pingbuilders/TelemetrySyncPingBundleBuilder.java
@@ -90,18 +90,18 @@ public class TelemetrySyncPingBundleBuil
 
         // Limited environment object, to help identify platforms easier. See Bug 1374758.
         final ExtendedJSONObject os = new ExtendedJSONObject();
         os.put("name", "Android");
         os.put("version", Integer.toString(Build.VERSION.SDK_INT));
         os.put("locale", Locales.getLanguageTag(Locale.getDefault()));
 
         payload.put("application", application);
-        payload.put("os", os);
 
+        pingData.put("os", os);
         pingData.put("version", PING_SYNC_DATA_FORMAT_VERSION);
 
         payload.put("payload", pingData);
         return super.build();
     }
 
     @SuppressWarnings("unchecked")
     public TelemetrySyncPingBundleBuilder setSyncStore(TelemetryPingStore store) {
--- a/mobile/android/tests/background/junit4/src/org/mozilla/gecko/telemetry/pingbuilders/TelemetrySyncPingBundleBuilderTest.java
+++ b/mobile/android/tests/background/junit4/src/org/mozilla/gecko/telemetry/pingbuilders/TelemetrySyncPingBundleBuilderTest.java
@@ -121,34 +121,35 @@ public class TelemetrySyncPingBundleBuil
         assertTrue(application.containsKey("platformVersion"));
         assertTrue(application.containsKey("displayVersion"));
         assertTrue(application.containsKey("version"));
         assertTrue(application.containsKey("name"));
         assertTrue(application.containsKey("channel"));
         assertTrue(application.containsKey("buildId"));
         assertTrue(application.containsKey("xpcomAbi"));
 
+
+        // Test general shape of payload. Expecting {"syncs":[],"why":"schedule", "version": 1,
+        // "os": {"name": "Android", "version": "<version>", "locale": "<locale>"}}.
+        // NB that even though we set an empty sync event store, it's not in the json string.
+        // That's because sync events are not yet instrumented.
+        ExtendedJSONObject payload = outgoingPing.getPayload().getObject("payload");
+        assertEquals(4, payload.keySet().size());
+        assertEquals("schedule", payload.getString("why"));
+        assertEquals(Integer.valueOf(1), payload.getIntegerSafely("version"));
+        assertEquals(0, payload.getArray("syncs").size());
         // Test os key.
-        ExtendedJSONObject os = outgoingPing.getPayload().getObject("os");
+        ExtendedJSONObject os = payload.getObject("os");
         assertEquals(3, os.keySet().size());
         assertEquals("Android", os.getString("name"));
         // Going to be different depending on the test environment.
         // Test for presence and type to void random failures.
         assertTrue(os.getIntegerSafely("version") != null);
         // Likely "en-US" in tests, but let's test for presence and type to avoid random failures.
         assertTrue(os.getString("locale") != null);
-
-        // Test general shape of payload. Expecting {"syncs":[],"why":"schedule", "version": 1}.
-        // NB that even though we set an empty sync event store, it's not in the json string.
-        // That's because sync events are not yet instrumented.
-        ExtendedJSONObject payload = outgoingPing.getPayload().getObject("payload");
-        assertEquals(3, payload.keySet().size());
-        assertEquals("schedule", payload.getString("why"));
-        assertEquals(Integer.valueOf(1), payload.getIntegerSafely("version"));
-        assertEquals(0, payload.getArray("syncs").size());
     }
 
     @Test
     public void testBundlingOfMultiplePings() throws Exception {
         // Try just one ping first.
         syncPings.storePing(new TelemetrySyncPingBuilder()
                 .setDeviceID("test-device-id")
                 .setRestarted(true)