dart-lang / sdk

The Dart SDK, including the VM, JS and Wasm compilers, analysis, core libraries, and more.
https://dart.dev
BSD 3-Clause "New" or "Revised" License
10.23k stars 1.57k forks source link

Multiple instances of utils/tests/pub/pub_test.dart cannot run simultaneously. #4531

Closed crelier closed 9 years ago

crelier commented 12 years ago

Command line: ./tools/test.py --mode=all --arch=all --compiler=none --runtime=vm

Result: Multiple instances of the test utils/tests/pub/pub_test.dart will run concurrently and will fight for a connection:

Unhandled exception: SocketIOException: OS Error: Connection refused, errno = 111

­0 httpGet.<anonymous closure> (file:///usr/local/google/home/regis/dart1/dart/utils/pub/io.dart:296:30)

­1 _HttpClientConnection._onConnectionClosed (dart:io:3380:9)

­2 _HttpConnectionBase._onError (dart:io:2962:3)

­3 _HttpClient._prepareHttpClientConnection.<anonymous closure> (dart:io:3553:8)

­4 _SocketBase._reportError.doReportError (dart:io:5593:33)

­5 _SocketBase._reportError (dart:io:5601:7)

­6 _SocketBase._multiplex (dart:io:5479:13)

­7 _SocketBase._sendToEventHandler.<anonymous closure> (dart:io:5583:9)

­8 _ReceivePortImpl._handleMessage (dart:isolate-patch:97:92)

Unhandled exception: Exception: Some tests failed.

­0 Configuration.onDone (file:///usr/local/google/home/regis/dart1/dart/pkg/unittest/config.dart:123:19)

­1 _completeTests (file:///usr/local/google/home/regis/dart1/dart/pkg/unittest/unittest.dart:792:17)

­2 _nextBatch._nextBatch (file:///usr/local/google/home/regis/dart1/dart/pkg/unittest/unittest.dart:776:17)

­3 _nextTestCase (file:///usr/local/google/home/regis/dart1/dart/pkg/unittest/unittest.dart:650:14)

­4 _handleCallbackFunctionComplete.<anonymous closure> (file:///usr/local/google/home/regis/dart1/dart/pkg/unittest/unittest.dart:641:22)

­5 _defer.<anonymous closure> (file:///usr/local/google/home/regis/dart1/dart/pkg/unittest/unittest.dart:684:13)

­6 _ReceivePortImpl._handleMessage (dart:isolate-patch:97:92)

iposva-google commented 12 years ago

cc @munificent. cc @nex3.

munificent commented 12 years ago

Set owner to @nex3.

ghost commented 12 years ago

In addition the tests become zombies on Mac OS X and pollute directories:

pub-test-sandbox-iHW44o pub-test-sandbox-z4ahlJ

 6971 ttys001 0:02.18 /sources/dartall/dart/xcodebuild/DebugIA32/dart --enable-type-checks --enable-asserts /sources/dartall/dart/utils/pub/pub.dart --trace install  9354 ttys001 0:03.80 /sources/dartall/dart/xcodebuild/DebugIA32/dart --enable-type-checks --enable-asserts /sources/dartall/dart/utils/pub/pub.dart --trace install 16990 ttys001 0:04.43 /sources/dartall/dart/xcodebuild/DebugX64/dart --enable-type-checks --enable-asserts /sources/dartall/dart/utils/pub/pub.dart --trace install

Can we disable the tests until fixed?


Removed Priority-Medium label. Added Priority-High label.

munificent commented 12 years ago

Please don't disable the tests. Pub is important for M1 and I want to ensure it keeps getting test coverage.

As soon as Nathan or I can, we'll look into getting ephemeral ports or something else working so the tests can run in parallel. In the meantime, can you just avoiding running pub tests in parallel? Are you having any problems if you run them serially?

crelier commented 12 years ago

No problem running them serially. Instead of doing this:

./tools/test.py --mode=all --arch=all --compiler=none --runtime=vm --checked ./tools/test.py --mode=all --arch=all --compiler=none --runtime=vm

I do this:

./tools/test.py --mode=debug --arch=x64 --compiler=none --runtime=vm --checked ./tools/test.py --mode=release --arch=x64 --compiler=none --runtime=vm --checked ./tools/test.py --mode=debug --arch=ia32 --compiler=none --runtime=vm --checked ./tools/test.py --mode=release --arch=ia32 --compiler=none --runtime=vm --checked ./tools/test.py --mode=debug --arch=x64 --compiler=none --runtime=vm ./tools/test.py --mode=release --arch=x64 --compiler=none --runtime=vm ./tools/test.py --mode=debug --arch=ia32 --compiler=none --runtime=vm ./tools/test.py --mode=release --arch=ia32 --compiler=none --runtime=vm

munificent commented 12 years ago

Sorry for the verbosity this requires for you. :(

Until you filed this bug, I didn't even know test.py could run stuff in parallel. We'll definitely try to get this fixed.

ghost commented 12 years ago

Issue #4559 was closed, it fixes the directory pollution. However, the test still leaves zombie processes. The command "./tools/test.py --arch=all --mode=all --checked" leaves 6 zombie processes on Mac OS X.


cc @iposva-google. cc @dgrove.

munificent commented 12 years ago

Right. I believe the remaining problem here is that the pub tests are hardcoded to grab a specific port. (They spin up a web server to simulate pub.dartlang.org). I think we'll need to look into ephemeral ports to fix that.

nex3 commented 12 years ago

Fixed by r11274.


Added Fixed label.