Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(416)

Unified Diff: runtime/vm/dart_api_impl_test.cc

Issue 1497033003: - Remove the legacy debug protocol. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Address review comments. Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « runtime/vm/dart_api_impl.cc ('k') | runtime/vm/debugger.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/dart_api_impl_test.cc
diff --git a/runtime/vm/dart_api_impl_test.cc b/runtime/vm/dart_api_impl_test.cc
index aab541af6fd01fb8fd0d1421a536ce2385604890..1499f37fc348dddb403295350128816bc2e1d913 100644
--- a/runtime/vm/dart_api_impl_test.cc
+++ b/runtime/vm/dart_api_impl_test.cc
@@ -8,7 +8,7 @@
#include "include/dart_native_api.h"
#include "include/dart_tools_api.h"
#include "platform/assert.h"
-#include "platform/json.h"
+#include "platform/text_buffer.h"
#include "platform/utils.h"
#include "vm/class_finalizer.h"
#include "vm/dart_api_impl.h"
@@ -7077,24 +7077,15 @@ static Dart_Isolate RunLoopTestCallback(const char* script_name,
const char* kScriptChars =
"import 'builtin';\n"
"import 'dart:isolate';\n"
- "void entry(message) {\n"
- " var data = message[0];\n"
- " var replyTo = message[1];\n"
- " if (data) {\n"
- " throw new Exception('MakeChildExit');\n"
- " } else {\n"
- " replyTo.send('hello');\n"
- " }\n"
- "}\n"
- "\n"
- "void main(exc_child, exc_parent) {\n"
- " var receivePort = new RawReceivePort();\n"
- " Isolate.spawn(entry, [exc_child, receivePort.sendPort]);\n"
- " receivePort.handler = (message) {\n"
- " receivePort.close();\n"
- " if (message != 'hello') throw new Exception('ShouldNotHappen');\n"
- " if (exc_parent) throw new Exception('MakeParentExit');\n"
+ "void main(shouldThrowException) {\n"
+ " var rp = new RawReceivePort();\n"
+ " rp.handler = (msg) {\n"
+ " rp.close();\n"
+ " if (shouldThrowException) {\n"
+ " throw new Exception('ExceptionFromTimer');\n"
+ " }\n"
" };\n"
+ " rp.sendPort.send(1);\n"
"}\n";
if (Dart_CurrentIsolate() != NULL) {
@@ -7122,28 +7113,10 @@ static Dart_Isolate RunLoopTestCallback(const char* script_name,
}
-// The error string from the last unhandled exception. This value is only
-// valid until the next Dart_ExitScope().
-static char* last_exception = NULL;
-
-
-static void RunLoopUnhandledExceptionCallback(Dart_Handle exception) {
- Dart_Handle error_string = Dart_ToString(exception);
- EXPECT_VALID(error_string);
- const char* error_text;
- Dart_Handle result = Dart_StringToCString(error_string, &error_text);
- // Duplicate the string since error text is freed when callback is finished.
- last_exception = strdup(error_text);
- EXPECT_VALID(result);
-}
-
-
// Common code for RunLoop_Success/RunLoop_Failure.
-static void RunLoopTest(bool throw_exception_child,
- bool throw_exception_parent) {
+static void RunLoopTest(bool throw_exception) {
Dart_IsolateCreateCallback saved = Isolate::CreateCallback();
Isolate::SetCreateCallback(RunLoopTestCallback);
- Isolate::SetUnhandledExceptionCallback(RunLoopUnhandledExceptionCallback);
Dart_Isolate isolate = RunLoopTestCallback(
NULL, NULL, NULL, NULL, NULL, NULL, NULL);
@@ -7153,29 +7126,15 @@ static void RunLoopTest(bool throw_exception_child,
EXPECT_VALID(lib);
Dart_Handle result;
- Dart_Handle args[2];
- args[0] = (throw_exception_child ? Dart_True() : Dart_False());
- args[1] = (throw_exception_parent ? Dart_True() : Dart_False());
- result = Dart_Invoke(lib, NewString("main"), 2, args);
- EXPECT_VALID(result);
- if (throw_exception_child) {
- // TODO(tball): fix race-condition
- // EXPECT_NOTNULL(last_exception);
- // EXPECT_STREQ("UnhandledException", last_exception);
+ Dart_Handle args[1];
+ args[0] = (throw_exception ? Dart_True() : Dart_False());
+ result = Dart_Invoke(lib, NewString("main"), 1, args);
+ EXPECT_VALID(result);
+ result = Dart_RunLoop();
+ if (throw_exception) {
+ EXPECT_ERROR(result, "Exception: ExceptionFromTimer");
} else {
- result = Dart_RunLoop();
- if (throw_exception_parent) {
- EXPECT_ERROR(result, "Exception: MakeParentExit");
- EXPECT_NOTNULL(last_exception);
- EXPECT_STREQ("UnhandledException", last_exception);
- } else {
- EXPECT_VALID(result);
- EXPECT(last_exception == NULL);
- }
- }
- if (last_exception != NULL) {
- free(last_exception);
- last_exception = NULL;
+ EXPECT_VALID(result);
}
Dart_ExitScope();
@@ -7186,18 +7145,12 @@ static void RunLoopTest(bool throw_exception_child,
UNIT_TEST_CASE(RunLoop_Success) {
- RunLoopTest(false, false);
-}
-
-
-// This test exits the vm. Listed as FAIL in vm.status.
-UNIT_TEST_CASE(RunLoop_ExceptionChild) {
- RunLoopTest(true, false);
+ RunLoopTest(false);
}
-UNIT_TEST_CASE(RunLoop_ExceptionParent) {
- RunLoopTest(false, true);
+UNIT_TEST_CASE(RunLoop_Exception) {
+ RunLoopTest(true);
}
@@ -7284,81 +7237,6 @@ void BusyLoop_start(uword unused) {
}
-// This callback handles isolate interrupts for the IsolateInterrupt
-// test. It ignores the first two interrupts and throws an exception
-// on the third interrupt.
-const int kInterruptCount = 10;
-static int interrupt_count = 0;
-static bool IsolateInterruptTestCallback() {
- OS::Print(" ========== Interrupt callback called #%d\n", interrupt_count + 1);
- {
- MonitorLocker ml(sync);
- interrupt_count++;
- ml.Notify();
- }
- if (interrupt_count == kInterruptCount) {
- Dart_EnterScope();
- Dart_Handle lib = Dart_LookupLibrary(NewString(TestCase::url()));
- EXPECT_VALID(lib);
- Dart_Handle exc = NewString("foo");
- EXPECT_VALID(exc);
- Dart_Handle result = Dart_ThrowException(exc);
- EXPECT_VALID(result);
- UNREACHABLE(); // Dart_ThrowException only returns if it gets an error.
- return false;
- }
- ASSERT(interrupt_count < kInterruptCount);
- return true;
-}
-
-
-TEST_CASE(IsolateInterrupt) {
- Dart_IsolateInterruptCallback saved = Isolate::InterruptCallback();
- Isolate::SetInterruptCallback(IsolateInterruptTestCallback);
-
- sync = new Monitor();
- int result = OSThread::Start("IsolateInterrupt", BusyLoop_start, 0);
- EXPECT_EQ(0, result);
-
- {
- MonitorLocker ml(sync);
- // Wait for the other isolate to enter main.
- while (!main_entered) {
- ml.Wait();
- }
- }
-
- // Send a number of interrupts to the other isolate. All but the
- // last allow execution to continue. The last causes an exception in
- // the isolate.
- for (int i = 0; i < kInterruptCount; i++) {
- // Space out the interrupts a bit.
- OS::Sleep(i + 1);
- Dart_InterruptIsolate(shared_isolate);
- {
- MonitorLocker ml(sync);
- // Wait for interrupt_count to be increased.
- while (interrupt_count == i) {
- ml.Wait();
- }
- OS::Print(" ========== Interrupt processed #%d\n", interrupt_count);
- }
- }
-
- {
- MonitorLocker ml(sync);
- // Wait for our isolate to finish.
- while (shared_isolate != NULL) {
- ml.Wait();
- }
- }
-
- // We should have received the expected number of interrupts.
- EXPECT_EQ(kInterruptCount, interrupt_count);
-
- Isolate::SetInterruptCallback(saved);
-}
-
static void* saved_callback_data;
static void IsolateShutdownTestCallback(void* callback_data) {
saved_callback_data = callback_data;
« no previous file with comments | « runtime/vm/dart_api_impl.cc ('k') | runtime/vm/debugger.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698