Design Pattern 8

GMS UnitTest Tutorial(4)

2021-03-15 새로운 모듈 추가시 에러 대처. cpan 모듈 추가 시 설치 에러에 대한 대처 방법. Net::Interface module 설치 시 겪었던 오류와 해결방법을 정리한 글이다. 먼저 meta cpan 사이트에 해당 모듈 검색. 모듈이 존재한다면 cpanm::상위모듈::하위모듈로 해당 모듈 설치 모듈 존재하지 않는다면, GMS 안에서 사용하는 내부 module일 가능성. -> 해당 module을 사용하는 함수를 mock하고 다시 시도해보자. 만약, cpanm::상위모듈::하위모듈 명령어로 module 설치를 시도했으나, 이런식의 에러가 발생한다면, 다른 방법으로 설치를 시도해보자. 결론적으로 해결방법은 sudo apt-get install libnet-interface-perl 이었음. ..

Design Pattern 2022.06.02

GMS UnitTest Tutorial(3)

2021-03-11 새로운 모듈 추가시 방법. unit-test code를 작성하다 필요에 의해 String::Random 모듈을 추가하게 되었다. 나의 local에서는 cpanm String::Random으로 간편히 추가하고 test를 진행할 수 있었으나, remote repository로 push 후 Gitlab의 CI/CD를 확인 해 보니 failure가 나왔다. 이유는 당연하게도 내 local에는 module이 설치되었으나, test하는 server에서는 해당 모듈이 설치되지 않았으므로 경로를 찾을 수 없다는 message가 출력된다. dependency를 관리하는 file을 수정해야 한다. 해결 방법. GMS/.Jenkinsfile에 해당 모듈 작성. (cpan이 아닌 perl로 설치해야 하기 ..

Design Pattern 2022.06.02

GMS UnitTest Tutorial(2)

2021-03-03 Write UnitTest code Summary 지난시간에 REST_API 명세를 살펴봄에 이어서 이번에는 직접 실질적인 Unit Test code를 작성해보는 시간을 가졌다. GMS 먼저 시작 전에 MOCK_ETCD=1 prove -lvm -Ilibgms -I../GSM/lib 으로 test code 한번 돌려보고 시작하자. All tests successful 로 잘 돌아간다는 멘트가 나왔다면, 시작할 수 있다. 오늘은 GMS 하위의 .gitlab-ci.yml 파일을 들여다 보는 것으로 시작한다. image: "centos:7" #어떤 docker 이미지를 사용할건지. (unit test 는 도커를 사용하기때문) variables: # 환경변수 GIRASOLE_ROOT: "/tm..

Design Pattern 2022.06.02

GMS UnitTest Tutorial(1)

2021-02-04 Writting OpenAPI Summary 회사의 Gitlab에서 GMS project를 fork 떠 와서 나의 개인 repository에 옮긴 다음, API 명세를 openAPI 형태에 맞춰 작성하고, 구현한 API에 대하여 test하는 UnitTest code 작성, Controller를 작성하는 작업을 해 볼 것이다. GMS 먼저 GMS project에서 요구하는 library(perl module) 들은 Mojolicious를 포함하여 수없이 많다. Mojolicious를 설치하였고, GMS가 돌아가기 위한 적합한 환경임을 가정한다. (ver8.32) 이 외에도 test를 돌리며 마주하는 수많은 dependencies setting과 module들은 사실상 GMS/build/..

Design Pattern 2022.06.02

Project sshell(1)

Project sshell(숭쉘) made by Team sshell https://github.com/gluesys/sshell 대략적인 architecture, layout 짜고 functional API 까지 작성된 상태. 이번 posting에서는 plack 기반으로 짜여진 기존 앱(showmetheshell)을 분석하고 우리가 아는 perl의 Mojolicious형태로 바꿔보는 작업을 할 것이다. 먼저 기존 앱의 구조부터 분석을 해 보자. 기존 앱은 전체적인 앱 구조를 구성하는데 Perl의 'Plack' library를 이용하였다. Front-end의 library로는 jquery를 이용하였다. 그리고 socket으로 socket.io를 이용하였다. 기존 앱에서는 MVC의 전반적인 부분을 show..

Design Pattern 2021.02.22

Perl - Mojolicious tutorial(1)

GMS project - unitTest code 작성을 위해서는 MVC pattern을 기반으로 동작하는 시스템구조와 그를 구현하는 웹프레임워크에 대한 이해가 필요하다. Web framework는 Python-Django, Java-Spring 등 여러가지가 있지만 GMS에서는 perl언어를 이용하여 개발, web framework도 perl의 Mojolicious를 사용한다. https://docs.mojolicious.org/Mojolicious/Guides/Growing Mojolicious::Guides::Growing - Growing Mojolicious applications Mojolicious::Guides::Growing - Growing Mojolicious applications ..

Design Pattern 2021.02.05