💻
DevOps Cookbook
  • Home
    • Meiko DevOps Cookbook
  • Gitlab
    • Tips
      • 사전 정의된 CI/CD 변수의 기본 세트
    • 딥다이브 Gitlab CI/CD
      • GitLab CI/CD 시작하기
        • .gitlab-ci.yml 파일
        • Runner
        • 파이프라인
        • CI/CD 변수
        • CI/CD 컴포넌트
      • CI/CD YAML 구문 참조
    • CI/CD Notifications
      • CI/CD slack notifiaction 구축작업 결과
  • Kubernetes
    • Persistence Volume
      • play-cluster
    • Ingress
      • Ingress란
      • 수동으로 ingress 배포하기
    • Security
    • HPA
      • hpa troubleshooting history
        • 1. HELM_UPGRADE_VALUES_FILE로 hpa가 추가되지 않는 원인
        • 2. targetCPUUtilizationPercentage 계산은 어떻게 되는가
        • 3. helm values에 cpu resource 단위를 1로 했을 때 실제 파드에 1m( 0.001 ) 코어가 부여된 것
        • 4. pod cpu resources가 할당받은 것을 나타내는 것인 지 현재 사용량을 나타내는 것인지 검증
        • 5. 설정한 hpa를 기반으로 pod auto scaling이 동작하는 지 검증
      • HorizontalPodAutoscaler의 behavior 필드 중 stabilizationWindowSeconds 값이 Kubernetes 코드에서 어떻게 사용되는지 분석
  • prometheus
    • prometheus 리소스 alert 세팅
      • 슬랙 채널 구성
      • alert 환경 구성 가이드
  • Loki
    • loki-grafana alert 세팅
      • 1차 검증 결과
      • Alert 환경 구성 가이드
  • load test
    • nGrinder
      • nGrinder Test Configuration 값들
      • 질문리스트
        • groovy는 JUnit 스타일에 포함되지 않는건가 ? + GTest가 뭔지 좀 헷갈린다
      • Script
        • Groovy Script Structure
          • reference
          • Groovy script deep dive
          • Groovy Script 실행 구조 분석
      • Test
        • [nGrinder] single endpoint load test 하기
          • [nGrinder] single endpoint load test script 기반 cpu 사용량 테스트
          • [nGrinder] single endpoint load test script 기반 pod autoscaling 테스트
        • [nGrinder] multi endpoint load test 하기
          • [nGrinder] multi endpoint load test script에 정의한 test들이 실행 순서를 보장 받는가?
  • AWS
    • aws-cli
      • eks cluster vpc 스펙보기
    • aws-vpc
  • EKS
    • youtube links
    • EKS best practice
    • 질문 정리
  • Istio
    • Istio Basic
      • Istio 컴포넌트 별 역할
      • Kubernetes Ingress와 Istio VirtualService의 관계
    • Gateway
      • Gateway 주요 특징
      • Istio Gateway와 Kubernetes Ingress의 주요 차이점
  • IAC
    • Terraform
      • 테라폼 설치
      • 테라폼 문서
      • 테라폼 개념
        • 언어 구조
        • 사용 순서
        • 상태파일 (tfstate)
        • 변수 정의 방법
      • Terraform - AWS VPC
    • Ansible
      • Ansible 초기 학습 내용
      • Ansible Playbook
      • Ansible Study
        • Inventory
        • Playbook
          • Module
        • Variable
  • etc
    • Toss SLASH24
    • Elastic Load Balancing
    • 낙서장
      • IRSA
    • deep dive
      • Istio 공식문서 번역
        • Overview
          • What is Istio?
          • Why choose Istio?
          • Sidecar or ambient?
        • Concepts
          • Traffic Management
        • Page
      • eks 에서 control plane < - > data plane 통신 원리
Powered by GitBook
On this page
Edit on GitHub
  1. load test
  2. nGrinder
  3. Test
  4. [nGrinder] multi endpoint load test 하기

[nGrinder] multi endpoint load test script에 정의한 test들이 실행 순서를 보장 받는가?

import static net.grinder.script.Grinder.grinder;
import static org.junit.Assert.*;
import static org.hamcrest.Matchers.*;
import net.grinder.script.GTest;
import net.grinder.script.Grinder;
import net.grinder.scriptengine.groovy.junit.GrinderRunner;
import net.grinder.scriptengine.groovy.junit.annotation.BeforeProcess;
import net.grinder.scriptengine.groovy.junit.annotation.BeforeThread;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.ngrinder.http.HTTPRequest;
import org.ngrinder.http.HTTPRequestControl;
import org.ngrinder.http.HTTPResponse;
import org.ngrinder.http.cookie.Cookie;
import org.ngrinder.http.cookie.CookieManager;

import java.util.Map;
import java.util.HashMap;
import java.util.List;

@RunWith(GrinderRunner)
class TestRunner {
    public static GTest test1, test2, test3;
    public static HTTPRequest request;
    public static Map<String, String> headers = new HashMap<>();
    public static List<Cookie> cookies = [];

    private static final int STATUS_OK = 200;
    private static final int STATUS_CREATED = 201;
    
    public static final String BASE_URL = "";
    
    @BeforeProcess
    public static void beforeProcess() {
        HTTPRequestControl.setConnectionTimeout(300000);

        test1 = new GTest(1, "GET /");
        test2 = new GTest(2, "GET /");
        test3 = new GTest(3, "GET /");

        request = new HTTPRequest();

        grinder.logger.info("Setup completed before any processes.");
    }
    
    @BeforeThread
    public void beforeThread() {
        test1.record(this, "executeTest");
        test2.record(this, "executeTest");
        test3.record(this, "executeTest");

        grinder.statistics.delayReports = true;

        grinder.logger.info("Setup completed before each thread starts.");
    }
    
    @Test
    public void executeTest() {
        String token = testRequest("/", test1);
        testRequestWithToken("/", test2, token);
        testRequest("/", test3);
    }
    
    private String testRequest(String path, GTest test) {
        String testName = "Test " + test.getNumber();
        grinder.logger.info("Starting " + testName);
        HTTPResponse response = request.GET(BASE_URL + path);
        assertThat(testName, response.statusCode, is(STATUS_OK));
        grinder.logger.info("Completed " + testName);
        return response.getText();  // 이 부분을 조정하여 필요한 데이터를 반환하도록 수정
    }

    private void testRequestWithToken(String path, GTest test, String token) {
        String testName = "Test " + test.getNumber();
        grinder.logger.info("Starting " + testName);
        headers.put("Authorization", "Bearer " + token);  // 토큰 사용 예시
        HTTPResponse response = request.GET(BASE_URL + path, headers);
        assertThat(testName, response.statusCode, is(STATUS_OK));
        grinder.logger.info("Completed " + testName);
    }
}
Previous[nGrinder] multi endpoint load test 하기Nextaws-cli

Last updated 1 year ago