1// Copyright 2013 The Flutter Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "flutter/runtime/dart_vm.h"
6
7#include "flutter/runtime/dart_vm_lifecycle.h"
8#include "flutter/testing/fixture_test.h"
9#include "gtest/gtest.h"
10
11namespace flutter {
12namespace testing {
13
14using DartVMTest = FixtureTest;
15
16TEST_F(DartVMTest, SimpleInitialization) {
17 ASSERT_FALSE(DartVMRef::IsInstanceRunning());
18 auto vm = DartVMRef::Create(settings: CreateSettingsForFixture());
19 ASSERT_TRUE(vm);
20}
21
22TEST_F(DartVMTest, SimpleIsolateNameServer) {
23 ASSERT_FALSE(DartVMRef::IsInstanceRunning());
24 auto vm = DartVMRef::Create(settings: CreateSettingsForFixture());
25 ASSERT_TRUE(vm);
26 ASSERT_TRUE(vm.GetVMData());
27 auto ns = vm->GetIsolateNameServer();
28 ASSERT_EQ(ns->LookupIsolatePortByName("foobar"), ILLEGAL_PORT);
29 ASSERT_FALSE(ns->RemoveIsolateNameMapping("foobar"));
30 ASSERT_TRUE(ns->RegisterIsolatePortWithName(123, "foobar"));
31 ASSERT_FALSE(ns->RegisterIsolatePortWithName(123, "foobar"));
32 ASSERT_EQ(ns->LookupIsolatePortByName("foobar"), 123);
33 ASSERT_TRUE(ns->RemoveIsolateNameMapping("foobar"));
34}
35
36TEST_F(DartVMTest, OldGenHeapSize) {
37 ASSERT_FALSE(DartVMRef::IsInstanceRunning());
38 auto settings = CreateSettingsForFixture();
39 settings.old_gen_heap_size = 1024;
40 auto vm = DartVMRef::Create(settings);
41 // There is no way to introspect on the heap size so we just assert the vm was
42 // created.
43 ASSERT_TRUE(vm);
44}
45
46TEST_F(DartVMTest, DisableTimelineEventHandler) {
47 ASSERT_FALSE(DartVMRef::IsInstanceRunning());
48 fml::tracing::TraceSetTimelineEventHandler(handler: nullptr);
49 auto settings = CreateSettingsForFixture();
50 settings.enable_timeline_event_handler = false;
51 auto vm = DartVMRef::Create(settings);
52 ASSERT_FALSE(fml::tracing::TraceHasTimelineEventHandler());
53}
54
55TEST_F(DartVMTest, TraceGetTimelineMicrosDoesNotGetClockWhenSystraceIsEnabled) {
56 ASSERT_FALSE(DartVMRef::IsInstanceRunning());
57 auto settings = CreateSettingsForFixture();
58 settings.trace_systrace = true;
59 auto vm = DartVMRef::Create(settings);
60 ASSERT_EQ(-1, fml::tracing::TraceGetTimelineMicros());
61}
62
63} // namespace testing
64} // namespace flutter
65

source code of flutter_engine/flutter/runtime/dart_vm_unittests.cc