59 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/**
 | 
						|
 * @license
 | 
						|
 * Copyright Google Inc. All Rights Reserved.
 | 
						|
 *
 | 
						|
 * Use of this source code is governed by an MIT-style license that can be
 | 
						|
 * found in the LICENSE file at https://angular.io/license
 | 
						|
 */
 | 
						|
 | 
						|
'use strict';
 | 
						|
 | 
						|
var fs = require('fs');
 | 
						|
var http = require('http');
 | 
						|
var BrowserStackTunnel = require('browserstacktunnel-wrapper');
 | 
						|
 | 
						|
var HOSTNAME = 'localhost';
 | 
						|
var PORTS = [9876, 9877];
 | 
						|
var ACCESS_KEY = process.env.BROWSER_STACK_ACCESS_KEY;
 | 
						|
var READY_FILE = process.env.BROWSER_PROVIDER_READY_FILE;
 | 
						|
var TUNNEL_IDENTIFIER = process.env.TRAVIS_JOB_NUMBER;
 | 
						|
 | 
						|
// We need to start fake servers, otherwise the tunnel does not start.
 | 
						|
var fakeServers = [];
 | 
						|
var hosts = [];
 | 
						|
 | 
						|
PORTS.forEach(function(port) {
 | 
						|
  fakeServers.push(http.createServer(function() {}).listen(port));
 | 
						|
  hosts.push({
 | 
						|
    name: HOSTNAME,
 | 
						|
    port: port,
 | 
						|
    sslFlag: 0
 | 
						|
  });
 | 
						|
});
 | 
						|
 | 
						|
var tunnel = new BrowserStackTunnel({
 | 
						|
  key: ACCESS_KEY,
 | 
						|
  localIdentifier: TUNNEL_IDENTIFIER,
 | 
						|
  hosts: hosts
 | 
						|
});
 | 
						|
 | 
						|
console.log('Starting tunnel on ports', PORTS.join(', '));
 | 
						|
tunnel.start(function(error) {
 | 
						|
  if (error) {
 | 
						|
    console.error('Can not establish the tunnel', error);
 | 
						|
  } else {
 | 
						|
    console.log('Tunnel established.');
 | 
						|
    fakeServers.forEach(function(server) {
 | 
						|
      server.close();
 | 
						|
    });
 | 
						|
 | 
						|
    if (READY_FILE) {
 | 
						|
      fs.writeFile(READY_FILE, '');
 | 
						|
    }
 | 
						|
  }
 | 
						|
});
 | 
						|
 | 
						|
tunnel.on('error', function(error) {
 | 
						|
  console.error(error);
 | 
						|
});
 |