Commit Graph

60 Commits

Author SHA1 Message Date
paulberry@google.com 22ee284c47 Serialize AnalysisErrors to JSON in the analysis server.
R=scheglov@google.com

Review URL: https://codereview.chromium.org//247893004

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@35329 260f80e4-7a28-3924-810f-c04153c831b5
2014-04-23 20:35:43 +00:00
paulberry@google.com 2424320373 Don't make assumptions about source encoding in analysis server tests (TBR).
On Windows, the encoding of an absolute path like "/foo.dart" contains
a drive letter (e.g. "102file:///e:/foo.dart"); on Mac and Linux it
doesn't.  Call ".encoding" from the test so that we don't depend on
the specific file name encoding in use.

As a side benefit, this makes the test independent of bug 18379.

Review URL: https://codereview.chromium.org//247143009

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@35327 260f80e4-7a28-3924-810f-c04153c831b5
2014-04-23 20:02:18 +00:00
paulberry@google.com 19572ac352 Use AnalysisServer.running only to track whether server has been shut down.
Previously, AnalysisServer.run() and AnalysisServer.performTask() also
tried to use this variable to track whether there was a pending call
to performTask() on the event queue.  The resulting confusion
prevented analysis from ever running.

It turns out that we don't need to separately track whether there is a
pending call to performTask(), as long as we enforce the invariant
that there is a pending call to performTask() exactly when
contextWorkQueue is non-empty.

R=brianwilkerson@google.com, danrubel@google.com

Review URL: https://codereview.chromium.org//246603005

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@35323 260f80e4-7a28-3924-810f-c04153c831b5
2014-04-23 18:35:58 +00:00
scheglov@google.com 89c918f8f4 New analysis services snapshot.
R=brianwilkerson@google.com
BUG=

Review URL: https://codereview.chromium.org//247813002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@35271 260f80e4-7a28-3924-810f-c04153c831b5
2014-04-22 17:30:49 +00:00
paulberry@google.com 451b5519cb Consistently type check analysis server request parameters.
Introduces a class RequestDatum, which wraps request parameters (or
components thereof) and provides type checking and coercion.
RequestDatum also provides an operator[] so that nested parameters can
be type checked and coerced at every level of nesting.

Previously, our checking and coercion was ad-hoc, and as a result some
parameters weren't type checked at all.

R=brianwilkerson@google.com

Review URL: https://codereview.chromium.org//245113006

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@35228 260f80e4-7a28-3924-810f-c04153c831b5
2014-04-21 22:21:39 +00:00
paulberry@google.com 0540e6a85b Eliminate nondeterminism from analysis server unit tests.
Previously, we tested for non-responsiveness in the analysis server
using timeout(new Duration(seconds: 1)).  This caused sporadic
failures on slower buildbots.  Now, we simply let the event loop run
20 times--this should produce consistent results regardless of machine
speed.

R=brianwilkerson@google.com, danrubel@google.com

Review URL: https://codereview.chromium.org//243703008

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@35221 260f80e4-7a28-3924-810f-c04153c831b5
2014-04-21 19:48:15 +00:00
paulberry@google.com 8fd57e0efa Disable test "AnalysisServer createContext" again.
This is failing on some buildbots.  I will investigate next week.

Review URL: https://codereview.chromium.org//243763003

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@35188 260f80e4-7a28-3924-810f-c04153c831b5
2014-04-18 22:58:48 +00:00
paulberry@google.com a1a3ae4eeb Fix a typo in the analysis server's status page
R=brianwilkerson@google.com

Review URL: https://codereview.chromium.org//243383004

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@35186 260f80e4-7a28-3924-810f-c04153c831b5
2014-04-18 22:26:49 +00:00
paulberry@google.com 783aca1892 Analysis server context ID is now specified by the client.
This allows the client to start sending commands that use the context
immediately, without having to wait for a response to find out the
context ID.

If the client tries to create two contexts with the same ID, that is
an error.

R=brianwilkerson@google.com

Review URL: https://codereview.chromium.org//243753002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@35185 260f80e4-7a28-3924-810f-c04153c831b5
2014-04-18 22:20:53 +00:00
paulberry@google.com f6ec765421 Fix and re-enable analysis server tests that were commented out.
R=brianwilkerson@google.com

Review URL: https://codereview.chromium.org//243653003

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@35183 260f80e4-7a28-3924-810f-c04153c831b5
2014-04-18 20:50:23 +00:00
scheglov@google.com 0d16b4e5ca Translate server interfaces and navigation/outline computers.
R=brianwilkerson@google.com
BUG=

Review URL: https://codereview.chromium.org//242373005

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@35182 260f80e4-7a28-3924-810f-c04153c831b5
2014-04-18 20:16:01 +00:00
paulberry@google.com 6a50f6f490 Make the http portion of the analysis server optional.
If no "--port" option is supplied, the analysis server won't start up
an http server, and it will only communicate with the client over
stdio.

R=brianwilkerson@google.com

Review URL: https://codereview.chromium.org//239333006

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@35129 260f80e4-7a28-3924-810f-c04153c831b5
2014-04-16 20:03:25 +00:00
paulberry@google.com f548643064 Exit stdio-based analysis server when stdin closed.
R=brianwilkerson@google.com

Review URL: https://codereview.chromium.org//235953019

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@35116 260f80e4-7a28-3924-810f-c04153c831b5
2014-04-16 17:34:35 +00:00
paulberry@google.com 93deb52cd6 Add a message for analysis server to indicate a successful connection.
This complements the "server already started" error introduced in
r35046.  It's now easy for the client to detect whether a connection
to the server was successful--it simply connects and waits for the
initial message from the server.  The message returned on a successful
connection is:

{"event":"server.connected"}

R=brianwilkerson@google.com

Review URL: https://codereview.chromium.org//239213004

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@35108 260f80e4-7a28-3924-810f-c04153c831b5
2014-04-16 15:11:35 +00:00
paulberry@google.com d136370b7c Remove "listening on port $port" message.
This prevents it from interfering with stdio-based communication
between the editor and analysis server.

R=brianwilkerson@google.com, jwren@google.com

Review URL: https://codereview.chromium.org//236063019

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@35107 260f80e4-7a28-3924-810f-c04153c831b5
2014-04-16 14:55:07 +00:00
paulberry@google.com d30a35bd5a Allow the analysis server to connect to the client over stdio.
R=brianwilkerson@google.com

Review URL: https://codereview.chromium.org//236133013

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@35095 260f80e4-7a28-3924-810f-c04153c831b5
2014-04-15 22:52:56 +00:00
paulberry@google.com 7c3b05627d Remove redundant initialization of HttpAnalysisServer.socketServer.
This was mistakenly left out of r35075.

R=brianwilkerson@google.com

Review URL: https://codereview.chromium.org//237963009

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@35089 260f80e4-7a28-3924-810f-c04153c831b5
2014-04-15 21:45:47 +00:00
paulberry@google.com 13f0c014d6 Create analysis server ByteStreamServerChannel class.
This class serves a parallel role to the existing
WebSocketServerChannel interface, except that it handles exchanging
data with stdio rather than with a WebSocket.

R=brianwilkerson@google.com

Review URL: https://codereview.chromium.org//238293006

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@35088 260f80e4-7a28-3924-810f-c04153c831b5
2014-04-15 21:43:00 +00:00
paulberry@google.com 5a7486998f Split off a Driver class from analysis server's HttpAnalysisServer.
The Driver class sits above the HttpAnalysisServer, parsing command
line options and deciding how the sever should be run.  With this
change, HttpAnalysisServer now contains only http-specific code.

R=brianwilkerson@google.com, jwren@google.com

Review URL: https://codereview.chromium.org//239573002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@35075 260f80e4-7a28-3924-810f-c04153c831b5
2014-04-15 19:55:21 +00:00
scheglov@google.com 25f3afdb4d Use mirrors and annotations to find test methods.
It was too tiresome to type test method names three times, jumping back and forth
between test class and main earlier this morning. :-)

Also, we had a discussion about tests in the office.

R=brianwilkerson@google.com, danrubel@google.com, pquitslund@google.com
BUG=

Review URL: https://codereview.chromium.org//228013003

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@35067 260f80e4-7a28-3924-810f-c04153c831b5
2014-04-15 16:34:17 +00:00
paulberry@google.com 33c7e78bb0 Split analysis server's HttpAnalysisServer into two classes.
Behaviours of the HttpAnalysisServer which are independent of the
WebSocket transport mechanism have been moved to a new class,
SocketServer, which will also be used when the transport mechanism is
stdio.

GetHander now holds a reference to the SocketServer rather than the
AnalysisServer, so that we don't need to go to extra effort to update
it when the AnalysisServer is created.

R=brianwilkerson@google.com, jwren@google.com

Review URL: https://codereview.chromium.org//237643003

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@35061 260f80e4-7a28-3924-810f-c04153c831b5
2014-04-15 15:41:09 +00:00
paulberry@google.com ab56da71ce Fix race condition with "server already started" error.
We can't report the "server already started" error prior to the call
to WebSocketTransformer.upgrade(), because it's possible that a
different client will successfully establish a connection during the
upgrade process.  Instead, check after the call to upgrade().  This
means that if there is an error, we have to report it via a
RequestError object rather than using an HTTP error.

When we add stdio as a transport mechanism, this will have the further
advantage of allowing the "server already started" error to be
detected by code that is independent of the transport mechanism.

R=brianwilkerson@google.com

Review URL: https://codereview.chromium.org//237793002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@35046 260f80e4-7a28-3924-810f-c04153c831b5
2014-04-14 22:13:10 +00:00
scheglov@google.com b8ac1a83a0 Improve analysis_server/protocol.dart test coverage.
R=brianwilkerson@google.com, danrubel@google.com
BUG=

Review URL: https://codereview.chromium.org//227713004

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@34794 260f80e4-7a28-3924-810f-c04153c831b5
2014-04-07 19:01:10 +00:00
brianwilkerson@google.com 7e7426ae99 Clean-up and progress on analysis server
R=danrubel@google.com

Review URL: https://codereview.chromium.org//214933002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@34529 260f80e4-7a28-3924-810f-c04153c831b5
2014-03-28 21:26:03 +00:00
danrubel@google.com b25bbbb5eb utility for manually running all analysis_server tests
BUG=
R=brianwilkerson@google.com

Review URL: https://codereview.chromium.org//209003005

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@34522 260f80e4-7a28-3924-810f-c04153c831b5
2014-03-28 20:29:30 +00:00
kevmoo@google.com 1119399bf3 pkg/analysis_server: fixes for unittest deprecations
R=danrubel@google.com

Review URL: https://codereview.chromium.org//217153002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@34503 260f80e4-7a28-3924-810f-c04153c831b5
2014-03-28 16:10:00 +00:00
lrn@google.com 6f76a96fcf Introduce class Sink<T>.
The sink only has "add" and "close" methods. It is the supertype of both EventSink and ChunkedConversionSink.

Made startChunkedConversion take Sink as argument, but still return ChunkedConversionSink. The more specialized chunked conversion sinks are test for, just as they always were.

R=ajohnsen@google.com

Review URL: https://codereview.chromium.org//203603008

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@34157 260f80e4-7a28-3924-810f-c04153c831b5
2014-03-20 10:13:01 +00:00
danrubel@google.com faf2c8ddf4 (TBR) simplify check for valid SDK directory
BUG=

Review URL: https://codereview.chromium.org//198083004

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@33618 260f80e4-7a28-3924-810f-c04153c831b5
2014-03-12 21:47:13 +00:00
danrubel@google.com 55e113a629 (TBR) fix path to sdk on Windows
BUG=

Review URL: https://codereview.chromium.org//196743004

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@33610 260f80e4-7a28-3924-810f-c04153c831b5
2014-03-12 20:58:03 +00:00
danrubel@google.com 4a626200be (TBR) improve error message when fails on bots
BUG=

Review URL: https://codereview.chromium.org//196353006

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@33606 260f80e4-7a28-3924-810f-c04153c831b5
2014-03-12 20:25:12 +00:00
danrubel@google.com 8db05728f2 (TBR) upgrade analyzer version in pubspec to fix build
BUG=

Review URL: https://codereview.chromium.org//196283009

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@33604 260f80e4-7a28-3924-810f-c04153c831b5
2014-03-12 19:57:03 +00:00
danrubel@google.com 18618a20b3 add sdkPath and enable tests
BUG=
R=brianwilkerson@google.com

Review URL: https://codereview.chromium.org//196993003

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@33600 260f80e4-7a28-3924-810f-c04153c831b5
2014-03-12 19:18:14 +00:00
danrubel@google.com 12fdc641b4 revert r33595
BUG=

Review URL: https://codereview.chromium.org//196283007

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@33598 260f80e4-7a28-3924-810f-c04153c831b5
2014-03-12 18:29:58 +00:00
danrubel@google.com 2b5113a52f update analysis server pubspec
BUG=
R=scheglov@google.com

Review URL: https://codereview.chromium.org//196353005

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@33595 260f80e4-7a28-3924-810f-c04153c831b5
2014-03-12 17:28:51 +00:00
danrubel@google.com ce8dce2195 add dart-sdk option to dartdeps
BUG=
R=brianwilkerson@google.com

Review URL: https://codereview.chromium.org//196423005

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@33590 260f80e4-7a28-3924-810f-c04153c831b5
2014-03-12 16:44:30 +00:00
jwren@google.com 84de116968 Nit change in the Dart command line analyzer and analysis server.
Logger.logError takes a String, not Error types.  This will enable the exception to be printed, instead of the message '<SomeError> is not a String'.

Also, in the command line version of the dart analyzer, I put in a commented out stdout/stderr logger for developers.

R=brianwilkerson@google.com

Review URL: https://codereview.chromium.org//196373003

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@33587 260f80e4-7a28-3924-810f-c04153c831b5
2014-03-12 16:30:23 +00:00
danrubel@google.com 20158f95a7 update channel test per comments
in https://codereview.chromium.org/185313002

BUG=
R=brianwilkerson@google.com

Review URL: https://codereview.chromium.org//195463004

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@33573 260f80e4-7a28-3924-810f-c04153c831b5
2014-03-12 13:33:38 +00:00
brianwilkerson@google.com 3a86b9fd59 Fix the build
Review URL: https://codereview.chromium.org//191003003

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@33454 260f80e4-7a28-3924-810f-c04153c831b5
2014-03-07 21:00:39 +00:00
brianwilkerson@google.com e0b6dbb3b6 Add back previously removed tests
R=danrubel@google.com

Review URL: https://codereview.chromium.org//191103002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@33451 260f80e4-7a28-3924-810f-c04153c831b5
2014-03-07 20:40:52 +00:00
danrubel@google.com 9e21e89d95 gracefully degrade with response to client if fail to access client specified dart sdk
+ return response if client specifies inaccessible sdk
+ cleanup JSON encode/decode references
+ cleanup channel close processing

R=brianwilkerson@google.com

Review URL: https://codereview.chromium.org//187603010

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@33355 260f80e4-7a28-3924-810f-c04153c831b5
2014-03-05 23:30:45 +00:00
danrubel@google.com dc1d6bcacf guard against invalid request id / method
BUG=
R=brianwilkerson@google.com

Review URL: https://codereview.chromium.org//180743020

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@33337 260f80e4-7a28-3924-810f-c04153c831b5
2014-03-05 18:40:29 +00:00
danrubel@google.com 2231a169fd restructure client api to use streams
+ restructure client api to use streams for notifications and responses
+ client waits for server shutdown response
+ cleanup channel tests

R=brianwilkerson@google.com

Review URL: https://codereview.chromium.org//185313002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@33330 260f80e4-7a28-3924-810f-c04153c831b5
2014-03-05 15:41:08 +00:00
danrubel@google.com dbb20f6746 split client and server channels
R=brianwilkerson@google.com

Review URL: https://codereview.chromium.org//182903005

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@33131 260f80e4-7a28-3924-810f-c04153c831b5
2014-02-27 20:23:37 +00:00
danrubel@google.com c1c75d48ae update client to use channel rather than socket
BUG=
R=brianwilkerson@google.com

Review URL: https://codereview.chromium.org//176873015

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@33080 260f80e4-7a28-3924-810f-c04153c831b5
2014-02-26 20:11:00 +00:00
danrubel@google.com ee9f48440f Error handling and code cleanup
+ cleanup futures code and error handling
+ send message to request server shutdown
+ normalize strings to match codebase

R=brianwilkerson@google.com

Review URL: https://codereview.chromium.org//180253005

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@33063 260f80e4-7a28-3924-810f-c04153c831b5
2014-02-26 14:39:40 +00:00
danrubel@google.com ecdbe3b6ab Analysis server connect fixes
+ new option for connecting to already running analysis server
+ gracefully handle unknown arguments
+ fix bugs in analysis server websocket connect

R=brianwilkerson@google.com

Review URL: https://codereview.chromium.org//175183008

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@32974 260f80e4-7a28-3924-810f-c04153c831b5
2014-02-24 17:41:22 +00:00
danrubel@google.com a633f22d76 first cut cmdline analysis server launcher
BUG=
R=brianwilkerson@google.com

Review URL: https://codereview.chromium.org//175173002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@32903 260f80e4-7a28-3924-810f-c04153c831b5
2014-02-21 15:54:21 +00:00
danrubel@google.com 2743d06073 set analysis server exitCode on invalid cmdline arguments
BUG=
R=brianwilkerson@google.com

Review URL: https://codereview.chromium.org//171363007

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@32902 260f80e4-7a28-3924-810f-c04153c831b5
2014-02-21 15:42:22 +00:00
brianwilkerson@google.com 66590d7363 Use Future for error handling. This appears to be the recommended way of doing things because it is safer.
R=devoncarew@google.com, scheglov@google.com

Review URL: https://codereview.chromium.org//166703004

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@32748 260f80e4-7a28-3924-810f-c04153c831b5
2014-02-18 17:20:14 +00:00
brianwilkerson@google.com 238ca64ce9 Server code clean-up
R=scheglov@google.com

Review URL: https://codereview.chromium.org//139983004

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@32466 260f80e4-7a28-3924-810f-c04153c831b5
2014-02-08 15:25:37 +00:00