⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 httpservertestbase.java

📁 jetty SERVER連接資料庫用的軟體
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
            os.flush();            Thread.sleep(1000);            os.write((                    "abcdefghij"            ).getBytes());            os.flush();            Thread.sleep(1000);            os.write((                    "0987654321\r\n"            ).getBytes());            os.flush();                       int total=0;            int len=0;            byte[] buf=new byte[1024*64];                        while(len>=0)            {                Thread.sleep(500);                len=is.read(buf);                if (len>0)                    total+=len;            }                        assertTrue(total>(1024*256));            assertTrue(30000L>(System.currentTimeMillis()-start));                    }        finally        {            // Shut down            server.stop();            Thread.yield();        }    }    /**     * After several iterations, I generated some known bad fragment points.     *      * @throws Exception     */    public void testPipeline() throws Exception    {        Server server=startServer(new HelloWorldHandler());        try        {               for (int pipeline=1;pipeline<32;pipeline++)            {                   Socket client=new Socket(HOST,port);                client.setSoTimeout(5000);                OutputStream os=client.getOutputStream();                String request="";                for (int i=1;i<pipeline;i++)                    request+=                        "GET /data?writes=1&block=16&id="+i+" HTTP/1.1\r\n"+                        "host: "+HOST+":"+port+"\r\n"+                        "user-agent: testharness/1.0 (blah foo/bar)\r\n"+                        "accept-encoding: nothing\r\n"+                        "cookie: aaa=1234567890\r\n"+                        "\r\n";                                request+=                    "GET /data?writes=1&block=16 HTTP/1.1\r\n"+                    "host: "+HOST+":"+port+"\r\n"+                    "user-agent: testharness/1.0 (blah foo/bar)\r\n"+                    "accept-encoding: nothing\r\n"+                    "cookie: aaa=bbbbbb\r\n"+                    "Connection: close\r\n"+                    "\r\n";                os.write(request.getBytes());                os.flush();                LineNumberReader in = new LineNumberReader(new InputStreamReader(client.getInputStream()));                String line = in.readLine();                int count=0;                while (line!=null)                {                    if ("HTTP/1.1 200 OK".equals(line))                        count++;                    line = in.readLine();                }                assertEquals(pipeline,count);            }        }        finally        {            // Shut down            server.stop();            Thread.yield();        }    }    public void testStoppable() throws Exception    {        Server server=startServer(null);        server.setThreadPool(new BoundedThreadPool());        server.start();        Thread.sleep(1000);        server.stop();    }        /**     */    public void testRecycledWriters() throws Exception    {        Server server=startServer(new EchoHandler());                try        {               long start=System.currentTimeMillis();            Socket client=new Socket(HOST,port);            OutputStream os=client.getOutputStream();            InputStream is=client.getInputStream();            os.write((                    "POST /echo?charset=utf-8 HTTP/1.1\r\n"+                    "host: "+HOST+":"+port+"\r\n"+                    "content-type: text/plain; charset=utf-8\r\n"+                    "content-length: 10\r\n"+                    "\r\n").getBytes("iso-8859-1"));                        os.write((                    "123456789\n"            ).getBytes("utf-8"));            os.write((                    "POST /echo?charset=utf-8 HTTP/1.1\r\n"+                    "host: "+HOST+":"+port+"\r\n"+                    "content-type: text/plain; charset=utf-8\r\n"+                    "content-length: 10\r\n"+                    "\r\n"            ).getBytes("iso-8859-1"));            os.write((                    "abcdefghi\n"            ).getBytes("utf-8"));            String content="Wibble";            byte[] contentB=content.getBytes("utf-8");            os.write((                    "POST /echo?charset=utf-16 HTTP/1.1\r\n"+                    "host: "+HOST+":"+port+"\r\n"+                    "content-type: text/plain; charset=utf-8\r\n"+                    "content-length: "+contentB.length+"\r\n"+                    "connection: close\r\n"+                    "\r\n"            ).getBytes("iso-8859-1"));            os.write(contentB);            os.flush();                        ByteArrayOutputStream bout = new ByteArrayOutputStream();            IO.copy(is,bout);            byte[] b=bout.toByteArray();            String in = new String(b,0,b.length,"utf-8");            assertTrue(in.indexOf("123456789")>=0);            assertTrue(in.indexOf("abcdefghi")>=0);            assertTrue(in.indexOf("Wibble")<0);            in = new String(b,0,b.length,"utf-16");            assertTrue(in.indexOf("123456789")<0);            assertTrue(in.indexOf("abcdefghi")<0);            assertTrue(in.indexOf("Wibble")>=0);                    }        finally        {            // Shut down            server.stop();            Thread.yield();        }    }    /**     */    public void testRecycledReaders() throws Exception    {        Server server=startServer(new EchoHandler());                try        {               long start=System.currentTimeMillis();            Socket client=new Socket(HOST,port);            OutputStream os=client.getOutputStream();            InputStream is=client.getInputStream();            os.write((                    "POST /echo?charset=utf-8 HTTP/1.1\r\n"+                    "host: "+HOST+":"+port+"\r\n"+                    "content-type: text/plain; charset=utf-8\r\n"+                    "content-length: 10\r\n"+                    "\r\n").getBytes("iso-8859-1"));                        os.write((                    "123456789\n"            ).getBytes("utf-8"));            os.write((                    "POST /echo?charset=utf-8 HTTP/1.1\r\n"+                    "host: "+HOST+":"+port+"\r\n"+                    "content-type: text/plain; charset=utf-8\r\n"+                    "content-length: 10\r\n"+                    "\r\n"            ).getBytes("iso-8859-1"));            os.write((                    "abcdefghi\n"            ).getBytes("utf-8"));            String content="Wibble";            byte[] contentB=content.getBytes("utf-16");            os.write((                    "POST /echo?charset=utf-8 HTTP/1.1\r\n"+                    "host: "+HOST+":"+port+"\r\n"+                    "content-type: text/plain; charset=utf-16\r\n"+                    "content-length: "+contentB.length+"\r\n"+                    "connection: close\r\n"+                    "\r\n"            ).getBytes("iso-8859-1"));            os.write(contentB);            os.flush();                        String in = IO.toString(is);            assertTrue(in.indexOf("123456789")>=0);            assertTrue(in.indexOf("abcdefghi")>=0);            assertTrue(in.indexOf("Wibble")>=0);                    }        finally        {            // Shut down            server.stop();            Thread.yield();        }    }        /**     * Read entire response from the client. Close the output.     *      * @param client     *            Open client socket.     *      * @return The response string.     *      * @throws IOException     */    private static String readResponse(Socket client) throws IOException    {        BufferedReader br=null;        try        {            br=new BufferedReader(new InputStreamReader(client.getInputStream()));            StringBuffer sb=new StringBuffer();            String line;            while ((line=br.readLine())!=null)            {                sb.append(line);                sb.append('\n');            }            return sb.toString();        }        finally        {            if (br!=null)            {                br.close();            }        }    }    protected HttpServerTestBase(Connector connector)    {        _connector=connector;    }    /**     * Create the server.     *      * @param handler     *      * @return Newly created server, ready to start.     *      * @throws Exception     */    private Server startServer(Handler handler) throws Exception    {        Server server=new Server();        _connector.setPort(0);        server.setConnectors(new Connector[]        { _connector });        server.setHandler(handler);        server.start();        port=_connector.getLocalPort();        return server;    }    private void writeFragments(byte[] bytes, int[] points, StringBuffer message, OutputStream os) throws IOException, InterruptedException    {        int last=0;        // Write out the fragments        for (int j=0; j<points.length; ++j)        {            int point=points[j];            os.write(bytes,last,point-last);            last=point;            os.flush();            Thread.sleep(PAUSE);            // Update the log message            message.append(" point #"+(j+1)+": "+point);        }        // Write the last fragment        os.write(bytes,last,bytes.length-last);        os.flush();        Thread.sleep(PAUSE);    }    // ~ Inner Classes    // ----------------------------------------------------------    private static class EchoHandler extends AbstractHandler    {        // ~ Methods        // ------------------------------------------------------------        public void handle(String target, HttpServletRequest request, HttpServletResponse response, int dispatch) throws IOException, ServletException        {            Request base_request=(request instanceof Request)?(Request)request:HttpConnection.getCurrentConnection().getRequest();            base_request.setHandled(true);            if (request.getContentType()!=null)                response.setContentType(request.getContentType());            if (request.getParameter("charset")!=null)                response.setCharacterEncoding(request.getParameter("charset"));            else if (request.getCharacterEncoding()!=null)                response.setCharacterEncoding(request.getCharacterEncoding());                        PrintWriter writer=response.getWriter();            BufferedReader reader=request.getReader();            int count=0;            String line;                        while ((line=reader.readLine())!=null)            {                writer.print(line);                writer.print("\n");                count+=line.length();            }            if (count==0)                throw new IllegalStateException("no input recieved");                        // just to be difficult            reader.close();            writer.close();                        if (reader.read()>=0)                throw new IllegalStateException("Not closed");        }    }    // ----------------------------------------------------------    private static class HelloWorldHandler extends AbstractHandler    {        // ------------------------------------------------------------        public void handle(String target, HttpServletRequest request, HttpServletResponse response, int dispatch) throws IOException, ServletException        {            Request base_request=(request instanceof Request)?(Request)request:HttpConnection.getCurrentConnection().getRequest();            base_request.setHandled(true);            response.setStatus(200);            response.getOutputStream().print("Hello world\r\n");        }    }    // ----------------------------------------------------------    private static class DataHandler extends AbstractHandler    {        // ------------------------------------------------------------        public void handle(String target, HttpServletRequest request, HttpServletResponse response, int dispatch) throws IOException, ServletException        {            Request base_request=(request instanceof Request)?(Request)request:HttpConnection.getCurrentConnection().getRequest();            base_request.setHandled(true);            response.setStatus(200);                        InputStream in = request.getInputStream();            String input=IO.toString(in);                        String tmp = request.getParameter("writes");            int writes=Integer.parseInt(tmp==null?"10":tmp);            tmp = request.getParameter("block");            int block=Integer.parseInt(tmp==null?"10":tmp);            String encoding=request.getParameter("encoding");            String chars=request.getParameter("chars");                        String chunk = (input+"\u0a870123456789A\u0a87CDEFGHIJKLMNOPQRSTUVWXYZ\u0250bcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")                .substring(0,block);            response.setContentType("text/plain");            if (encoding==null)            {                byte[] bytes=chunk.getBytes("ISO-8859-1");                OutputStream out=response.getOutputStream();                for (int i=0;i<writes;i++)                    out.write(bytes);            }            else if ("true".equals(chars))            {                response.setCharacterEncoding(encoding);                Writer out=response.getWriter();                char[] c=chunk.toCharArray();                for (int i=0;i<writes;i++)                    out.write(c);            }            else             {                response.setCharacterEncoding(encoding);                Writer out=response.getWriter();                for (int i=0;i<writes;i++)                    out.write(chunk);            }                    }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -