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

📄 loadtest.java

📁 精通tomcat书籍原代码,希望大家共同学习
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
            tmp.setMessage(((ByteMessage)msg).getMessage());            msg = tmp;            tmp = null;        }                        bytesReceived+=((LoadMessage)msg).getMessage().length;        messagesReceived++;        if ( (messagesReceived%statsInterval)==0 || (messagesReceived==msgCount)) {            float bytes = (float)(((LoadMessage)msg).getMessage().length*messagesReceived);            float seconds = ((float)(System.currentTimeMillis()-receiveStart)) / 1000f;            log.info("****RECEIVE STATS-"+Thread.currentThread().getName()+"*****"+                     "\n\tMessage count :"+(long)messagesReceived+                     "\n\tTotal bytes   :"+(long)bytes+                     "\n\tTime since 1st:"+seconds+" seconds"+                     "\n\tBytes/second  :"+(bytes/seconds)+                     "\n\tMBytes/second :"+(bytes/seconds/1024f/1024f));        }    }            public static void printArray(byte[] data) {        System.out.print("{");        for (int i=0; i<data.length; i++ ) {            System.out.print(data[i]);            System.out.print(",");        }        System.out.println("} size:"+data.length);    }            //public static class LoadMessage extends ByteMessage implements Serializable  {    public static class LoadMessage extends ByteMessage  implements Serializable {                public static byte[] outdata = new byte[size];        public static Random r = new Random(System.currentTimeMillis());        public static int getMessageSize (LoadMessage msg) {            int messageSize = msg.getMessage().length;            if ( ((Object)msg) instanceof ByteMessage ) return messageSize;            try {                messageSize  = XByteBuffer.serialize(new LoadMessage()).length;                log.info("Average message size:" + messageSize + " bytes");            } catch (Exception x) {                log.error("Unable to calculate test message size.", x);            }            return messageSize;        }                protected byte[] message = getMessage();        protected int nr = -1;        static {            r.nextBytes(outdata);        }                public LoadMessage() {                    }                public LoadMessage(int nr) {            this.nr = nr;        }                public int getMsgNr() {            return XByteBuffer.toInt(getMessage(),0);        }                public void setMsgNr(int nr) {            XByteBuffer.toBytes(nr,getMessage(),0);        }                public byte[] getMessage() {            if ( message == null ) {                byte[] data = new byte[size+4];                XByteBuffer.toBytes(nr,data,0);                System.arraycopy(outdata, 0, data, 4, outdata.length);                this.message = data;            }            return message;        }                public void setMessage(byte[] data) {            this.message = data;        }    }        public static void usage() {        System.out.println("Tribes Load tester.");        System.out.println("The load tester can be used in sender or received mode or both");        System.out.println("Usage:\n\t"+                           "java LoadTest [options]\n\t"+                           "Options:\n\t\t"+                           "[-mode receive|send|both]  \n\t\t"+                           "[-debug]  \n\t\t"+                           "[-count messagecount]  \n\t\t"+                           "[-stats statinterval]  \n\t\t"+                           "[-pause nrofsecondstopausebetweensends]  \n\t\t"+                           "[-threads numberofsenderthreads]  \n\t\t"+                           "[-size messagesize]  \n\t\t"+                           "[-sendoptions channeloptions]  \n\t\t"+                           "[-break (halts execution on exception)]\n"+                           "\tChannel options:"+                           ChannelCreator.usage()+"\n\n"+                           "Example:\n\t"+                           "java LoadTest -port 4004\n\t"+                           "java LoadTest -bind 192.168.0.45 -port 4005\n\t"+                           "java LoadTest -bind 192.168.0.45 -port 4005 -mbind 192.168.0.45 -count 100 -stats 10\n");    }        public static void main(String[] args) throws Exception {        boolean send = true;        boolean debug = false;        long pause = 0;        int count = 1000000;        int stats = 10000;        boolean breakOnEx = false;        int threads = 1;        int channelOptions = Channel.SEND_OPTIONS_DEFAULT;        if ( args.length == 0 ) {            args = new String[] {"-help"};        }        for (int i = 0; i < args.length; i++) {            if ("-threads".equals(args[i])) {                threads = Integer.parseInt(args[++i]);            } else if ("-count".equals(args[i])) {                count = Integer.parseInt(args[++i]);                System.out.println("Sending "+count+" messages.");            } else if ("-pause".equals(args[i])) {                pause = Long.parseLong(args[++i])*1000;            } else if ("-break".equals(args[i])) {                breakOnEx = true;            } else if ("-stats".equals(args[i])) {                stats = Integer.parseInt(args[++i]);                System.out.println("Stats every "+stats+" message");            } else if ("-sendoptions".equals(args[i])) {                channelOptions = Integer.parseInt(args[++i]);                System.out.println("Setting send options to "+channelOptions);            } else if ("-size".equals(args[i])) {                size = Integer.parseInt(args[++i])-4;                System.out.println("Message size will be:"+(size+4)+" bytes");            } else if ("-mode".equals(args[i])) {                if ( "receive".equals(args[++i]) ) send = false;            } else if ("-debug".equals(args[i])) {                debug = true;            } else if ("-help".equals(args[i]))             {                usage();                System.exit(1);            }        }                        ManagedChannel channel = (ManagedChannel)ChannelCreator.createChannel(args);                LoadTest test = new LoadTest(channel,send,count,debug,pause,stats,breakOnEx);        test.channelOptions = channelOptions;        LoadMessage msg = new LoadMessage();                messageSize = LoadMessage.getMessageSize(msg);        channel.addChannelListener(test);        channel.addMembershipListener(test);        channel.start(channel.DEFAULT);        Runtime.getRuntime().addShutdownHook(new Shutdown(channel));        while ( threads > 1 ) {            Thread t = new Thread(test);            t.setDaemon(true);            t.start();            threads--;            test = new LoadTest(channel,send,count,debug,pause,stats,breakOnEx);        }        test.run();                System.out.println("System test complete, sleeping to let threads finish.");        Thread.sleep(60*1000*60);    }         public static class Shutdown extends Thread {        ManagedChannel channel = null;        public Shutdown(ManagedChannel channel) {            this.channel = channel;        }                public void run() {            System.out.println("Shutting down...");            SystemExit exit = new SystemExit(5000);            exit.setDaemon(true);            exit.start();            try {                channel.stop(channel.DEFAULT);                            }catch ( Exception x ) {                x.printStackTrace();            }            System.out.println("Channel stopped.");        }    }    public static class SystemExit extends Thread {        private long delay;        public SystemExit(long delay) {            this.delay = delay;        }        public void run () {            try {                Thread.sleep(delay);            }catch ( Exception x ) {                x.printStackTrace();            }            System.exit(0);        }    }    }

⌨️ 快捷键说明

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