3.2 KiB
:title:Introduction
Turbo Hipster
Turbo Hipster is a gearman worker designed to run tests using zuul as the gearman client. It is primarily aimed at running openstack continuous integration tests against pre-existing datasets but can be used to automate any tests with zuul.
Overview
The zuul server receives jobs from a trigger requesting particular jobs/tests to be ran. Turbo Hipster is able to provide a worker for each of those jobs or a subset and report the success/failure back to zuul. zuul will then collate responses from multiple workers and build a report.
Typical workflow diagram
- digraph overview {
-
- subgraph cluster_1 {
-
label = "Gerrit" style = filled; color = lightgrey; node [style=filled,color=white];
g000 [shape=Mdiamond label="start"]; g001 [shape=box, label="receive event"]; g002 [shape=box, label="notify listeners"];
g000 -> g001; g001 -> g002; g002 -> g001;
}
- subgraph cluster_2 {
-
label = "Zuul pipeline"; color = blue node [style=filled];
z000 [shape=Mdiamond label="start"]; z001 [shape=box, label="register gearman server"]; z002 [shape=box, label="register launchers"]; z003 [shape=box, label="listen for events"]; z004 [shape=box, label="receive event"]; z005 [shape=box, label="request jobs"]; z006 [shape=box, label="receive response"]; z007 [shape=box, label="send report"];
z000 -> z001 -> z002; z003 -> z004 -> z005; z005 -> z006 [dir=none, style=dotted]; z006 -> z007;
}
- subgraph cluster_3 {
-
label = "Gearman"; style = filled; color = lightgrey; node [style=filled,color=white];
gm001 [shape=box, label="receive job method"]; gm002 [shape=box, label="request worker do method"]; gm003 [shape=box, label="receive results"]; gm004 [shape=box, label="return results"];
gms000 [label="register client"]; gms001 [label="register worker"]; gms002 [label="register method"];
gm001 -> gm002; gm002 -> gm003 [dir=none, style=dotted]; gm003 -> gm004;
}
- subgraph cluster_4 {
-
label = "Turbo Hipster"; color = blue node [style=filled];
th000 [shape=Mdiamond label="start"]; th001 [shape=box, label="register as worker"]; th002 [shape=box, label="find available tasks"]; th003 [shape=box, label="register available job methods"];
ths001 [shape=box, label="receive method request"]; ths002 [shape=box, label="run task"]; ths003 [shape=box, label="send results"];
th000 -> th001 -> th002 -> th003; ths001 -> ths002 -> ths003;
}
z001 -> gms000; z005 -> gm001; gm004 -> z006; z003 -> g002 [dir=both, style=dotted]; th001 -> gms001; th003 -> gms002; gm002 -> ths001; ths003 -> gm003;
}