급하게 마이그레이션을 먼저 진행하려고 하는데

테스트코드를 작성해야 운영 반영이 가능해서 일단 테스트를 먼저 작성했다.

 

작성 도중 아래와 같이 특이한 방식으로 테스트하는 코드가 존재했는데

자세히 보니 상당히 획기적인 방법임을 알 수 있었다.

SendAsset_ba sendAsset = new SendAsset_ba();
        Database.BatchableContext BC;
        sendAsset.execute(BC, assetList);

 

이전에는 직접 모든 데이터를 생성한 다음 진행해야 했기 때문에

각종 트리거와 필드 규제에 걸렸지만

이런 방식으로 진행한다면 내가 원하는 리스트만 테스트를 할 수 있기 때문에

하나를 위해 연관된 모든 필드 규정을 지킬 필요가 없었다.

(해당 개체 또는 필드에 관여하지 않는 인터페이스라는 가정 하에)

 

사실 저기까지라면 귀찮음을 감수하고 필드들을 생성하거나

해당 개체가 사용된 다른 테스트코드에서 값을 가져오면 끝나는 간단한 일이지만

저런 방식으로 바로 execute 하는 것에 놀란 진짜 이유는

테스트를 위해 운영에서 특정 데이터만 발송하기를 원하는데

해당 방법에 대한 답이 없던 상황에서 이 방법이 답이 되어주기 때문이었다.

 

개발에서는 일반적인 방식으로 배포를 진행한 다음

운영서버에서 발송할 때 원하는 데이터만 골라서 select를 수동으로 진행하고

execute로 값을 넘겨버리면 해결되는 문제였기 때문에

내부에 Limit을 걸어야 하는지 아니면 다른 조건들을 추가해서

constructor의 값을 참조해야 하는지 고민할 필요가 사라졌다.

 

막상 마이그레이션을 진행했지만 어제처럼 404 에러가 발생했다.

결국 어제 진행한 방법이 문제가 있는 것이 아니라

중간에 문제가 발생한 것 같았는데

생각해보니 개발서버에서도 데이터가 12개였고 이건 200를 보냈기 때문에

운영에서도 12개를 보내니 정상적으로 보내지는 것을 확인할 수 있었다.

 

해당 부분은 점점 발송 가능한 수치가 줄어들어서 문의를 보내려고 하다가

내부 테스트를 한번 해보겠다고 하셔서 일단 문의는 보내지 않고 자동화를 확인했다.

 

어제 진행한 자동화 부분에서 DML문이 callout보다 앞에 있어서

“You have uncommitted work pending. Please commit or rollback before calling out”가 발생했고

해당 문제를 해결하기 위해 메서드를 쪼개보기도 하고 commit 명령어도 입력해봤지만

메서드의 문제는 아니었고 commit 명령어는 존재하지 않았다.

 

원인을 자세히 보니 callout 이후에는 insert, update 등 DML을 사용해도 되지만

dml 처리 이후 callout이 진행되는 것을 막는 문제였기 때문에

처리는 callout 이전에 했지만 DML 명령은 callout 이후로 내리니 정상 작동했다.

 

해당 부분의 테스트는 어제 하려다가 실시간 데이터 입력으로 못했는데

마이그레이션 관련 중개서버에서 확인한다고 하니

그사이에 자동화 부분의 확인을 진행했다.

 

자동화는 그사이 중복이 십여차례치 쌓여 있었는데

많아봤자 중복제거 코드를 짜둔 것이 있었기 때문에 딱히 스트레스 받을 일은 아니었고

오히려 만들어드린 버튼으로 테스트를 많이 하신 것 같아서 뿌듯하기도 헀다.

 

자동화는 작동중이 아닌 것 같은 때 기습적으로 진행했는데

160개의 테스트 파일들이 중복은 요청 없이 우수수 처리되고

나머지 파일들도 따로 관리되다가 DocumentLink로 생성되는게 모두 완벽하게 되는 것이 상당히 만족스러웠다.

 

마이그레이션은 오류가 계속 발견되어서

문의 끝에 문의 메일까지 보냈는데

알고보니 중개서버에서 404를 심심하면 보내서 발생하는 문제였다.

 

해당 문제로 협업사, 고객사까지 다들 코드를 확인했는데

그나마 다행인 것은 그 와중에 개선점들이 발견되었기 때문에

다음에 수정할 문제들을 미리 수정하는 계기가 될 수는 있었다.

 

코드 수정을 계속 진행하면서 테스트를 하는데

자동화는 끝났지만 마이그레이션 부분에서 스트레스를 좀 받았는데

오늘도 결국 404 코드를 보며 하루를 마무리헀다.

 

 

(1).백준 15784번 질투진서는 가로세로로 보이는 시야각 안에

자기보다 매력적인 사람이 있을 경우 화가 나고 아닐 경우 행복해 하는 문제로

1000x1000 사이즈의 행렬이기 때문에 1초 시간초과가 될 수 있을 것 같았다.

 

전체 조회는 아주 간단하지만 본인 위치의 행과 본인 위치의 열만 조회하도록 진행했다.

 

본인 체크도 있으면 조금 더 확인을 해야 하겠지만

본인보다 매력이 높은 경우만 화가 나기 때문에 본인을 확인하는 부분은 넘어갔다.

const input = `5 3 2
10 2 3 24 4
21 4 5 12 1
24 52 4 2 2
2 4 3 2 32
1 4 32 2 4`.split('\n').map(el => el.split(' ').map(Number))

const [length, x, y] = input.shift()
let envy = 'HAPPY'

for(let i = 0 ; i < length ; i++){
    if(input[x-1][i] > input[x-1][y-1] || input[i][y-1] > input[x-1][y-1]){
        envy = 'ANGRY'
        break
    }
}

console.log(envy)

'회고' 카테고리의 다른 글

[개발일지] - 133  (0) 2023.11.10
[개발일지] - 132  (0) 2023.11.09
[개발일지] - 130  (0) 2023.11.07
[개발일지] - 129  (0) 2023.11.06
[개발일지] - 128(주말)  (0) 2023.11.05

+ Recent posts