-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* fix: 충돌 해결 (#210) * fix: 소셜 로그인 에러 긴급 수정 (#214) (#215) * feat: 기존 회원 리뷰 조회 API 로직 변경 (#218) * feat: userId 에 해당하는 유저 리뷰 조회 API 로직 변경 (#217) * test: 통합테스트 수정 (#217) * test: 단위테스트 수정 (#217) * docs: readme 작성 (#222) * docs: readme 작성 * docs: readme 수정 * test: QA용 EndMeetingAlerted를 발행한다 * feat: 유저가 삭제되었을때, 알람토큰도 삭제하도록 수정 (#226) * feat: 유저가 삭제되었을때, 알람토큰도 삭제하도록 수정한다 * test: ApplicationEventPublisher 바인딩 안되는 테스트 삭제 * refactor: UserDeletedEvent 핸들러 이름 변경 * test: 친구조회 테스트 수정 * refactor: code smell을 제거한다 * fix: 모임 시작, 종료 알림이 모임 참여자가 3명 이상이 아니라면, 발행되지않도록 수정 (#231) * feat: 리뷰 등록시 모임 참여 유저 조회 API 수정 (#229) * refactor: MeetingController getCurrentUserId() 메소드로 통일 (#228) * feat: 리뷰에 자신 포함 확인 로직 추가 (#195) * feat: 모임 참여자 자신 포함 여부 확인 로직 추가(#228) * test: 단위 테스트 추가 (#228) * test: 통합 테스트 수정 및 실패 케이스 추가 (#228) * refactor: title, body alert data에 추가 * feat: 리뷰 등록시 요청 DTO Validation 변경 및 로직 추가 (#233) * feat: 요청 validation 변경 (#228) * test: UserControllerTest 리팩토링 (#224) * feat: 리뷰 등록시 userService 로직 추가 (#224) * test: 테스트 데이터 관련 메소드 추가 (#224) * test: 리뷰 등록시 로직 추가에 따른 통합 테스트 추가 (#224) * test: 리뷰 등록시 로직 추가에 따른 Service 단위 테스트 추가 (#224) * feat: Cors 허용 메소드 추가 (#224) * feat: 위치 기반 API Gatling 부하 테스트 (#220) * chore: docker-compose.yml 작성 (#195) * test: Gatling 부하 테스트 구현 (#195) * Update .env * Delete .env --------- Co-authored-by: ChoiDongKuen <[email protected]> Co-authored-by: devxb <[email protected]> Co-authored-by: xb205 <[email protected]>
- Loading branch information
1 parent
3f68cd7
commit f9553dd
Showing
6 changed files
with
181 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -37,3 +37,6 @@ bin/ | |
|
||
### Mac OS ### | ||
.DS_Store | ||
|
||
### .env ### | ||
.env |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
services: | ||
db: | ||
image: "mysql:8.3.0" | ||
container_name: load_test_mysql | ||
restart: always | ||
environment: | ||
MYSQL_ROOT_PASSWORD: root#1234 | ||
MYSQL_DATABASE: load_test_db | ||
TZ: UTC | ||
|
||
ports: | ||
- "3000:3306" | ||
deploy: | ||
resources: | ||
limits: | ||
cpus: "0.5" | ||
memory: "512MB" | ||
|
||
redis: | ||
image: "docker.io/bitnami/redis:7.2" | ||
container_name: load_test_redis | ||
restart: always | ||
environment: | ||
- ALLOW_EMPTY_PASSWORD=yes | ||
- REDIS_AOF_ENABLED=yes | ||
- REDIS_RDB_ENABLED=no | ||
ports: | ||
- "6299:6379" | ||
deploy: | ||
resources: | ||
limits: | ||
cpus: "0.5" | ||
memory: "512MB" | ||
|
||
teumteum-server: | ||
build: | ||
context: . | ||
dockerfile: Dockerfile | ||
restart: always | ||
environment: | ||
DB_URL: jdbc:mysql://db:3306/load_test_db | ||
DB_USERNAME: root | ||
DB_PASSWORD: root#1234 | ||
REDIS_HOST: redis | ||
REDIS_PORT: 6379 | ||
JWT_SECERT_KEY: ${JWT_ACCESS_KEY} | ||
|
||
depends_on: | ||
- db | ||
- redis | ||
ports: | ||
- "8080:8080" | ||
|
||
networks: | ||
teumteum_local: | ||
driver: bridge |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,66 @@ | ||
package simulation; | ||
|
||
import static io.gatling.javaapi.core.CoreDsl.StringBody; | ||
import static io.gatling.javaapi.core.CoreDsl.constantUsersPerSec; | ||
import static io.gatling.javaapi.core.CoreDsl.jsonPath; | ||
import static io.gatling.javaapi.core.CoreDsl.rampUsersPerSec; | ||
import static io.gatling.javaapi.core.CoreDsl.scenario; | ||
import static io.gatling.javaapi.http.HttpDsl.http; | ||
import static io.gatling.javaapi.http.HttpDsl.status; | ||
import static protocol.Protocol.httpProtocol; | ||
|
||
import io.gatling.javaapi.core.ScenarioBuilder; | ||
import io.gatling.javaapi.core.Simulation; | ||
import java.time.Duration; | ||
import java.time.temporal.ChronoUnit; | ||
import net.datafaker.Faker; | ||
|
||
public class TeumTeumApiSimulation extends Simulation { | ||
|
||
private static final Faker faker = new Faker(); | ||
private final ScenarioBuilder teumteumScn = scenario("TeumTeum 찬해지기 API 부하 테스트를 진행한다.") | ||
.exec(session -> | ||
session | ||
.set("id", java.util.UUID.randomUUID().toString()) | ||
.set("name", faker.name().fullName())) | ||
|
||
.exec(http("User 카드 등록 API 요청") | ||
.post("/users") | ||
.body(StringBody( | ||
"{" | ||
+ "\"id\": \"${id}\", " | ||
+ "\"terms\": {\"service\": true, \"privatePolicy\": true}, " | ||
+ "\"name\": \"${name}\", " | ||
+ "\"birth\": \"20000402\", " | ||
+ "\"characterId\": 2, " | ||
+ "\"authenticated\": \"네이버\", " | ||
+ "\"activityArea\": \"경기 시흥\", " | ||
+ "\"mbti\": \"ENFP\", " | ||
+ "\"status\": \"직장인\", " | ||
+ "\"job\": {\"name\" : \"카카오 뱅크\", \"class\" : \"개발\", \"detailClass\" : \"BE 개발자\"}, " | ||
+ "\"interests\": [\"네트워킹\", \"IT\", \"모여서 각자 일하기\"], " | ||
+ "\"goal\": \"회사에서 좋은 사람들과 멋진 개발하기\"" | ||
+ "}" | ||
)) | ||
.check(status().is(201)) | ||
.check(jsonPath("$.id").saveAs("userId")) | ||
.check(jsonPath("$.accessToken").saveAs("accessToken")) | ||
.check(jsonPath("$.refreshToken").saveAs("refreshToken"))) | ||
|
||
.exec(http("TeumTeum 친해지기 API 요청") | ||
.post("/teum-teum/around") | ||
.header("Authorization", "Bearer ${accessToken}") | ||
.body(StringBody("{\"id\": ${userId}, \"latitude\": 37.5665, \"longitude\": 126.9780," | ||
+ " \"name\": \"test_name\", \"jobDetailClass\": \"test_job\", \"characterId\": 1}")) | ||
.check(status().is(200)) | ||
); | ||
|
||
{ | ||
setUp( | ||
teumteumScn.injectOpen( | ||
constantUsersPerSec(10).during(Duration.of(30, ChronoUnit.SECONDS)), | ||
rampUsersPerSec(10).to(50).during(Duration.of(30, ChronoUnit.SECONDS)) | ||
).protocols(httpProtocol) | ||
); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
package simulation; | ||
|
||
import static io.gatling.javaapi.core.CoreDsl.StringBody; | ||
import static io.gatling.javaapi.core.CoreDsl.atOnceUsers; | ||
import static io.gatling.javaapi.core.CoreDsl.jsonPath; | ||
import static io.gatling.javaapi.core.CoreDsl.scenario; | ||
import static io.gatling.javaapi.http.HttpDsl.http; | ||
import static io.gatling.javaapi.http.HttpDsl.status; | ||
import static protocol.Protocol.httpProtocol; | ||
|
||
import io.gatling.javaapi.core.ScenarioBuilder; | ||
import io.gatling.javaapi.core.Simulation; | ||
|
||
public class UserApiSimulation extends Simulation { | ||
|
||
private final ScenarioBuilder UserScn = scenario("User API 부하 테스트를 진행한다.") | ||
.exec(http("User 카드 등록 API 요청") | ||
.post("/users") | ||
.body(StringBody( | ||
"{\"id\": \"test_id\", " | ||
+ "\"terms\": {\"service\": true, \"privatePolicy\": true}, " | ||
+ "\"name\": \"홍길동\", " | ||
+ "\"birth\": \"1990-01-01\", " | ||
+ "\"characterId\": 1, " | ||
+ "\"authenticated\": \"SNS\", " | ||
+ "\"activityArea\": \"서울\", " | ||
+ "\"mbti\": \"INTJ\", " | ||
+ "\"status\": \"ACTIVE\", " | ||
+ "\"job\": {\"name\": \"개발자\", \"class\": \"IT\", \"detailClass\": \"백엔드\"}, " | ||
+ "\"interests\": [\"코딩\", \"독서\", \"운동\"], " | ||
+ "\"goal\": \"성장하기 위해 노력하는 개발자가 되기\"}" | ||
)) | ||
.check(status().is(201)) | ||
.check(jsonPath("$.id").saveAs("userId")) | ||
.check(jsonPath("$.accessToken").saveAs("accessToken")) | ||
.check(jsonPath("$.refreshToken").saveAs("refreshToken")) | ||
|
||
).exec(http("User 정보 조회 API 요청") | ||
.get("/users/${userId}") | ||
.header("Authorization", "Bearer ${accessToken}") | ||
.check(status().is(200)) | ||
|
||
).exec(http("User 리뷰 조회 API 요청") | ||
.get("/users/${userId}") | ||
.header("Authorization", "Bearer ${accessToken}") | ||
.check(status().is(200))); | ||
|
||
|
||
{ | ||
setUp( | ||
UserScn.injectOpen( | ||
atOnceUsers(10)).protocols(httpProtocol)); | ||
} | ||
} |