For #10652: Fix validateBaselinePing test (#11254)

* Stop ignoring validateBaselinePing test

* Remove spacing between package and imports

* Add functionality to decompress gzipped ping body
fennec/production
Beatriz Rizental 4 years ago committed by GitHub
parent d2e5f201e8
commit 41a7d6e058
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -20,11 +20,11 @@ import mozilla.components.service.glean.Glean
import mozilla.components.service.glean.config.Configuration import mozilla.components.service.glean.config.Configuration
import mozilla.components.service.glean.net.ConceptFetchHttpUploader import mozilla.components.service.glean.net.ConceptFetchHttpUploader
import mozilla.components.service.glean.testing.GleanTestLocalServer import mozilla.components.service.glean.testing.GleanTestLocalServer
import okhttp3.mockwebserver.RecordedRequest
import org.json.JSONObject import org.json.JSONObject
import org.junit.Assert.assertTrue import org.junit.Assert.assertTrue
import org.junit.Assert.assertFalse import org.junit.Assert.assertFalse
import org.junit.BeforeClass import org.junit.BeforeClass
import org.junit.Ignore
import org.junit.Rule import org.junit.Rule
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith import org.junit.runner.RunWith
@ -33,6 +33,35 @@ import org.mozilla.fenix.R
import org.mozilla.fenix.helpers.HomeActivityTestRule import org.mozilla.fenix.helpers.HomeActivityTestRule
import org.mozilla.fenix.helpers.MockWebServerHelper import org.mozilla.fenix.helpers.MockWebServerHelper
import java.util.concurrent.TimeUnit import java.util.concurrent.TimeUnit
import java.io.BufferedReader
import java.io.ByteArrayInputStream
import java.util.zip.GZIPInputStream
/**
* Decompress the GZIP returned by the glean-core layer.
*
* @param data the gzipped [ByteArray] to decompress
* @return a [String] containing the uncompressed data.
*/
fun decompressGZIP(data: ByteArray): String {
return GZIPInputStream(ByteArrayInputStream(data)).bufferedReader().use(BufferedReader::readText)
}
/**
* Convenience method to get the body of a request as a String.
* The UTF8 representation of the request body will be returned.
* If the request body is gzipped, it will be decompressed first.
*
* @return a [String] containing the body of the request.
*/
fun RecordedRequest.getPlainBody(): String {
return if (this.getHeader("Content-Encoding") == "gzip") {
val bodyInBytes = this.body.readByteArray()
decompressGZIP(bodyInBytes)
} else {
this.body.readUtf8()
}
}
@RunWith(AndroidJUnit4::class) @RunWith(AndroidJUnit4::class)
class BaselinePingTest { class BaselinePingTest {
@ -81,10 +110,10 @@ class BaselinePingTest {
var attempts = 0 var attempts = 0
do { do {
attempts += 1 attempts += 1
val request = server.takeRequest(20L, TimeUnit.SECONDS) val request = server.takeRequest(20L, TimeUnit.SECONDS) ?: break
val docType = request.path.split("/")[3] val docType = request.path.split("/")[3]
if (pingName == docType) { if (pingName == docType) {
val parsedPayload = JSONObject(request.body.readUtf8()) val parsedPayload = JSONObject(request.getPlainBody())
if (pingReason == null) { if (pingReason == null) {
return parsedPayload return parsedPayload
} }
@ -100,7 +129,6 @@ class BaselinePingTest {
return null return null
} }
@Ignore("Currently failing on firebase: https://github.com/mozilla-mobile/fenix/issues/10652")
@Test @Test
fun validateBaselinePing() { fun validateBaselinePing() {
// Wait for the app to be idle/ready. // Wait for the app to be idle/ready.

Loading…
Cancel
Save