package com.iwebpp.middleware.test; import android.util.Log; import com.iwebpp.middleware.Connect; import com.iwebpp.node.NodeContext; import com.iwebpp.node.NodeContext.TimeoutListener; import com.iwebpp.node.http.ClientRequest.responseListener; import com.iwebpp.node.http.HttpServer; import com.iwebpp.node.http.HttpServer.requestListener; import com.iwebpp.node.http.HttppServer; import com.iwebpp.node.http.IncomingMessage; import com.iwebpp.node.http.ServerResponse; import com.iwebpp.node.http.http; import com.iwebpp.node.http.httpp; import junit.framework.TestCase; public final class ConnectTest extends TestCase { private static final String TAG = "ConnectTest"; private NodeContext ctx; // TODO are these supposed to communicate with each other? public void testStack() throws Exception { Connect stack = new Connect(); // append timestamp header stack.use(new requestListener(){ @Override public void onRequest(IncomingMessage req, ServerResponse res) throws Exception { res.setHeader("timestamp", String.valueOf(System.currentTimeMillis())); } }); // set status code stack.use(new requestListener(){ @Override public void onRequest(IncomingMessage req, ServerResponse res) throws Exception { res.writeHead(200); res.end(null, null, null); } }); // set un-reachable header stack.use(new requestListener(){ @Override public void onRequest(IncomingMessage req, ServerResponse res) throws Exception { res.setHeader("unreachable", "yes"); } }); // route on path stack.use("/route", new requestListener(){ @Override public void onRequest(IncomingMessage req, ServerResponse res) throws Exception { res.setHeader("route", req.url()); res.end("route", "utf-8", null); } }); HttpServer srv = http.createServer(ctx, stack); HttppServer srvpp = httpp.createServer(ctx, stack); int port = 5188; srv.listen(port, "0.0.0.0"); Log.d(TAG, "http server listen on "+port); srvpp.listen(port, "0.0.0.0"); Log.d(TAG, "httpp server listen on "+port); // request on /, /route ctx.setTimeout(new TimeoutListener(){ @Override public void onTimeout() throws Exception { http.get(ctx, "http://localhost:5188/", new responseListener(){ @Override public void onResponse(IncomingMessage res) throws Exception { Log.d(TAG, "got http response on " + res.getPath() +", headers:"+res.headers()); } }); httpp.get(ctx, "http://localhost:5188/", new responseListener(){ @Override public void onResponse(IncomingMessage res) throws Exception { Log.d(TAG, "got httpp response on " + res.getPath() +", headers:"+res.headers()); } }); http.get(ctx, "http://localhost:5188/route", new responseListener(){ @Override public void onResponse(IncomingMessage res) throws Exception { Log.d(TAG, "got http response on " + res.getPath() +", headers:"+res.headers()); } }); httpp.get(ctx, "http://localhost:5188/route", new responseListener(){ @Override public void onResponse(IncomingMessage res) throws Exception { Log.d(TAG, "got httpp response on " + res.getPath() +", headers:"+res.headers()); } }); } }, 2000); } public void testNest() throws Exception { final Connect stack = new Connect(); final Connect stack1 = new Connect(); // append timestamp header stack1.use("/nest", new requestListener(){ @Override public void onRequest(IncomingMessage req, ServerResponse res) throws Exception { res.setHeader("timestamp2", ""+System.currentTimeMillis()); res.setHeader("ppath", stack1.getParent()); res.end("nest", "utf-8", null); } }); stack.use("/nest/nest", stack1); stack.use("/nest", stack1); stack.use(stack1); HttpServer srv = http.createServer(ctx, stack); HttppServer srvpp = httpp.createServer(ctx, stack); int port = 5189; srv.listen(port, "0.0.0.0"); Log.d(TAG, "http server listen on "+port); srvpp.listen(port, "0.0.0.0"); Log.d(TAG, "httpp server listen on "+port); // request on /, /route ctx.setTimeout(new TimeoutListener(){ @Override public void onTimeout() throws Exception { http.get(ctx, "http://localhost:5189/", new responseListener(){ @Override public void onResponse(IncomingMessage res) throws Exception { Log.d(TAG, String.format("got http response on %s, headers: %s", res.getPath(), res.headers())); } }); httpp.get(ctx, "http://localhost:5189/", new responseListener(){ @Override public void onResponse(IncomingMessage res) throws Exception { Log.d(TAG, String.format("got httpp response on %s, headers: %s", res.getPath(), res.headers())); } }); http.get(ctx, "http://localhost:5189/nest", new responseListener(){ @Override public void onResponse(IncomingMessage res) throws Exception { Log.d(TAG, String.format("got http response on %s, headers: %s", res.getPath(), res.headers())); } }); httpp.get(ctx, "http://localhost:5189/nest", new responseListener(){ @Override public void onResponse(IncomingMessage res) throws Exception { Log.d(TAG, String.format("got httpp response on %s, headers: %s", res.getPath(), res.headers())); } }); http.get(ctx, "http://localhost:5189/nest/nest", new responseListener(){ @Override public void onResponse(IncomingMessage res) throws Exception { Log.d(TAG, String.format("got http response on %s, headers: %s", res.getPath(), res.headers())); } }); httpp.get(ctx, "http://localhost:5189/nest/nest", new responseListener(){ @Override public void onResponse(IncomingMessage res) throws Exception { Log.d(TAG, String.format("got httpp response on %s, headers: %s", res.getPath(), res.headers())); } }); http.get(ctx, "http://localhost:5189/nest/nest/nest", new responseListener(){ @Override public void onResponse(IncomingMessage res) throws Exception { Log.d(TAG, String.format("got http response on %s, headers: %s", res.getPath(), res.headers())); } }); httpp.get(ctx, "http://localhost:5189/nest/nest/nest", new responseListener(){ @Override public void onResponse(IncomingMessage res) throws Exception { Log.d(TAG, String.format("got httpp response on %s, headers: %s", res.getPath(), res.headers())); } }); http.get(ctx, "http://localhost:5189/nest/nest/nest/nest", new responseListener(){ @Override public void onResponse(IncomingMessage res) throws Exception { Log.d(TAG, String.format("got http response on %s, headers: %s", res.getPath(), res.headers())); } }); httpp.get(ctx, "http://localhost:5189/nest/nest/nest/nest", new responseListener(){ @Override public void onResponse(IncomingMessage res) throws Exception { Log.d(TAG, String.format("got httpp response on %s, headers: %s", res.getPath(), res.headers())); } }); } }, 2000); } @Override protected void setUp() throws Exception { super.setUp(); this.ctx = new NodeContext(); } }