프로젝트/미디어 스트리밍 서버 프로젝트
-
kotlinDSL + RestDocs 적용하기프로젝트/미디어 스트리밍 서버 프로젝트 2022. 9. 28. 00:01
개요 Controller 단위 테스트 이후에 RestDocs를 통해 문서화를 진행해보려고 합니다. Build.gradle.kts 설정 plugins{ id("org.asciidoctor.jvm.convert") version "3.3.2" } val asciidoctorExt by configurations.creating dependencies{ // rest-docs testImplementation("org.springframework.restdocs:spring-restdocs-mockmvc") asciidoctorExt("org.springframework.restdocs:spring-restdocs-asciidoctor") } val snippetsDir by extra { file("buil..
-
MultipartFile 컨트롤러 단위 테스트(MockMvc)프로젝트/미디어 스트리밍 서버 프로젝트 2022. 8. 24. 01:03
컨트롤러 메서드 @PostMapping(consumes = [MediaType.APPLICATION_JSON_VALUE, MediaType.MULTIPART_FORM_DATA_VALUE]) fun fileUpload( @RequestPart request: UploadRequest, @RequestPart file: MultipartFile ): ResponseEntity { // todo : videoService 에서 upload 이후 반환되는 아이디 및 등록 과정 필요 metadataService.registerMetadata(file) val uploadResponse = videoService.upload(request, file) return ResponseEntity( BasicRespons..
-
Kotest와 MockK를 활용하여 컨트롤러 단위테스트하기프로젝트/미디어 스트리밍 서버 프로젝트 2022. 8. 23. 18:55
개요 JUnit5와 @WebMvcTest를 이용한 컨트롤러 단위 테스트는 익숙하지만 Kotest와 MockK를 활용한 @WevMvcTest를 수행하고자 합니다. 일단 아주 간단한 테스트 컨트롤러를 하나 만들고 단위테스트를 진행해보겠습니다. TestController @RestController class TestController { private val test = "test" @GetMapping fun test(): String { return test } } Controller 단위 테스트 @WebMvcTest(TestController::class) class MyTest3 constructor(@Autowired val mockMvc: MockMvc) : BehaviorSpec({ given(..
-
ffmpeg install (Mac OS, Amazon Linux)프로젝트/미디어 스트리밍 서버 프로젝트 2022. 8. 22. 13:12
Homebrew로 FFmpeg 설치하기 다음 명령어를 실행하면 바로 FFmpeg이 설치됩니다. 의존 패키지가 많아서 시간이 좀 걸립니다. $ brew install ffmpeg ... ==> Installing ffmpeg ==> Pouring ffmpeg--5.0.arm64_big_sur.bottle.1.tar.gz 🍺 /opt/homebrew/Cellar/ffmpeg/5.0: 272 files, 48.8MB ... FFmpeg을 설치하고 ffmpeg을 인자 없이 실행하면 버전, 빌드 옵션, 기본적인 사용 방법이 출력됩니다. $ ffmpeg ffmpeg version 5.0 Copyright (c) 2000-2022 the FFmpeg developers built with Apple clang ver..
-
JPA Paging 적용하기프로젝트/미디어 스트리밍 서버 프로젝트 2022. 8. 20. 19:25
페이징이란? 만약 게시글이 100만 건이라면 어떻게 될까요? 한 화면에서 모든 게시글을 보여줄 수 없기 때문에 페이지를 나눠서 게시글을 보여주는 방식으로 해결합니다. 그러면 100만건의 10만 개의 페이지로 나누어 10건씩 데이터를 전송할 수 있습니다. JPA와 페이징 JPA를 사용하면 PagingAndSortingRepository 인터페이스를 통해 쉽게 페이징을 구현할 수 있습니다. public interface PagingAndSortingRepository extends CrudRepository { Page findAll(Pageable pageable); } 이미 findAll이 구현되어 있고 Pageable이라는 객체를 받아 Page를 반환합니다. 이때 Controller에서 받을때 Page..
-
Json with MultipartFile프로젝트/미디어 스트리밍 서버 프로젝트 2022. 8. 19. 15:03
개요 MultipartFile을 통해 S3에 저장하던 중 제목과 내용도 함께 저장해야 하는 요구사항을 처리하고자 했습니다. 가장 간단하게 든 생각으로 "DTO를 만들어서 처리하자"였습니다. data class FileRequest( val subject : String, val content : String, val file : MultipartFile, ) { } 하지만 API를 호출하여 전달하려고 하는데 MultipartFile은 Json으로 어떻게 보내지?라는 생각이 들었습니다. @RequestPart 활용하기 API에서 consume할 MediaType을 지정해주는 방식을 사용해서 하나의 API에서 Json과 MultipartFile을 한 번에 전달받을 수 있습니다. @PostMapping(con..
-
[Spring + Kotlin]Kotest와 MockK를 활용한 테스트 코드 작성프로젝트/미디어 스트리밍 서버 프로젝트 2022. 8. 19. 12:52
개요 코틀린과 스프링을 같이 쓰게 되면 junit5를 주로 사용하곤 했습니다. 하지만 Kotest라는 테스트 프레임워크의 인기가 높아지고 있습니다. Kotest란? 확장 Assertions와 통합 Property test를 통해 코틀린을 위한 유연하고 우아한 다중 플랫폼 오픈 소스 테스트 프레임워크입니다. 여러 개의 독립 실행형 하위 프로젝트로 나뉘며, 각 하위 프로젝트는 독립적으로 사용할 수 있습니다. Test framework Assertions library Property testing kotest를 사용하여 세 가지 프로젝트를 모두 함께 사용할 수 있습니다. 또는 다른 프로젝트와 함께 선택하여 사용할 수 있습니다. 예를 들어 Junit과 함께 Assertions library를 사용할 수 있습니..
-
ktlint와 Github Action을 활용한 CI프로젝트/미디어 스트리밍 서버 프로젝트 2022. 8. 17. 21:57
ktlint란? Kotlin 언어의 공식 사이트에서는 코딩 컨벤션 가이드를 제공합니다. ktlint는 공식 가이드의 규칙을 포함하여 코드 스타일을 검사하고 맞춰주는 도구입니다. ktlint를 통해 팀원들과 정해진 포맷팅을 맞추어 개발할 수 있게 되고 코드 가독성이 향상되는 효과를 볼 수 있습니다. ktlint gradle 설정하기 plugins { id("org.jlleitschuh.gradle.ktlint") version "" } .editorconfig 설정하기 코드 포맷에 대한 문서의 역할을 수행하는 파일입니다. ktlint가 버전이 올라가면서 규칙의 디폴트 값이 변경될 경우를 대비할 수 있습니다. Kotlin 공식 코딩 컨벤션에 명시되지 않은 규칙까지 일치시킬 수 있습니다. .editorconf..