Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.
Halaman ini diterjemahkan oleh Cloud Translation API.
Switch to English

Penggunaan yang menyenangkan

Gunakan -h flag dengan perintah happy-* untuk melihat bantuan dan daftar opsi untuk perintah itu.

File negara

Happy menyimpan dan dengan hati-hati mempertahankan status topologinya dalam file JSON dengan satu catatan. Dengan menggunakan file status ini, Happy dapat menjalankan perintah yang sesuai untuk membuat atau menghapus topologi.

File status default terletak di ~/.happy_state.json . Nama status default adalah happy , seperti yang terlihat pada keluaran happy-state :

happy-state

State Name:  happy

Status paralel

Happy mendukung beberapa status paralel yang hidup berdampingan. Status saat ini ditentukan oleh variabel lingkungan HAPPY_STATE_ID . Jika HAPPY_STATE_ID tidak ada di lingkungan, nilai status default happy digunakan.

HAPPY_STATE_ID tidak dibuat selama instalasi Happy. Buat satu dengan nilai selain state untuk segera beralih ke status Bahagia lainnya.

export HAPPY_STATE_ID="sunny"

Sekarang memeriksa hasil happy-state dalam keadaan berbeda:

happy-state

State Name:  sunny

Setiap negara bagian dipertahankan dalam ~/.${HAPPY_STATE_ID}_state.json file-nya sendiri. Untuk beralih antar negara bagian, jalankan kembali perintah export HAPPY_STATE_ID=" <state-name> " .

Copot pemasangan dengan status paralel

Jika Anda menggunakan status Happy paralel dan Anda ingin menghapus Happy, pastikan untuk menjalankan happy-state-delete dengan setiap status aktif. Ini memastikan semua ruang nama jaringan yang dibuat oleh Happy dihapus dari sistem Anda tanpa memengaruhi konfigurasi jaringan host Linux.

Misalnya, dengan dua kondisi happy dan sunny :

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

Hapus secara manual setiap file status paralel sesuai kebutuhan:

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

Log

Happy mengirimkan log ke syslog secara default. Cadangan log kedua dikirim ke /tmp/${HAPPY_STATE_ID}_debug_log.txt .

Untuk melihat log Happy, jalankan happy-state -l di jendela terminal terpisah. Saat Anda memasukkan perintah Happy, log menampilkan perintah shell Masalah Happy di latar belakang. Ini adalah cara yang baik untuk memahami cara kerja Happy, jika Anda tertarik dengan namespace jaringan Linux.

Misalnya, happy-node-add node00 membuat node Happy. Output log untuk perintah ini adalah:

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

Semua Driver:CallCmd() adalah perintah shell yang dipanggil Happy. Pertimbangkan setiap baris di log:

# 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

Contoh topologi

Contoh topologi disertakan dalam repositori Happy dan OpenWeave untuk pengujian. Juga gunakan mereka untuk mempelajari perintah untuk membuat topologi yang kompleks.

Topologi dalam format JSON dan Shell Script.

JSON

File topologi JSON dimuat menggunakan perintah happy-state-load atau weave-state-load . Jika topologi menyertakan Weave, Anda harus menggunakan weave-state-load untuk memuat topologi, jika tidak, perintah khusus Weave akan dilewati.

Misalnya, topologi tanpa Weave:

happy-state-load thread_wifi_ap_internet.json

Topologi dengan Weave:

weave-state-load three_nodes_on_thread_weave.json

Untuk menyimpan topologi Anda saat ini sebagai file JSON terpisah untuk digunakan nanti (misalnya, skrip kasus uji ), gunakan happy-shell -s :

happy-shell -s my_topology.json

Ini menyimpan file status topologi di direktori $HOME .

Skrip shell

File topologi skrip shell berisi kumpulan perintah Happy dan Weave untuk membuat topologi di file JSON yang sesuai. Skrip ini secara default tidak memiliki izin yang dapat dijalankan. Mereka dapat dijalankan dengan dua cara:

Dengan menggunakan perintah bash :

bash thread_wifi_ap_internet.sh

Dengan menerapkan izin yang dapat dieksekusi:

chmod +x thread_wifi_ap_internet.sh
./thread_wifi_ap_internet.sh

Konfigurasi

Happy memiliki tiga file konfigurasi:

File Konfigurasi Deskripsi
~/.happy_conf.json Variabel konfigurasi untuk penggunaan pribadi atau plug-in. Tetapkan nilai-nilai ini menggunakan perintah happy-configuration .
<path-to-happy> /happy/conf/main_config.json Variabel konfigurasi Happy primer.
<path-to-happy> /happy/conf/log_config.json Konfigurasi log.

Tambahkan variabel konfigurasi

Kami menyarankan Anda menggunakan perintah happy-configuration untuk menyetel variabel pribadi atau plug-in apa pun di luar default yang dibutuhkan oleh penerapan khusus Happy.

Misalnya, untuk memberi tahu Happy di mana menemukan direktori Weave test-apps untuk skrip pengujian, setel variabel weave_path :

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

Selamat menyimpan variabel konfigurasi di ~/.happy_conf.json .

Proses di node

Happy memberikan perintah untuk memulai dan menghentikan proses dalam node simulasi.

Untuk memulai proses:

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

Misalnya, untuk terus menjalankan ping di node bernama ThreadNode:

happy-process-start ThreadNode ContinuousPing ping 8.8.8.8

Dalam contoh di atas, ContinuousPing adalah nama yang ditentukan pengguna untuk proses yang digunakan Happy untuk mengelola proses tersebut. Gunakan happy-process-wait untuk menangguhkan eksekusi proses dan happy-process-stop untuk happy-process-stop proses.

Output proses dalam /tmp . Misalnya, setelah memulai proses ContinuousPing, periksa /tmp :

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

File .out ini berisi keluaran untuk proses ContinuousPing.

Penggunaan sudo

Selamat mengubah konfigurasi jaringan yang dikendalikan oleh kernel Linux. Karena hanya root dapat mengubah konfigurasi kernel, Happy meminta Anda memasukkan kata sandi sudo selama operasi.

Happy menggunakan variabel lingkungan sistem $SUDO untuk memanggil sudo . Jika $SUDO tidak ditentukan, Happy melakukan panggilan sudo normal.

Skrip Python

Setelah instalasi, paket Happy Python dapat diimpor ke lingkungan Python menggunakan pernyataan import berikut:

import happy
.dll

Modul perintah individual yang ditemukan di /happy diimpor sebagai berikut:

import happy.HappyNodeAdd

Untuk mengambil opsi modul, panggil fungsi option() . Misalnya, untuk mengambil HappyNodeAdd modul HappyNodeAdd :

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