OpenStack Integration Test Suite 가이드
OpenStack Integration Test Suite 소개
OpenStack Documentation Team
rhos-docs@redhat.com
초록
보다 포괄적 수용을 위한 오픈 소스 용어 교체
Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 용어를 교체하기 위해 최선을 다하고 있습니다. 먼저 마스터(master), 슬레이브(slave), 블랙리스트(blacklist), 화이트리스트(whitelist) 등 네 가지 용어를 교체하고 있습니다. 이러한 변경 작업은 작업 범위가 크므로 향후 여러 릴리스에 걸쳐 점차 구현할 예정입니다. 자세한 내용은 CTO Chris Wright의 메시지를 참조하십시오.
Red Hat 문서에 관한 피드백 제공
문서 개선을 위한 의견을 보내 주십시오. Red Hat이 어떻게 이를 개선하는지 알려주십시오.
DDF(직접 문서 피드백) 기능 사용
특정 문장, 단락 또는 코드 블록에 대한 직접 주석은 피드백 추가 DDF 기능을 사용하십시오.
- 다중 페이지 HTML 형식으로 설명서를 봅니다.
- 문서 오른쪽 상단에 Feedback (피드백) 버튼이 표시되는지 확인합니다.
- 주석 처리하려는 텍스트 부분을 강조 표시합니다.
- 피드백 추가를 클릭합니다.
- 주석을 사용하여 Add Feedback (피드백 추가) 필드를 작성합니다.
- 선택 사항: 설명서 팀이 문제에 대한 자세한 내용을 문의할 수 있도록 이메일 주소를 추가하십시오.
- Submit(제출)을 클릭합니다.
1장. OpenStack Integration Test Suite(tempest) 검증
RHOSP(Red Hat OpenStack Platform)는 다양한 프로젝트로 구성되므로 RHOSP 클러스터 내의 프로젝트의 상호 운용성을 테스트하는 것이 중요합니다. OpenStack Integration Test Suite는 RHOSP 배포를 위한 통합 테스트를 자동화합니다. 테스트를 실행하여 클러스터가 예상대로 작동하는지 확인할 수 있습니다. 특히 업그레이드 후 잠재적인 문제에 대한 조기 경고를 제공하기 위해 출력을 테스트합니다.
Integration Test Suite에는 OpenStack API 검증 및 시나리오 테스트와 자체 검증을 위한 단위 테스트가 포함되어 있습니다. Integration Test Suite는 테스트 러너로 tempest와 함께 OpenStack 공용 API를 사용하여 블랙박스 테스트를 수행합니다.
OpenStack Integration Test Suite(tempest)는 RHOSP(Red Hat OpenStack Platform) 핵심 프로젝트에 대한 커밋의 게이트 역할을 하며 클라우드 배포에 부하를 생성하는 스트레스 테스트를 수행할 수 있으며 CLI 테스트를 수행하여 명령줄의 응답 형식을 확인할 수 있습니다. RHOSP 클라우드 배포에 대해 시나리오 테스트
및 API 테스트를
실행할 수 있습니다.
시나리오 테스트
시나리오 테스트는 일반적인 최종 사용자 작업 워크플로를 시뮬레이션하여 서비스 간 통합 지점을 테스트합니다. 테스트 프레임워크는 구성을 수행하고 서비스 간 통합을 테스트한 다음 자동으로 제거됩니다. 테스트에서 사용하는 클라이언트 라이브러리를 명확히 설명하는 서비스로 테스트에 태그를 지정합니다.
다음 시나리오는 사용 사례를 기반으로 합니다.
- 이미지 서비스에 이미지 업로드
- 이미지에서 인스턴스 배포
- 인스턴스에 볼륨 연결
- 인스턴스의 스냅샷 생성
- 인스턴스에서 볼륨 분리
API 테스트
API 테스트는 OpenStack API를 검증합니다. 테스트에서는 OpenStack API의 OpenStack Integration Test Suite 구현을 사용합니다. 유효한 JSON과 유효하지 않은 JSON을 둘 다 사용하여 오류 응답이 유효한지 확인할 수 있습니다. 테스트를 개별적으로 실행할 수 있으며 이전 테스트 상태를 사용하지 않아도 됩니다.
2장. Integration Test Suite(tempest) 설치
director 또는 수동 설치와 함께 Integration Test Suite를 설치할 수 있습니다.
- director와 Integration Test Suite를 설치하려면 director 를 사용하여 Integration Test Suite 설치를 참조하십시오.
- Integration Test Suite를 수동으로 설치하려면 Integration Test Suite를 수동으로 설치합니다.
2.1. 사전 요구 사항
- 언더클라우드 설치 자세한 내용은 Director 설치 및 구성을 참조하십시오.
- Overcloud 배포. 자세한 내용은 오버클라우드 플래닝을 참조하십시오.
2.2. Director와 Integration Test Suite 설치
RHOSP(Red Hat OpenStack Platform) director를 사용하여 테스트 모음을 자동으로 설치합니다.
사전 요구 사항
-
python3-tripleoclient
패키지가 설치되어 있습니다. 자세한 내용은 Director 설치 및 사용 가이드의 director 패키지 설치를 참조하십시오.
절차
-
언더클라우드 호스트에
stack
사용자로 로그인합니다. -
stack
사용자의 홈 디렉터리에 있는undercloud.conf
파일을 편집합니다. enable_tempest
매개 변수를true로 설정합니다
.enable_tempest = true
openstack undercloud install
명령을 실행하여 언더클라우드에 추가 설정을 포함합니다.$ openstack undercloud install
2.3. 수동으로 Integration Test Suite 설치
director를 사용하여 자동으로 Integration Test Suite(tempest)를 설치하지 않으려면 나중에 수동으로 설치를 수행할 수 있습니다. 기본 네트워크 구성이 있는지 확인하고 Integration Test Suite 패키지를 설치하고, OpenStack 서비스 및 기타 테스트 동작 스위치에 대한 세부 정보가 포함된 구성 파일을 생성해야 합니다.
절차
RHOSP(Red Hat OpenStack Platform) 환경에서 다음 네트워크를 사용할 수 있는지 확인합니다.
- 유동 IP를 제공할 수 있는 외부 네트워크입니다.
사설 네트워크.
라우터를 통해 이러한 네트워크를 연결합니다.
사설 네트워크를 생성하려면 네트워크 배포에 따라 다음 옵션을 지정합니다.
$ openstack network create <network_name> --share $ openstack subnet create <subnet_name> --subnet-range <address/prefix> \ --network <network_name> $ openstack router create <router_name> $ openstack router add subnet <router_name> <subnet_name>
공용 네트워크를 생성하려면 네트워크 배포에 따라 다음 옵션을 지정합니다.
$ openstack network create <network_name> --external \ --provider-network-type flat \ --provider-physical-network datacentre $ openstack subnet create <subnet_name> --subnet-range <address/prefix> \ --gateway <default_gateway> --no-dhcp --network <network_name> $ openstack router set <router_name> --external-gateway <public_network_name>
Integration Test Suite와 관련된 패키지를 설치합니다.
$ sudo dnf -y install openstack-tempest
이 명령은 Tempest 플러그인을 설치하지 않습니다. RHOSP 설치에 따라 플러그인을 수동으로 설치해야 합니다.
환경에 있는 각 구성 요소에 적절한 Tempest 플러그인을 설치합니다. 예를 들어 keystone, neutron, cinder, telemetry 플러그인을 설치하려면 다음 명령을 입력합니다.
$ sudo dnf install python3-keystone-tests-tempest python3-neutron-tests-tempest python3-cinder-tests-tempest python3-telemetry-tests-tempest
전체 패키지 목록은 Integration Test Suite 패키지를 참조하십시오.
openstack-tempest-all
패키지를 설치할 수도 있습니다. 이 패키지에는 모든 tempest 플러그인이 포함되어 있습니다.
2.3.1. Integration Test Suite 패키지
dnf 검색을
사용하여 tempest 테스트 패키지 목록을 검색합니다.
$ sudo dnf search $(openstack service list -c Name -f value) 2>/dev/null | grep test | awk '{print $1}'
구성 요소 | 패키지 이름 |
---|---|
Barbican | python3-barbican-tests-tempest |
cinder | python3-cinder-tests-tempest |
designate | python3-designate-tests-tempest |
ec2-api | python3-ec2api-tests-tempest |
Heat | python3-heat-tests-tempest |
Ironic | python3-ironic-tests-tempest |
Keystone | python3-keystone-tests-tempest |
Kuryr | python3-kuryr-tests-tempest |
Manila | python3-manila-tests-tempest |
mistral | python3-mistral-tests-tempest |
networking-bgvpn | python3-networking-bgpvpn-tests-tempest |
networking-l2gw | python3-networking-l2gw-tests-tempest |
Neutron | python3-neutron-tests-tempest |
nova-join | python3-novajoin-tests-tempest |
Octavia | python3-octavia-tests-tempest |
patrole | python3-patrole-tests-tempest |
telemetry | python3-telemetry-tests-tempest |
tripleo-common | python3-tripleo-common-tests-tempest |
Zaqar | python3-zaqar-tests-tempest |
python3-telemetry-tests-tempest
패키지에는 aodh, panko, gnocchi 및 ceilometer 테스트용 플러그인이 포함되어 있습니다. python3-ironic-tests-tempest
패키지에는 ironic 및 ironic-inspector용 플러그인이 포함되어 있습니다.
3장. Integration Test Suite(tempest) 구성
Integration Test Suite로 환경 검증을 시작하기 전에 작업 영역을 생성하고 /etc/tempest.conf
구성 파일을 생성해야 합니다.
3.1. 사전 요구 사항
- Integration Test Suite 패키지가 포함된 OpenStack 환경입니다. 자세한 내용은 director를 사용하여 Integration Test Suite 설치를 참조하십시오.
3.2. 작업 공간 생성
Integration Test Suite(tempest) 구성 및 출력을 위한 작업 영역을 만듭니다.
절차
대상 배포의 자격 증명을 가져옵니다.
대상이 언더클라우드에 있는 경우 언더클라우드의 인증 정보를 가져옵니다.
# source stackrc
대상이 오버클라우드에 있는 경우 오버클라우드의 인증 정보를 가져옵니다.
# source overcloudrc
Tempest
초기화 :# tempest init mytempest # cd mytempest
이 명령은
mytempest
라는 Tempest 작업 공간을 생성합니다.선택 사항: 기존 작업 영역 목록을 보려면 다음 명령을 입력합니다.
# tempest workspace list
etc/tempest.conf
파일을 생성합니다.# discover-tempest-config --deployer-input ~/tempest-deployer-input.conf \ --debug --create --network-id <UUID>
UUID
를 외부 네트워크의 UUID로 바꿉니다.discover-tempest-config
이전의config_tempest.py
는 동일한 매개 변수를 사용합니다.python-tempestconf
는openstack-tempest
의 종속성이며discover-tempest-config
를 제공합니다.참고언더클라우드에 대한
etc/tempest.conf
파일을 생성하려면tempest-deployer-input.conf
파일의 지역 이름이 Undercloud 배포의 이름과 동일해야 합니다. 이러한 이름이 일치하지 않는 경우 언더클라우드의 지역 이름과 일치하도록tempest-deployer-input.conf
파일의 지역 이름을 업데이트합니다.언더클라우드의 지역 이름을 검사하려면 다음 명령을 입력합니다.
$ source stackrc $ openstack region list
오버클라우드의 지역 이름을 검사하려면 다음 명령을 입력합니다.
$ source overcloudrc $ openstack region list
환경에 맞게 기본 tempest.conf
파일을 수정해야 할 수 있습니다. 자세한 내용은 확장 목록 구성 및 heat_plugin 구성을 참조하십시오.
검증
현재 Tempest 구성을 확인합니다.
# tempest verify-config -o <output>
출력
값은 Integration Test Suite가 업데이트된 구성을 작성하는 출력 파일입니다. 원본 구성 파일과는 다릅니다.
3.3. Integration Test Suite를 수동으로 구성
discover-tempest-config
명령은 tempest.conf
파일을 자동으로 생성합니다. 그러나 tempest.conf
파일이 환경 구성에 해당하는지 확인해야 합니다.
3.3.1. Integration Test Suite 확장 목록 수동 구성
기본 tempest.conf
파일에는 각 구성 요소에 대한 확장 기능 목록이 포함되어 있습니다. tempest.conf
파일의 각 구성 요소에 대한 api_extensions
속성을 검사하고 확장 기능 목록이 배포에 해당하는지 확인합니다.
배포에서 사용할 수 있는 확장 기능이 tempest.conf
파일의 api_extensions
속성의 확장 목록에 해당하지 않으면 구성 요소가 Tempest 테스트에 실패합니다. 이 실패를 방지하려면 배포에 사용할 수 있는 확장 프로그램을 확인하고 api_extensions
매개변수에 포함해야 합니다. 배포에서 Network, Compute, Volume 또는 Identity 확장 목록을 가져오려면 다음 명령을 실행합니다.
절차
배포에서 Network, Compute, Volume 또는 Identity 확장 목록을 검색하려면 다음 명령을 입력합니다.
$ openstack extension list [--network] [--compute] [--volume] [--identity]
3.3.2. heat_plugin을 수동으로 설정
tempest.conf
파일에서 heat_plugin
을 수동으로 구성할 수 있습니다.
절차
다음 예제를 사용하여 배포에 따라
heat_plugin
을 구성합니다.[service_available] heat = True [heat_plugin] username = demo password = *** project_name = demo admin_username = admin admin_password = **** admin_project_name = admin auth_url = http://10.0.0.110:5000//v3 auth_version = 3 user_domain_id = default project_domain_id = default user_domain_name = Default project_domain_name = Default region = regionOne fixed_network_name = demo_project_network network_for_ssh = public floating_network_name = nova instance_type = m1.nano minimal_instance_type = m1.micro image_ref = 7faed41e-a56c-4971-bf48-24e4e23e69a5 minimal_image_ref = 7faed41e-a56c-4971-bf48-24e4e23e69a5
openstack network list
명령을 사용하여 fixed_network_name
,network_for_ssh
, floating_network_name
매개변수의 네트워크를 식별합니다.
tempest.conf
파일의 [service_available]
섹션에서 heat
를 True
로 설정해야 하며 [heat_plugin]
섹션의 username
속성에 역할 멤버가
있어야 합니다. 예를 들어 다음 명령을 입력하여 demo
사용자에 member
역할을 추가합니다.
$ openstack role add --user demo --project demo member
3.4. Integration Test Suite 로깅 구성
Tempest 작업 영역 내의 logs
디렉터리에 있는 로그 파일의 기본 위치를 변경할 수 있습니다.
절차
tempest.conf
의[DEFAULT]
섹션의log_dir
을 원하는 디렉터리로 설정합니다.[DEFAULT] log_dir = <directory>
tempest.conf
에[DEFAULT]
섹션 아래에 고유한 로깅 구성 파일이 있는 경우log_config_append
를 파일로 설정합니다.[DEFAULT] log_config_append = <file>
log_config_append
특성을 설정하면 Integration Test Suite에서 log_dir
속성을 포함하여 tempest.conf
의 기타 모든 로깅 구성을 무시합니다.
3.5. Integration Test Suite 마이크로버전 테스트 구성
Integration Test Suite(tempest)는 안정적인 인터페이스를 제공하여 API 마이크로버전을 테스트합니다. 이러한 인터페이스를 사용하여 마이크로버전 테스트를 구현하려면 다음 단계를 완료합니다.
절차
-
대상 마이크로버전을 지정하도록
tempest.conf
구성 파일에서 옵션을 구성합니다. 지원되는 마이크로 버전이 OpenStack 클라우드의 마이크로 버전에 해당하는지 확인하도록 이러한 옵션을 구성합니다. 단일 통합 테스트 제품군 작업에서 여러 마이크로버전 테스트를 실행할 대상 마이크로버전 범위를 지정할 수 있습니다.
예를 들어 구성 파일의
[compute]
섹션에서계산
서비스의 마이크로버전 범위를 제한하려면min_microversion 및
매개 변수에 값을 할당합니다.max_microversion
[compute] min_microversion = 2.14 max_microversion = latest
4장. Integration Test Suite(tempest) 리소스 정리
OpenStack Integration Test Suite(tempest)를 사용하여 배포를 확인하기 전에 --init-saved-state
플래그와 함께 cleanup
명령을 실행합니다. 이 명령은 환경을 검사하여 네트워크, 볼륨, 이미지, 플레이버, 프로젝트 및 사용자와 같은 리소스를 검색합니다. 검색된 리소스는 saved_state.json
이라는 파일에 저장됩니다. tempest cleanup
명령을 실행하면 saved_state.json
파일에 기록되지 않은 모든 리소스가 삭제됩니다.
사전 요구 사항
- Integration Test Suite 패키지가 포함된 OpenStack 환경입니다. 자세한 내용은 director를 사용하여 Integration Test Suite 설치를 참조하십시오.
- OpenStack 환경에 해당하는 Integration Test Suite 구성입니다. 자세한 내용은 작업 공간 생성을 참조하십시오.
- 하나 이상의 완료된 Integration Test Suite 검증 테스트입니다.
4.1. 예행 연습
정리를 실행하기 전에 예행 연습을 수행합니다. 예행 연습에는 실제로 파일을 삭제하지 않고 통합 테스트 제품군이 정리에 의해 삭제되는 파일이 나열됩니다. dry_run.json
파일에는 정리가 삭제되는 파일 목록이 포함되어 있습니다.
절차
예행 연습을 완료합니다.
# tempest cleanup --dry-run
-
dry_run.json
파일을 검토하여 정리해도 환경에 필요한 파일이 삭제되지 않는지 확인합니다.
4.2. Tempest 정리를 수행합니다.
Tempest 테스트를 실행하기
전에 저장된 상태를 초기화해야 합니다. 이렇게 하면 saved_state.json
파일이 생성되어 정리에서 유지해야 하는 오브젝트를 삭제할 수 없습니다.
--init-saved-state
플래그를 사용하여 cleanup
명령을 실행하지 않으면 RHOSP 오브젝트가 삭제됩니다.
--init-saved-state
를 사용하여 cleanup
명령을 실행한 후 오브젝트를 생성하는 경우 후속 tempest
명령으로 해당 오브젝트를 삭제할 수 있습니다.
절차
saved_state.json
파일을 생성하도록 저장된 상태를 초기화합니다.# tempest cleanup --init-saved-state
정리를 수행합니다.
# tempest cleanup
tempest cleanup
명령은 tempest 리소스를 삭제하지만 프로젝트 또는 tempest 관리자 계정을 삭제하지 않습니다.
유지하거나 제거하려는 오브젝트를 포함하거나 제외하도록 stored _state.json
파일을 수정할 수 있습니다.
5장. Integration Test Suite(tempest)를 사용하여 OpenStack 클라우드 검증
tempest run
명령을 사용하여 여러 가지 방법으로 Integration Test Suite 검증을 실행할 수 있습니다. 단일 tempest run
명령에서 여러 옵션을 결합할 수도 있습니다.
5.1. 사전 요구 사항
- Integration Test Suite 패키지가 포함된 OpenStack 환경입니다. 자세한 내용은 director를 사용하여 Integration Test Suite 설치를 참조하십시오.
- OpenStack 환경에 해당하는 Integration Test Suite 구성입니다. 자세한 내용은 작업 공간 생성을 참조하십시오.
5.2. 사용 가능한 테스트 나열
--list-tests
옵션을 사용하여 사용 가능한 모든 테스트를 나열합니다.
절차
사용 가능한 tempest 테스트 목록을 보려면
--list-tests
또는-l
옵션과 함께tempest run
명령을 입력합니다.# tempest run -l
5.3. 스모크 테스트 실행
스모크 테스트는 가장 중요한 기능만 포함하는 예비 테스트의 유형입니다. 이러한 테스트는 포괄적이지 않지만 스모크 테스트를 실행하면 문제를 식별하는 시간을 절약할 수 있습니다.
절차
허용 목록 파일을 사용하려면
--whitelist-file
옵션과 함께tempest run
명령을 입력합니다.# tempest run --smoke
5.4. 허용 목록 파일을 사용하여 테스트 전달
허용 목록 파일은 포함할 테스트를 선택하는 정규 표현식이 포함된 파일입니다. 하나 이상의 정규 표현식을 사용하는 경우 각 표현식을 별도의 행에 지정합니다.
절차
allowlist 파일을 사용하려면
--whitelist-file
또는-w
옵션을 사용하여tempest run
명령을 입력합니다.# tempest run -w <whitelist_file>
5.5. 블록 목록 파일을 사용하여 테스트 건너뛰기
blocklist 파일은 제외하려는 테스트를 선택하는 정규 표현식이 포함된 파일입니다. 하나 이상의 정규 표현식을 사용하는 경우 각 표현식을 별도의 행에 지정합니다.
절차
blocklist 파일을 사용하려면
--blacklist-file
또는-b
옵션을 사용하여tempest run
명령을 입력합니다.# tempest run -b <blacklist_file>
5.6. 병렬 또는 시리즈로 테스트 실행
테스트를 병렬로 실행하거나 연속해서 실행할 수 있습니다. 병렬 테스트를 실행할 때 사용할 작업자 수를 정의할 수도 있습니다. 기본적으로 Integration Test Suite는 사용 가능한 각 CPU에 하나의 작업자를 사용합니다.
테스트를 직렬 또는 병렬로 실행하도록 선택합니다.
테스트를 직렬로 실행합니다.
# tempest run --serial
테스트를 병렬로 실행합니다(기본값).
# tempest run --parallel
테스트를 병렬로 실행할 때 사용할 작업자 수를 지정하려면
--concurrency
또는-c
옵션을 사용합니다.# tempest run --concurrency <workers>
5.7. 특정 테스트 실행
regex 옵션을
사용하여 특정 테스트를 실행합니다. 정규 표현식은 Python 정규식이어야 합니다.
절차
다음 명령을 실행합니다.
# tempest run --regex <regex>
예를 들어 다음 예제 명령을 사용하여
tempest.scenario로 시작하는 이름이 있는 모든 테스트를 실행합니다.
# tempest run --regex ^tempest.scenario
5.8. Integration Test Suite 오브젝트 삭제
tempest cleanup
명령을 입력하여 모든 Integration Test Suite(tempest) 리소스를 삭제합니다. 이 명령은 프로젝트도 삭제하지만 명령은 관리자 계정을 삭제하지 않습니다.
절차
tempest 리소스를 삭제합니다.
# tempest cleanup --delete-tempest-conf-objects