| // Copyright 2013 The Flutter Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| #include "flutter/runtime/dart_vm.h" | |
| #include "flutter/runtime/dart_vm_lifecycle.h" | |
| #include "flutter/testing/fixture_test.h" | |
| #include "gtest/gtest.h" | |
| namespace flutter { | |
| namespace testing { | |
| using DartVMTest = FixtureTest; | |
| TEST_F(DartVMTest, SimpleInitialization) { | |
| ASSERT_FALSE(DartVMRef::IsInstanceRunning()); | |
| auto vm = DartVMRef::Create(CreateSettingsForFixture()); | |
| ASSERT_TRUE(vm); | |
| } | |
| TEST_F(DartVMTest, SimpleIsolateNameServer) { | |
| ASSERT_FALSE(DartVMRef::IsInstanceRunning()); | |
| auto vm = DartVMRef::Create(CreateSettingsForFixture()); | |
| ASSERT_TRUE(vm); | |
| ASSERT_TRUE(vm.GetVMData()); | |
| auto ns = vm->GetIsolateNameServer(); | |
| ASSERT_EQ(ns->LookupIsolatePortByName("foobar").port_id, ILLEGAL_PORT); | |
| ASSERT_FALSE(ns->RemoveIsolateNameMapping("foobar")); | |
| Dart_PortEx correct_portex = {123, 456}; | |
| ASSERT_TRUE(ns->RegisterIsolatePortWithName(correct_portex, "foobar")); | |
| ASSERT_FALSE(ns->RegisterIsolatePortWithName(correct_portex, "foobar")); | |
| Dart_PortEx response = ns->LookupIsolatePortByName("foobar"); | |
| ASSERT_EQ(response.port_id, correct_portex.port_id); | |
| ASSERT_EQ(response.origin_id, correct_portex.origin_id); | |
| ASSERT_TRUE(ns->RemoveIsolateNameMapping("foobar")); | |
| } | |
| TEST_F(DartVMTest, OldGenHeapSize) { | |
| ASSERT_FALSE(DartVMRef::IsInstanceRunning()); | |
| auto settings = CreateSettingsForFixture(); | |
| settings.old_gen_heap_size = 1024; | |
| auto vm = DartVMRef::Create(settings); | |
| // There is no way to introspect on the heap size so we just assert the vm was | |
| // created. | |
| ASSERT_TRUE(vm); | |
| } | |
| TEST_F(DartVMTest, DisableTimelineEventHandler) { | |
| ASSERT_FALSE(DartVMRef::IsInstanceRunning()); | |
| fml::tracing::TraceSetTimelineEventHandler(nullptr); | |
| auto settings = CreateSettingsForFixture(); | |
| settings.enable_timeline_event_handler = false; | |
| auto vm = DartVMRef::Create(settings); | |
| ASSERT_FALSE(fml::tracing::TraceHasTimelineEventHandler()); | |
| } | |
| TEST_F(DartVMTest, TraceGetTimelineMicrosDoesNotGetClockWhenSystraceIsEnabled) { | |
| ASSERT_FALSE(DartVMRef::IsInstanceRunning()); | |
| auto settings = CreateSettingsForFixture(); | |
| settings.trace_systrace = true; | |
| auto vm = DartVMRef::Create(settings); | |
| ASSERT_EQ(-1, fml::tracing::TraceGetTimelineMicros()); | |
| } | |
| } // namespace testing | |
| } // namespace flutter |