| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (c) 2014 The Native Client Authors. All rights reserved. | 2 * Copyright (c) 2014 The Native Client Authors. All rights reserved. |
| 3 * Use of this source code is governed by a BSD-style license that can be | 3 * Use of this source code is governed by a BSD-style license that can be |
| 4 * found in the LICENSE file. | 4 * found in the LICENSE file. |
| 5 */ | 5 */ |
| 6 | 6 |
| 7 /* globals ASSERT_EQ, EXPECT_EQ, EXPECT_TRUE, chrometest */ | 7 /* globals ASSERT_EQ, EXPECT_EQ, EXPECT_TRUE, chrometest */ |
| 8 | 8 |
| 9 'use strict'; | 9 'use strict'; |
| 10 | 10 |
| (...skipping 22 matching lines...) Expand all Loading... |
| 33 }).then(function() { | 33 }).then(function() { |
| 34 return chrometest.proxyExtension('TCP Interface'); | 34 return chrometest.proxyExtension('TCP Interface'); |
| 35 }).then(function(ext) { | 35 }).then(function(ext) { |
| 36 self.tcp = ext; | 36 self.tcp = ext; |
| 37 return self.initFileSystem(); | 37 return self.initFileSystem(); |
| 38 }).then(function() { | 38 }).then(function() { |
| 39 return self.mkdir('/home'); | 39 return self.mkdir('/home'); |
| 40 }).then(function() { | 40 }).then(function() { |
| 41 return self.mkdir('/home/user'); | 41 return self.mkdir('/home/user'); |
| 42 }).then(function() { | 42 }).then(function() { |
| 43 return self.checkCommand('bash -c exit 0', 0); | 43 return self.checkCommand('bash -c exit', 0); |
| 44 }).then(function() { | 44 }).then(function() { |
| 45 if (self.params['latest'] === '1') | 45 if (self.params['latest'] === '1') |
| 46 return self.setLocalRepo(window.location.origin); | 46 return self.setLocalRepo(window.location.origin); |
| 47 }); | 47 }); |
| 48 }; | 48 }; |
| 49 | 49 |
| 50 DevEnvTest.prototype.tearDown = function() { | 50 DevEnvTest.prototype.tearDown = function() { |
| 51 var self = this; | 51 var self = this; |
| 52 return Promise.resolve().then(function() { | 52 return Promise.resolve().then(function() { |
| 53 self.devEnv.disconnect(); | 53 self.devEnv.disconnect(); |
| (...skipping 26 matching lines...) Expand all Loading... |
| 80 output += msg.output; | 80 output += msg.output; |
| 81 chrometest.info('stdout: ' + msg.output); | 81 chrometest.info('stdout: ' + msg.output); |
| 82 }); | 82 }); |
| 83 }).then(function(msg) { | 83 }).then(function(msg) { |
| 84 ASSERT_EQ(name, msg.name, 'expected message'); | 84 ASSERT_EQ(name, msg.name, 'expected message'); |
| 85 msg.output = output; | 85 msg.output = output; |
| 86 return msg; | 86 return msg; |
| 87 }); | 87 }); |
| 88 }; | 88 }; |
| 89 | 89 |
| 90 DevEnvTest.prototype.spawnCommand = function(cmd) { | 90 DevEnvTest.prototype.spawnCommand = function(cmd, env) { |
| 91 var self = this; | 91 var self = this; |
| 92 | 92 |
| 93 var env = ['HOME=/home/user', 'NACL_DATA_MOUNT_FLAGS=manifest=/manifest.txt']; | 93 if (env === undefined) { |
| 94 env = []; |
| 95 } |
| 96 env.push('HOME=/home/user'); |
| 97 env.push('NACL_DATA_MOUNT_FLAGS=manifest=/manifest.txt'); |
| 94 if (this.params['latest'] === '1') { | 98 if (this.params['latest'] === '1') { |
| 95 env.push('NACL_DEVENV_LOCAL=1'); | 99 env.push('NACL_DEVENV_LOCAL=1'); |
| 96 } | 100 } |
| 97 | 101 |
| 98 return Promise.resolve().then(function() { | 102 return Promise.resolve().then(function() { |
| 99 self.devEnv.postMessage({ | 103 self.devEnv.postMessage({ |
| 100 'name': 'nacl_spawn', | 104 'name': 'nacl_spawn', |
| 101 'nmf': 'bash.nmf', | 105 'nmf': 'bash.nmf', |
| 102 'argv': ['bash', '--login', '-c', cmd], | 106 'argv': ['bash', '--login', '-c', cmd], |
| 103 'cwd': '/home/user', | 107 'cwd': '/home/user', |
| (...skipping 15 matching lines...) Expand all Loading... |
| 119 'options': 0, | 123 'options': 0, |
| 120 }); | 124 }); |
| 121 return self.gatherStdoutUntil('nacl_waitpid_reply'); | 125 return self.gatherStdoutUntil('nacl_waitpid_reply'); |
| 122 }).then(function(msg) { | 126 }).then(function(msg) { |
| 123 ASSERT_EQ('nacl_waitpid_reply', msg.name); | 127 ASSERT_EQ('nacl_waitpid_reply', msg.name); |
| 124 ASSERT_EQ(pid, msg.pid); | 128 ASSERT_EQ(pid, msg.pid); |
| 125 return {status: msg.status, output: msg.output}; | 129 return {status: msg.status, output: msg.output}; |
| 126 }); | 130 }); |
| 127 }; | 131 }; |
| 128 | 132 |
| 129 DevEnvTest.prototype.runCommand = function(cmd) { | 133 DevEnvTest.prototype.runCommand = function(cmd, env) { |
| 130 var self = this; | 134 var self = this; |
| 131 var earlyOutput; | 135 var earlyOutput; |
| 132 chrometest.info('runCommand: ' + cmd); | 136 chrometest.info('runCommand: ' + cmd); |
| 133 return Promise.resolve().then(function() { | 137 return Promise.resolve().then(function() { |
| 134 return self.spawnCommand(cmd); | 138 return self.spawnCommand(cmd, env); |
| 135 }).then(function(msg) { | 139 }).then(function(msg) { |
| 136 earlyOutput = msg.output; | 140 earlyOutput = msg.output; |
| 137 return self.waitCommand(msg.pid); | 141 return self.waitCommand(msg.pid); |
| 138 }).then(function(msg) { | 142 }).then(function(msg) { |
| 139 msg.output = earlyOutput + msg.output; | 143 msg.output = earlyOutput + msg.output; |
| 140 return msg; | 144 return msg; |
| 141 }); | 145 }); |
| 142 }; | 146 }; |
| 143 | 147 |
| 144 DevEnvTest.prototype.checkCommand = function( | 148 DevEnvTest.prototype.checkCommand = function( |
| 145 cmd, expectedStatus, expectedOutput) { | 149 cmd, expectedStatus, expectedOutput, env) { |
| 146 if (expectedStatus === undefined) { | 150 if (expectedStatus === undefined) { |
| 147 expectedStatus = 0; | 151 expectedStatus = 0; |
| 148 } | 152 } |
| 149 var self = this; | 153 var self = this; |
| 150 return Promise.resolve().then(function() { | 154 return Promise.resolve().then(function() { |
| 151 return self.runCommand(cmd); | 155 return self.runCommand(cmd, env); |
| 152 }).then(function(result) { | 156 }).then(function(result) { |
| 153 ASSERT_EQ(expectedStatus, result.status, result.output); | 157 ASSERT_EQ(expectedStatus, result.status, result.output); |
| 154 if (expectedOutput !== undefined) { | 158 if (expectedOutput !== undefined) { |
| 155 ASSERT_EQ(expectedOutput, result.output); | 159 ASSERT_EQ(expectedOutput, result.output); |
| 156 } | 160 } |
| 157 }); | 161 }); |
| 158 }; | 162 }; |
| 159 | 163 |
| 160 DevEnvTest.prototype.sigint = function(pid) { | 164 DevEnvTest.prototype.sigint = function(pid) { |
| 161 this.devEnv.postMessage({ | 165 this.devEnv.postMessage({ |
| 162 'name': 'nacl_sigint', | 166 'name': 'nacl_sigint', |
| 163 }); | 167 }); |
| 164 }; | 168 }; |
| 165 | 169 |
| 166 DevEnvTest.prototype.installPackage = function(name) { | 170 DevEnvTest.prototype.installPackage = function(name) { |
| 167 var cmd = 'pkg install -f -y ' + name; | 171 var cmd = 'pkg install -f -y ' + name; |
| 168 chrometest.info(cmd); | 172 chrometest.info(cmd); |
| 169 return this.checkCommand(cmd, 0); | 173 return this.checkCommand(cmd, 0); |
| 170 }; | 174 }; |
| 171 | 175 |
| 172 DevEnvTest.prototype.installDefaultPackages = function(name) { | 176 DevEnvTest.prototype.installDefaultPackages = function(name) { |
| 173 var cmd = 'bash /mnt/http/install-base-packages.sh'; | 177 var env = ['INSTALL_BASE_PACKAGES=1']; |
| 174 chrometest.info(cmd); | 178 chrometest.info('install base packages'); |
| 175 return this.checkCommand(cmd, 0); | 179 return this.checkCommand('exit', 0, undefined, env); |
| 176 }; | 180 }; |
| 177 | 181 |
| 178 | |
| 179 DevEnvTest.prototype.checkCommandReLines = function( | 182 DevEnvTest.prototype.checkCommandReLines = function( |
| 180 cmd, expectedStatus, expectedOutput) { | 183 cmd, expectedStatus, expectedOutput) { |
| 181 var self = this; | 184 var self = this; |
| 182 return Promise.resolve().then(function() { | 185 return Promise.resolve().then(function() { |
| 183 return self.runCommand(cmd); | 186 return self.runCommand(cmd); |
| 184 }).then(function(result) { | 187 }).then(function(result) { |
| 185 ASSERT_EQ(expectedStatus, result.status, result.output); | 188 ASSERT_EQ(expectedStatus, result.status, result.output); |
| 186 var resultLines = result.output.split('\n'); | 189 var resultLines = result.output.split('\n'); |
| 187 // Trim the last line if empty to reduce boilerplate. | 190 // Trim the last line if empty to reduce boilerplate. |
| 188 if (resultLines[resultLines.length - 1] === '') { | 191 if (resultLines[resultLines.length - 1] === '') { |
| (...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 403 * Close a TCP connection. | 406 * Close a TCP connection. |
| 404 * @param {number} socket The TCP socket. | 407 * @param {number} socket The TCP socket. |
| 405 * @returns {Promise} | 408 * @returns {Promise} |
| 406 */ | 409 */ |
| 407 DevEnvTest.prototype.tcpClose = function(socket) { | 410 DevEnvTest.prototype.tcpClose = function(socket) { |
| 408 return this.tcpExec_({ | 411 return this.tcpExec_({ |
| 409 name: 'tcp_close', | 412 name: 'tcp_close', |
| 410 socket: socket | 413 socket: socket |
| 411 }); | 414 }); |
| 412 }; | 415 }; |
| OLD | NEW |