某次壓力測試的代碼段

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.testng.AbstractTestNGSpringContextTests;
import org.springframework.test.context.transaction.TransactionConfiguration;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;

import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import
@ContextConfiguration(locations = {
        "classpath:conf/applicationContext.xml",
        "classpath:conf/spring/spring-db-source-test.xml",
        "classpath*:/conf/spring/spring-dal.xml",
        "classpath*:/conf/spring/spring-dal-shard.xml",
})
@TransactionConfiguration(defaultRollback = true)
public class ReceiptSequenceNumberGenServiceImplTest extends AbstractTestNGSpringContextTests {

    Logger logger = LoggerFactory.getLogger(getClass());

    @Autowired
    private ReceiptSequenceNumberGenService receiptSequenceNumberGenService;

    @Autowired
    private IExpressBillService expressBillService;

    private static ConcurrentLinkedQueue<String> queue = new ConcurrentLinkedQueue<String>();

    @BeforeTest
    public void before() {

    }

    @Test
    public void testSeqNumber() throws Exception {

        final ExecutorService executorService = Executors.newFixedThreadPool(5);

        final ExecutorService executorService2 = Executors.newFixedThreadPool(250);

        CountDownLatch cd = new CountDownLatch(1);

        Runnable t1 = new Runnable() {
            @Override
            public void run() {
                while (true) {
                    String seq = receiptSequenceNumberGenService.genSequenceNumberWithReceiptType("RKDD");
//                    System.out.println("###" + seq);
                    queue.add(seq);
                    try {
                        Thread.currentThread().sleep(100);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        };

        Runnable t2 = new Runnable() {
            @Override
            public void run() {
                while (true) {
                    String seq = receiptSequenceNumberGenService.genSequenceNumberWithReceiptType("RKDD");
//                    System.out.println("###" + seq);
                    queue.add(seq);
                    try {
                        Thread.currentThread().sleep(100);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        };

        Runnable t3 = new Runnable() {
            @Override
            public void run() {
                while (true) {
                    String seq = receiptSequenceNumberGenService.genSequenceNumberWithReceiptType("RKDD");
//                    System.out.println("###" + seq);
                    queue.add(seq);
                    try {
                        Thread.currentThread().sleep(100);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        };


        Runnable t4 = new Runnable() {
            @Override
            public void run() {
                while (true) {
                    String seq = receiptSequenceNumberGenService.genSequenceNumberWithReceiptType("RKDD");
//                    System.out.println("###" + seq);
                    queue.add(seq);
                    try {
                        Thread.currentThread().sleep(100);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        };

        Runnable t5 = new Runnable() {
            @Override
            public void run() {
                while (true) {
                    String seq = receiptSequenceNumberGenService.genSequenceNumberWithReceiptType("RKDD");
//                    System.out.println("###" + seq);
                    queue.add(seq);
                    try {
                        Thread.currentThread().sleep(100);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        };

        Runnable t6 = new Runnable() {
            @Override
            public void run() {
                while (true) {
                    String seq = receiptSequenceNumberGenService.genSequenceNumberWithReceiptType("RKDD");
//                    System.out.println("###" + seq);
                    queue.add(seq);
                    try {
                        Thread.currentThread().sleep(100);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        };


        Runnable t7 = new Runnable() {
            @Override
            public void run() {
                while (true) {
                    String seq = receiptSequenceNumberGenService.genSequenceNumberWithReceiptType("RKDD");
//                    System.out.println("###" + seq);
                    queue.add(seq);
                    try {
                        Thread.currentThread().sleep(100);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        };

        Runnable t8 = new Runnable() {
            @Override
            public void run() {
                while (true) {
                    String seq = receiptSequenceNumberGenService.genSequenceNumberWithReceiptType("RKDD");
//                    System.out.println("###" + seq);
                    queue.add(seq);
                    try {
                        Thread.currentThread().sleep(100);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        };


        executorService.execute(t1);
        executorService.execute(t2);
        executorService.execute(t3);
        executorService.execute(t4);
        executorService.execute(t5);
        executorService.execute(t6);
        executorService.execute(t7);
        executorService.execute(t8);

        executorService2.execute(new TestRunable(receiptSequenceNumberGenService));

        cd.await();

        executorService.shutdown();

        executorService2.shutdown();


    }

    private static class TestRunable implements Runnable {

        private ReceiptSequenceNumberGenService receiptSequenceNumberGenService;

        public TestRunable(ReceiptSequenceNumberGenService receiptSequenceNumberGenService) {

//            System.out.println(seq);
            this.receiptSequenceNumberGenService = receiptSequenceNumberGenService;
        }

        @Override
        public void run() {
//            assert (receiptSequenceNumberGenService.updateDuplicateData(seq) == true);
//            assert ();
            while (true) {

                String seq = queue.poll();
                if (seq == null) {
                    try {
                        Thread.sleep(10);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                } else {
                    assert (receiptSequenceNumberGenService.updateDuplicateData(seq));
                }
            }

        }
    }

    @Test
    public void testExpressBill() throws InterruptedException {


        String seq = expressBillService.generateExpressBillNo();

        System.out.println("seq:"+seq);

        final ExecutorService executorService = Executors.newFixedThreadPool(5);

        final ExecutorService executorService2 = Executors.newFixedThreadPool(250);

        CountDownLatch cd = new CountDownLatch(1);

        Runnable t1 = new Runnable() {
            @Override
            public void run() {
                while (true) {
                    String seq = expressBillService.generateExpressBillNo();
//                    System.out.println("###" + seq);
                    queue.add(seq);
                    try {
                        Thread.currentThread().sleep(5);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        };

        Runnable t2 = new Runnable() {
            @Override
            public void run() {
                while (true) {
                    String seq = expressBillService.generateExpressBillNo();
//                    System.out.println("###" + seq);
                    queue.add(seq);
                    try {
                        Thread.currentThread().sleep(5);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        };

        Runnable t3 = new Runnable() {
            @Override
            public void run() {
                while (true) {
                    String seq = expressBillService.generateExpressBillNo();
//                    System.out.println("###" + seq);
                    queue.add(seq);
                    try {
                        Thread.currentThread().sleep(5);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        };


        Runnable t4 = new Runnable() {
            @Override
            public void run() {
                while (true) {
                    String seq = expressBillService.generateExpressBillNo();
//                    System.out.println("###" + seq);
                    queue.add(seq);
                    try {
                        Thread.currentThread().sleep(5);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        };

        Runnable t5 = new Runnable() {
            @Override
            public void run() {
                while (true) {
                    String seq = expressBillService.generateExpressBillNo();
//                    System.out.println("###" + seq);
                    queue.add(seq);
                    try {
                        Thread.currentThread().sleep(5);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        };

        Runnable t6 = new Runnable() {
            @Override
            public void run() {
                while (true) {
                    String seq = expressBillService.generateExpressBillNo("REWQ");
//                    System.out.println("###" + seq);
                    queue.add(seq);
                    try {
                        Thread.currentThread().sleep(5);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        };


        Runnable t7 = new Runnable() {
            @Override
            public void run() {
                while (true) {
                    String seq = expressBillService.generateExpressBillNo();
//                    System.out.println("###" + seq);
                    queue.add(seq);
                    try {
                        Thread.currentThread().sleep(5);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        };

        Runnable t8 = new Runnable() {
            @Override
            public void run() {
                while (true) {
                    String seq = expressBillService.generateExpressBillNo();
//                    System.out.println("###" + seq);
                    queue.add(seq);
                    try {
                        Thread.currentThread().sleep(5);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        };


        executorService.execute(t1);
        executorService.execute(t2);
        executorService.execute(t3);
        executorService.execute(t4);
        executorService.execute(t5);
        executorService.execute(t6);
        executorService.execute(t7);
        executorService.execute(t8);

        executorService2.execute(new TestRunable2(receiptSequenceNumberGenService));

        cd.await();

        executorService.shutdown();

        executorService2.shutdown();


    }


    private static class TestRunable2 implements Runnable {

        private ReceiptSequenceNumberGenService receiptSequenceNumberGenService;

        public TestRunable2(ReceiptSequenceNumberGenService receiptSequenceNumberGenService) {

//            System.out.println(seq);
            this.receiptSequenceNumberGenService = receiptSequenceNumberGenService;
        }

        @Override
        public void run() {
//            assert (receiptSequenceNumberGenService.updateDuplicateData(seq) == true);
//            assert ();
            while (true) {

                String seq = queue.poll();
                if (seq == null) {
                    try {
                        Thread.sleep(10);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                } else {
                    assert (receiptSequenceNumberGenService.updateDuplicateData(seq) == true);
                }
            }

        }
    }



    @Test
    public void testGenID() throws Exception {

        final ExecutorService executorService = Executors.newFixedThreadPool(5);

        final ExecutorService executorService2 = Executors.newFixedThreadPool(250);

        CountDownLatch cd = new CountDownLatch(1);

        Runnable t1 = new Runnable() {
            @Override
            public void run() {
                while (true) {
                    Long seq = receiptSequenceNumberGenService.genReceiptPrimaryKey("RKDD");
//                    System.out.println("###" + seq);
                    queue.add(seq.toString());
                    try {
                        Thread.currentThread().sleep(100);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        };

        Runnable t2 = new Runnable() {
            @Override
            public void run() {
                while (true) {
                    Long seq = receiptSequenceNumberGenService.genReceiptPrimaryKey("RKDD");
//                    System.out.println("###" + seq);
                    queue.add(seq.toString());
                    try {
                        Thread.currentThread().sleep(100);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        };

        Runnable t3 = new Runnable() {
            @Override
            public void run() {
                while (true) {
                    Long seq = receiptSequenceNumberGenService.genReceiptPrimaryKey("RKDD");
//                    System.out.println("###" + seq);
                    queue.add(seq.toString());
                    try {
                        Thread.currentThread().sleep(100);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        };


        Runnable t4 = new Runnable() {
            @Override
            public void run() {
                while (true) {
                    Long seq = receiptSequenceNumberGenService.genReceiptPrimaryKey("RKDD");
//                    System.out.println("###" + seq);
                    queue.add(seq.toString());
                    try {
                        Thread.currentThread().sleep(100);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        };

        Runnable t5 = new Runnable() {
            @Override
            public void run() {
                while (true) {
                    Long seq = receiptSequenceNumberGenService.genReceiptPrimaryKey("RKDD");
//                    System.out.println("###" + seq);
                    queue.add(seq.toString());
                    try {
                        Thread.currentThread().sleep(100);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        };

        Runnable t6 = new Runnable() {
            @Override
            public void run() {
                while (true) {
                    Long seq = receiptSequenceNumberGenService.genReceiptPrimaryKey("RKDD");
//                    System.out.println("###" + seq);
                    queue.add(seq.toString());
                    try {
                        Thread.currentThread().sleep(100);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        };


        Runnable t7 = new Runnable() {
            @Override
            public void run() {
                while (true) {
                    Long seq = receiptSequenceNumberGenService.genReceiptPrimaryKey("RKDD");
//                    System.out.println("###" + seq);
                    queue.add(seq.toString());
                    try {
                        Thread.currentThread().sleep(100);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        };

        Runnable t8 = new Runnable() {
            @Override
            public void run() {
                while (true) {
                    Long seq = receiptSequenceNumberGenService.genReceiptPrimaryKey("RKDD");
//                    System.out.println("###" + seq);
                    queue.add(seq.toString());
                    try {
                        Thread.currentThread().sleep(100);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        };


        executorService.execute(t1);
        executorService.execute(t2);
        executorService.execute(t3);
        executorService.execute(t4);
        executorService.execute(t5);
        executorService.execute(t6);
        executorService.execute(t7);
        executorService.execute(t8);

        executorService2.execute(new TestRunable(receiptSequenceNumberGenService));

        cd.await();

        executorService.shutdown();

        executorService2.shutdown();


    }
}
發佈了122 篇原創文章 · 獲贊 125 · 訪問量 32萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章