mirror of
https://github.com/flutter/flutter.git
synced 2025-06-03 00:51:18 +00:00
Add expectation test for upload metrics (#76642)
This commit is contained in:
parent
cf6d966e44
commit
5cac7c3b15
@ -36,6 +36,7 @@ class Cocoon {
|
|||||||
@visibleForTesting Client httpClient,
|
@visibleForTesting Client httpClient,
|
||||||
@visibleForTesting this.fs = const LocalFileSystem(),
|
@visibleForTesting this.fs = const LocalFileSystem(),
|
||||||
@visibleForTesting this.processRunSync = Process.runSync,
|
@visibleForTesting this.processRunSync = Process.runSync,
|
||||||
|
@visibleForTesting this.requestRetryLimit = 5,
|
||||||
}) : _httpClient = AuthenticatedCocoonClient(serviceAccountTokenPath, httpClient: httpClient, filesystem: fs);
|
}) : _httpClient = AuthenticatedCocoonClient(serviceAccountTokenPath, httpClient: httpClient, filesystem: fs);
|
||||||
|
|
||||||
/// Client to make http requests to Cocoon.
|
/// Client to make http requests to Cocoon.
|
||||||
@ -51,6 +52,9 @@ class Cocoon {
|
|||||||
|
|
||||||
static final Logger logger = Logger('CocoonClient');
|
static final Logger logger = Logger('CocoonClient');
|
||||||
|
|
||||||
|
@visibleForTesting
|
||||||
|
final int requestRetryLimit;
|
||||||
|
|
||||||
String get commitSha => _commitSha ?? _readCommitSha();
|
String get commitSha => _commitSha ?? _readCommitSha();
|
||||||
String _commitSha;
|
String _commitSha;
|
||||||
|
|
||||||
@ -122,6 +126,7 @@ class Cocoon {
|
|||||||
if (resultFile.existsSync()) {
|
if (resultFile.existsSync()) {
|
||||||
resultFile.deleteSync();
|
resultFile.deleteSync();
|
||||||
}
|
}
|
||||||
|
logger.fine('Writing results: ' + json.encode(updateRequest));
|
||||||
resultFile.createSync();
|
resultFile.createSync();
|
||||||
resultFile.writeAsStringSync(json.encode(updateRequest));
|
resultFile.writeAsStringSync(json.encode(updateRequest));
|
||||||
}
|
}
|
||||||
@ -137,6 +142,7 @@ class Cocoon {
|
|||||||
'BuilderName': builderName,
|
'BuilderName': builderName,
|
||||||
'NewStatus': result.succeeded ? 'Succeeded' : 'Failed',
|
'NewStatus': result.succeeded ? 'Succeeded' : 'Failed',
|
||||||
};
|
};
|
||||||
|
logger.fine('Update request: $updateRequest');
|
||||||
|
|
||||||
// Make a copy of result data because we may alter it for validation below.
|
// Make a copy of result data because we may alter it for validation below.
|
||||||
updateRequest['ResultData'] = result.data;
|
updateRequest['ResultData'] = result.data;
|
||||||
@ -177,7 +183,7 @@ class Cocoon {
|
|||||||
final Response response = await retry(
|
final Response response = await retry(
|
||||||
() => _httpClient.post(url, body: json.encode(jsonData)),
|
() => _httpClient.post(url, body: json.encode(jsonData)),
|
||||||
retryIf: (Exception e) => e is SocketException || e is TimeoutException || e is ClientException,
|
retryIf: (Exception e) => e is SocketException || e is TimeoutException || e is ClientException,
|
||||||
maxAttempts: 5,
|
maxAttempts: requestRetryLimit,
|
||||||
);
|
);
|
||||||
return json.decode(response.body) as Map<String, dynamic>;
|
return json.decode(response.body) as Map<String, dynamic>;
|
||||||
}
|
}
|
||||||
|
@ -104,6 +104,36 @@ void main() {
|
|||||||
expect(resultJson, expectedJson);
|
expect(resultJson, expectedJson);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('uploads metrics sends expected post body', () async {
|
||||||
|
_processResult = ProcessResult(1, 0, commitSha, '');
|
||||||
|
const String uploadMetricsRequestWithSpaces = '{"CommitBranch":"master","CommitSha":"a4952838bf288a81d8ea11edfd4b4cd649fa94cc","BuilderName":"builder a b c","NewStatus":"Succeeded","ResultData":{},"BenchmarkScoreKeys":[]}';
|
||||||
|
final MockClient client = MockClient((Request request) async {
|
||||||
|
if (request.body == uploadMetricsRequestWithSpaces) {
|
||||||
|
return Response('{}', 200);
|
||||||
|
}
|
||||||
|
|
||||||
|
return Response('Expected: $uploadMetricsRequestWithSpaces\nReceived: ${request.body}', 500);
|
||||||
|
});
|
||||||
|
cocoon = Cocoon(
|
||||||
|
fs: fs,
|
||||||
|
httpClient: client,
|
||||||
|
processRunSync: runSyncStub,
|
||||||
|
serviceAccountTokenPath: serviceAccountTokenPath,
|
||||||
|
requestRetryLimit: 0,
|
||||||
|
);
|
||||||
|
|
||||||
|
const String resultsPath = 'results.json';
|
||||||
|
const String updateTaskJson = '{'
|
||||||
|
'"CommitBranch":"master",'
|
||||||
|
'"CommitSha":"$commitSha",'
|
||||||
|
'"BuilderName":"builder a b c",'
|
||||||
|
'"NewStatus":"Succeeded",'
|
||||||
|
'"ResultData":{},'
|
||||||
|
'"BenchmarkScoreKeys":[]}';
|
||||||
|
fs.file(resultsPath).writeAsStringSync(updateTaskJson);
|
||||||
|
await cocoon.sendResultsPath(resultsPath);
|
||||||
|
});
|
||||||
|
|
||||||
test('uploads expected update task payload from results file', () async {
|
test('uploads expected update task payload from results file', () async {
|
||||||
_processResult = ProcessResult(1, 0, commitSha, '');
|
_processResult = ProcessResult(1, 0, commitSha, '');
|
||||||
cocoon = Cocoon(
|
cocoon = Cocoon(
|
||||||
@ -111,6 +141,7 @@ void main() {
|
|||||||
httpClient: mockClient,
|
httpClient: mockClient,
|
||||||
processRunSync: runSyncStub,
|
processRunSync: runSyncStub,
|
||||||
serviceAccountTokenPath: serviceAccountTokenPath,
|
serviceAccountTokenPath: serviceAccountTokenPath,
|
||||||
|
requestRetryLimit: 0,
|
||||||
);
|
);
|
||||||
|
|
||||||
const String resultsPath = 'results.json';
|
const String resultsPath = 'results.json';
|
||||||
@ -132,6 +163,7 @@ void main() {
|
|||||||
serviceAccountTokenPath: serviceAccountTokenPath,
|
serviceAccountTokenPath: serviceAccountTokenPath,
|
||||||
fs: fs,
|
fs: fs,
|
||||||
httpClient: mockClient,
|
httpClient: mockClient,
|
||||||
|
requestRetryLimit: 0,
|
||||||
);
|
);
|
||||||
|
|
||||||
final TaskResult result = TaskResult.success(<String, dynamic>{});
|
final TaskResult result = TaskResult.success(<String, dynamic>{});
|
||||||
@ -146,6 +178,7 @@ void main() {
|
|||||||
serviceAccountTokenPath: serviceAccountTokenPath,
|
serviceAccountTokenPath: serviceAccountTokenPath,
|
||||||
fs: fs,
|
fs: fs,
|
||||||
httpClient: mockClient,
|
httpClient: mockClient,
|
||||||
|
requestRetryLimit: 0,
|
||||||
);
|
);
|
||||||
|
|
||||||
final TaskResult result = TaskResult.success(<String, dynamic>{});
|
final TaskResult result = TaskResult.success(<String, dynamic>{});
|
||||||
@ -160,6 +193,7 @@ void main() {
|
|||||||
serviceAccountTokenPath: serviceAccountTokenPath,
|
serviceAccountTokenPath: serviceAccountTokenPath,
|
||||||
fs: fs,
|
fs: fs,
|
||||||
httpClient: mockClient,
|
httpClient: mockClient,
|
||||||
|
requestRetryLimit: 0,
|
||||||
);
|
);
|
||||||
|
|
||||||
final TaskResult result = TaskResult.success(<String, dynamic>{});
|
final TaskResult result = TaskResult.success(<String, dynamic>{});
|
||||||
|
Loading…
Reference in New Issue
Block a user