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

Side by Side Diff: webrtc/tools/rtcbot/main.js

Issue 2965593002: Move webrtc/{tools => rtc_tools} (Closed)
Patch Set: Adding back root changes Created 3 years, 5 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
OLDNEW
(Empty)
1 // Copyright (c) 2014 The WebRTC project authors. All Rights Reserved.
2 //
3 // Use of this source code is governed by a BSD-style license
4 // that can be found in the LICENSE file in the root of the source
5 // tree. An additional intellectual property rights grant can be found
6 // in the file PATENTS. All contributing project authors may
7 // be found in the AUTHORS file in the root of the source tree.
8 //
9 // This script loads all the test/* files into a very small context that
10 // only exposes a minimal set of functions that allows to register tests.
11 //
12 // Once all files are loaded it runs the specific test on the command line.
13 // If no arguments are given it lists all the registered tests.
14 //
15 // Note: the small context where the scripts are loaded is intended to keep
16 // nodejs-isms away from the test code and isolate implementation details away
17 // from them.
18 var fs = require('fs');
19 var vm = require('vm');
20 var Test = require('./test.js');
21
22 var testSuites = {};
23
24 function registerTest(name, func) {
25 testSuites[name] = func;
26 }
27
28 function registerBotTest(name, func, bots) {
29 registerTest(name, bootstrap);
30
31 function bootstrap(test) {
32 var callbacks = [];
33 for (var i = 0; i != bots.length; ++i)
34 callbacks.push(test.spawnBot.bind(test, "", bots[i]));
35
36 test.wait(callbacks, func.bind(test, test));
37 }
38 }
39
40 function loadTestFile(filename, doneCallback) {
41 var loadTestContext = {
42 setTimeout: setTimeout,
43 registerTest: registerTest,
44 registerBotTest: registerBotTest
45 };
46 var script = vm.createScript(fs.readFileSync(filename), filename);
47 script.runInNewContext(loadTestContext);
48 doneCallback();
49 }
50
51 function iterateOverTestFiles(foreachCallback, doneCallback) {
52 fs.readdir('test', function (error, list) {
53 function iterateNextFile() {
54 if (list.length === 0) {
55 doneCallback();
56 } else {
57 var filename = list.pop();
58 if (filename[0] === '.' || filename.slice(-3) !== '.js') {
59 // Skip hidden and non .js files on that directory.
60 iterateNextFile();
61 } else {
62 foreachCallback('test/' + filename, iterateNextFile);
63 }
64 }
65 }
66
67 if (error !== null) {
68 throw error;
69 }
70 iterateNextFile();
71 });
72 }
73
74 function runTest(testname) {
75 if (testname in testSuites) {
76 console.log("Running test: " + testname);
77 var test = new Test();
78 testSuites[testname](test);
79 } else {
80 console.log("Unknown test: " + testname);
81 }
82 }
83
84 function printUsage() {
85 console.log('Run as:\n $ '
86 + process.argv[0] + ' ' + process.argv[1]
87 + ' <testname>');
88 console.log('These are the existent ones:');
89 for (var testname in testSuites)
90 console.log(' ' + testname);
91 }
92
93 function main() {
94 // TODO(andresp): support multiple tests.
95 var testList = process.argv.slice(2);
96 if (testList.length === 1)
97 runTest(testList[0]);
98 else
99 printUsage();
100 }
101
102 iterateOverTestFiles(loadTestFile, main);
OLDNEW
« no previous file with comments | « webrtc/tools/rtcbot/botmanager.js ('k') | webrtc/tools/rtcbot/rtcBotReportVisualizer/index.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698