leveling, pengujian integrasi snapD

Dalam beberapa bulan terakhir telah luar biasa dan berkembang nyeri yang berhubungan dengan pengujian integrasi tumbuh di sekitar snapD, dan mengingat tujuan dari proyek ini menjadi distribusi lintas-platform, kami sangat tertarik dalam memecahkan masalah ini dengan baik sehingga stabilitas yang dipastikan di mana-mana.

Dengan mentalitas ini dari upaya lebih terkonsentrasi telah dibuat dalam beberapa pekan terakhir untuk menghasilkan sebuah alat yang bisa mendapatkan proyek dari masalah ini dan stabilitas lagu lebih menyenangkan. Meskipun waktu singkat, saya sangat senang dengan Penyebaran proyek yang dihasilkan dari usaha ini.

tidak didistribusikan atau Travis Jenkins, dan bukan bahasa atau perpustakaan juga. Spread adalah alat yang akan sangat nyaman mengirim kode Anda untuk satu atau lebih sistem secara paralel, dan kemudian memberikan hak mengatur pilihan sehingga Anda dapat menerapkan apa yang Anda butuhkan untuk melakukan untuk memastikan bahwa logika berjalan, dan memimpin dari sistem lokal. Ini berarti Anda dapat menjalankan Sebarkan dalam Travis Jenkins atau terminal nya, sama dengan bagaimana pengujian unit kerja.

Berikut adalah daftar singkat dari fakta-fakta menarik tentang penyebaran: pengujian ..

  • seluruh sistem mesin alokasi pencari
  • multi-dukungan untuk Linode dan LXD ( untuk ras lokal) di luar kotak untuk saat ini
  • multi-bahasa, di mana ia dapat menjalankan kode remote sewenang-wenang.
  • -agent kurang dan keluar melalui tertanam ssh (pujian pergi ke tim).
  • harness Nyaman dengan proyek dukungan + + + test suite mempersiapkan dan memulihkan sertifikat
  • fitur varian untuk menguji duplikasi tanpa copy & amp; amp; amp. . Paste
  • Great dukungan debugging – menambahkan debug dan berhenti dengan shell dalam setiap kegagalan
  • Recovery server -. Server Alokasi cepat, tidak, tapi alokasi lebih cepat.
  • test output yang adil + x kegagalan dalam mode shell.
  • … dan seterusnya.

Ini semua didokumentasikan dengan baik, jadi saya hanya akan memberikan contoh di sini untuk menawarkan rasa nyata bagaimana program berlangsung.

Ini adalah spread.yaml , mengatur root proyek untuk menentukan dasar-dasar:

  proyek: backend Spread: LXD: Sistem: - Ubuntu-16 04 - 14:04 Ubuntu-path: persiapan / home / test: | menggemakan proyek menekan ... restorasi: | Meninggalkan gema Design Suites ...: test /: Ringkasan: Integrasi pengujian untuk mempersiapkan: | menggemakan menekan Suite ... restorasi: | Meninggalkan Suite gema ...  

menetapkan nama juga cara tes ditemukan.

Jadi, ini adalah test / Hello / proyek .yaml :

  Summary: Menyapa dunia mempersiapkan: | echo "Memasuki proyek ..." restorasi: | echo "Meninggalkan proyek ..." lingkungan: Foo / a: A FOO / b: Dua run: | echo "Hello, world!" [$  FOO = satu] || Exit 1  

Hasilnya harus hampir jelas (sumber dimaksudkan :-). Satu-satunya detail yang menarik di sini adalah variabel FOO / a dan FOO / b lingkungan. Ini adalah cara untuk menyajikan varian , yang berarti bahwa tes ini pasti akan dua: pertama dengan FOO = A dan FOO = dua . Sekarang mempertimbangkan variabel lingkungan ini dapat diatur di tingkat manapun – dari desain, dukungan, kereta api, dan proyek – dan bayangkan betapa mudahnya untuk menguji perubahan kecil tanpa copy & amp; amp; amp; kalung. Setelah Cascade terjadi (proyek → → → dukungan proyek suite) semua variabel lingkungan menggunakan kunci varian tertentu akan hadir pada saat yang sama dalam jangka yang sama.

Sekarang mari kita coba untuk menjalankan pengaturan ini, termasuk debug tag maka harus membayar bug. Perhatikan bagaimana tes tunggal kami memiliki empat pekerjaan yang berbeda, dua varian dari dua sistem, dengan variasi b tidak sesuai dengan petunjuk:

  $  merambat debug 2016 / 11/06 19:09:27 Distribusi LXD: Ubuntu 04,14 ... 2016/11/06 19:09:27 Distribusi LXD: Ubuntu-16: 04 ... 2016/11/06 19:09:41 Waiting kontainer LXD memiliki nomor ... 2016/11/06 19:09:43 Menunggu wadah LXD memiliki sejumlah ... 2016/11/06 19:09:44 LXD ditugaskan: Ubuntu 4.14. 2016/11/06 19:09:44 Menghubungkan LXD: Ubuntu 14.04 ... 2016/11/06 19:09:48 LXD ditugaskan: Ubuntu 16.04. 2016/11/06 19:09:48 Menghubungkan LXD: Ubuntu 16.04 ... 2016/11/06 19:09:52 Terhubung LXD: Ubuntu 4.14. 2016/06/11 19:09:52 Data kirim desain untuk LXD: Ubuntu 04,14 ... 2016/11/06 19:09:53 Terhubung LXD: Ubuntu-16: 04 2016/06/11 19:09:53 Kirim Data desain untuk LXD: Ubuntu 4.16 ... 2016/11/06 19:09:54 Kesalahan berjalan LXD: Ubuntu 14.04: tes / Hello: b: - - - + Echo Hello, world! Halo dunia! + [Dua = A] + output 1 ----- 2016/06/11 19:09:54 Mulai shell debugging ... LXD: Ubuntu 14.04 ~ / uji / halo # echo $  FOO dua LXD: ubuntu 14: 04 ~ / uji / Hello # cat / etc / release | grep ^ pretty_name BEAUTIFUL = "Ubuntu 14.04.4 LTS" LXD: Ubuntu 14.04 ~ / uji / Hello # Exit Exit 2016/11/06 19:09:55 Kesalahan berjalan LXD: Ubuntu 04,16: test / Hello: b: - ---- + Echo Hello, world! Halo dunia! + [Dua = A] + output 1 ----- 2016/11/06 19:09:55 Mulai shell debugging ... LXD: Ubuntu 16.04 ~ / uji / halo # echo $  FOO dua LXD: ubuntu 16: 04 ~ / uji / Hello # cat / etc / release | grep ^ pretty_name BEAUTIFUL = "Ubuntu 16.04 LTS" LXD: Ubuntu 16.04 ~ / uji / Hello # exit exit 2016/11/06 19:10:33 LXD membuang: Ubuntu 4.14 (menyebar 129) ... 2016/06 / 11 19:11:04 membuang LXD: Ubuntu 16.04 (menyebar 130) ... 06/11/2016 19:11:05 06/11/2016 19:11:05 proyek sukses menjalani proyek aborsi: 0 2016 / 11/06 19:11:05 tugas gagal: 2 - LXD: Ubuntu 4.14: pengujian / Hello: b - LXD: Ubuntu 16.04: tes / Hello: b error: operasi gagal  

Ini menunjukkan banyak dari target yang ditetapkan (paralelisme, kejelasan, kenyamanan, debugging, …) sementara berjalan di sistem lokal. Berjalan pada sistem lain seperti mudah untuk menggunakan dukungan yang tepat. Proyek snapD pada GitHub, misalnya, terhubung ke Travis melakukan lebar dan kemudian mengirimkan tes pada Linode. Berikut ini adalah implementasi nyata produksi dengan tes awal dilakukan, dan tes asap dasar.

Jika Anda menyukai apa yang Anda lihat, dengan segala cara, silahkan pergi ke depan dan membuat baik penggunaan itu.

Kita semua stabilitas dan kewarasan di mana-mana

-. @gniemeyer

Leave a Reply

Your email address will not be published. Required fields are marked *