[vmchecker-dev] [SO2] Folosire KVM + vmchecker

Razvan Deaconescu razvan.deaconescu at cs.pub.ro
Sun Mar 2 09:34:05 EET 2014


Salutare.

Am instalat vmchecker pe vmx.cs.pub.ro. Nu l-am configurat până la
capăt, asta urmează să fac.

Am instalat codul sursă al nucleului Linux și mașina virtuală KVM de
aici[1]. Totul funcționează.

Sunt două lucruri mari de făcut, pe care le voi detalia mai jos:
1. Proiectat modul de testare al temelor de SO2.
2. Creat un back-end nou KVM pentru asta (nu merge cu cel existent).

Să-mi dați, vă rog, feedback, pe cele de mai jos.

Pentru modul de testare al temelor de SO2, m-am gândit la pașii
de mai jos. Se presupune că testele și tema au fost aduse pe sistemul de
test (tester).
1. Va exista, în directorul qemu-vm/ un subdirector fsimg-clean-slate/,
   care va avea tot timpul fișierele inițiale.
2. Ștergem qemu-vm/fsimg/ și copiem qemu-vm/fsimg-clean-slate peste.
3. Compilăm modulele de kernel într-un director aparte.
4. Compilăm testele într-un director aparte (testele trebuie compilate
static, cu opțiunea -m32).
5. Copiem modulele de kernel și testele în fsimg/root/.
6. Edităm fișierul fsimg/etc/rcS astfel și adăugăm la finalul său
comanda de rulare a testelor. O ultimă comandă este poweroff, ca să
oprească mașina virtuală.
7. Pornim netcat pentru a primi mesaje netconsole.
8. Pornim mașina virtuală folosind make.
 -- Se rulează teste, se obține output la netconsole, se generează
 fișierele de output de run.
9. Se monitorizează stingerea mașinii virtuale (cu un soi de watch
pidof). Dacă nu se stige în timp util se dă kill.
10. Se montează cu -o loop imaginea de disc și se extrag fișierele
rezultat. Se copiază fișierele rezultat în arhiva de retur.
11. Se apelează "make clean" pentru a curăța directorul mașinii virtuale
(qemu-vm/).
12. Se șterge directorul qemu-vm/fsimg/.

Apoi pentru integrarea în vmchecker trebuie făcut un script (o să-i
spunem minimal-kvm_executor.py care să implementeze o clasă derivată din
clasa VM[2].

Acesta trebuie să expună niște metode a căror implementare ar conține:
* executeCommand: nu conține nimic
* hasStarted: nu conține nimic
* start: nu conține nimic
* stop: nu conține nimic
* revert: nu conține nimic
* copyTo: execută pașii 1-6
* run: face 7-9
* copyFrom: execută pașii 10-12

Funcțiile test_submission() și runTest() vor fi reimplementate pentru a
conduce la rularea secvenței de mai sus.

Cum vi se pare?

[1] http://ocw.cs.pub.ro/courses/so2/resurse/masini-virtuale
[2] https://github.com/rosedu/vmchecker/blob/master/vmchecker/generic_executor.py#L74

Răzvan


More information about the vmchecker-dev mailing list