| Index: tests/standalone/io/file_blocking_lock_test.dart
|
| diff --git a/tests/standalone/io/file_blocking_lock_test.dart b/tests/standalone/io/file_blocking_lock_test.dart
|
| index ef826a2037075efa3dd2f35f13fd8db7653dff36..9cd66890dffa93a3316a4991d7bd1800413273ae 100644
|
| --- a/tests/standalone/io/file_blocking_lock_test.dart
|
| +++ b/tests/standalone/io/file_blocking_lock_test.dart
|
| @@ -39,7 +39,6 @@ runPeer(String path, int len, FileLock mode) {
|
|
|
| testLockWholeFile() async {
|
| const int length = 25;
|
| - asyncStart();
|
| Directory directory = await Directory.systemTemp.createTemp('dart_file_lock');
|
| File file = new File(join(directory.path, "file"));
|
| await file.writeAsBytes(new List.filled(length, 0));
|
| @@ -48,10 +47,6 @@ testLockWholeFile() async {
|
| await raf.lock(FileLock.BLOCKING_EXCLUSIVE, 0, length);
|
| Process peer = await runPeer(file.path, length, FileLock.BLOCKING_EXCLUSIVE);
|
|
|
| - // Wait a bit for the other process to get started. We'll synchronize on
|
| - // the file lock.
|
| - await new Future.delayed(const Duration(seconds: 1));
|
| -
|
| int nextToWrite = 1;
|
| int at = 0;
|
| List iWrote = new List.filled(length, 0);
|
| @@ -64,13 +59,17 @@ testLockWholeFile() async {
|
| // other process was able to take the lock and write some bytes.
|
| iWrote[nextToWrite-1] = nextToWrite;
|
| nextToWrite++;
|
| - await raf.unlock(0, length);
|
| - try {
|
| - await raf.lock(FileLock.EXCLUSIVE, 0, length);
|
| - } catch(e) {
|
| - // Check that at some point the non-blocking lock fails.
|
| - nonBlockingFailed = true;
|
| - await raf.lock(FileLock.BLOCKING_EXCLUSIVE, 0, length);
|
| + // Let the other process get the lock at least once by spinning until the
|
| + // non-blocking lock fails.
|
| + while (!nonBlockingFailed) {
|
| + await raf.unlock(0, length);
|
| + try {
|
| + await raf.lock(FileLock.EXCLUSIVE, 0, length);
|
| + } catch(e) {
|
| + // Check that at some point the non-blocking lock fails.
|
| + nonBlockingFailed = true;
|
| + await raf.lock(FileLock.BLOCKING_EXCLUSIVE, 0, length);
|
| + }
|
| }
|
| while (true) {
|
| p = await raf.position();
|
| @@ -96,14 +95,15 @@ testLockWholeFile() async {
|
|
|
| Expect.equals(true, nonBlockingFailed);
|
|
|
| - peer.exitCode.then((v) {
|
| + await peer.exitCode.then((v) async {
|
| Expect.equals(0, v);
|
| - raf.closeSync();
|
| - directory.deleteSync(recursive: true);
|
| - asyncEnd();
|
| + await raf.close();
|
| + await directory.delete(recursive: true);
|
| });
|
| }
|
|
|
| -main() {
|
| - testLockWholeFile();
|
| +main() async {
|
| + asyncStart();
|
| + await testLockWholeFile();
|
| + asyncEnd();
|
| }
|
|
|