netwerk/test/unit/socks_client_subprocess.js

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/netwerk/test/unit/socks_client_subprocess.js	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,42 @@
     1.4 +const CC = Components.Constructor;
     1.5 +const Cc = Components.classes;
     1.6 +const Ci = Components.interfaces;
     1.7 +
     1.8 +const BinaryInputStream = CC("@mozilla.org/binaryinputstream;1",
     1.9 +                             "nsIBinaryInputStream",
    1.10 +                             "setInputStream");
    1.11 +const ProtocolProxyService = CC("@mozilla.org/network/protocol-proxy-service;1",
    1.12 +                                "nsIProtocolProxyService");
    1.13 +var sts = Cc["@mozilla.org/network/socket-transport-service;1"]
    1.14 +          .getService(Ci.nsISocketTransportService);
    1.15 +
    1.16 +function launchConnection(socks_vers, socks_port, dest_host, dest_port, dns)
    1.17 +{
    1.18 +  var pi_flags = 0;
    1.19 +  if (dns == 'remote')
    1.20 +    pi_flags = Ci.nsIProxyInfo.TRANSPARENT_PROXY_RESOLVES_HOST;
    1.21 +  
    1.22 +  var pps = new ProtocolProxyService();
    1.23 +  var pi = pps.newProxyInfo(socks_vers, 'localhost', socks_port,
    1.24 +          pi_flags, -1, null);
    1.25 +  var trans = sts.createTransport(null, 0, dest_host, dest_port, pi);
    1.26 +  var input = trans.openInputStream(Ci.nsITransport.OPEN_BLOCKING,0,0);
    1.27 +  var output = trans.openOutputStream(Ci.nsITransport.OPEN_BLOCKING,0,0);
    1.28 +  var bin = new BinaryInputStream(input);
    1.29 +  var data = bin.readBytes(5);
    1.30 +  if (data == 'PING!') {
    1.31 +    print('client: got ping, sending pong.');
    1.32 +    output.write('PONG!', 5);
    1.33 +  } else {
    1.34 +    print('client: wrong data from server:', data);
    1.35 +    output.write('Error: wrong data received.', 27);
    1.36 +  }
    1.37 +  output.close();
    1.38 +}
    1.39 +
    1.40 +for each (var arg in arguments) {
    1.41 +  print('client: running test', arg);
    1.42 +  test = arg.split('|');
    1.43 +  launchConnection(test[0], parseInt(test[1]), test[2],
    1.44 +       parseInt(test[3]), test[4]);
    1.45 +}

mercurial