구글은 블랙 사회를위한 인종 평등을 증진하기 위해 최선을 다하고 있습니다. 방법을 참조하십시오.
이 페이지는 Cloud Translation API를 통해 번역되었습니다.
Switch to English

해피 사용

사용 -h 어떤 플래그를 happy-* 해당 명령에 대한 옵션의 도움말 및 목록을 보려면 명령.

주 파일

조심스럽게 해피 저장하고는 단일 레코드와 JSON 파일의 토폴로지 상태를 유지한다. 이 상태 파일을 사용하여, 행복 만들거나 토폴로지를 제거 할 수있는 적절한 명령을 실행할 수 있습니다.

기본 상태 파일에 있습니다 ~/.happy_state.json . 기본 상태 이름은 happy 에서 볼 수 있듯이, happy-state 출력 :

 happy-state

State Name:  happy 

병렬 상태

해피 지원하는 다수의 공존 평행 상태. 현재의 상태에 의해 결정된다 HAPPY_STATE_ID 환경 변수. 경우 HAPPY_STATE_ID 환경에 존재하지 않는, 기본 상태 값 happy 사용됩니다.

HAPPY_STATE_ID 해피를 설치하는 동안 만들어지지 않습니다. 이외의 값을 하나 생성 state 를 즉시 또 다른 해피 상태로 전환 할 수 있습니다.

 export HAPPY_STATE_ID="sunny"

이제 체크 happy-state 는 다른 상태에서 결과를 :

 happy-state

State Name:  sunny 

각 국가는 자체 유지됩니다 ~/.${HAPPY_STATE_ID}_state.json 파일. , 상태 사이를 전환하려면 실행하려면 export HAPPY_STATE_ID=" <state-name> " 명령을 다시.

평행 상태로 제거

병렬 해피 상태를 사용하고 행복을 제거 할 경우, 실행해야합니다 happy-state-delete 활성 각각의 상태를. 이것은 리눅스 호스트의 네트워크 구성에 영향을주지 않고 시스템에서 제거하는 해피 만든 모든 네트워크 네임 스페이스를 보장합니다.

예를 들어, 두 가지 상태를 가진 happysunny :

 export HAPPY_STATE_ID="sunny"
happy-state-delete
export HAPPY_STATE_ID="happy"
happy-state-delete 

필요에 따라 수동으로 각 병렬 상태 파일을 제거합니다

 rm -f ~/.sunny_state.json
rm -f ~/.sunny_state.json.lock
rm -f ~/.happy_state.json
rm -f ~/.happy_state.json.lock 

로그

행복에 로그를 보내는 syslog 기본적으로. 두 번째 로그 백업이 전송됩니다 /tmp/${HAPPY_STATE_ID}_debug_log.txt .

해피 로그를 보려면, 실행 happy-state -l 별도의 터미널 창에서합니다. 당신이 행복 명령을 입력하면 로그는 쉘이 백그라운드에서 해피 문제를 명령을 보여줍니다. 이것은 당신이 리눅스 네트워크 네임 스페이스에 관심이 있다면 행복, 어떻게 작동하는지 이해하는 좋은 방법입니다.

예를 들어, happy-node-add node00 행복한 노드를 작성합니다. 이 명령의 로그 출력은 다음과 같습니다

DEBUG [HappyHost:_namespaceExists():56] Happy: namespace happy000 does not exist
DEBUG [Driver:writeState():365] Happy: writing Happy state to file
DEBUG [Driver:CallCmd():416] Happy [happy]: > sudo ip netns add happy000
DEBUG [HappyHost:_namespaceExists():56] Happy: namespace happy000 exists
DEBUG [Driver:CallCmd():416] Happy [happy]: > sudo ip netns exec happy000 ifconfig lo up

모든 Driver:CallCmd() 라인이 행복 호출하는 쉘 명령입니다. 로그의 각 줄을 고려 :

# Check to see if the target namespace (happy000) exists
DEBUG [HappyHost:_namespaceExists():56] Happy: namespace happy000 does not exist

# Write the link between node00 and happy000 in ~/.happy_state.json
DEBUG [Driver:writeState():365] Happy: writing Happy state to file

# Create the network namespace for the node
DEBUG [Driver:CallCmd():416] Happy [happy]: > sudo ip netns add happy000

# Check to see if the target namespace (happy000) exists
DEBUG [HappyHost:_namespaceExists():56] Happy: namespace happy000 exists

# Bring up the loopback interface within the happy000 namespace
DEBUG [Driver:CallCmd():416] Happy [happy]: > sudo ip netns exec happy000 ifconfig lo up

샘플 토폴로지

샘플 토폴로지는 테스트를위한 해피와 OpenWeave 저장소 모두에 포함되어 있습니다. 또한 복잡한 토폴로지를 구성하는 명령을 배울를 사용합니다.

토폴로지는 JSON과 쉘 스크립트 형식으로되어 있습니다.

JSON

JSON 토폴로지 파일은 사용하여로드 happy-state-load 또는 weave-state-load 명령을. 토폴로지는 직물을 포함하는 경우, 당신은 사용해야합니다 weave-state-load 달리 위브 특정 명령을 건너 뛰고, 토폴로지를로드 할 수 있습니다.

예를 들어, 위브없는 토폴로지 :

happy-state-load thread_wifi_ap_internet.json

위브와 토폴로지 :

weave-state-load three_nodes_on_thread_weave.json

나중에 사용하기 위해 별도의 JSON 파일로 현재 토폴로지를 저장하려면 (예를 들어, 테스트 케이스 스크립트 )를 사용 happy-shell -s :

happy-shell -s my_topology.json

이것은의 토폴로지 상태 파일 저장 $HOME 디렉토리를.

쉘 스크립트

쉘 스크립트 토폴로지 파일 해피 세트를 포함하고 위브 해당 JSON 파일의 토폴로지를 생성하는 명령. 기본적으로이 스크립트는 실행 권한이 없습니다. 그들은 두 가지 방법으로 실행할 수 있습니다 :

사용하여 bash 명령을 :

bash thread_wifi_ap_internet.sh

실행 권한을 적용하여 :

chmod +x thread_wifi_ap_internet.sh
./thread_wifi_ap_internet.sh

구성

행복 세 개의 구성 파일이 있습니다 :

구성 파일 기술
~/.happy_conf.json 개인 또는 플러그인 사용에 대한 구성 변수. 사용하여이 값을 설정 happy-configuration 명령을 사용합니다.
<path-to-happy> /happy/conf/main_config.json 차 해피 구성 변수.
<path-to-happy> /happy/conf/log_config.json 로그인 구성.

구성 변수를 추가

우리는 당신이 사용하는 것이 좋습니다 happy-configuration 해피의 특정 배포가 필요로하는 기본값 이상으로 개인 또는 플러그인 변수를 설정하는 명령을 사용합니다.

예를 들어, 행복 직조 어디서 찾을 수 있는지 알려 test-apps 설정, 테스트 스크립트에 대한 디렉토리를 weave_path 변수를 :

happy-configuration weave_path <path-to-openweave-core> /build/x86_64-unknown-linux-gnu/src/test-apps

해피 저장 변수 구성 ~/.happy_conf.json .

노드에서 프로세스

행복 시뮬레이션 노드에서 시작하는 명령 및 정지 프로세스를 제공합니다.

프로세스를 시작하려면 :

happy-process-start <node-name> <custom-process-name> <command>

예를 들어, 지속적라는 이름의 노드에 ThreadNode에서 핑을 실행합니다 :

happy-process-start ThreadNode ContinuousPing ping 8.8.8.8

위의 예에서 ContinuousPing 행복 프로세스를 관리하기 위해 사용하는 방법에 대해 사용자 정의 된 이름이다. 사용 happy-process-wait 프로세스 실행 및 중단 happy-process-stop 프로세스를 종료 할 수 있습니다.

프로세스 출력에 /tmp . 예를 들어, ContinuousPing 프로세스를 시작 한 후, 확인 /tmp 디렉토리를 :

ls /tmp/happy*
/tmp/happy_018691_1524087014.192197_ContinuousPing.out

.out 파일은 ContinuousPing 프로세스의 출력을 포함하고 있습니다.

의 사용 sudo

행복 리눅스 커널에 의해 제어되는 네트워크 구성을 변경합니다. 단지 때문에 root 커널 구성을 변경할 수 있습니다, 행복 당신이 입력하라는 메시지를 sudo 작동 중에 암호를.

행복은 사용 $SUDO 호출에 시스템 환경 변수 sudo . 경우 $SUDO 정의되지 않은, 행복 정상적인하게 sudo 전화를.

파이썬 스크립팅

설치 후, 해피 파이썬 패키지는 다음과 같은 사용하여 파이썬 환경으로 가져올 수있는 import 문을 :

import happy

에있는 개별 명령 모듈 /happy 다음과 같이 가져올 수 있습니다 :

import happy.HappyNodeAdd

모듈 옵션을 검색하려면 통화 option() 함수를. 예를 들어, 검색 할 HappyNodeAdd 모듈 옵션 :

module options
import happy.HappyNodeAdd
options = happy.HappyNodeAdd.option()