Bug 1953191 - Update FOG and service-glean to changed Glean uploader r=chutten,TravisLong
Differential Revision: https://phabricator.services.mozilla.com/D241842
This commit is contained in:
@@ -11,8 +11,11 @@ import mozilla.components.concept.fetch.Header
|
||||
import mozilla.components.concept.fetch.Request
|
||||
import mozilla.components.concept.fetch.toMutableHeaders
|
||||
import mozilla.components.support.base.log.logger.Logger
|
||||
import mozilla.telemetry.glean.net.CapablePingUploadRequest
|
||||
import mozilla.telemetry.glean.net.HeadersList
|
||||
import mozilla.telemetry.glean.net.HttpStatus
|
||||
import mozilla.telemetry.glean.net.Incapable
|
||||
import mozilla.telemetry.glean.net.PingUploadRequest
|
||||
import mozilla.telemetry.glean.net.RecoverableFailure
|
||||
import mozilla.telemetry.glean.net.UploadResult
|
||||
import java.io.IOException
|
||||
@@ -64,8 +67,12 @@ class ConceptFetchHttpUploader(
|
||||
* or faced an unrecoverable error), false if there was a recoverable
|
||||
* error callers can deal with.
|
||||
*/
|
||||
override fun upload(url: String, data: ByteArray, headers: HeadersList): UploadResult {
|
||||
val request = buildRequest(url, data, headers)
|
||||
override fun upload(request: CapablePingUploadRequest): UploadResult {
|
||||
val req: PingUploadRequest? = request.capable({ capabilities: List<String> -> capabilities.size == 0 })
|
||||
if (req == null) {
|
||||
return Incapable(0)
|
||||
}
|
||||
val request = buildRequest(req)
|
||||
|
||||
return try {
|
||||
performUpload(client.value, request)
|
||||
@@ -76,15 +83,11 @@ class ConceptFetchHttpUploader(
|
||||
}
|
||||
|
||||
@VisibleForTesting(otherwise = PRIVATE)
|
||||
internal fun buildRequest(
|
||||
url: String,
|
||||
data: ByteArray,
|
||||
headers: HeadersList,
|
||||
): Request {
|
||||
val conceptHeaders = headers.map { (name, value) -> Header(name, value) }.toMutableHeaders()
|
||||
internal fun buildRequest(request: PingUploadRequest): Request {
|
||||
val conceptHeaders = request.headers.map { (name, value) -> Header(name, value) }.toMutableHeaders()
|
||||
|
||||
return Request(
|
||||
url = url,
|
||||
url = request.url,
|
||||
method = Request.Method.POST,
|
||||
connectTimeout = Pair(DEFAULT_CONNECTION_TIMEOUT, TimeUnit.MILLISECONDS),
|
||||
readTimeout = Pair(DEFAULT_READ_TIMEOUT, TimeUnit.MILLISECONDS),
|
||||
@@ -93,7 +96,7 @@ class ConceptFetchHttpUploader(
|
||||
// offer a better API to do that, so we nuke all cookies going to our telemetry
|
||||
// endpoint.
|
||||
cookiePolicy = Request.CookiePolicy.OMIT,
|
||||
body = Request.Body(data.inputStream()),
|
||||
body = Request.Body(request.data.inputStream()),
|
||||
private = usePrivateRequest,
|
||||
conservative = true,
|
||||
)
|
||||
|
||||
@@ -13,7 +13,9 @@ import mozilla.components.support.test.any
|
||||
import mozilla.components.support.test.argumentCaptor
|
||||
import mozilla.components.support.test.mock
|
||||
import mozilla.telemetry.glean.config.Configuration
|
||||
import mozilla.telemetry.glean.net.CapablePingUploadRequest
|
||||
import mozilla.telemetry.glean.net.HttpStatus
|
||||
import mozilla.telemetry.glean.net.PingUploadRequest
|
||||
import mozilla.telemetry.glean.net.RecoverableFailure
|
||||
import okhttp3.mockwebserver.Dispatcher
|
||||
import okhttp3.mockwebserver.MockResponse
|
||||
@@ -59,7 +61,8 @@ class ConceptFetchHttpUploaderTest {
|
||||
val uploader =
|
||||
spy<ConceptFetchHttpUploader>(ConceptFetchHttpUploader(lazy { HttpURLConnectionClient() }))
|
||||
|
||||
val request = uploader.buildRequest(testPath, testPing.toByteArray(), emptyMap())
|
||||
val uploadRequest = PingUploadRequest(url = testPath, data = testPing.toByteArray(), emptyMap(), emptyList())
|
||||
val request = uploader.buildRequest(uploadRequest)
|
||||
|
||||
assertEquals(
|
||||
Pair(ConceptFetchHttpUploader.DEFAULT_READ_TIMEOUT, TimeUnit.MILLISECONDS),
|
||||
@@ -85,7 +88,8 @@ class ConceptFetchHttpUploaderTest {
|
||||
)
|
||||
|
||||
val uploader = ConceptFetchHttpUploader(lazy { mockClient })
|
||||
uploader.upload(testPath, testPing.toByteArray(), expectedHeaders)
|
||||
val uploadRequest = CapablePingUploadRequest(PingUploadRequest(url = testPath, data = testPing.toByteArray(), expectedHeaders, emptyList()))
|
||||
uploader.upload(uploadRequest)
|
||||
val requestCaptor = argumentCaptor<Request>()
|
||||
verify(mockClient).fetch(requestCaptor.capture())
|
||||
|
||||
@@ -102,7 +106,8 @@ class ConceptFetchHttpUploaderTest {
|
||||
val uploader =
|
||||
spy<ConceptFetchHttpUploader>(ConceptFetchHttpUploader(lazy { HttpURLConnectionClient() }))
|
||||
|
||||
val request = uploader.buildRequest(testPath, testPing.toByteArray(), emptyMap())
|
||||
val uploadRequest = PingUploadRequest(url = testPath, data = testPing.toByteArray(), emptyMap(), emptyList())
|
||||
val request = uploader.buildRequest(uploadRequest)
|
||||
|
||||
assertEquals(request.cookiePolicy, Request.CookiePolicy.OMIT)
|
||||
}
|
||||
@@ -121,7 +126,8 @@ class ConceptFetchHttpUploaderTest {
|
||||
|
||||
val uploader = spy<ConceptFetchHttpUploader>(ConceptFetchHttpUploader(lazy { mockClient }))
|
||||
|
||||
assertEquals(HttpStatus(200), uploader.upload(testPath, testPing.toByteArray(), emptyMap()))
|
||||
val uploadRequest = CapablePingUploadRequest(PingUploadRequest(url = testPath, data = testPing.toByteArray(), emptyMap(), emptyList()))
|
||||
assertEquals(HttpStatus(200), uploader.upload(uploadRequest))
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -139,7 +145,8 @@ class ConceptFetchHttpUploaderTest {
|
||||
|
||||
val uploader = spy<ConceptFetchHttpUploader>(ConceptFetchHttpUploader(lazy { mockClient }))
|
||||
|
||||
assertEquals(HttpStatus(responseCode), uploader.upload(testPath, testPing.toByteArray(), emptyMap()))
|
||||
val uploadRequest = CapablePingUploadRequest(PingUploadRequest(url = testPath, data = testPing.toByteArray(), emptyMap(), emptyList()))
|
||||
assertEquals(HttpStatus(responseCode), uploader.upload(uploadRequest))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -158,7 +165,8 @@ class ConceptFetchHttpUploaderTest {
|
||||
|
||||
val uploader = spy<ConceptFetchHttpUploader>(ConceptFetchHttpUploader(lazy { mockClient }))
|
||||
|
||||
assertEquals(HttpStatus(responseCode), uploader.upload(testPath, testPing.toByteArray(), emptyMap()))
|
||||
val uploadRequest = CapablePingUploadRequest(PingUploadRequest(url = testPath, data = testPing.toByteArray(), emptyMap(), emptyList()))
|
||||
assertEquals(HttpStatus(responseCode), uploader.upload(uploadRequest))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -177,7 +185,8 @@ class ConceptFetchHttpUploaderTest {
|
||||
|
||||
val uploader = spy<ConceptFetchHttpUploader>(ConceptFetchHttpUploader(lazy { mockClient }))
|
||||
|
||||
assertEquals(HttpStatus(responseCode), uploader.upload(testPath, testPing.toByteArray(), emptyMap()))
|
||||
val uploadRequest = CapablePingUploadRequest(PingUploadRequest(url = testPath, data = testPing.toByteArray(), emptyMap(), emptyList()))
|
||||
assertEquals(HttpStatus(responseCode), uploader.upload(uploadRequest))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -188,7 +197,8 @@ class ConceptFetchHttpUploaderTest {
|
||||
val client = ConceptFetchHttpUploader(lazy { HttpURLConnectionClient() })
|
||||
|
||||
val submissionUrl = "http://" + server.hostName + ":" + server.port + testPath
|
||||
assertEquals(HttpStatus(200), client.upload(submissionUrl, testPing.toByteArray(), mapOf("test" to "header")))
|
||||
val uploadRequest = CapablePingUploadRequest(PingUploadRequest(url = submissionUrl, data = testPing.toByteArray(), mapOf("test" to "header"), emptyList()))
|
||||
assertEquals(HttpStatus(200), client.upload(uploadRequest))
|
||||
|
||||
val request = server.takeRequest()
|
||||
assertEquals(testPath, request.path)
|
||||
@@ -206,7 +216,8 @@ class ConceptFetchHttpUploaderTest {
|
||||
val client = ConceptFetchHttpUploader(lazy { HttpURLConnectionClient() })
|
||||
|
||||
val submissionUrl = "http://" + server.hostName + ":" + server.port + testPath
|
||||
assertEquals(HttpStatus(200), client.upload(submissionUrl, testPing.toByteArray(), mapOf("test" to "header")))
|
||||
val uploadRequest = CapablePingUploadRequest(PingUploadRequest(url = submissionUrl, data = testPing.toByteArray(), mapOf("test" to "header"), emptyList()))
|
||||
assertEquals(HttpStatus(200), client.upload(uploadRequest))
|
||||
|
||||
val request = server.takeRequest()
|
||||
assertEquals(testPath, request.path)
|
||||
@@ -225,7 +236,8 @@ class ConceptFetchHttpUploaderTest {
|
||||
val client = ConceptFetchHttpUploader(lazy { OkHttpClient() })
|
||||
|
||||
val submissionUrl = "http://" + server.hostName + ":" + server.port + testPath
|
||||
assertEquals(HttpStatus(200), client.upload(submissionUrl, testPing.toByteArray(), mapOf("test" to "header")))
|
||||
val uploadRequest = CapablePingUploadRequest(PingUploadRequest(url = submissionUrl, data = testPing.toByteArray(), mapOf("test" to "header"), emptyList()))
|
||||
assertEquals(HttpStatus(200), client.upload(uploadRequest))
|
||||
|
||||
val request = server.takeRequest()
|
||||
assertEquals(testPath, request.path)
|
||||
@@ -274,7 +286,8 @@ class ConceptFetchHttpUploaderTest {
|
||||
// Trigger the connection.
|
||||
val client = ConceptFetchHttpUploader(lazy { HttpURLConnectionClient() })
|
||||
val submissionUrl = testConfig.serverEndpoint + testPath
|
||||
assertEquals(HttpStatus(200), client.upload(submissionUrl, testPing.toByteArray(), emptyMap()))
|
||||
val uploadRequest = CapablePingUploadRequest(PingUploadRequest(url = submissionUrl, data = testPing.toByteArray(), emptyMap(), emptyList()))
|
||||
assertEquals(HttpStatus(200), client.upload(uploadRequest))
|
||||
|
||||
val request = server.takeRequest()
|
||||
assertEquals(testPath, request.path)
|
||||
@@ -298,7 +311,8 @@ class ConceptFetchHttpUploaderTest {
|
||||
|
||||
// And IOException during upload is a failed upload that we should retry. The client should
|
||||
// return false in this case.
|
||||
assertEquals(RecoverableFailure(0), uploader.upload("path", "ping".toByteArray(), emptyMap()))
|
||||
val uploadRequest = CapablePingUploadRequest(PingUploadRequest(url = "path", data = "ping".toByteArray(), emptyMap(), emptyList()))
|
||||
assertEquals(RecoverableFailure(0), uploader.upload(uploadRequest))
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -311,7 +325,8 @@ class ConceptFetchHttpUploaderTest {
|
||||
assertFalse(uploader.client.isInitialized())
|
||||
|
||||
// After calling upload, the client must get instantiated.
|
||||
uploader.upload("path", "ping".toByteArray(), emptyMap())
|
||||
val uploadRequest = CapablePingUploadRequest(PingUploadRequest(url = "path", data = "ping".toByteArray(), emptyMap(), emptyList()))
|
||||
uploader.upload(uploadRequest)
|
||||
assertTrue(uploader.client.isInitialized())
|
||||
}
|
||||
|
||||
@@ -329,7 +344,8 @@ class ConceptFetchHttpUploaderTest {
|
||||
)
|
||||
|
||||
val uploader = ConceptFetchHttpUploader(lazy { mockClient }, true)
|
||||
uploader.upload(testPath, testPing.toByteArray(), expectedHeaders)
|
||||
val uploadRequest = CapablePingUploadRequest(PingUploadRequest(url = "path", data = "ping".toByteArray(), expectedHeaders, emptyList()))
|
||||
uploader.upload(uploadRequest)
|
||||
|
||||
val captor = argumentCaptor<Request>()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user