Gunakan flag -h
dengan perintah happy-*
untuk melihat bantuan dan daftar
opsi untuk perintah tersebut.
File status
Happy Store dan mempertahankan status topologinya dengan cermat dalam file JSON dengan satu data. 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 dalam output happy-state
:
happy-state
State Name: happy
Status paralel
Happy mendukung beberapa status paralel yang berdekatan. Status saat ini
di 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 nilai dengan
nilai selain state
untuk segera beralih ke status Happy lainnya.
export HAPPY_STATE_ID="sunny"
Sekarang memeriksa happy-state
menghasilkan status yang berbeda:
happy-state
State Name: sunny
Setiap status dipertahankan dalam file ~/.${HAPPY_STATE_ID}_state.json
-nya sendiri. Untuk beralih antar-status, jalankan kembali perintah export HAPPY_STATE_ID="<state-name>"
.
Meng-uninstal dengan status paralel
Jika Anda menggunakan Happy status 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 jika diperlukan:
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. Cadangan log kedua dikirim ke /tmp/${HAPPY_STATE_ID}_debug_log.txt
.
Untuk melihat log Happy, jalankan happy-state -l
di jendela terminal yang terpisah. Saat Anda
memasukkan perintah Happy, log akan menampilkan perintah Shell 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 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. Selain itu, gunakan keduanya untuk mempelajari perintah untuk membuat topologi yang kompleks.
- Senang:
/topologies
- OpenWeave:
/src/test-apps/happy/topologies/standalone
Topologi menggunakan format JSON dan Shell Script.
JSON
File topologi JSON dimuat menggunakan perintah happy-state-load
atau
weave-state-load
. Jika topologi mencakup 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
Guna menyimpan topologi Anda 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 dalam file JSON yang sesuai. Skrip ini secara default tidak memiliki izin yang dapat dieksekusi. Iklan ini 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 Happy primer. |
<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 letak 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
Selamat menyimpan variabel konfigurasi di ~/.happy_conf.json
.
Proses dalam node
Happy menyediakan perintah untuk memulai dan menghentikan proses dalam node yang disimulasikan.
Untuk memulai proses:
happy-process-start <node-name> <custom-process-name> <command>
Misalnya, untuk terus menjalankan ping pada node bernama ThreadNode:
happy-process-start ThreadNode ContinuousPing ping 8.8.8.8
Pada 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 berada 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 akan meminta Anda untuk
memasukkan sandi sudo
selama operasi berlangsung.
Happy menggunakan variabel lingkungan sistem $SUDO
untuk memanggil sudo
. Jika $SUDO
tidak ditentukan, Happy akan melakukan panggilan sudo
normal.
Pembuatan skrip Python
Setelah penginstalan, paket Happy Python dapat diimpor ke lingkungan Python menggunakan pernyataan import
berikut:
import happy
Modul perintah individual 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()