Gunakan flag -h
dengan perintah happy-*
apa pun untuk melihat bantuan dan daftar
opsi untuk perintah tersebut.
File status
Happy menyimpan dan mempertahankan status topologinya dengan cermat dalam file JSON dengan satu data. Dengan 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 dalam output happy-state
:
happy-state
State Name: happy
Status paralel
Happy mendukung beberapa status paralel yang ada bersama. Status saat ini
ditentukan oleh variabel lingkungan HAPPY_STATE_ID
. Jika HAPPY_STATE_ID
tidak ada di lingkungan, nilai status default happy
akan digunakan.
HAPPY_STATE_ID
tidak dibuat selama penginstalan Happy. Buat satu dengan nilai selain state
untuk segera beralih ke status Selamat lain.
export HAPPY_STATE_ID="sunny"
Sekarang memeriksa hasil happy-state
dalam status yang berbeda:
happy-state
State Name: sunny
Setiap status dikelola dalam file ~/.${HAPPY_STATE_ID}_state.json
-nya sendiri. Untuk
beralih antar-status, jalankan
perintah export HAPPY_STATE_ID="<state-name>"
lagi.
Meng-uninstal dengan status paralel
Jika Anda menggunakan status Happy paralel dan ingin meng-uninstal Happy, pastikan untuk
menjalankan happy-state-delete
dengan setiap status aktif. Tindakan ini memastikan semua namespace
jaringan yang dibuat oleh Happy dihapus dari sistem Anda tanpa memengaruhi
konfigurasi jaringan host Linux.
Misalnya, dengan dua status happy
dan sunny
:
export HAPPY_STATE_ID="sunny"
happy-state-delete
export HAPPY_STATE_ID="happy"
happy-state-delete
Hapus setiap file status paralel secara manual 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 mengirim log ke syslog
secara default. Pencadangan 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 akan menampilkan masalah Happy perintah shell 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 baris Driver:CallCmd()
adalah perintah shell yang dipanggil Happy.
Pertimbangkan setiap baris dalam 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. Gunakan juga tabel tersebut untuk mempelajari perintah dalam membuat topologi yang kompleks.
- Senang:
/topologies
- OpenWeave:
/src/test-apps/happy/topologies/standalone
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 saat ini sebagai file JSON terpisah untuk digunakan nanti (misalnya, skrip kasus pengujian), gunakan happy-shell -s
:
happy-shell -s my_topology.json
Tindakan ini akan 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. Secara default, skrip ini tidak memiliki izin yang dapat dieksekusi. Pengujian 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 plugin. Tetapkan nilai ini menggunakan perintah happy-configuration . |
<path-to-happy>/happy/conf/main_config.json | Variabel konfigurasi Primary Happy. |
<path-to-happy>/happy/conf/log_config.json | Konfigurasi log. |
Menambahkan variabel konfigurasi
Sebaiknya gunakan perintah happy-configuration
untuk menetapkan variabel pribadi atau
plugin di luar default yang diperlukan deployment Happy
tertentu.
Misalnya, untuk memberi tahu Happy tempat menemukan direktori test-apps
Weave untuk
skrip pengujian, tetapkan variabel weave_path
:
happy-configuration weave_path <path-to-openweave-core>/build/x86_64-unknown-linux-gnu/src/test-apps
Happy menyimpan variabel konfigurasi di ~/.happy_conf.json
.
Proses di node
Happy menyediakan 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. Gunakan happy-process-wait
untuk menangguhkan
eksekusi proses dan happy-process-stop
untuk menghentikan proses.
Output proses ada di /tmp
. Misalnya, setelah memulai proses ContinuousPing, periksa direktori /tmp
:
ls /tmp/happy*
/tmp/happy_018691_1524087014.192197_ContinuousPing.out
File .out
ini berisi output untuk proses ContinuousPing.
Penggunaan sudo
Happy mengubah konfigurasi jaringan yang dikontrol oleh kernel Linux.
Karena hanya root
yang dapat mengubah konfigurasi kernel, Happy meminta Anda untuk
memasukkan sandi sudo
selama operasi.
Happy menggunakan variabel lingkungan sistem $SUDO
untuk memanggil sudo
. Jika $SUDO
tidak ditentukan, Happy akan melakukan panggilan sudo
normal.
Skrip Python
Setelah penginstalan, paket Happy Python dapat diimpor ke lingkungan
Python menggunakan pernyataan import
berikut:
import happy
Setiap modul perintah yang ditemukan di /happy
diimpor sebagai berikut:
import happy.HappyNodeAdd
Untuk mengambil opsi modul, panggil fungsi option()
. Misalnya, untuk
mengambil opsi modul HappyNodeAdd
:
module options import happy.HappyNodeAdd options = happy.HappyNodeAdd.option()