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

Side by Side Diff: tests/agent_tests/agent_tests.dart

Issue 1659163007: Rename fletch -> dartino (Closed) Base URL: https://github.com/dartino/sdk.git@master
Patch Set: address comments Created 4 years, 10 months 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 unified diff | Download patch
« no previous file with comments | « src/vm/weak_pointer.cc ('k') | tests/cc_tests/README.md » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 import 'dart:io' show 5 import 'dart:io' show
6 Directory, 6 Directory,
7 File, 7 File,
8 FileSystemException, 8 FileSystemException,
9 Process, 9 Process,
10 ProcessSignal, 10 ProcessSignal,
11 Socket, 11 Socket,
12 SocketException; 12 SocketException;
13 13
14 import 'dart:convert' show 14 import 'dart:convert' show
15 LineSplitter, 15 LineSplitter,
16 UTF8, 16 UTF8,
17 Utf8Decoder; 17 Utf8Decoder;
18 18
19 import 'dart:async' show 19 import 'dart:async' show
20 Future; 20 Future;
21 21
22 import 'package:expect/expect.dart' show 22 import 'package:expect/expect.dart' show
23 Expect; 23 Expect;
24 24
25 import 'package:fletch_agent/messages.dart' show 25 import 'package:dartino_agent/messages.dart' show
26 PACKAGE_FILE_NAME; 26 PACKAGE_FILE_NAME;
27 27
28 import 'package:fletch_agent/agent_connection.dart' show 28 import 'package:dartino_agent/agent_connection.dart' show
29 AgentConnection, 29 AgentConnection,
30 AgentException, 30 AgentException,
31 VmData; 31 VmData;
32 32
33 import 'package:fletchc/src/guess_configuration.dart' show 33 import 'package:dartino_compiler/src/guess_configuration.dart' show
34 executable; 34 executable;
35 35
36 import '../fletchc/run.dart' show 36 import '../dartino_compiler/run.dart' show
37 export; 37 export;
38 38
39 typedef Future NoArgFuture(); 39 typedef Future NoArgFuture();
40 40
41 List<AgentTest> AGENT_TESTS = <AgentTest>[ 41 List<AgentTest> AGENT_TESTS = <AgentTest>[
42 new AgentLifeCycleTest(), 42 new AgentLifeCycleTest(),
43 new AgentUpgradeProtocolTest(), 43 new AgentUpgradeProtocolTest(),
44 new AgentUnsupportedCommandsTest(), 44 new AgentUnsupportedCommandsTest(),
45 ]; 45 ];
46 46
47 const String fletchVmExecutable = const String.fromEnvironment('fletch-vm'); 47 const String dartinoVmExecutable = const String.fromEnvironment('dartino-vm');
48 const String buildDirectory = 48 const String buildDirectory =
49 const String.fromEnvironment('test.dart.build-dir'); 49 const String.fromEnvironment('test.dart.build-dir');
50 const int SIGINT = 2; 50 const int SIGINT = 2;
51 51
52 abstract class AgentTest { 52 abstract class AgentTest {
53 final String name; 53 final String name;
54 final String outputDirectory; 54 final String outputDirectory;
55 final String host = '127.0.0.1'; 55 final String host = '127.0.0.1';
56 final int port; 56 final int port;
57 Process process; 57 Process process;
58 Future stdoutFuture; 58 Future stdoutFuture;
59 Future stderrFuture; 59 Future stderrFuture;
60 Map<String, String> environment; 60 Map<String, String> environment;
61 61
62 /// Each agent test must be assigned a unique port on which the fletch agent 62 /// Each agent test must be assigned a unique port on which the dartino agent
63 /// for the specific test is listening. The port must be unique since the 63 /// for the specific test is listening. The port must be unique since the
64 /// tests are run in parallel. 64 /// tests are run in parallel.
65 AgentTest(String name, int port) 65 AgentTest(String name, int port)
66 : this.name = name, 66 : this.name = name,
67 this.port = port, 67 this.port = port,
68 outputDirectory = '$buildDirectory/tests/$name' { 68 outputDirectory = '$buildDirectory/tests/$name' {
69 environment = { 69 environment = {
70 'FLETCH_VM': fletchVmExecutable, 70 'DARTINO_VM': dartinoVmExecutable,
71 'AGENT_IP': host, 71 'AGENT_IP': host,
72 'AGENT_PORT': port.toString(), 72 'AGENT_PORT': port.toString(),
73 'AGENT_PID_FILE': '$outputDirectory/fletch-agent.pid', 73 'AGENT_PID_FILE': '$outputDirectory/dartino-agent.pid',
74 'AGENT_LOG_FILE': '$outputDirectory/fletch-agent.log', 74 'AGENT_LOG_FILE': '$outputDirectory/dartino-agent.log',
75 'VM_LOG_DIR': outputDirectory, 75 'VM_LOG_DIR': outputDirectory,
76 'VM_PID_DIR': outputDirectory, 76 'VM_PID_DIR': outputDirectory,
77 'AGENT_UPGRADE_DRY_RUN': 'true', 77 'AGENT_UPGRADE_DRY_RUN': 'true',
78 }; 78 };
79 } 79 }
80 80
81 Future<Null> execute(); 81 Future<Null> execute();
82 82
83 void createOutputDirectory() { 83 void createOutputDirectory() {
84 new Directory(outputDirectory).createSync(recursive: true); 84 new Directory(outputDirectory).createSync(recursive: true);
85 } 85 }
86 86
87 void deleteOutputDirectory() { 87 void deleteOutputDirectory() {
88 new Directory(outputDirectory).deleteSync(recursive: true); 88 new Directory(outputDirectory).deleteSync(recursive: true);
89 } 89 }
90 90
91 Future<Null> createSnapshot() async { 91 Future<Null> createSnapshot() async {
92 // Find the path to the fletch agent script. 92 // Find the path to the dartino agent script.
93 Uri script = executable.resolve('../../pkg/fletch_agent/bin/agent.dart'); 93 Uri script = executable.resolve('../../pkg/dartino_agent/bin/agent.dart');
94 await export(script.toFilePath(), '$outputDirectory/fletch-agent.snapshot'); 94 await export(script.toFilePath(), '$outputDirectory/dartino-agent.snapshot') ;
95 print('Agent snapshot generated: $outputDirectory/fletch-agent.snapshot'); 95 print('Agent snapshot generated: $outputDirectory/dartino-agent.snapshot');
96 } 96 }
97 97
98 Future<Null> start() async { 98 Future<Null> start() async {
99 process = await Process.start( 99 process = await Process.start(
100 fletchVmExecutable, 100 dartinoVmExecutable,
101 ['$outputDirectory/fletch-agent.snapshot'], 101 ['$outputDirectory/dartino-agent.snapshot'],
102 environment: environment); 102 environment: environment);
103 stdoutFuture = process.stdout.transform(UTF8.decoder) 103 stdoutFuture = process.stdout.transform(UTF8.decoder)
104 .transform(new LineSplitter()) 104 .transform(new LineSplitter())
105 .listen(print).asFuture(); 105 .listen(print).asFuture();
106 stderrFuture = process.stderr.transform(UTF8.decoder) 106 stderrFuture = process.stderr.transform(UTF8.decoder)
107 .transform(new LineSplitter()) 107 .transform(new LineSplitter())
108 .listen(print).asFuture(); 108 .listen(print).asFuture();
109 print('Running agent with pid ${process.pid}'); 109 print('Running agent with pid ${process.pid}');
110 } 110 }
111 111
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
164 } 164 }
165 return tests; 165 return tests;
166 } 166 }
167 167
168 class AgentLifeCycleTest extends AgentTest { 168 class AgentLifeCycleTest extends AgentTest {
169 AgentLifeCycleTest() : super('testAgentLifeCycle', 20000); 169 AgentLifeCycleTest() : super('testAgentLifeCycle', 20000);
170 170
171 Future<Null> execute() async { 171 Future<Null> execute() async {
172 // Check the version. 172 // Check the version.
173 await withConnection((AgentConnection connection) async { 173 await withConnection((AgentConnection connection) async {
174 String version = await connection.fletchVersion(); 174 String version = await connection.dartinoVersion();
175 Expect.isTrue(version.length > 0, 'No version found.'); 175 Expect.isTrue(version.length > 0, 'No version found.');
176 }); 176 });
177 177
178 // Start a VM. 178 // Start a VM.
179 VmData data; 179 VmData data;
180 await withConnection((AgentConnection connection) async { 180 await withConnection((AgentConnection connection) async {
181 data = await connection.startVm(); 181 data = await connection.startVm();
182 Expect.isNotNull(data, 'Failed to spawn new fletch VM'); 182 Expect.isNotNull(data, 'Failed to spawn new dartino VM');
183 Expect.isNotNull(data.id, 'Null is not a valid VM pid'); 183 Expect.isNotNull(data.id, 'Null is not a valid VM pid');
184 Expect.notEquals(0, data.id, 'Invalid pid returned for VM'); 184 Expect.notEquals(0, data.id, 'Invalid pid returned for VM');
185 Expect.isNotNull(data.port, 'Null is not a valid VM port'); 185 Expect.isNotNull(data.port, 'Null is not a valid VM port');
186 Expect.notEquals(0, data.port, 'Invalid port returned for VM'); 186 Expect.notEquals(0, data.port, 'Invalid port returned for VM');
187 // This will not work on Windows, since the ProcessSignal argument 187 // This will not work on Windows, since the ProcessSignal argument
188 // is ignored and the fletch-vm is killed. 188 // is ignored and the dartino-vm is killed.
189 Expect.isTrue(await checkVmState(data.id, true), 'Fletch vm not running'); 189 Expect.isTrue(await checkVmState(data.id, true), 'Dartino vm not running') ;
190 print('Started 1. VM with id ${data.id} on port ${data.port}.'); 190 print('Started 1. VM with id ${data.id} on port ${data.port}.');
191 }); 191 });
192 192
193 // Stop the spawned vm. 193 // Stop the spawned vm.
194 await withConnection((AgentConnection connection) async { 194 await withConnection((AgentConnection connection) async {
195 await connection.stopVm(data.id); 195 await connection.stopVm(data.id);
196 Expect.isFalse(await checkVmState(data.id, false), 196 Expect.isFalse(await checkVmState(data.id, false),
197 'Fletch vm still running'); 197 'Dartino vm still running');
198 print('Stopped VM with id ${data.id} on port ${data.port}.'); 198 print('Stopped VM with id ${data.id} on port ${data.port}.');
199 }); 199 });
200 200
201 // Start a new vm. 201 // Start a new vm.
202 await withConnection((AgentConnection connection) async { 202 await withConnection((AgentConnection connection) async {
203 data = await connection.startVm(); 203 data = await connection.startVm();
204 Expect.isNotNull(data, 'Failed to spawn new fletch VM'); 204 Expect.isNotNull(data, 'Failed to spawn new dartino VM');
205 Expect.isNotNull(data.id, 'Null is not a valid VM pid'); 205 Expect.isNotNull(data.id, 'Null is not a valid VM pid');
206 Expect.notEquals(0, data.id, 'Invalid pid returned for VM'); 206 Expect.notEquals(0, data.id, 'Invalid pid returned for VM');
207 Expect.isNotNull(data.port, 'Null is not a valid VM port'); 207 Expect.isNotNull(data.port, 'Null is not a valid VM port');
208 Expect.notEquals(0, data.port, 'Invalid port returned for VM'); 208 Expect.notEquals(0, data.port, 'Invalid port returned for VM');
209 // This will not work on Windows, since the ProcessSignal argument 209 // This will not work on Windows, since the ProcessSignal argument
210 // is ignored and the fletch-vm is killed. 210 // is ignored and the dartino-vm is killed.
211 Expect.isTrue(await checkVmState(data.id, true), 'Fletch vm not running'); 211 Expect.isTrue(await checkVmState(data.id, true), 'Dartino vm not running') ;
212 print('Started 2. VM with id ${data.id} on port ${data.port}.'); 212 print('Started 2. VM with id ${data.id} on port ${data.port}.');
213 }); 213 });
214 214
215 // Kill the spawned vm using a signal. 215 // Kill the spawned vm using a signal.
216 await withConnection((AgentConnection connection) async { 216 await withConnection((AgentConnection connection) async {
217 await connection.signalVm(data.id, SIGINT); 217 await connection.signalVm(data.id, SIGINT);
218 Expect.isFalse(await checkVmState(data.id, false), 218 Expect.isFalse(await checkVmState(data.id, false),
219 'Fletch vm still running'); 219 'Dartino vm still running');
220 print('Killed VM with id ${data.id} on port ${data.port}.'); 220 print('Killed VM with id ${data.id} on port ${data.port}.');
221 }); 221 });
222 } 222 }
223 } 223 }
224 224
225 /// The AgentUpgrade test sends over mock binary data (as List<int> data), 225 /// The AgentUpgrade test sends over mock binary data (as List<int> data),
226 /// representing the new agent package that should be used to upgrade the 226 /// representing the new agent package that should be used to upgrade the
227 /// agent. 227 /// agent.
228 /// When running the test we start the fletch agent with AGENT_UPGRADE_DRY_RUN 228 /// When running the test we start the dartino agent with AGENT_UPGRADE_DRY_RUN
229 /// set so it won't actually do the dpkg. This allows us to test that the 229 /// set so it won't actually do the dpkg. This allows us to test that the
230 /// fletch agent correctly receives the mock data and writes it into the temp 230 /// dartino agent correctly receives the mock data and writes it into the temp
231 /// package file. 231 /// package file.
232 class AgentUpgradeProtocolTest extends AgentTest { 232 class AgentUpgradeProtocolTest extends AgentTest {
233 AgentUpgradeProtocolTest() : super('testAgentUpgrade', 20001); 233 AgentUpgradeProtocolTest() : super('testAgentUpgrade', 20001);
234 234
235 Future<Null> execute() async { 235 Future<Null> execute() async {
236 await withConnection((AgentConnection connection) async { 236 await withConnection((AgentConnection connection) async {
237 List<int> data = [72, 69, 76, 76, 79, 10]; 237 List<int> data = [72, 69, 76, 76, 79, 10];
238 await connection.upgradeAgent('1-test', data); 238 await connection.upgradeAgent('1-test', data);
239 List<int> readData = 239 List<int> readData =
240 await retry(100, () => new File(PACKAGE_FILE_NAME).readAsBytes()); 240 await retry(100, () => new File(PACKAGE_FILE_NAME).readAsBytes());
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
286 Future<bool> checkVmState(int vmId, bool expectRunning) { 286 Future<bool> checkVmState(int vmId, bool expectRunning) {
287 return retry(-1, () { 287 return retry(-1, () {
288 bool running = Process.killPid(vmId, ProcessSignal.SIGCONT); 288 bool running = Process.killPid(vmId, ProcessSignal.SIGCONT);
289 if (expectRunning != running) { 289 if (expectRunning != running) {
290 throw new Exception( 290 throw new Exception(
291 'Vm with id $vmId not' + (expectRunning ? 'running' : 'stopped')); 291 'Vm with id $vmId not' + (expectRunning ? 'running' : 'stopped'));
292 } 292 }
293 return running; 293 return running;
294 }); 294 });
295 } 295 }
OLDNEW
« no previous file with comments | « src/vm/weak_pointer.cc ('k') | tests/cc_tests/README.md » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698