blob: 2abfbcb57ea366a8e9932c69ad48270c1684b1e0 [file] [log] [blame]
// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
@Timeout(Duration(minutes: 2))
import 'package:shelf/shelf.dart';
import 'package:test/test.dart';
import 'package:test_common/logging.dart';
import 'package:test_common/test_sdk_configuration.dart';
import '../fixtures/context.dart';
import '../fixtures/project.dart';
import '../fixtures/utilities.dart';
void main() {
group('Asset handler', () {
final provider = TestSdkConfigurationProvider();
final context = TestContext(TestProject.testWithSoundNullSafety, provider);
setUpAll(() async {
setCurrentLogWriter();
await context.setUp(
testSettings: TestSettings(
enableExpressionEvaluation: true,
verboseCompiler: false,
),
);
});
tearDownAll(() async {
await context.tearDown();
provider.dispose();
});
setUp(setCurrentLogWriter);
Future<void> readAsString(String path) async {
final request = Request('GET', Uri.parse('http://foo:0000/$path'));
final response = await context.assetHandler(request);
expect(response.statusCode, 200);
final result = await response.readAsString();
expect(
result,
isNotNull,
reason: 'Failed to read $path: ${response.statusCode}',
);
}
Future<void> readAsBytes(String path) async {
final request = Request('GET', Uri.parse('http://foo:0000/$path'));
final response = await context.assetHandler(request);
expect(response.statusCode, 200);
final result = await response.read().toList();
expect(
result,
isNotNull,
reason: 'Failed to read $path: ${response.statusCode}',
);
}
test('can read dill files', () async {
final path = 'hello_world/main.ddc.full.dill';
await readAsBytes(path);
});
test('can read large number of resources simultaneously', () async {
final n = 1000;
final futures = [
for (var i = 0; i < n; i++) readAsString('hello_world/main.ddc.js.map'),
for (var i = 0; i < n; i++) readAsString('hello_world/main.ddc.js'),
for (var i = 0; i < n; i++)
readAsBytes('hello_world/main.ddc.full.dill'),
];
await expectLater(Future.wait(futures), completes);
});
});
}