diff options
Diffstat (limited to 'documentation/test-manual')
-rw-r--r-- | documentation/test-manual/test-manual.html | 832 | ||||
-rw-r--r-- | documentation/test-manual/test-manual.tgz | bin | 73915 -> 0 bytes |
2 files changed, 0 insertions, 832 deletions
diff --git a/documentation/test-manual/test-manual.html b/documentation/test-manual/test-manual.html deleted file mode 100644 index 8896857bb8..0000000000 --- a/documentation/test-manual/test-manual.html +++ /dev/null | |||
@@ -1,832 +0,0 @@ | |||
1 | <?xml version="1.0" encoding="UTF-8"?> | ||
2 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Yocto Project Test Environment Manual</title><link rel="stylesheet" type="text/css" href="test-manual-style.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.76.1" /></head><body><div xml:lang="en" class="book" title="Yocto Project Test Environment Manual" id="test-manual" lang="en"><div class="titlepage"><div><div><h1 class="title"> | ||
3 | Yocto Project Test Environment Manual | ||
4 | </h1></div><div><div class="authorgroup"> | ||
5 | <div class="author"><h3 class="author"><span class="firstname">Scott</span> <span class="surname">Rifenbark</span></h3><div class="affiliation"> | ||
6 | <span class="orgname">Scotty's Documentation Services, INC<br /></span> | ||
7 | </div><code class="email"><<a class="email" href="mailto:srifenbark@gmail.com">srifenbark@gmail.com</a>></code></div> | ||
8 | </div></div><div><p class="copyright">Copyright © 2010-2018 Linux Foundation</p></div><div><div class="legalnotice" title="Legal Notice"><a id="idm45709743826400"></a> | ||
9 | <p> | ||
10 | Permission is granted to copy, distribute and/or modify this document under | ||
11 | the terms of the <a class="ulink" href="http://creativecommons.org/licenses/by-sa/2.0/uk/" target="_top"> | ||
12 | Creative Commons Attribution-Share Alike 2.0 UK: England & Wales</a> as published by | ||
13 | Creative Commons. | ||
14 | </p> | ||
15 | <div class="note" title="Manual Notes" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Manual Notes</h3> | ||
16 | <div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p> | ||
17 | This version of the | ||
18 | <span class="emphasis"><em>Yocto Project Test Environment Manual</em></span> | ||
19 | is for the 2.6 release of the | ||
20 | Yocto Project. | ||
21 | To be sure you have the latest version of the manual | ||
22 | for this release, go to the | ||
23 | <a class="ulink" href="http://www.yoctoproject.org/documentation" target="_top">Yocto Project documentation page</a> | ||
24 | and select the manual from that site. | ||
25 | Manuals from the site are more up-to-date than manuals | ||
26 | derived from the Yocto Project released TAR files. | ||
27 | </p></li><li class="listitem"><p> | ||
28 | If you located this manual through a web search, the | ||
29 | version of the manual might not be the one you want | ||
30 | (e.g. the search might have returned a manual much | ||
31 | older than the Yocto Project version with which you | ||
32 | are working). | ||
33 | You can see all Yocto Project major releases by | ||
34 | visiting the | ||
35 | <a class="ulink" href="https://wiki.yoctoproject.org/wiki/Releases" target="_top">Releases</a> | ||
36 | page. | ||
37 | If you need a version of this manual for a different | ||
38 | Yocto Project release, visit the | ||
39 | <a class="ulink" href="http://www.yoctoproject.org/documentation" target="_top">Yocto Project documentation page</a> | ||
40 | and select the manual set by using the | ||
41 | "ACTIVE RELEASES DOCUMENTATION" or "DOCUMENTS ARCHIVE" | ||
42 | pull-down menus. | ||
43 | </p></li><li class="listitem"><p> | ||
44 | To report any inaccuracies or problems with this | ||
45 | manual, send an email to the Yocto Project | ||
46 | discussion group at | ||
47 | <code class="filename">yocto@yoctoproject.com</code> or log into | ||
48 | the freenode <code class="filename">#yocto</code> channel. | ||
49 | </p></li></ul></div> | ||
50 | </div> | ||
51 | </div></div><div><div class="revhistory"><table border="1" width="100%" summary="Revision history"><tr><th align="left" valign="top" colspan="2"><strong>Revision History</strong></th></tr> | ||
52 | <tr><td align="left">Revision 2.7</td><td align="left">TBD</td></tr><tr><td align="left" colspan="2">Released with the Yocto Project 2.7 Release.</td></tr> | ||
53 | </table></div></div></div><hr /></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="chapter"><a href="#test-manual-intro">1. The Yocto Project Test Environment Manual</a></span></dt><dd><dl><dt><span class="section"><a href="#test-welcome">1.1. Welcome</a></span></dt><dt><span class="section"><a href="#test-yocto-project-autobuilder-overview">1.2. Yocto Project Autobuilder Overview</a></span></dt><dt><span class="section"><a href="#test-project-tests">1.3. Yocto Project Tests - Type Overview</a></span></dt><dt><span class="section"><a href="#test-test-mapping">1.4. How Tests Map to Areas of Code</a></span></dt><dt><span class="section"><a href="#test-examples">1.5. Test Examples</a></span></dt><dd><dl><dt><span class="section"><a href="#bitbake-selftest-example">1.5.1. <code class="filename">bitbake-selftest</code></a></span></dt><dt><span class="section"><a href="#oe-selftest-example">1.5.2. <code class="filename">oe-selftest</code></a></span></dt><dt><span class="section"><a href="#testimage-example">1.5.3. <code class="filename">testimage</code></a></span></dt><dt><span class="section"><a href="#testsdk_ext-example">1.5.4. <code class="filename">testsdk_ext</code></a></span></dt><dt><span class="section"><a href="#testsdk-example">1.5.5. <code class="filename">testsdk</code></a></span></dt><dt><span class="section"><a href="#oe-build-perf-test-example">1.5.6. <code class="filename">oe-build-perf-test</code></a></span></dt></dl></dd><dt><span class="section"><a href="#some-id">1.6. New Section on the Periodic Builds</a></span></dt><dt><span class="section"><a href="#test-configuring-and-triggering-autobuilder-helper-build-scripts">1.7. Configuring and Triggering Autobuilder Helper Build Scripts</a></span></dt><dt><span class="section"><a href="#test-deploying-yocto-autobuilder">1.8. Deploying Yocto Autobuilder</a></span></dt><dd><dl><dt><span class="section"><a href="#test-upstream-autobuilder-deployment-on-the-controller">1.8.1. Upstream Autobuilder Deployment on the Controller</a></span></dt><dt><span class="section"><a href="#test-upstream-autobuilder-deployment-on-the-worker">1.8.2. Upstream Autobuilder Deployment on the Worker</a></span></dt><dt><span class="section"><a href="#test-upstream-autobuilder-deployment-no-upstream-users">1.8.3. Upstream Autobuilder Deployment No Upstream Users</a></span></dt></dl></dd><dt><span class="section"><a href="#test-headless-sanity-tests">1.9. Setting Up Headless Sanity Tests</a></span></dt><dt><span class="section"><a href="#test-adding-additional-build-workers">1.10. Adding Additional Build Workers</a></span></dt><dt><span class="section"><a href="#test-setting-up-build-history">1.11. Setting Up Build History</a></span></dt><dt><span class="section"><a href="#test-some-more-notes">1.12. Some More Notes</a></span></dt><dt><span class="section"><a href="#test-yocto-project-helper">1.13. Yocto Project Autobuilder Helper Scripts</a></span></dt></dl></dd></dl></div> | ||
54 | |||
55 | |||
56 | <div class="chapter" title="Chapter 1. The Yocto Project Test Environment Manual" id="test-manual-intro"><div class="titlepage"><div><div><h2 class="title">Chapter 1. The Yocto Project Test Environment Manual<span class="permalink"><a alt="Permalink" title="Permalink" href="#test-manual-intro">¶</a></span></h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="section"><a href="#test-welcome">1.1. Welcome</a></span></dt><dt><span class="section"><a href="#test-yocto-project-autobuilder-overview">1.2. Yocto Project Autobuilder Overview</a></span></dt><dt><span class="section"><a href="#test-project-tests">1.3. Yocto Project Tests - Type Overview</a></span></dt><dt><span class="section"><a href="#test-test-mapping">1.4. How Tests Map to Areas of Code</a></span></dt><dt><span class="section"><a href="#test-examples">1.5. Test Examples</a></span></dt><dd><dl><dt><span class="section"><a href="#bitbake-selftest-example">1.5.1. <code class="filename">bitbake-selftest</code></a></span></dt><dt><span class="section"><a href="#oe-selftest-example">1.5.2. <code class="filename">oe-selftest</code></a></span></dt><dt><span class="section"><a href="#testimage-example">1.5.3. <code class="filename">testimage</code></a></span></dt><dt><span class="section"><a href="#testsdk_ext-example">1.5.4. <code class="filename">testsdk_ext</code></a></span></dt><dt><span class="section"><a href="#testsdk-example">1.5.5. <code class="filename">testsdk</code></a></span></dt><dt><span class="section"><a href="#oe-build-perf-test-example">1.5.6. <code class="filename">oe-build-perf-test</code></a></span></dt></dl></dd><dt><span class="section"><a href="#some-id">1.6. New Section on the Periodic Builds</a></span></dt><dt><span class="section"><a href="#test-configuring-and-triggering-autobuilder-helper-build-scripts">1.7. Configuring and Triggering Autobuilder Helper Build Scripts</a></span></dt><dt><span class="section"><a href="#test-deploying-yocto-autobuilder">1.8. Deploying Yocto Autobuilder</a></span></dt><dd><dl><dt><span class="section"><a href="#test-upstream-autobuilder-deployment-on-the-controller">1.8.1. Upstream Autobuilder Deployment on the Controller</a></span></dt><dt><span class="section"><a href="#test-upstream-autobuilder-deployment-on-the-worker">1.8.2. Upstream Autobuilder Deployment on the Worker</a></span></dt><dt><span class="section"><a href="#test-upstream-autobuilder-deployment-no-upstream-users">1.8.3. Upstream Autobuilder Deployment No Upstream Users</a></span></dt></dl></dd><dt><span class="section"><a href="#test-headless-sanity-tests">1.9. Setting Up Headless Sanity Tests</a></span></dt><dt><span class="section"><a href="#test-adding-additional-build-workers">1.10. Adding Additional Build Workers</a></span></dt><dt><span class="section"><a href="#test-setting-up-build-history">1.11. Setting Up Build History</a></span></dt><dt><span class="section"><a href="#test-some-more-notes">1.12. Some More Notes</a></span></dt><dt><span class="section"><a href="#test-yocto-project-helper">1.13. Yocto Project Autobuilder Helper Scripts</a></span></dt></dl></div><div class="section" title="1.1. Welcome"><div class="titlepage"><div><div><h2 class="title" style="clear: both" id="test-welcome">1.1. Welcome<span class="permalink"><a alt="Permalink" title="Permalink" href="#test-welcome">¶</a></span></h2></div></div></div><p> | ||
57 | Welcome to the Yocto Project Test Environment Manual! | ||
58 | This manual is a work in progress. | ||
59 | The manual contains information about the testing environment | ||
60 | used by the Yocto Project to make sure each major and minor | ||
61 | release works as planned. | ||
62 | Other organizations can leverage off the process and testing | ||
63 | environment used by the Yocto Project to create their own | ||
64 | automated, production test environment. | ||
65 | </p><p> | ||
66 | Currently, the Yocto Project Test Environment Manual has no | ||
67 | projected release date. | ||
68 | This manual is a work-in-progress and is being initially loaded | ||
69 | with information from the README files and notes from key | ||
70 | engineers: | ||
71 | </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p> | ||
72 | <span class="emphasis"><em><code class="filename">yocto-autobuilder</code>:</em></span> | ||
73 | This | ||
74 | <a class="ulink" href="http://git.yoctoproject.org/clean/cgit.cgi/yocto-autobuilder/tree/README" target="_top"><code class="filename">README.md</code></a> | ||
75 | is not maintained. | ||
76 | However, some information from this README file still | ||
77 | applies but could need some modification. | ||
78 | In particular, information about setting up headless | ||
79 | sanity tests and build history. | ||
80 | The sections on these will be changing. | ||
81 | </p><div class="note" title="IMPORTANT" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">IMPORTANT</h3> | ||
82 | The <code class="filename">yocto-autobuilder</code> | ||
83 | <a class="ulink" href="http://git.yoctoproject.org/clean/cgit.cgi/yocto-autobuilder/" target="_top">repository</a> | ||
84 | is obsolete and is no longer maintained. | ||
85 | The new "Autobuilder" is maintained in the | ||
86 | <code class="filename">yocto-autobuilder2</code> | ||
87 | <a class="ulink" href="http://git.yoctoproject.org/clean/cgit.cgi/yocto-autobuilder2/" target="_top">repository</a>. | ||
88 | </div><p> | ||
89 | </p></li><li class="listitem"><p> | ||
90 | <span class="emphasis"><em><code class="filename">yocto-autobuilder2</code>:</em></span> | ||
91 | This | ||
92 | <a class="ulink" href="http://git.yoctoproject.org/clean/cgit.cgi/yocto-autobuilder2/tree/README.md" target="_top"><code class="filename">README.md</code></a> | ||
93 | is the main README for Yocto Project Autobuilder. | ||
94 | The <code class="filename">yocto-autobuilder2</code> repository | ||
95 | represents the Yocto Project's testing codebase and | ||
96 | exists to configure and use Buildbot to do testing. | ||
97 | </p></li><li class="listitem"><p> | ||
98 | <span class="emphasis"><em><code class="filename">yocto-autobuilder-helper</code>:</em></span> | ||
99 | This | ||
100 | <a class="ulink" href="http://git.yoctoproject.org/clean/cgit.cgi/yocto-autobuilder-helper/tree/README" target="_top"><code class="filename">README</code></a> | ||
101 | is a valid Autobuilder Git repository that contains | ||
102 | Yocto Project Autobuilder Helper Scripts. | ||
103 | The <code class="filename">yocto-autobuilder-helper</code> | ||
104 | repository contains the "glue" logic that connects any | ||
105 | Continuous Improvement (CI) system to run builds, | ||
106 | support getting the correct code revisions, configure | ||
107 | builds and layers, run builds, and collect results. | ||
108 | The code is independent of any CI system, which means | ||
109 | the code can work Buildbot, Jenkins, or others. | ||
110 | </p></li></ul></div><p> | ||
111 | </p></div><div class="section" title="1.2. Yocto Project Autobuilder Overview"><div class="titlepage"><div><div><h2 class="title" style="clear: both" id="test-yocto-project-autobuilder-overview">1.2. Yocto Project Autobuilder Overview<span class="permalink"><a alt="Permalink" title="Permalink" href="#test-yocto-project-autobuilder-overview">¶</a></span></h2></div></div></div><p> | ||
112 | The Yocto Project Autobuilder collectively refers to the software, | ||
113 | tools, scripts, and procedures used by the Yocto Project to test | ||
114 | released software across supported hardware in an automated and | ||
115 | regular fashion. | ||
116 | Basically, during the development of a Yocto Project release, the | ||
117 | Autobuilder tests if things work. | ||
118 | The Autobuilder builds all test targets and runs all the tests. | ||
119 | </p><p> | ||
120 | The Yocto Project uses the unpatched | ||
121 | <a class="ulink" href="https://docs.buildbot.net/0.9.15.post1/" target="_top">Buildbot Nine</a> | ||
122 | to drive its integration and testing. | ||
123 | Buildbot Nine has a plug-in interface that the Yocto Project | ||
124 | customizes using code from the | ||
125 | <code class="filename">yocto-autobuilder2</code> repository. | ||
126 | The resulting customized UI plug-in allows you to | ||
127 | visualize builds in a way suited to the project. | ||
128 | </p><p> | ||
129 | A "helper" layer provides configuration and job management | ||
130 | through scripts found in the | ||
131 | <code class="filename">yocto-autobuilder-helper</code> repository. | ||
132 | The helper layer contains the bulk of the build configuration | ||
133 | information and is release-specific, which makes it highly | ||
134 | customizable on a per-project basis. | ||
135 | The layer is CI system-agnostic and contains a number of helper | ||
136 | scripts that can generate build configurations from simple JSON | ||
137 | files. | ||
138 | </p><div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3> | ||
139 | It is possible to use the outer layers from another | ||
140 | Continuous Integration (CI) system such as | ||
141 | <a class="ulink" href="https://en.wikipedia.org/wiki/Jenkins_(software)" target="_top">Jenkins</a> | ||
142 | instead of Buildbot. | ||
143 | </div><p> | ||
144 | </p><p> | ||
145 | The following figure shows the Yocto Project Autobuilder stack | ||
146 | with a topology that includes a controller and a cluster of | ||
147 | workers: | ||
148 | </p><table border="0" summary="manufactured viewport for HTML img" cellspacing="0" cellpadding="0" width="720"><tr style="height: 540px"><td align="center"><img src="figures/ab-test-stack.png" align="middle" width="720" /></td></tr></table><p> | ||
149 | </p></div><div class="section" title="1.3. Yocto Project Tests - Type Overview"><div class="titlepage"><div><div><h2 class="title" style="clear: both" id="test-project-tests">1.3. Yocto Project Tests - Type Overview<span class="permalink"><a alt="Permalink" title="Permalink" href="#test-project-tests">¶</a></span></h2></div></div></div><p> | ||
150 | Two kinds of tests exist within the Yocto Project: | ||
151 | </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p> | ||
152 | <span class="emphasis"><em>Build Testing:</em></span> | ||
153 | Tests whether specific configurations build by varying | ||
154 | <a class="ulink" href="http://www.yoctoproject.org/docs/2.6/ref-manual/ref-manual.html#var-MACHINE" target="_top"><code class="filename">MACHINE</code></a>, | ||
155 | <a class="ulink" href="http://www.yoctoproject.org/docs/2.6/ref-manual/ref-manual.html#var-DISTRO" target="_top"><code class="filename">DISTRO</code></a>, | ||
156 | and the specific target images being built (or world). | ||
157 | </p></li><li class="listitem"><p> | ||
158 | <span class="emphasis"><em>Build Performance Testing:</em></span> | ||
159 | Tests whether or not commonly used steps during builds work | ||
160 | efficiently and avoid regressions. | ||
161 | </p></li></ul></div><p> | ||
162 | Beyond these types of testing, the Autobuilder tests different | ||
163 | pieces by using the following types of tests: | ||
164 | </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p> | ||
165 | <span class="emphasis"><em>Build Testing:</em></span> | ||
166 | Trigger builds of all the different test configurations | ||
167 | on the Autobuilder. | ||
168 | Builds usually cover each target for different | ||
169 | architectures, machines, and distributions. | ||
170 | </p></li><li class="listitem"><p> | ||
171 | <span class="emphasis"><em>Build Performance Testing:</em></span> | ||
172 | Tests to time commonly used usage scenarios are run through | ||
173 | <code class="filename">oe-build-perf-test</code>. | ||
174 | </p></li><li class="listitem"><p> | ||
175 | <span class="emphasis"><em>eSDK Testing:</em></span> | ||
176 | Image tests initiated through the following command: | ||
177 | </p><pre class="literallayout"> | ||
178 | $ bitbake <em class="replaceable"><code>image</code></em> -c testsdkext | ||
179 | </pre><p> | ||
180 | The tests utilize the <code class="filename">testsdkext</code> | ||
181 | class and the <code class="filename">do_testsdkext</code> task. | ||
182 | </p></li><li class="listitem"><p> | ||
183 | <span class="emphasis"><em>Feature Testing:</em></span> | ||
184 | Various scenario-based tests are run through the | ||
185 | <a class="ulink" href="http://www.yoctoproject.org/docs/2.6/ref-manual/ref-manual.html#testing-and-quality-assurance" target="_top">OpenEmbedded Self-Test</a> | ||
186 | (oe-selftest). | ||
187 | </p></li><li class="listitem"><p> | ||
188 | <span class="emphasis"><em>Image Testing:</em></span> | ||
189 | Image tests initiated through the following command: | ||
190 | </p><pre class="literallayout"> | ||
191 | $ bitbake <em class="replaceable"><code>image</code></em> -c testimage | ||
192 | </pre><p> | ||
193 | The tests utilize the | ||
194 | <a class="ulink" href="http://www.yoctoproject.org/docs/2.6/ref-manual/ref-manual.html#ref-classes-testimage*" target="_top"><code class="filename">testimage*</code></a> | ||
195 | classes and the | ||
196 | <a class="ulink" href="http://www.yoctoproject.org/docs/2.6/ref-manual/ref-manual.html#ref-tasks-testimage" target="_top"><code class="filename">do_testimage</code></a> | ||
197 | task. | ||
198 | </p></li><li class="listitem"><p> | ||
199 | <span class="emphasis"><em>Package Testing:</em></span> | ||
200 | A Package Test (ptest) runs tests against packages built | ||
201 | by the OpenEmbedded build system on the target machine. | ||
202 | See the | ||
203 | "<a class="ulink" href="http://www.yoctoproject.org/docs/2.6/dev-manual/dev-manual.html#testing-packages-with-ptest" target="_top">Testing Packages With ptest</a>" | ||
204 | section in the Yocto Project Development Tasks Manual and | ||
205 | the | ||
206 | "<a class="ulink" href="https://wiki.yoctoproject.org/wiki/Ptest" target="_top">Ptest</a>" | ||
207 | Wiki page for more information on Ptest. | ||
208 | </p></li><li class="listitem"><p> | ||
209 | <span class="emphasis"><em>Sanity Checks During the Build Process:</em></span> | ||
210 | Tests initiated through the | ||
211 | <a class="ulink" href="http://www.yoctoproject.org/docs/2.6/ref-manual/ref-manual.html#ref-classes-insane" target="_top"><code class="filename">insane</code></a> | ||
212 | class. | ||
213 | </p></li><li class="listitem"><p> | ||
214 | <span class="emphasis"><em>SDK Testing:</em></span> | ||
215 | Image tests initiated through the following command: | ||
216 | </p><pre class="literallayout"> | ||
217 | $ bitbake <em class="replaceable"><code>image</code></em> -c testsdk | ||
218 | </pre><p> | ||
219 | The tests utilize the | ||
220 | <a class="ulink" href="http://www.yoctoproject.org/docs/2.6/ref-manual/ref-manual.html#ref-classes-testsdk" target="_top"><code class="filename">testsdk</code></a> | ||
221 | class and the <code class="filename">do_testsdk</code> task. | ||
222 | </p></li><li class="listitem"><p> | ||
223 | <span class="emphasis"><em>Unit Testing:</em></span> | ||
224 | Unit tests on various components of the system run | ||
225 | through <code class="filename">oe-selftest</code> and | ||
226 | <a class="ulink" href="http://www.yoctoproject.org/docs/2.6/ref-manual/ref-manual.html#testing-and-quality-assurance" target="_top"><code class="filename">bitbake-selftest</code></a>. | ||
227 | </p></li></ul></div><p> | ||
228 | </p></div><div class="section" title="1.4. How Tests Map to Areas of Code"><div class="titlepage"><div><div><h2 class="title" style="clear: both" id="test-test-mapping">1.4. How Tests Map to Areas of Code<span class="permalink"><a alt="Permalink" title="Permalink" href="#test-test-mapping">¶</a></span></h2></div></div></div><p> | ||
229 | Tests map into the codebase as follows: | ||
230 | </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p> | ||
231 | <span class="emphasis"><em>bitbake-selftest:</em></span> | ||
232 | </p><div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem"><p> | ||
233 | These tests are self-contained and test BitBake | ||
234 | as well as its APIs, which include the fetchers. | ||
235 | The tests are located in | ||
236 | <code class="filename">bitbake/lib/*/tests</code>. | ||
237 | </p></li><li class="listitem"><p> | ||
238 | From within the BitBake repository, run the | ||
239 | following: | ||
240 | </p><pre class="literallayout"> | ||
241 | $ bitbake-selftest | ||
242 | </pre><p> | ||
243 | </p></li><li class="listitem"><p> | ||
244 | The tests are based on | ||
245 | <a class="ulink" href="https://docs.python.org/3/library/unittest.html" target="_top">Python unittest</a>. | ||
246 | </p></li></ul></div><p> | ||
247 | </p></li><li class="listitem"><p> | ||
248 | <span class="emphasis"><em>oe-selftest:</em></span> | ||
249 | </p><div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem"><p> | ||
250 | These tests use OE to test the workflows, which | ||
251 | include testing specific features, behaviors | ||
252 | of tasks, and API unit tests. | ||
253 | The tests take advantage of parallelism through | ||
254 | the "-j" option to run in multiple threads. | ||
255 | </p></li><li class="listitem"><p> | ||
256 | The tests are based on Python unittest. | ||
257 | </p></li><li class="listitem"><p> | ||
258 | The code for the tests resides in | ||
259 | <code class="filename">meta/lib/oeqa/selftest</code>. | ||
260 | </p></li><li class="listitem"><p> | ||
261 | To run all the test, enter the following command: | ||
262 | </p><pre class="literallayout"> | ||
263 | $ oe-selftest -a | ||
264 | </pre><p> | ||
265 | </p></li><li class="listitem"><p> | ||
266 | To run a specific test, use the following command | ||
267 | form where <em class="replaceable"><code>testname</code></em> is | ||
268 | the name of the specific test: | ||
269 | </p><pre class="literallayout"> | ||
270 | $ oe-selftest -r <em class="replaceable"><code>testname</code></em> | ||
271 | </pre><p> | ||
272 | </p></li></ul></div><p> | ||
273 | </p></li><li class="listitem"><p> | ||
274 | <span class="emphasis"><em>testimage:</em></span> | ||
275 | </p><div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem"><p> | ||
276 | These tests build an image, boot it, and run tests | ||
277 | against the image's content. | ||
278 | </p></li><li class="listitem"><p> | ||
279 | The code for these tests resides in | ||
280 | <code class="filename">meta/lib/oeqa/runtime</code>. | ||
281 | </p></li><li class="listitem"><p> | ||
282 | You need to set the | ||
283 | <a class="ulink" href="http://www.yoctoproject.org/docs/2.6/ref-manual/ref-manual.html#var-IMAGE_CLASSES" target="_top"><code class="filename">IMAGE_CLASSES</code></a> | ||
284 | variable as follows: | ||
285 | </p><pre class="literallayout"> | ||
286 | IMAGE_CLASSES += "testimage" | ||
287 | </pre><p> | ||
288 | </p></li><li class="listitem"><p> | ||
289 | Run the tests using the following command form: | ||
290 | </p><pre class="literallayout"> | ||
291 | $ bitbake <em class="replaceable"><code>image</code></em> -c testimage | ||
292 | </pre><p> | ||
293 | </p></li></ul></div><p> | ||
294 | </p></li><li class="listitem"><p> | ||
295 | <span class="emphasis"><em>testsdk:</em></span> | ||
296 | </p><div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem"><p> | ||
297 | These tests build an SDK, install it, and then | ||
298 | run tests against that SDK. | ||
299 | </p></li><li class="listitem"><p> | ||
300 | The code for these tests resides in | ||
301 | <code class="filename">meta/lib/oeqa/sdk</code>. | ||
302 | </p></li><li class="listitem"><p> | ||
303 | Run the test using the following command form: | ||
304 | </p><pre class="literallayout"> | ||
305 | $ bitbake <em class="replaceable"><code>image</code></em> -c testsdk | ||
306 | </pre><p> | ||
307 | </p></li></ul></div><p> | ||
308 | </p></li><li class="listitem"><p> | ||
309 | <span class="emphasis"><em>testsdk_ext:</em></span> | ||
310 | </p><div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem"><p> | ||
311 | These tests build an extended SDK (eSDK), install | ||
312 | that eSDK, and run tests against the eSDK. | ||
313 | </p></li><li class="listitem"><p> | ||
314 | The code for these tests resides in | ||
315 | <code class="filename">meta/lib/oeqa/esdk</code>. | ||
316 | </p></li><li class="listitem"><p> | ||
317 | To run the tests, use the following command form: | ||
318 | </p><pre class="literallayout"> | ||
319 | $ bitbake <em class="replaceable"><code>image</code></em> -c testsdkext | ||
320 | </pre><p> | ||
321 | </p></li></ul></div><p> | ||
322 | </p></li><li class="listitem"><p> | ||
323 | <span class="emphasis"><em>oe-build-perf-test:</em></span> | ||
324 | </p><div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem"><p> | ||
325 | These tests run through commonly used usage | ||
326 | scenarios and measure the performance times. | ||
327 | </p></li><li class="listitem"><p> | ||
328 | The code for these tests resides in | ||
329 | NEED A DIRECTORY HERE. | ||
330 | </p></li><li class="listitem"><p> | ||
331 | NEED SOME INFORMATION ON HOW TO ENABLE THIS | ||
332 | TEST OR INCLUDE IT HERE. | ||
333 | </p><pre class="literallayout"> | ||
334 | <em class="replaceable"><code>some setting</code></em> | ||
335 | </pre><p> | ||
336 | </p></li><li class="listitem"><p> | ||
337 | Run the tests using the following command form: | ||
338 | </p><pre class="literallayout"> | ||
339 | $ <em class="replaceable"><code>some command</code></em> | ||
340 | </pre><p> | ||
341 | </p></li></ul></div><p> | ||
342 | </p></li></ul></div><p> | ||
343 | </p></div><div class="section" title="1.5. Test Examples"><div class="titlepage"><div><div><h2 class="title" style="clear: both" id="test-examples">1.5. Test Examples<span class="permalink"><a alt="Permalink" title="Permalink" href="#test-examples">¶</a></span></h2></div></div></div><p> | ||
344 | This section provides example tests for each of the tests | ||
345 | listed in the | ||
346 | <a class="link" href="#test-test-mapping" title="1.4. How Tests Map to Areas of Code">How Tests Map to Areas of Code</a>" | ||
347 | section. | ||
348 | </p><div class="section" title="1.5.1. bitbake-selftest"><div class="titlepage"><div><div><h3 class="title" id="bitbake-selftest-example">1.5.1. <code class="filename">bitbake-selftest</code><span class="permalink"><a alt="Permalink" title="Permalink" href="#bitbake-selftest-example">¶</a></span></h3></div></div></div><p> | ||
349 | Content here. | ||
350 | </p></div><div class="section" title="1.5.2. oe-selftest"><div class="titlepage"><div><div><h3 class="title" id="oe-selftest-example">1.5.2. <code class="filename">oe-selftest</code><span class="permalink"><a alt="Permalink" title="Permalink" href="#oe-selftest-example">¶</a></span></h3></div></div></div><p> | ||
351 | NEED CONTENT HERE. | ||
352 | </p></div><div class="section" title="1.5.3. testimage"><div class="titlepage"><div><div><h3 class="title" id="testimage-example">1.5.3. <code class="filename">testimage</code><span class="permalink"><a alt="Permalink" title="Permalink" href="#testimage-example">¶</a></span></h3></div></div></div><p> | ||
353 | NEED CONTENT HERE. | ||
354 | </p></div><div class="section" title="1.5.4. testsdk_ext"><div class="titlepage"><div><div><h3 class="title" id="testsdk_ext-example">1.5.4. <code class="filename">testsdk_ext</code><span class="permalink"><a alt="Permalink" title="Permalink" href="#testsdk_ext-example">¶</a></span></h3></div></div></div><p> | ||
355 | NEED CONTENT HERE. | ||
356 | </p></div><div class="section" title="1.5.5. testsdk"><div class="titlepage"><div><div><h3 class="title" id="testsdk-example">1.5.5. <code class="filename">testsdk</code><span class="permalink"><a alt="Permalink" title="Permalink" href="#testsdk-example">¶</a></span></h3></div></div></div><p> | ||
357 | NEED CONTENT HERE. | ||
358 | </p></div><div class="section" title="1.5.6. oe-build-perf-test"><div class="titlepage"><div><div><h3 class="title" id="oe-build-perf-test-example">1.5.6. <code class="filename">oe-build-perf-test</code><span class="permalink"><a alt="Permalink" title="Permalink" href="#oe-build-perf-test-example">¶</a></span></h3></div></div></div><p> | ||
359 | NEED CONTENT HERE. | ||
360 | </p></div></div><div class="section" title="1.6. New Section on the Periodic Builds"><div class="titlepage"><div><div><h2 class="title" style="clear: both" id="some-id">1.6. New Section on the Periodic Builds<span class="permalink"><a alt="Permalink" title="Permalink" href="#some-id">¶</a></span></h2></div></div></div><p> | ||
361 | The following is going to be the replacement content for the | ||
362 | section on "Nightly Builds". | ||
363 | Not sure what we are going to call these builds. | ||
364 | We need a name to replace "Nightly Builds". | ||
365 | </p><p> | ||
366 | Here is the content from Richards email: | ||
367 | </p><pre class="literallayout"> | ||
368 | In 1.6, we actually dropped the "nightly" bit pretty much everywhere. | ||
369 | They are now named MACHINE or MACHINE-DISTRO, e.g. qemuarm or qemuarm- | ||
370 | lsb (which tests poky-lsb with qemuarm). We now parallelise not just | ||
371 | architecture but by machine so machine and real hardware are now | ||
372 | separate. The flow is therefore to build the images+sdks, then test the | ||
373 | images+sdks, trying to do as much as possible in parallel. | ||
374 | |||
375 | We have two types of build trigger, "quick" and "full". quick runs all | ||
376 | the things which commonly fail and one random oe-selftest. "full" runs | ||
377 | all our targets, runs oe-selftest on all distros and includes ptest and | ||
378 | build performance tests. Its slower but more complete and would be used | ||
379 | for release builds. | ||
380 | </pre><p> | ||
381 | </p></div><div class="section" title="1.7. Configuring and Triggering Autobuilder Helper Build Scripts"><div class="titlepage"><div><div><h2 class="title" style="clear: both" id="test-configuring-and-triggering-autobuilder-helper-build-scripts">1.7. Configuring and Triggering Autobuilder Helper Build Scripts<span class="permalink"><a alt="Permalink" title="Permalink" href="#test-configuring-and-triggering-autobuilder-helper-build-scripts">¶</a></span></h2></div></div></div><div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3> | ||
382 | This section is created from the information in the | ||
383 | <code class="filename">yocto-autobuilder2</code> | ||
384 | <a class="ulink" href="http://git.yoctoproject.org/clean/cgit.cgi/yocto-autobuilder2/tree/README.md" target="_top"><code class="filename">README.md</code></a> | ||
385 | file. | ||
386 | I am making an assumption that we do not want to refer to the | ||
387 | Autobuilder stuff as "Autobuilder2". | ||
388 | My guess is that since this is the first documentation of any | ||
389 | automated test environment and process in the Yocto Project | ||
390 | user documentation, we will treat it as the start of things. | ||
391 | </div><p> | ||
392 | Automatic testing is based on the workers executing builds using | ||
393 | Buildbot Nine configured for specific build jobs triggered in an | ||
394 | automatic and regular fashion. | ||
395 | Worker Configuration and triggering is accomplished through | ||
396 | the | ||
397 | <a class="ulink" href="http://git.yoctoproject.org/clean/cgit.cgi/yocto-autobuilder2/tree/" target="_top">Yocto Project Autobuilder layer</a> | ||
398 | and a set of | ||
399 | <a class="ulink" href="http://git.yoctoproject.org/clean/cgit.cgi/yocto-autobuilder-helper/tree" target="_top">helper scripts</a>. | ||
400 | </p><p> | ||
401 | The configuration and helper scripts have as little code and | ||
402 | as few custom Buildbot extensions as possible. | ||
403 | The configuration collects required input from the user to | ||
404 | furnish the helper scripts with the input needed for workers | ||
405 | to accomplish their builds. | ||
406 | The input consists of minimal user-customizable parameters | ||
407 | used to trigger the helper build scripts. | ||
408 | </p><p> | ||
409 | Each builder maps to a named configuration in the helper | ||
410 | scripts. | ||
411 | The configuration is created with the steps and properties | ||
412 | required to invoke the helper scripts for a worker's builds. | ||
413 | </p><p> | ||
414 | Each worker has a custom scheduler created for it and contains | ||
415 | parameters configured for the scheduler that can supply the custom | ||
416 | versions of the required values for the helper script parameters. | ||
417 | </p><p> | ||
418 | Following is the code layout for the Autobuilder: | ||
419 | </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p> | ||
420 | <span class="emphasis"><em><a class="ulink" href="http://git.yoctoproject.org/clean/cgit.cgi/yocto-autobuilder2/tree/builders.py" target="_top"><code class="filename">builders.py</code></a>:</em></span> | ||
421 | Configures the builders with the minimal buildsteps | ||
422 | to invoke the Yocto Project Autobuilder helper scripts. | ||
423 | </p></li><li class="listitem"><p> | ||
424 | <span class="emphasis"><em><a class="ulink" href="http://git.yoctoproject.org/clean/cgit.cgi/yocto-autobuilder2/tree/lib/wiki.py" target="_top"><code class="filename">lib/wiki.py</code></a>:</em></span> | ||
425 | Implements functionality related to | ||
426 | <a class="ulink" href="https://www.mediawiki.org/wiki/MediaWiki" target="_top">MediaWiki</a>. | ||
427 | The <code class="filename">wikilog</code> plug-in uses this | ||
428 | functionality. | ||
429 | Effectively, this functionality provides helper functions | ||
430 | for the plug-in. | ||
431 | </p><div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3> | ||
432 | Much of this code can be replaced by porting the | ||
433 | plug-in so that it is implemented as a | ||
434 | <code class="filename">buildbot.util.service.HTTPClient</code>. | ||
435 | </div><p> | ||
436 | </p></li><li class="listitem"><p> | ||
437 | <span class="emphasis"><em><a class="ulink" href="http://git.yoctoproject.org/clean/cgit.cgi/yocto-autobuilder2/tree/reporters/wikilog.py" target="_top"><code class="filename">reporters/wikilog.py</code></a>:</em></span> | ||
438 | A custom plug-in that is a Buildbot service that listens for | ||
439 | build failures and then writes information about the | ||
440 | failure to the configured wiki page. | ||
441 | </p></li><li class="listitem"><p> | ||
442 | <span class="emphasis"><em><a class="ulink" href="http://git.yoctoproject.org/clean/cgit.cgi/yocto-autobuilder2/tree/steps/writelayerinfo.py" target="_top"><code class="filename">steps/writelayerinfo.py</code></a>:</em></span> | ||
443 | Implements a simple, custom buildset that iterates the | ||
444 | <code class="filename">repo_</code>, <code class="filename">branch_</code>, | ||
445 | and <code class="filename">commit_</code> properties, which are set | ||
446 | by the schedulers, and then writes a JSON file with the | ||
447 | user's values. | ||
448 | </p></li><li class="listitem"><p> | ||
449 | <span class="emphasis"><em><a class="ulink" href="http://git.yoctoproject.org/clean/cgit.cgi/yocto-autobuilder2/tree/config.py" target="_top"><code class="filename">config.py</code></a>:</em></span> | ||
450 | Contains all values that might need changing to redeploy | ||
451 | the Autobuilder code elsewhere. | ||
452 | </p><div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3> | ||
453 | The redeployment goal has not been currently met. | ||
454 | </div><p> | ||
455 | </p></li><li class="listitem"><p> | ||
456 | <span class="emphasis"><em><a class="ulink" href="http://git.yoctoproject.org/clean/cgit.cgi/yocto-autobuilder2/tree/master.cfg" target="_top"><code class="filename">master.cfg</code></a>:</em></span> | ||
457 | Performs most configuration by making calls into other | ||
458 | scripts. | ||
459 | Configuration specific for a worker cluster (i.e. a | ||
460 | Controller URL) resides here. | ||
461 | </p></li><li class="listitem"><p> | ||
462 | <span class="emphasis"><em><a class="ulink" href="http://git.yoctoproject.org/clean/cgit.cgi/yocto-autobuilder2/tree/schedulers.py" target="_top"><code class="filename">schedulers.py</code></a>:</em></span> | ||
463 | Sets up the force schedulers with controls for modifying | ||
464 | inputs for each worker. | ||
465 | </p></li><li class="listitem"><p> | ||
466 | <span class="emphasis"><em><a class="ulink" href="http://git.yoctoproject.org/clean/cgit.cgi/yocto-autobuilder2/tree/services.py" target="_top"><code class="filename">services.py</code></a>:</em></span> | ||
467 | Configures IRC, mail, and Wikilog reporters. | ||
468 | </p></li><li class="listitem"><p> | ||
469 | <span class="emphasis"><em><a class="ulink" href="http://git.yoctoproject.org/clean/cgit.cgi/yocto-autobuilder2/tree/workers.py" target="_top"><code class="filename">workers.py</code></a>:</em></span> | ||
470 | Configures the worker objects. | ||
471 | </p></li><li class="listitem"><p> | ||
472 | <span class="emphasis"><em><a class="ulink" href="http://git.yoctoproject.org/clean/cgit.cgi/yocto-autobuilder2/tree/www.py" target="_top"><code class="filename">www.py</code></a>:</em></span> | ||
473 | Sets up the Web User Interface. | ||
474 | </p></li></ul></div><p> | ||
475 | </p><p> | ||
476 | The goal is to keep custom code minimized throughout the | ||
477 | Autobuilder. | ||
478 | The few customizations implemented support the Yocto Project | ||
479 | Autobuilder Helper Script workflows and help replicate the | ||
480 | workflows established with the Yocto Autobuilder layer. | ||
481 | In particular, the following files accomplish this customization: | ||
482 | </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p> | ||
483 | <code class="filename">writelayerinfo.py</code> | ||
484 | </p></li><li class="listitem"><p> | ||
485 | <code class="filename">wikilog.py</code> | ||
486 | </p></li><li class="listitem"><p> | ||
487 | <code class="filename">wiki.py</code> | ||
488 | </p></li></ul></div><p> | ||
489 | </p></div><div class="section" title="1.8. Deploying Yocto Autobuilder"><div class="titlepage"><div><div><h2 class="title" style="clear: both" id="test-deploying-yocto-autobuilder">1.8. Deploying Yocto Autobuilder<span class="permalink"><a alt="Permalink" title="Permalink" href="#test-deploying-yocto-autobuilder">¶</a></span></h2></div></div></div><p> | ||
490 | Steps to deploy the Yocto Project Autobuilder assume each target | ||
491 | system has a copy of Buildbot installed. | ||
492 | Additionally, various pieces of functionality require that a copy | ||
493 | of the Autobuilder Helper Scripts (i.e. | ||
494 | <code class="filename">yocto-autobuilder-helper</code>) is available | ||
495 | in the home directory at | ||
496 | <code class="filename">~/yocto-autobuilder-helper</code> of the user | ||
497 | running Buildbot. | ||
498 | </p><div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3> | ||
499 | If you are using a reverse proxy, be aware that modern | ||
500 | Buildbot uses a web socket for various communications between | ||
501 | the master and the web's User Interface. | ||
502 | Refer to the | ||
503 | <a class="ulink" href="http://docs.buildbot.net/latest/manual/cfg-www.html#reverse-proxy-configuration" target="_top">Buildbot documentation</a> | ||
504 | for information on how to correctly configure a reverse proxy. | ||
505 | </div><p> | ||
506 | </p><p> | ||
507 | The following sections provide steps for Yocto Autobuilder | ||
508 | deployment. | ||
509 | </p><div class="section" title="1.8.1. Upstream Autobuilder Deployment on the Controller"><div class="titlepage"><div><div><h3 class="title" id="test-upstream-autobuilder-deployment-on-the-controller">1.8.1. Upstream Autobuilder Deployment on the Controller<span class="permalink"><a alt="Permalink" title="Permalink" href="#test-upstream-autobuilder-deployment-on-the-controller">¶</a></span></h3></div></div></div><p> | ||
510 | Follow these steps to deploy Yocto Autobuilder on an | ||
511 | upstream controller: | ||
512 | </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p> | ||
513 | <span class="emphasis"><em>Create the Master Yocto Controller</em></span>: | ||
514 | </p><pre class="literallayout"> | ||
515 | $ buildbot create-master <em class="replaceable"><code>yocto-controller</code></em> | ||
516 | </pre><p> | ||
517 | </p></li><li class="listitem"><p> | ||
518 | <span class="emphasis"><em>Change Your Working Directory to the Master Yocto Controller</em></span>: | ||
519 | </p><pre class="literallayout"> | ||
520 | $ cd <em class="replaceable"><code>yocto-controller</code></em> | ||
521 | </pre><p> | ||
522 | </p></li><li class="listitem"><p> | ||
523 | <span class="emphasis"><em>Create a Local Git Repository of the Yocto Project Autobuilder</em></span>: | ||
524 | </p><pre class="literallayout"> | ||
525 | $ git clone https://git.yoctoproject.org/git/yocto-autobuilder2 yoctoabb | ||
526 | </pre><p> | ||
527 | In the previous command, the local repository is | ||
528 | created in a <code class="filename">yoctoabb</code> | ||
529 | directory inside the directory of the Master | ||
530 | Yocto Controller directory. | ||
531 | </p></li><li class="listitem"><p> | ||
532 | <span class="emphasis"><em>Change Your Working Directory Back to the Master Yocto Controller</em></span>: | ||
533 | </p><pre class="literallayout"> | ||
534 | $ cd .. | ||
535 | </pre><p> | ||
536 | </p></li><li class="listitem"><p> | ||
537 | <span class="emphasis"><em>Create a Relative Symbolic Link to <code class="filename">master.cfg</code></em></span>: | ||
538 | </p><pre class="literallayout"> | ||
539 | $ ln -rs <em class="replaceable"><code>yocto-controller</code></em>/yoctoabb/master.cfg <em class="replaceable"><code>yocto-controller</code></em>/master.cfg | ||
540 | </pre><p> | ||
541 | The previous command sets up a relative symbolic | ||
542 | link to the <code class="filename">master.cfg</code> using | ||
543 | a link of the same name. | ||
544 | </p></li><li class="listitem"><p> | ||
545 | <span class="emphasis"><em>Update the Buildbot URL in <code class="filename">master.cfg</code></em></span>: | ||
546 | Use your <code class="filename">$EDITOR</code> to edit the | ||
547 | Buildbot URL in the <code class="filename">master.cfg</code> | ||
548 | file. | ||
549 | Find the following line and replace the URL with | ||
550 | the URL for your Buildbot: | ||
551 | </p><pre class="literallayout"> | ||
552 | c['buildbotURL'] = "https://autobuilder.yoctoproject.org/main/" | ||
553 | </pre><p> | ||
554 | </p></li><li class="listitem"><p> | ||
555 | <span class="emphasis"><em>Enable services in <code class="filename">services.py</code></em></span>: | ||
556 | Use your <code class="filename">$EDITOR</code> to edit the | ||
557 | <code class="filename">services.py</code> file. | ||
558 | Set appropriate configuration values to enable | ||
559 | desired services. | ||
560 | </p></li><li class="listitem"><p> | ||
561 | <span class="emphasis"><em>Enable Automatic Authorization (Autorisation) in <code class="filename">www.py</code></em></span>: | ||
562 | Use your <code class="filename">$EDITOR</code> to edit the | ||
563 | <code class="filename">www.py</code> file. | ||
564 | Configure autorisation if desired. | ||
565 | </p></li><li class="listitem"><p> | ||
566 | <span class="emphasis"><em>Modify Configuration Options in <code class="filename">config.py</code></em></span>: | ||
567 | Use your <code class="filename">$EDITOR</code> to edit the | ||
568 | <code class="filename">config.py</code> file. | ||
569 | Modify configuration options such as worker | ||
570 | configurations. | ||
571 | </p></li><li class="listitem"><p> | ||
572 | <span class="emphasis"><em>Start Buildbot</em></span>: | ||
573 | </p><pre class="literallayout"> | ||
574 | $ buildbot start <em class="replaceable"><code>yocto-controller</code></em> | ||
575 | </pre><p> | ||
576 | </p></li><li class="listitem"><p> | ||
577 | <span class="emphasis"><em>Create a Local Git Repository of the Yocto Autobuilder Helper Scripts:</em></span>: | ||
578 | </p><pre class="literallayout"> | ||
579 | Move up a directory so that you are above the | ||
580 | <em class="replaceable"><code>yocto-controller</code></em> | ||
581 | location and clone the directory: | ||
582 | $ cd .. | ||
583 | $ git clone https://git.yoctoproject.org/git/yocto-autobuilder-helper | ||
584 | </pre><p> | ||
585 | </p></li></ol></div><p> | ||
586 | </p></div><div class="section" title="1.8.2. Upstream Autobuilder Deployment on the Worker"><div class="titlepage"><div><div><h3 class="title" id="test-upstream-autobuilder-deployment-on-the-worker">1.8.2. Upstream Autobuilder Deployment on the Worker<span class="permalink"><a alt="Permalink" title="Permalink" href="#test-upstream-autobuilder-deployment-on-the-worker">¶</a></span></h3></div></div></div><p> | ||
587 | Follow these steps to deploy Yocto Autobuilder on an | ||
588 | upstream worker: | ||
589 | </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p> | ||
590 | <span class="emphasis"><em>Create the Worker</em></span>: | ||
591 | </p><pre class="literallayout"> | ||
592 | $ buildbot-worker create-worker <em class="replaceable"><code>yocto-worker</code></em> <em class="replaceable"><code>localhost</code></em> <em class="replaceable"><code>example-worker</code></em> <em class="replaceable"><code>pass</code></em> | ||
593 | </pre><p> | ||
594 | </p><div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3> | ||
595 | You do not have to hard-code the third | ||
596 | parameter (i.e. | ||
597 | <em class="replaceable"><code>example-worker</code></em>). | ||
598 | For example, you can pass | ||
599 | <code class="filename">`hostname`</code> to use the | ||
600 | host's configured name. | ||
601 | </div><p> | ||
602 | </p></li><li class="listitem"><p> | ||
603 | <span class="emphasis"><em>Start the Worker</em></span>: | ||
604 | </p><pre class="literallayout"> | ||
605 | $ buildbot-worker start <em class="replaceable"><code>yocto-worker</code></em> | ||
606 | </pre><p> | ||
607 | </p></li></ol></div><p> | ||
608 | </p></div><div class="section" title="1.8.3. Upstream Autobuilder Deployment No Upstream Users"><div class="titlepage"><div><div><h3 class="title" id="test-upstream-autobuilder-deployment-no-upstream-users">1.8.3. Upstream Autobuilder Deployment No Upstream Users<span class="permalink"><a alt="Permalink" title="Permalink" href="#test-upstream-autobuilder-deployment-no-upstream-users">¶</a></span></h3></div></div></div><p> | ||
609 | This case has yet to be defined. | ||
610 | It requires a custom <code class="filename">config.json</code> file | ||
611 | for <code class="filename">yocto-autobuilder-helper</code>. | ||
612 | </p></div></div><div class="section" title="1.9. Setting Up Headless Sanity Tests"><div class="titlepage"><div><div><h2 class="title" style="clear: both" id="test-headless-sanity-tests">1.9. Setting Up Headless Sanity Tests<span class="permalink"><a alt="Permalink" title="Permalink" href="#test-headless-sanity-tests">¶</a></span></h2></div></div></div><p> | ||
613 | If you plan on using the Yocto Project Autobuilder to run | ||
614 | headless sanity testing, you need to do the following: | ||
615 | </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p> | ||
616 | Install | ||
617 | <a class="link" href="#test-tight-vnc">TightVNC</a> | ||
618 | client and server. | ||
619 | </p></li><li class="listitem"><p> | ||
620 | Create a bank of tap network devices (tap devs) | ||
621 | by running the | ||
622 | <code class="filename">runqemu-gen-tapdevs</code> script | ||
623 | found in the | ||
624 | <a class="ulink" href="http://www.yoctoproject.org/docs/2.6/ref-manual/ref-manual.html#source-directory" target="_top">Source Directory</a> | ||
625 | at | ||
626 | <a class="ulink" href="https://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/scripts" target="_top">https://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/scripts</a>. | ||
627 | </p><p>You must disable interface control on these | ||
628 | new tap devices. | ||
629 | </p><div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3> | ||
630 | Some services include NetworkManager, | ||
631 | connman, or wicd. | ||
632 | </div><p> | ||
633 | </p></li><li class="listitem"><p> | ||
634 | Add "xterm*vt100*geometry: 80x50+10+10" to | ||
635 | <code class="filename">.Xdefaults</code> | ||
636 | </p></li><li class="listitem"><p> | ||
637 | Set up and start the TightVNC session as the | ||
638 | Autobuilder user. | ||
639 | </p></li><li class="listitem"><p> | ||
640 | Manually connect to the VNC session at least once | ||
641 | prior to running a QEMU sanity test. | ||
642 | </p><div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3> | ||
643 | Something is getting set during the initial | ||
644 | connection that has not been figured out yet. | ||
645 | Manually connecting seems to set up the session | ||
646 | correctly. | ||
647 | </div><p> | ||
648 | </p></li></ol></div><p> | ||
649 | </p></div><div class="section" title="1.10. Adding Additional Build Workers"><div class="titlepage"><div><div><h2 class="title" style="clear: both" id="test-adding-additional-build-workers">1.10. Adding Additional Build Workers<span class="permalink"><a alt="Permalink" title="Permalink" href="#test-adding-additional-build-workers">¶</a></span></h2></div></div></div><p> | ||
650 | The production Yocto Autobuilder uses a cluster of build | ||
651 | workers. | ||
652 | The cluster shares the same | ||
653 | <a class="ulink" href="http://www.yoctoproject.org/docs/2.6/ref-manual/ref-manual.html#var-SSTATE_DIR" target="_top"><code class="filename">SSTATE_DIR</code></a> | ||
654 | and | ||
655 | <a class="ulink" href="http://www.yoctoproject.org/docs/2.6/ref-manual/ref-manual.html#var-DL_DIR" target="_top"><code class="filename">DL_DIR</code></a> | ||
656 | through an NFS4 mounted Network Attached Storage (NAS). | ||
657 | The main nightly trigger pre-populates the | ||
658 | <code class="filename">DL_DIR</code>, which allows the workers to not | ||
659 | have to deal with a lot of downloading. | ||
660 | In theory, you could also run your build workers with | ||
661 | <a class="ulink" href="http://www.yoctoproject.org/docs/2.6/ref-manual/ref-manual.html#var-NO_NETWORK" target="_top"><code class="filename">NO_NETWORK</code></a> | ||
662 | to enforce a single point for populating | ||
663 | <code class="filename">DL_DIR</code>. | ||
664 | </p><p> | ||
665 | Running multiple build workers is fairly simple, but does require | ||
666 | some setup: | ||
667 | </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p> | ||
668 | Ensure the settings in | ||
669 | <code class="filename">autobuilder.conf</code> are valid | ||
670 | for each worker. | ||
671 | Certain variables are set within this file that | ||
672 | work with the local configurations on each | ||
673 | worker. | ||
674 | </p></li><li class="listitem"><p> | ||
675 | Within | ||
676 | <code class="filename">yocto-controller/controller.cfg</code>, | ||
677 | add your worker to the | ||
678 | <code class="filename">c['workers']</code> list inside | ||
679 | the <code class="filename">BUILDWORKERS</code> section. | ||
680 | </p></li><li class="listitem"><p> | ||
681 | For each worker change the | ||
682 | <code class="filename">WORKER SETTINGS</code> section | ||
683 | of | ||
684 | <code class="filename">yocto-worker/buildbot.tac</code> | ||
685 | to match the settings in | ||
686 | <code class="filename">controller.cfg</code>. | ||
687 | </p></li><li class="listitem"><p> | ||
688 | Workers must reside in the same path as the | ||
689 | Build Controller, even if they are on | ||
690 | completely different machines. | ||
691 | </p></li></ol></div><p> | ||
692 | </p></div><div class="section" title="1.11. Setting Up Build History"><div class="titlepage"><div><div><h2 class="title" style="clear: both" id="test-setting-up-build-history">1.11. Setting Up Build History<span class="permalink"><a alt="Permalink" title="Permalink" href="#test-setting-up-build-history">¶</a></span></h2></div></div></div><p> | ||
693 | Build History is used to track changes to packages and | ||
694 | images. | ||
695 | By default, the Autobuilder does not collect build history. | ||
696 | The production Autobuilder does have this functionality | ||
697 | enabled. | ||
698 | </p><p> | ||
699 | Setting up build history requires the following | ||
700 | steps: | ||
701 | </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p> | ||
702 | Create an empty Git repository. | ||
703 | Make a single commit to it and then create and | ||
704 | push branches for each of the nightly core | ||
705 | architectures (i.e.. mips, ppc, x86...). | ||
706 | </p></li><li class="listitem"><p> | ||
707 | Find a central location to create a clone for the | ||
708 | repository created in the previous step. | ||
709 | This works best if you have a setup similar to | ||
710 | the production Autobuilder (i.e. NAS with many | ||
711 | workers). | ||
712 | </p></li><li class="listitem"><p> | ||
713 | Run the following: | ||
714 | </p><pre class="literallayout"> | ||
715 | # This is an example of how to set up a local build history checkout. Paths | ||
716 | # obviously are situationally dependent. | ||
717 | $ mkdir /nas/buildhistory | ||
718 | $ cd /nas/buildhistory | ||
719 | $ git clone ssh://git@git.myproject.org/buildhistory | ||
720 | $ git clone ssh://git@git.myproject.org/buildhistory nightly-arm | ||
721 | $ git clone ssh://git@git.myproject.org/buildhistory nightly-x86 | ||
722 | $ git clone ssh://git@git.myproject.org/buildhistory nightly-x86-64 | ||
723 | $ git clone ssh://git@git.myproject.org/buildhistory nightly-ppc | ||
724 | $ git clone ssh://git@git.myproject.org/buildhistory nightly-mips | ||
725 | $ for x in `ls|grep nightly` do cd $x; git checkout $x; cd /nas/buildhistory; done | ||
726 | </pre><p> | ||
727 | </p></li><li class="listitem"><p> | ||
728 | Within the <code class="filename">autobuilder.conf</code> | ||
729 | of each worker, change the following: | ||
730 | </p><pre class="literallayout"> | ||
731 | BUILD_HISTORY_COLLECT = True | ||
732 | BUILD_HISTORY_DIR = "/nas/buildhistory" | ||
733 | BUILD_HISTORY_REPO = "ssh://git@git.myproject.org/buildhistory" | ||
734 | </pre><p> | ||
735 | </p></li></ol></div><p> | ||
736 | </p></div><div class="section" title="1.12. Some More Notes"><div class="titlepage"><div><div><h2 class="title" style="clear: both" id="test-some-more-notes">1.12. Some More Notes<span class="permalink"><a alt="Permalink" title="Permalink" href="#test-some-more-notes">¶</a></span></h2></div></div></div><p> | ||
737 | </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p> | ||
738 | <span class="emphasis"><em>Yocto Autobuilder</em></span>: | ||
739 | The Git repository is at | ||
740 | <a class="ulink" href="http://git.yoctoproject.org/clean/cgit.cgi/yocto-autobuilder/tree/" target="_top">http://git.yoctoproject.org/clean/cgit.cgi/yocto-autobuilder/tree/</a>. | ||
741 | </p><p>Essentially an extension to the vanilla buildbot. | ||
742 | This extension mainly addresses configuration file handling | ||
743 | and Yocto-specific build steps.</p><p>For better maintainability, the Autobuilder (see | ||
744 | <code class="filename">Autobuilder.py</code> located at | ||
745 | <a class="ulink" href="http://git.yoctoproject.org/clean/cgit.cgi/yocto-autobuilder/tree/lib/python2.7/site-packages/autobuilder" target="_top">http://git.yoctoproject.org/clean/cgit.cgi/yocto-autobuilder/tree/lib/python2.7/site-packages/autobuilder</a>), | ||
746 | handles configuration from multiple files.</p><p>Additional build steps such as | ||
747 | <code class="filename">CheckOutLayers.py</code> or | ||
748 | <code class="filename">CreateBBLayersConf</code> are Yocto-specific | ||
749 | and simplify the worker's configuration. | ||
750 | </p></li><li class="listitem"><p><a id="test-tight-vnc"></a> | ||
751 | <span class="emphasis"><em>TightVNC</em></span>: | ||
752 | Virtual Network Computing (VNC) is a client/server software | ||
753 | package that allows remote network access to graphical | ||
754 | desktops. | ||
755 | With VNC, you can access your machine from everywhere | ||
756 | provided that your machine is connected to the Internet. | ||
757 | VNC is free (released under the GNU General Public License) | ||
758 | and it is available on most platforms.</p><p>TightVNC is an enhanced version of VNC, which | ||
759 | includes new features, improvements, optimizations, and | ||
760 | bug fixes over the original VNC version. | ||
761 | See the list of features at | ||
762 | <a class="ulink" href="http://www.tightvnc.com/intro.php" target="_top">http://www.tightvnc.com/intro.php</a>. | ||
763 | </p><p>You need TightVNC in order to run headless sanity | ||
764 | tests. | ||
765 | See the bullet on | ||
766 | <a class="link" href="#test-headless-sanity-tests" title="1.9. Setting Up Headless Sanity Tests">headless sanity tests</a> | ||
767 | for more information. | ||
768 | </p></li><li class="listitem"><p> | ||
769 | <span class="emphasis"><em>Files Used for Yocto-Autobuilder Configuration:</em></span> | ||
770 | </p><div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem"><p> | ||
771 | <span class="emphasis"><em><code class="filename">config/autobuilder.conf</code></em></span>: | ||
772 | Used to set Autobuilder-wide parameters, such as | ||
773 | where various build artifacts are published | ||
774 | (e.g. <code class="filename">DL_DIR</code> and | ||
775 | <code class="filename">SSTATE_DIR</code>). | ||
776 | Another example is if build artifacts should be | ||
777 | published, which is necessary for production | ||
778 | Autobuilders but not desktop builders. | ||
779 | </p></li><li class="listitem"><p> | ||
780 | <span class="emphasis"><em><code class="filename">buildset-config/yoctoAB.conf</code></em></span>: | ||
781 | The main Yocto Project Autobuilder configuration | ||
782 | file. | ||
783 | Documentation for this file and its associated | ||
784 | format is in the | ||
785 | <a class="ulink" href="http://git.yoctoproject.org/clean/cgit.cgi/yocto-autobuilder/tree/README-NEW-AUTOBUILDER" target="_top"><code class="filename">README-NEW-AUTOBUILDER</code></a> | ||
786 | file. | ||
787 | </p></li></ul></div><p> | ||
788 | </p></li></ul></div><p> | ||
789 | </p></div><div class="section" title="1.13. Yocto Project Autobuilder Helper Scripts"><div class="titlepage"><div><div><h2 class="title" style="clear: both" id="test-yocto-project-helper">1.13. Yocto Project Autobuilder Helper Scripts<span class="permalink"><a alt="Permalink" title="Permalink" href="#test-yocto-project-helper">¶</a></span></h2></div></div></div><div class="note" title="WRITER NOTE" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">WRITER NOTE</h3> | ||
790 | Deferring this topic per Richard's suggestion. | ||
791 | It is placed here temporarily. | ||
792 | </div><p> | ||
793 | The helper scripts work in conjunction with the Yocto Project | ||
794 | Autobuilder. | ||
795 | These scripts do the actual build configuration and execution | ||
796 | for tests on a per release basis. | ||
797 | </p><p> | ||
798 | You can use <code class="filename">pre-commit-hook.sh</code> to verify | ||
799 | the JSON file before committing it. | ||
800 | Create a symbolic link as follows: | ||
801 | </p><pre class="literallayout"> | ||
802 | $ ln -s ../../scripts/pre-commit-hook.sh .git/hooks/pre-commit | ||
803 | </pre><p> | ||
804 | </p><p> | ||
805 | Most users will have to customize the helper script repository | ||
806 | to meet their needs. | ||
807 | The repository is located at | ||
808 | <a class="ulink" href="http://git.yoctoproject.org/clean/cgit.cgi/yocto-autobuilder-helper" target="_top">http://git.yoctoproject.org/clean/cgit.cgi/yocto-autobuilder-helper</a>. | ||
809 | The scripts themselves should be more generically reusable. | ||
810 | The <code class="filename">config.json</code> is less reusable as it | ||
811 | represents the Yocto Project Autobuilder test matrix. | ||
812 | </p><p> | ||
813 | Two customization options are possible: 1) variable substitution, | ||
814 | and 2) overlaying configuration files. | ||
815 | The standard <code class="filename">config.json</code> minimally attempts | ||
816 | to allow substitution of the paths. | ||
817 | The helper script repository includes a | ||
818 | <a class="ulink" href="http://git.yoctoproject.org/clean/cgit.cgi/yocto-autobuilder-helper/tree/local-example.json" target="_top"><code class="filename">local-example.json</code></a> | ||
819 | to show how you could override these from a separate configuration | ||
820 | file. | ||
821 | Pass the following into the environment of the autobuilder: | ||
822 | </p><pre class="literallayout"> | ||
823 | ABHELPER_JSON="config.json local-example.json" | ||
824 | </pre><p> | ||
825 | As another example, you could also pass the following into the | ||
826 | environment: | ||
827 | </p><pre class="literallayout"> | ||
828 | ABHELPER_JSON="config.json /some/location/local.json" | ||
829 | </pre><p> | ||
830 | </p></div></div> | ||
831 | |||
832 | </div></body></html> \ No newline at end of file | ||
diff --git a/documentation/test-manual/test-manual.tgz b/documentation/test-manual/test-manual.tgz deleted file mode 100644 index 58d2eced77..0000000000 --- a/documentation/test-manual/test-manual.tgz +++ /dev/null | |||
Binary files differ | |||