国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

ContiPerf:: 更為優雅和方便的單元壓力測試工具。

_Zhao / 3572人閱讀

摘要:概述是一個輕量級的單元測試工具,基于二次開發,使用它基于注解的方式,快速在本地進行單元壓測并提供詳細的報告。當和都有指定時,以執行次數多的為準。測試報告最終的測試報告位于,使用瀏覽器打開即可。

概述

ContiPerf 是一個輕量級的單元測試工具,基于JUnit 4二次開發,使用它基于注解的方式,快速在本地進行單元壓測并提供詳細的報告。

Example 1. 新建 SpringBoot 工程
核心依賴如下

    org.springframework.boot
    spring-boot-starter-test
    test


    org.databene
    contiperf
    2.1.0
    test
2. 測試接口以及實現
package com.wuwenze.contiperf.service;

import java.util.List;

public interface ContiperfExampleService {

    List findAll();
}
import com.wuwenze.contiperf.service.ContiperfExampleService;

import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

import lombok.extern.slf4j.Slf4j;

@Slf4j
@Service
public class ContiperfExampleServiceImpl implements ContiperfExampleService {
    private final Random RANDOM = new Random();

    @Override
    public List findAll() {
        try {
            int sleepSecond = RANDOM.nextInt(10);
            log.info("#findAll(): sleep {} seconds..", sleepSecond);
            Thread.sleep(sleepSecond * 1000);
        } catch (InterruptedException e) {
            // ignore
        }
        List resultList = new ArrayList<>();
        for (int i = 0; i < 1000; i++) {
            resultList.add("string_" + i);
        }
        return resultList;
    }
}
3. 構建單元測試
package com.wuwenze.contiperf.service;

import com.wuwenze.contiperf.ContiperfExamplesApplication;

import org.databene.contiperf.PerfTest;
import org.databene.contiperf.junit.ContiPerfRule;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;


@RunWith(SpringRunner.class)
@SpringBootTest(classes = ContiperfExamplesApplication.class)
public class ContiperfExampleServiceTest {
    @Rule
    public ContiPerfRule i = new ContiPerfRule();

    @Autowired
    private ContiperfExampleService contiperfExampleService;

    @Test
    @PerfTest(threads = 1000, duration = 1500)
    public void findAll() {
        contiperfExampleService
                .findAll()
                .forEach(System.out::println);
    }
}
4. 最終執行效果

查看測試報告:

總結 1)PerfTest參數

@PerfTest(invocations = 300):執行300次,和線程數量無關,默認值為1,表示執行1次;
@PerfTest(threads=30):并發執行30個線程,默認值為1個線程;
@PerfTest(duration = 20000):重復地執行測試至少執行20s。
三個屬性可以組合使用,其中Threads必須和其他兩個屬性組合才能生效。當Invocations和Duration都有指定時,以執行次數多的為準。

  例,@PerfTest(invocations = 300, threads = 2, duration = 100),如果執行方法300次的時候執行時間還沒到100ms,則繼續執行到滿足執行時間等于100ms,如果執行到50次的時候已經100ms了,則會繼續執行之100次。

  如果你不想讓測試連續不間斷的跑完,可以通過注釋設置等待時間,例,@PerfTest(invocations = 1000, threads = 10, timer = RandomTimer.class, timerParams = { 30, 80 }) ,每執行完一次會等待30~80ms然后才會執行下一次調用。

  在開多線程進行并發壓測的時候,如果一下子達到最大進程數有些系統可能會受不了,ContiPerf還提供了“預熱”功能,例,@PerfTest(threads = 10, duration = 60000, rampUp = 1000) ,啟動時會先起一個線程,然后每個1000ms起一線程,到9000ms時10個線程同時執行,那么這個測試實際執行了69s,如果只想衡量全力壓測的結果,那么可以在注釋中加入warmUp,即@PerfTest(threads = 10, duration = 60000, rampUp = 1000, warmUp = 9000) ,那么統計結果的時候會去掉預熱的9s。

2)Required參數

@Required(throughput = 20):要求每秒至少執行20個測試;
@Required(average = 50):要求平均執行時間不超過50ms;
@Required(median = 45):要求所有執行的50%不超過45ms;
@Required(max = 2000):要求沒有測試超過2s;
@Required(totalTime = 5000):要求總的執行時間不超過5s;
@Required(percentile90 = 3000):要求90%的測試不超過3s;
@Required(percentile95 = 5000):要求95%的測試不超過5s;
@Required(percentile99 = 10000):要求99%的測試不超過10s;
@Required(percentiles = "66:200,96:500"):要求66%的測試不超過200ms,96%的測試不超過500ms。

3)測試報告

最終的測試報告位于target/contiperf-report/index.html,使用瀏覽器打開即可。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/76446.html

相關文章

  • ApiBoot DataSource Switch 使用文檔

    摘要:顧名思義,是用于數據源選擇切換的框架,這是一款基于切面指定注解實現的,通過簡單的數據源注解配置就可以完成訪問時的自動切換,切換過程中是線程安全的。注意事項在使用時需要添加對應數據庫的依賴如果使用連接池,不要配置使用的依賴,請使用依賴。 ApiBoot是一款基于SpringBoot1.x,2.x的接口服務集成基礎框架, 內部提供了框架的封裝集成、使用擴展、自動化完成配置,...

    AdolphLWQ 評論0 收藏0
  • 《Java應用架構設計:模塊化模式與OSGi》讀書筆記

    摘要:本書概括以軟件系統為例,重點講解了應用架構中的物理設計問題,即如何將軟件系統拆分為模塊化系統。容器獨立模塊不依賴于具體容器,采用輕量級容器,如獨立部署模塊可獨立部署可用性模式發布接口暴露外部配置使用獨立的配置文件用于不同的上下文。 本文為讀書筆記,對書中內容進行重點概括,并將書中的模塊化結合微服務、Java9 Jigsaw談談理解。 本書概括 以Java軟件系統為例,重點講解了應用架構...

    seanHai 評論0 收藏0
  • PHP相關

    摘要:的機器學習庫的機器學習庫,包括算法交叉驗證神經網絡等內容。在即將到來的大會上,她將和大家分享在機器學習領域的全新可能。入門總結入門相關,如安裝配置基本使用等。 基于 Swoole 開發 PHP 擴展 Swoole-1.9.7 增加了一個新特性,可以基于 Swoole 使用 C++ 語言開發擴展模塊,在擴展模塊中可以注冊 PHP 內置函數和類。現在可以基于 Swoole 來編寫 PHP ...

    lewinlee 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<