항해99 3기

[TIL] 2021.11.16 최종 프로젝트 진행중 - nGrinder 실행

na_o 2021. 11. 16. 15:21
728x90

팀원분께서 Github Action을 적용하는 과정에서 맞딱뜨린 에러다

 

contextLoads() FAILED 라는 에러가 난다

BackEndApplicationTests를 수정한 적이 없다

그래서 'contextLoads() FAILED' 키워드로 구글에 검색해봤더니

우리와 같은 상황인 글을 봤다

https://enant.tistory.com/29

 

Github Action 빌드시 contextLoads Failed 오류

spring server를 ec2에 배포하는 과정을 자동화할 방법을 찾다가, github Action을 사용해보기로 했다. Github Action? Github Action을 간단히 설명하면 빌드, 테스트, 배포 등의 작업을 자동화 시켜주는 도구이

enant.tistory.com

Github Action에서도 DB 연결에 대한 설정도 해줘야하는 것 같다

 

 

결국은 원인이 이거였다

우리 프로젝트에는 application.properties가 올라가있지 않다

이 파일에 MySQL 연결에 대한 정보가 담겨있는데

Github Action이 Build할 때 DB 연결 정보가 없어서 에러가 났던 것이다

이것에 대해 더 알아보신다고 하셨다


프론트에서 레시피 수정 API에 대해 테스트해보았다

수정할 이미지가 없으면 key: image, value: 빈 값 으로 request 해달라고 말씀 드렸다

여기서 나는 '빈 값' 이라는 말이 애매했다

정확히 무엇을 말하는 것인지 알 수 없는 말인것 같다

"" 이거인지, null 인지 모르겠더라..

프론트에서 레시피 수정 API를 테스트하는데 image 키의 value를 "" 로 하든, null로 하든, undefined로 하든 무조건 String으로 requst 하는 것이었다

String을 MultipartFile 배열로 변환할 수 없다는 에러 메시지가 뜨기 때문인다

 Failed to convert value of type 'java.lang.String' to required type 'org.springframework.web.multipart.MultipartFile[]'

결국 프론트에서 key 자체를 보내지 않아야 백엔드는 null로 요청값을 받아낼 수 있었다

 


여기서 의문점이 들었다

'그럼 내 로직은 왜 문제 없이 돌아갔던거지??'

레시피쪽과 게시판은 결국 게시판이기 때문에

레시피 로직과 게시판 로직의 전체적인 흐름은 같다

그런데, 내가 짠 수정 로직은 문제 없이 되고, 팀원분이 짜신 수정 로직은 문제가 생겼기 때문에 

위와 같은 의문이 들었다

프론트 코드를 분석해보니, 

const recipeFormData1 = new FormData();
        recipeFormData1.append("title", post.title);
        recipeFormData1.append("content", post.content);
        recipeFormData1.append("price", post.price);
        recipeFormData1.append("tag", post.tags);
        if (post.fileList) {
          for (const f of post.fileList) {
            recipeFormData1.append("image", f);
          }

사진이 여러 장이라서 for문을 사용하셨다

프론트에서 이미지를 첨부 안 하면 fileList에는 아무것도 들어있지 않은 배열이 되기 때문에 for문을 돌지 않으므로

request할 때 image라는 key 자체를 request하지 않았던 것으로 보인다

 

여기서 또 의문점이 드는 것이 있었다

if(imageList != null && imageList.length > 0) { //새로 첨부한 이미지가 존재할 때
...

"이 if문에서 왜 안 걸렸던걸까?" 라는 의문이 들었다

imageList가 null이면 imageList의 length를 구하지 못하기 때문에 에러가 나거나 위 로직을 안 탈줄 알았다

디버그를 찍어봤다

imageList != null 을 앞쪽에 써놨기 때문에 이 부분이 false이므로 조건문의 imageList.length > 0 이 되든 안 되든 무조건 false로 나온다

이렇기 때문에 imageList != null 에서 false로 판명 되자마자 if문의 로직을 타는 것으로 보인다

 


어제 nGrinder를 위해 만든 AWS에 ngrinder controller를 설치하려고 했다

생활코딩의 controller 설치 방법 영상을 봐도 되지만

그 영상은 9년전 영상이라 버전이 너무 오래된 거일것 같아서

나름 최근 정보를 따라하려고 했다

https://dejavuqa.tistory.com/11

 

Ubuntu에 nGrinder 설치 하기 (v3.4)

성능 테스트할 때 자주 사용하는 nGrinder를 설치해 봅시다. 설치할 OS는 Ubuntu 16.04 입니다. 생각난 김에 Ubuntu에서 버전을 확인하는 명령은 lsb_release 입니다. $ lsb_release -a No LSB modules are availa..

dejavuqa.tistory.com

이 글 순서대로 했는데 controller 화면으로 이동이 안되더라

계속 404가 뜬다

어쩌다보니 영상 댓글을 봤는데 나와 같은 사람이 꽤 있었나보다

이 글을 보고 우분투 버전과 자바 버전, 톰캣 버전을 꼭 맞춰야할것 같다는 생각을 했다

나는 버전 신경 안 쓰고 우분투 OS에 java와 tomcat을 깔고 controller 파일을 내려받고 실행했다

그러니까 404가 뜨지

 

역시나였다..

위에 첨부한 링크 그대로 따라하면 nGrinder 화면을 볼 수 있다

java 8은 아래 명령어를 입력했다

sudo apt-get install openjdk-8-jdk

우분투 OS 16.04 / java jdk 8 / tomcat 8 을 꼭 맞춰줘야 한다

꼭이다.....

 

안녕 반갑다


vim 명령어

https://gracefulprograming.tistory.com/38

 

[Vim] 파일 열기, 저장, 종료

이제 본격적으로 vim 의 사용법에 대해 알아보겠습니다. 파일 열기 리눅스 쉘 프롬프트 상에서 vim hello.c 이렇게 명령어를 입력하면 vim 이 실행되면서 hello.c 파일이 열립니다. 만약에 hello.c 파일이

gracefulprograming.tistory.com