유저레벨에서 개발되는 미들웨어 프로그램들은 대부분(?) unittest를 지원한다. 그러나 kernel은 이야기가 좀 달라지는데... 하드웨어 위에서 자원을 관리하는 프로그램이다 보니 unittest를 수행할 환경이 없다. 최근에 KUnit을 이용해서 함수/기능 단위로 테스트하긴 하지만 오늘은 유저 레벨에서 수행하는 테스트에 대해 이야기해보자.
클라이언트와 kernel 관련 업무를 진행하다보면 항상 stability 단어가 언급되곤 한다. 특히나 선행연구 과제라면 kernel에서 지원하지 않는 기능에 대해 프로토타입으로 개발하고 양산에 적용할지 고민하는데, 클라이언트는 기능이 동작하는 동안 크리티컬 이슈가 발생하지 않길 원하여 안정성을 검증할 만한 테스트를 요구한다. 오늘 소개하는 프레임워크(?)가 바로 AppArmor의 안정성을 검증할 수 있는 하나의 방법이다.
AppArmor 프로젝트 사이트에 접속하면 user-space 도구를 관리하는 repo를 볼 수 있는데 그중에 tests/regression/apparmor
가 testsuite이다. HOW TO INSTALL은 off topic이고 여기서는 간단하게 사용하고 결과를 보도록 하자.
해당 repo를 clone 하고 tests/regression/apparmor
로 이동하면 아래와 같이 여러개의 파일이 보인다.
이제 make tests
명령어를 실행하여 testsuite를 순차적으로 실행한다. (실행에 필요한 디펜던시는 이미 설치하였다)
자동화 프레임워크이다 보니 혼자서 수행하고 아래와 같이 report를 출력하며, 사용자는 이를 통해 PASS 및 FAIL 서브 테스트를 확인할 수 있다.
결국 testsuite를 수행함으로서 선행연구 패치가 적용된 kernel이 apparmor 기능 수행에 문제가 없는지 판단하여 양산에 적용할지 결정하게 된다. 물론 이를 통해 발견하지 못한 이슈들도 여전히 있으나 testsuite는 기능이 안정적으로 동작함을 검증할 수 있는 첫번째 단계가 되기도 한다.
Top comments (0)