add ssh-slice-basics
[tests.git] / system / Substrate.readme
1 This is a rewrite of TestResources
2
3 Like for TestResources, this expects that you install in /root/LocalSubstrate.py a definition of your local hardware and related IP pools; see LocalSubstrate.inria.py for an example
4
5 it takes care of everything that has to do with provisioning a test on the local substrate
6 it can handle multiple vserver-ready PLC boxes
7 it can handle multiple qemu/kvm-ready QEMU boxes
8 Each of these is declared with a maximum number of instances
9
10 You should make sure that your substrate can at least hold all the nightly tests, so you can inspect stuff right away the following day 
11
12 Also you can use 'run' manually in a given test directory (/root/<buildname>) 
13 This is safe as long as you make sure to not restart a running plc or node; 
14 trying to start the plc again is rather harmless, as vserver <> start will fail
15 OTOH running qemu_start again will probably run another qemu instance, and things can get messy
16
17 You can monitor the status of the local substrate by running your LocalSubstrate.py 
18 this would sense the local substrate and display its status
19 this is a replacement for a former script named manage-infrastructure.py that was local to onelab 
20 although it does not support hard/soft rebooting of the underlying plc/qemu boxes yet
21
22 This implementation is tracker-less; mostly everything is sensed using pings/ssh/ps or whatever;
23 however there's a shared file named /root/starting that's used to inform concurrent test instances about the IP addresses that were assigned but not yet started; 
24 when all the tests are over this file should be empty
25
26 ---
27
28 The inria sample gives an example, with currently
29 (*) 3 build boxes (one per fedora flavour)
30 (*) 1 PLC box that can host 20 myplcs
31 (*) 6 QEMU boxes that can host 3 nodes each
32
33 What we do in the nightlies is to run in parallel on all 3 boxes
34 . a 32bits build, with a single myplc (and so a single node) 
35 . a 64bits build with a triangle setup (3 plcs and 3 nodes)
36
37 this means we have 
38 (*) at around midnight, 3 single-myplc builds in parallel
39     this uses 3 myplcs and 3 nodes
40 (*) at around 1, 3 triangle-myplc builds in parallel
41     this in turn uses 9 myplcs and 9 nodes
42
43 so the substrate can basically hold builds from one day and a half...
44
45 ---