Bug 1409860 - Move os to correct place in android sync ping r?Grisha
MozReview-Commit-ID: DBn8MMVgKPM
--- 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)