var proxy       = require("../proxy.js"),
    proxyTester = require("proxy-eval"),
    WebSocket   = require("ws");

//start a new proxy at port 8995, with websocket port 8996
var SOCKET_PORT = 8996,
    PROXY_PORT  = 8995;

new proxy.proxyServer({
    type       :"http",
    port       :PROXY_PORT,
    socketPort :SOCKET_PORT,
    silent     :true
});


exports.avalibility = function(test){
    test.expect(2);
    var updateCount = 0;

    //test web socket
    setTimeout(function(){
        var ws = new WebSocket('ws://127.0.0.1:' + SOCKET_PORT , {
           protocolVersion: 8
        });
         
        ws.on('open', function open(){});
        ws.on('close', function close(){});
        ws.on('message', function message(data, flags) {
            try{
                var jsonData = JSON.parse(data);
                jsonData.type == "update" && ++updateCount;
            }catch(e){}
        });
        setTimeout(function(){
            test.ok(updateCount >= 4,"web socket message count of type 'update' ");
            test.done();
            setTimeout(function(){
                process.exit();
            },1000);
        },10*1000);

    },1000);

    //test the basic availibility of proxy server
    setTimeout(function(){
        proxyTester.test({proxy : 'http://127.0.0.1:8995',reqTimeout:4500} ,function(results){
            var successCount = 0;
            results.map(function(item){
                item.success && ++successCount;
            });

            var ifPassed = (true || results.length == successCount);
            if(!ifPassed){
                proxyTester.printResult(results);
            }
            test.ok(ifPassed, "availibility test failed");
        });
    },1000);
};