
Bahasa Inggris | 中文
Cassowary adalah alat pengujian beban http/s modern, intuitif & lintas platform yang dibangun untuk pengembang, penguji, dan sysadmin. Cassowary menarik inspirasi dari proyek -proyek luar biasa seperti K6, AB & httpstat.
? 2 Mode Pengujian Muat : Satu standar dan satu mode penyebaran di mana jalur URL dapat ditentukan dari file (ideal jika Anda ingin menekan beberapa layanan microservices yang mendasarinya)
? CI Friendly : Sangat cocok untuk menjadi bagian dari langkah pipa CI
? Metrik Fleksibel : Metrik CloudWatch, Metrik Prometheus (Metrik Mendorong ke Prometheus Pushgateway), file JSON
? Dapat dikonfigurasi : dapat meneruskan header http sewenang -wenang, dapat mengonfigurasi klien http
? Dukungan Get, Post, Put & Patch - Posting, Put dan Patch Data dapat didefinisikan dalam file
? Cross Platform : Satu biner pra-built tunggal untuk Linux, Mac OSX dan Windows
? Diimpor - Selain CLI Tool Cassowary dapat diimpor sebagai modul di aplikasi GO Anda
? Visualisasi - Cassowary dapat mengekspor data permintaan sebagai histogram dan boxplot dalam format PNG
Ambil biner yang sudah dibangun dari halaman Rilis GitHub. Anda secara opsional dapat meletakkan biner kasower di PATH Anda sehingga Anda dapat menjalankan Cassowary dari lokasi mana pun. Alternatif yang Anda bisa:
Anda dapat menginstal Cassowary menggunakan Homebrew Package Manager di Mac:
$ brew update && brew install cassowaryAnda dapat menjalankan Cassowary secara langsung dengan menggunakan gambar Docker resminya:
$ docker run rogerw/cassowary:v0.14.1 -u http://www.example.com -c 1 -n 10Untuk pengembangan lokal:
$ GOOS=linux go build -o dist/docker/cassowary cmd/cassowary/ * .go
$ docker build -f dist/docker/Dockerfile -t test_cassowary dist/docker
$ docker run test_cassowary -u http://www.example.com -c 1 -n 10Tanpa argumen saat melakukan "Docker Run" itu mencetak penggunaan bantuan
Cassowary dapat diinstal melalui NIX Package Manager.
nix-env -iA cassowary
Jika Anda ingin meluncurkan RPM Anda sendiri, Anda dapat menggunakan file spec cassowary.spec untuk membangun paket rpm
Contoh Menjalankan Cassowary Melawan www.example.com dengan 100 permintaan tersebar lebih dari 10 pengguna bersamaan:
$ ./cassowary run -u http://www.example.com -c 10 -n 100
Starting Load Test with 100 requests using 10 concurrent users
100% | ████████████████████████████████████████ | [1s:0s] 1.256773616s
TCP Connect.....................: Avg/mean=101.90ms Median=102.00ms p(95)=105ms
Server Processing...............: Avg/mean=100.18ms Median=100.50ms p(95)=103ms
Content Transfer................: Avg/mean=0.01ms Median=0.00ms p(95)=0ms
Summary:
Total Req.......................: 100
Failed Req......................: 0
DNS Lookup......................: 115.00ms
Req/s...........................: 79.57Contoh Menjalankan Cassowary dalam Mode Slurp File Di mana semua jalur URL ditentukan dari file eksternal (yang juga dapat diambil dari HTTP jika ditentukan). Secara default Cassowary Will, tanpa bendera -n yang ditentukan, membuat satu permintaan per jalur yang ditentukan dalam file. Namun dengan bendera -n Anda juga dapat menentukan berapa banyak permintaan yang Anda inginkan untuk dihasilkan oleh jalur URL tersebut. Contoh:
$ ./cassowary run -u http://localhost:8000 -c 1 -f urlpath.txt
# NOTE: from v0.10.0 and below file slurp mode had it's own command
# $ ./cassowary run-file -u http://localhost:8000 -c 1 -f urlpath.txt
Starting Load Test with 5 requests using 1 concurrent users
[ omitted ]
$ ./cassowary run -u http://localhost:8000 -c 10 -n 100 -f urlpath.txt
Starting Load Test with 100 requests using 10 concurrent users
100% | ████████████████████████████████████████ | [0s:0s] 599.467161ms
TCP Connect.....................: Avg/mean=1.80ms Median=2.00ms p(95)=3ms
Server Processing...............: Avg/mean=0.90ms Median=0.00ms p(95)=3ms
Content Transfer................: Avg/mean=0.00ms Median=0.00ms p(95)=0ms
Summary:
Total Req.......................: 3925
Failed Req......................: 0
DNS Lookup......................: 2.00ms
Req/s...........................: 6547.48Contoh Mengekspor Metrik JSON Cassowary ke file:
$ ./cassowary run --json-metrics --json-metrics-file=metrics.json -u http://localhost:8000 -c 125 -n 100000
Starting Load Test with 100000 requests using 125 concurrent users
100% | ████████████████████████████████████████ | [0s:0s] 984.9862ms
TCP Connect.....................: Avg/mean=-0.18ms Median=0.00ms p(95)=1ms
Server Processing...............: Avg/mean=0.16ms Median=0.00ms p(95)=1ms
Content Transfer................: Avg/mean=0.01ms Median=0.00ms p(95)=0ms
Summary:
Total Req.......................: 100000
Failed Req......................: 0
DNS Lookup......................: 2.00ms
Req/s...........................: 101524.27Jika bendera
json-metrics-filetidak ada maka nama file defaultout.json.
Jika Anda lebih menginginkan data mentah dari semua permintaan (dalam format CSV), Anda dapat mengekspornya menggunakan flag --raw-output
Nama file yang dikeluarkan adalah
raw.csv
Contoh Mengekspor Metrik Cassowary ke Prometheus dengan menyediakan URL Pushgatway Prometheus:
$ ./cassowary run -u http://localhost:8000 -c 125 -n 100000 -p http://pushgatway:9091
Starting Load Test with 100000 requests using 125 concurrent users
[ omitted for brevity ]
Cassowary dapat mengekspor metrik ke AWS CloudWatch hanya dengan menambahkan bendera -cloudwatch tanpa nilai. Perhatikan bahwa Anda perlu memberi tahu Cassoway di wilayah AWS mana yang ingin Anda gunakan. Cara termudah adalah menggunakan variabel lingkungan seperti yang ditunjukkan di bawah ini:
$ export AWS_REGION=eu-north-1 && ./cassowary run -u http://localhost:8000 -c 125 -n 100000 --cloudwatch
Starting Load Test with 100000 requests using 125 concurrent users
[ omitted for brevity ]
Suplai bendera -histogram tanpa nilai untuk membiarkan cassowary menghitung dan mengeluarkan histogram dalam format PNG (hist.png dalam dir saat ini) untuk total durasi permintaan dalam MS. Contoh:
Suplai flag --boxplot tanpa nilai untuk memberi tahu Cassowary untuk menghasilkan visualisasi boxplot dalam format PNG (boxplot.png dalam dir saat ini) untuk total durasi permintaan dalam MS
Contoh memukul titik akhir pos di mana data JSON POST didefinisikan dalam file:
$ ./cassowary run -u http://localhost:8000/add-user -c 10 -n 1000 --postfile user.json
Starting Load Test with 1000 requests using 10 concurrent users
[ omitted for brevity ]
Contoh memukul titik akhir patch di mana data patch JSON didefinisikan dalam file:
$ ./cassowary run -u http://localhost:8000/add-user -c 5 -n 200 --patchfile user.json
Starting Load Test with 200 requests using 5 concurrent users
[ omitted for brevity ]
Contoh Menentukan durasi untuk uji beban Anda, dalam perintah di bawah ini kami menentukan bahwa kami ingin mengirim 100 permintaan selama 30 detik:
$ ./cassowary run -u http://localhost:8000 -n 100 -d 30
Starting Load Test with 100 requests using 1 concurrent users
[ omitted for brevity ]
Contoh Menambahkan Header HTTP Saat Menjalankan Cassowary
$ ./cassowary run -u http://localhost:8000 -c 10 -n 1000 -H ' Host: www.example.com '
Starting Load Test with 1000 requests using 10 concurrent users
[ omitted for brevity ]
Contoh Menonaktifkan HTTP Keep-Alive (secara default Keep-Alive diaktifkan):
$ ./cassowary run -u http://localhost:8000 -c 10 -n 1000 --disable-keep-alive
Starting Load Test with 1000 requests using 10 concurrent users
[ omitted for brevity ]
Contoh Menentukan Sertifikat CA
$ ./cassowary run -u http://localhost:8000 -c 10 -n 1000 --ca /path/to/ca.pem
Starting Load Test with 1000 requests using 10 concurrent users
[ omitted for brevity ]
Contoh Menentukan Otentikasi Klien untuk MTLS
$ ./cassowary run -u https://localhost:8443 -c 10 -n 1000 --cert /path/to/client.pem --key /path/to/client-key.pem --ca /path/to/ca.pem
Starting Load Test with 1000 requests using 10 concurrent users
[ omitted for brevity ]
Anda dapat menjalankan Cassowary dengan cara terdistribusi jika Anda perlu meningkatkan pengujian beban pada lebih dari satu mesin. Cara paling sederhana untuk melakukannya adalah memiliki akses ke kluster Kubernetes. Gunakan tipe batch di Kubernetes dan di spec. Key Paralellism Anda dapat menentukan berapa banyak contoh kasower yang ingin Anda jalankan secara bersamaan:
apiVersion : batch/v1
kind : Job
metadata :
name : cassowary
spec :
parallelism : 10
template :
spec :
containers :
- command : ["-u", "http://my-microservice.com:8000", "-c", "1", "-n", "10"]
image : rogerw/cassowary:v0.14.1
name : cassowary
restartPolicy : NeverOleskan saja yaml ini seperti begitu:
$ kubectl apply -f cassowary.yamlCassowary dapat diimpor dan digunakan sebagai modul di aplikasi GO Anda. Mulailah dengan mengambil ketergantungan dengan menggunakan Go Mod:
$ go mod init test && go get github.com/rogerwelin/cassowary/pkg/clientDan di bawah ini menunjukkan contoh sederhana tentang cara memicu tes beban dari kode Anda dan mencetak hasilnya:
package main
import (
"encoding/json"
"fmt"
"github.com/rogerwelin/cassowary/pkg/client"
)
func main () {
cass := & client. Cassowary {
BaseURL : "http://www.example.com" ,
ConcurrencyLevel : 1 ,
Requests : 10 ,
DisableTerminalOutput : true ,
}
metrics , err := cass . Coordinate ()
if err != nil {
panic ( err )
}
// print results
fmt . Printf ( "%+v n " , metrics )
// or print as json
jsonMetrics , err := json . Marshal ( metrics )
if err != nil {
panic ( err )
}
fmt . Println ( string ( jsonMetrics ))
}Lebih banyak contoh perpustakaan dapat ditemukan di sini
Cassowary mengikuti versi semantik. Perpustakaan Umum (PKG/Klien) dapat memecahkan kompatibilitas ke belakang hingga mencapai rilis V1.0.0 yang stabil.
Kontribusi dipersilakan! Untuk meminta fitur, buat masalah baru dengan feature-request label. Temukan bug? Harap tambahkan masalah dengan label bugs . Permintaan tarik juga disambut tetapi harap tambahkan masalah pada fitur yang diminta terlebih dahulu (kecuali itu adalah perbaikan bug sederhana atau perubahan readme)