blob: d3fb16da9c4f68e56f064c1021b1bd2265881014 [file] [log] [blame]
Joshua Hesketh902ea502013-09-06 11:15:30 +10001 :title:Introduction
Joshua Hesketh8b0eb6e2013-09-05 13:52:04 +10002
3Turbo Hipster
4=============
5
6Turbo Hipster is a gearman worker designed to run tests using zuul
7as the gearman client. It is primarily aimed at running openstack
Joshua Hesketha85e7dd2013-09-06 15:55:53 +10008continuous integration tests against pre-existing datasets but can
9be used to automate any tests with zuul.
Joshua Hesketh8b0eb6e2013-09-05 13:52:04 +100010
11Overview
12--------
13
14The zuul server receives jobs from a trigger requesting particular
15jobs/tests to be ran. Turbo Hipster is able to provide a worker for
16each of those jobs or a subset and report the success/failure back to
17zuul. zuul will then collate responses from multiple workers and
18build a report.
19
20Typical workflow diagram
21------------------------
22
Joshua Hesketh05d01582013-09-09 15:16:08 +100023**clearly this needs a lot of work, however I believe the structure
Joshua Heskethaf26dbb2013-09-11 12:30:38 +100024is mostly there... If you know graphviz please help!**
Joshua Hesketh05d01582013-09-09 15:16:08 +100025
Joshua Hesketh8b0eb6e2013-09-05 13:52:04 +100026.. graphviz::
27
28 digraph overview {
29 subgraph cluster_1 {
30 label = "Gerrit"
31 style = filled;
32 color = lightgrey;
33 node [style=filled,color=white];
34
35 g000 [shape=Mdiamond label="start"];
36 g001 [shape=box, label="receive event"];
37 g002 [shape=box, label="notify listeners"];
38
39 g000 -> g001;
40 g001 -> g002;
41 g002 -> g001;
42 }
43
44 subgraph cluster_2 {
45 label = "Zuul pipeline";
46 color = blue
47 node [style=filled];
48
49 z000 [shape=Mdiamond label="start"];
50 z001 [shape=box, label="register gearman server"];
51 z002 [shape=box, label="register launchers"];
52 z003 [shape=box, label="listen for events"];
53 z004 [shape=box, label="receive event"];
54 z005 [shape=box, label="request jobs"];
55 z006 [shape=box, label="receive response"];
56 z007 [shape=box, label="send report"];
57
Joshua Hesketh902ea502013-09-06 11:15:30 +100058 z000 -> z001 -> z002;
59 z003 -> z004 -> z005;
60 z005 -> z006 [dir=none, style=dotted];
Joshua Hesketh8b0eb6e2013-09-05 13:52:04 +100061 z006 -> z007;
62
63 }
64
65 subgraph cluster_3 {
66 label = "Gearman";
67 style = filled;
68 color = lightgrey;
69 node [style=filled,color=white];
70
71 gm001 [shape=box, label="receive job method"];
72 gm002 [shape=box, label="request worker do method"];
73 gm003 [shape=box, label="receive results"];
74 gm004 [shape=box, label="return results"];
75
76 gms000 [label="register client"];
77 gms001 [label="register worker"];
78 gms002 [label="register method"];
79
80 gm001 -> gm002;
Joshua Hesketh902ea502013-09-06 11:15:30 +100081 gm002 -> gm003 [dir=none, style=dotted];
Joshua Hesketh8b0eb6e2013-09-05 13:52:04 +100082 gm003 -> gm004;
83 }
84
85 subgraph cluster_4 {
86 label = "Turbo Hipster";
87 color = blue
88 node [style=filled];
89
90 th000 [shape=Mdiamond label="start"];
91 th001 [shape=box, label="register as worker"];
92 th002 [shape=box, label="find available tasks"];
93 th003 [shape=box, label="register available job methods"];
94
95 ths001 [shape=box, label="receive method request"];
96 ths002 [shape=box, label="run task"];
97 ths003 [shape=box, label="send results"];
98
99 th000 -> th001 -> th002 -> th003;
100 ths001 -> ths002 -> ths003;
101 }
102
103 z001 -> gms000;
104 z005 -> gm001;
105 gm004 -> z006;
106 z003 -> g002 [dir=both, style=dotted];
107 th001 -> gms001;
108 th003 -> gms002;
109 gm002 -> ths001;
110 ths003 -> gm003;
111
112 }
Joshua Hesketh05d01582013-09-09 15:16:08 +1000113
114zuul integration
115----------------
116
117Explain how zuul triggers builds and gates etc and how turbo-hipster
118responds to them. Most of this is in the zuul documentation so don't
119duplicate.