Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,27 +1,25 @@
package com.example.solidconnection.concurrency;

import com.example.solidconnection.community.board.domain.Board;
import com.example.solidconnection.community.board.repository.BoardRepository;
import com.example.solidconnection.community.board.fixture.BoardFixture;
import com.example.solidconnection.community.post.domain.Post;
import com.example.solidconnection.community.post.domain.PostCategory;
import com.example.solidconnection.community.post.fixture.PostFixture;
import com.example.solidconnection.community.post.repository.PostRepository;
import com.example.solidconnection.community.post.service.PostLikeService;
import com.example.solidconnection.siteuser.domain.SiteUser;
import com.example.solidconnection.siteuser.fixture.SiteUserFixture;
import com.example.solidconnection.siteuser.repository.SiteUserRepository;
import com.example.solidconnection.support.TestContainerSpringBootTest;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;

import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;

import static com.example.solidconnection.e2e.DynamicFixture.createSiteUserByEmailAndNickname;
import static org.junit.jupiter.api.Assertions.assertEquals;

@TestContainerSpringBootTest
Expand All @@ -35,16 +33,13 @@ class PostLikeCountConcurrencyTest {
private PostRepository postRepository;

@Autowired
private BoardRepository boardRepository;
private SiteUserFixture siteUserFixture;

@Autowired
private SiteUserRepository siteUserRepository;
private BoardFixture boardFixture;

@Autowired
private SiteUserFixture siteUserFixture;

@Value("${view.count.scheduling.delay}")
private int SCHEDULING_DELAY_MS;
private PostFixture postFixture;

private int THREAD_NUMS = 1000;
private int THREAD_POOL_SIZE = 200;
Expand All @@ -56,30 +51,15 @@ class PostLikeCountConcurrencyTest {

@BeforeEach
void setUp() {
board = createBoard();
boardRepository.save(board);
board = boardFixture.자유게시판();
user = siteUserFixture.사용자();
post = createPost(board, user);
postRepository.save(post);
}

private Board createBoard() {
return new Board(
"FREE", "자유게시판");
}

private Post createPost(Board board, SiteUser siteUser) {
Post post = new Post(
post = postFixture.게시글(
"title",
"content",
false,
0L,
0L,
PostCategory.valueOf("자유")
);
post.setBoardAndSiteUser(board, siteUser);

return post;
PostCategory.자유,
board,
user);
}

@Test
Expand All @@ -91,9 +71,8 @@ private Post createPost(Board board, SiteUser siteUser) {
Long likeCount = postRepository.getById(post.getId()).getLikeCount();

for (int i = 0; i < THREAD_NUMS; i++) {
String email = "email" + i;
String nickname = "nickname" + i;
SiteUser tmpSiteUser = siteUserRepository.save(createSiteUserByEmailAndNickname(email, nickname));
SiteUser tmpSiteUser = siteUserFixture.사용자(i, nickname);
executorService.submit(() -> {
try {
postLikeService.likePost(tmpSiteUser, post.getId());
Expand All @@ -103,7 +82,6 @@ private Post createPost(Board board, SiteUser siteUser) {
}
});
}

doneSignal.await(TIMEOUT_SECONDS, TimeUnit.SECONDS);
executorService.shutdown();
boolean terminated = executorService.awaitTermination(TIMEOUT_SECONDS, TimeUnit.SECONDS);
Expand Down

This file was deleted.

Loading