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);
};