1 ##############################################################################
2 # Copyright (c) 2016 Daniel Farrell. All rights reserved.
4 # This program and the accompanying materials are made available under the
5 # terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 # and is available at http://www.eclipse.org/legal/epl-v10.html
7 ##############################################################################
9 """Tests for package build logic helper library."""
16 class TestExtractVersion(unittest.TestCase):
18 """Test logic to extract ODL versions from artifact URLs."""
20 nexus_url = "https://nexus.opendaylight.org/content/repositories"
22 def test_carbon_release_url(self):
23 """Test URL of the ODL Carbon release."""
24 url = "%s/opendaylight.release/org/opendaylight/integration/distribution-karaf/0.6.0-Carbon/distribution-karaf-0.6.0-Carbon.tar.gz" % self.nexus_url
25 version = lib.extract_version(url)
26 self.assertEqual(version["version_major"], "6")
27 self.assertEqual(version["version_minor"], "0")
28 self.assertEqual(version["version_patch"], "0")
29 self.assertEqual(version["pkg_version"], "1")
30 self.assertEqual(version["codename"], "-Carbon")
32 def test_carbon_release_zip_url(self):
33 """Test URL of the ODL Carbon release zip archive."""
34 url = "%s/opendaylight.release/org/opendaylight/integration/distribution-karaf/0.6.0-Carbon/distribution-karaf-0.6.0-Carbon.zip" % self.nexus_url
35 version = lib.extract_version(url)
36 self.assertEqual(version["version_major"], "6")
37 self.assertEqual(version["version_minor"], "0")
38 self.assertEqual(version["version_patch"], "0")
39 self.assertEqual(version["pkg_version"], "1")
40 self.assertEqual(version["codename"], "-Carbon")
42 def test_carbon_sr1_release_url(self):
43 """Test URL of the ODL Carbon SR1 release."""
44 url = "%s/opendaylight.release/org/opendaylight/integration/distribution-karaf/0.6.1-Carbon/distribution-karaf-0.6.1-Carbon.tar.gz" % self.nexus_url
45 version = lib.extract_version(url)
46 self.assertEqual(version["version_major"], "6")
47 self.assertEqual(version["version_minor"], "1")
48 self.assertEqual(version["version_patch"], "0")
49 self.assertEqual(version["pkg_version"], "1")
50 self.assertEqual(version["codename"], "-Carbon")
52 def test_carbon_sr1_release_zip_url(self):
53 """Test URL of the ODL Carbon SR1 release zip archive."""
54 url = "%s/opendaylight.release/org/opendaylight/integration/distribution-karaf/0.6.1-Carbon/distribution-karaf-0.6.1-Carbon.zip" % self.nexus_url
55 version = lib.extract_version(url)
56 self.assertEqual(version["version_major"], "6")
57 self.assertEqual(version["version_minor"], "1")
58 self.assertEqual(version["version_patch"], "0")
59 self.assertEqual(version["pkg_version"], "1")
60 self.assertEqual(version["codename"], "-Carbon")
62 def test_nitrogen_release_url(self):
63 """Test URL of the ODL Nitrogen release."""
64 url = "%s/opendaylight.release/org/opendaylight/integration/karaf/0.7.0/karaf-0.7.0.tar.gz" % self.nexus_url
65 version = lib.extract_version(url)
66 self.assertEqual(version["version_major"], "7")
67 self.assertEqual(version["version_minor"], "0")
68 self.assertEqual(version["version_patch"], "0")
69 self.assertEqual(version["pkg_version"], "1")
70 self.assertEqual(version["codename"], "")
72 def test_nitrogen_release_zip_url(self):
73 """Test URL of the ODL Nitrogen release zip archive."""
74 url = "%s/opendaylight.release/org/opendaylight/integration/karaf/0.7.0/karaf-0.7.0.zip" % self.nexus_url
75 version = lib.extract_version(url)
76 self.assertEqual(version["version_major"], "7")
77 self.assertEqual(version["version_minor"], "0")
78 self.assertEqual(version["version_patch"], "0")
79 self.assertEqual(version["pkg_version"], "1")
80 self.assertEqual(version["codename"], "")
82 def test_nitrogen_sr1_release_url(self):
83 """Test URL of the ODL Nitrogen SR1 release."""
84 url = "%s/opendaylight.release/org/opendaylight/integration/karaf/0.7.1/karaf-0.7.1.tar.gz" % self.nexus_url
85 version = lib.extract_version(url)
86 self.assertEqual(version["version_major"], "7")
87 self.assertEqual(version["version_minor"], "1")
88 self.assertEqual(version["version_patch"], "0")
89 self.assertEqual(version["pkg_version"], "1")
90 self.assertEqual(version["codename"], "")
92 def test_nitrogen_release_zip_url(self):
93 """Test URL of the ODL Nitrogen release zip archive."""
94 url = "%s/opendaylight.release/org/opendaylight/integration/karaf/0.7.1/karaf-0.7.1.zip" % self.nexus_url
95 version = lib.extract_version(url)
96 self.assertEqual(version["version_major"], "7")
97 self.assertEqual(version["version_minor"], "1")
98 self.assertEqual(version["version_patch"], "0")
99 self.assertEqual(version["pkg_version"], "1")
100 self.assertEqual(version["codename"], "")
102 def test_carbon_autorelease_url(self):
103 """Test URL of an ODL Carbon autorelease build."""
104 # NB: This will need to be updated as old builds expire
105 url = "%s/autorelease-2101/org/opendaylight/integration/distribution-karaf/0.6.4-Carbon/distribution-karaf-0.6.4-Carbon.tar.gz" % self.nexus_url
106 version = lib.extract_version(url)
107 self.assertEqual(version["version_major"], "6")
108 self.assertEqual(version["version_minor"], "4")
109 self.assertEqual(version["version_patch"], "0")
110 self.assertEqual(version["pkg_version"], "0.1.20180225rel2101")
111 self.assertEqual(version["codename"], "-Carbon")
113 def test_carbon_autorelease_zip_url(self):
114 """Test URL of an ODL Carbon autorelease build zip archive."""
115 # NB: This will need to be updated as old builds expire
116 url = "%s/autorelease-2101/org/opendaylight/integration/distribution-karaf/0.6.4-Carbon/distribution-karaf-0.6.4-Carbon.zip" % self.nexus_url
117 version = lib.extract_version(url)
118 self.assertEqual(version["version_major"], "6")
119 self.assertEqual(version["version_minor"], "4")
120 self.assertEqual(version["version_patch"], "0")
121 self.assertEqual(version["pkg_version"], "0.1.20180225rel2101")
122 self.assertEqual(version["codename"], "-Carbon")
124 def test_nitrogen_autorelease_url(self):
125 """Test URL of an ODL Nitrogen autorelease build."""
126 # NB: This will need to be updated as old builds expire
127 url = "%s/autorelease-2096/org/opendaylight/integration/karaf/0.7.2/karaf-0.7.2.tar.gz" % self.nexus_url
128 version = lib.extract_version(url)
129 self.assertEqual(version["version_major"], "7")
130 self.assertEqual(version["version_minor"], "2")
131 self.assertEqual(version["version_patch"], "0")
132 self.assertEqual(version["pkg_version"], "0.1.20180221rel2096")
133 self.assertEqual(version["codename"], "")
135 def test_nitrogen_autorelease_zip_url(self):
136 """Test URL of an ODL Nitrogen autorelease build zip archive."""
137 # NB: This will need to be updated as old builds expire
138 url = "%s/autorelease-2096/org/opendaylight/integration/karaf/0.7.2/karaf-0.7.2.zip" % self.nexus_url
139 version = lib.extract_version(url)
140 self.assertEqual(version["version_major"], "7")
141 self.assertEqual(version["version_minor"], "2")
142 self.assertEqual(version["version_patch"], "0")
143 self.assertEqual(version["pkg_version"], "0.1.20180221rel2096")
144 self.assertEqual(version["codename"], "")
146 def test_carbon_snapshot_url(self):
147 """Test URL of an ODL Carbon snapshot build."""
148 # NB: This will need to be updated as old builds expire
149 url = "%s/opendaylight.snapshot/org/opendaylight/integration/distribution-karaf/0.6.3-SNAPSHOT/distribution-karaf-0.6.3-20180202.185215-498.tar.gz" % self.nexus_url
150 version = lib.extract_version(url)
151 self.assertEqual(version["version_major"], "6")
152 self.assertEqual(version["version_minor"], "3")
153 self.assertEqual(version["version_patch"], "0")
154 self.assertEqual(version["pkg_version"], "0.1.20180202snap498")
155 self.assertEqual(version["codename"], "-SNAPSHOT")
157 def test_carbon_snapshot_zip_url(self):
158 """Test URL of an ODL Carbon snapshot build zip archive."""
159 # NB: This will need to be updated as old builds expire
160 url = "%s/opendaylight.snapshot/org/opendaylight/integration/distribution-karaf/0.6.3-SNAPSHOT/distribution-karaf-0.6.3-20180202.185215-498.zip" % self.nexus_url
161 version = lib.extract_version(url)
162 self.assertEqual(version["version_major"], "6")
163 self.assertEqual(version["version_minor"], "3")
164 self.assertEqual(version["version_patch"], "0")
165 self.assertEqual(version["pkg_version"], "0.1.20180202snap498")
166 self.assertEqual(version["codename"], "-SNAPSHOT")
168 def test_nitrogen_snapshot_url(self):
169 """Test URL of an ODL Nitrogen snapshot build."""
170 # NB: This will need to be updated as old builds expire
171 url = "%s/opendaylight.snapshot/org/opendaylight/integration/karaf/0.7.2-SNAPSHOT/karaf-0.7.2-20180130.170631-330.tar.gz" % self.nexus_url
172 version = lib.extract_version(url)
173 self.assertEqual(version["version_major"], "7")
174 self.assertEqual(version["version_minor"], "2")
175 self.assertEqual(version["version_patch"], "0")
176 self.assertEqual(version["pkg_version"], "0.1.20180130snap330")
177 self.assertEqual(version["codename"], "-SNAPSHOT")
179 def test_nitrogen_snapshot_zip_url(self):
180 """Test URL of an ODL Nitrogen snapshot build zip archive."""
181 # NB: This will need to be updated as old builds expire
182 url = "%s/opendaylight.snapshot/org/opendaylight/integration/karaf/0.7.2-SNAPSHOT/karaf-0.7.2-20180130.170631-330.zip" % self.nexus_url
183 version = lib.extract_version(url)
184 self.assertEqual(version["version_major"], "7")
185 self.assertEqual(version["version_minor"], "2")
186 self.assertEqual(version["version_patch"], "0")
187 self.assertEqual(version["pkg_version"], "0.1.20180130snap330")
188 self.assertEqual(version["codename"], "-SNAPSHOT")
190 def test_oxygen_release_url(self):
191 """Test URL of the ODL Oxygen release."""
192 url = "%s/repositories/opendaylight.release/org/opendaylight/integration/karaf/0.8.0/karaf-0.8.0.tar.gz" % self.nexus_url
193 version = lib.extract_version(url)
194 self.assertEqual(version["version_major"], "8")
195 self.assertEqual(version["version_minor"], "0")
196 self.assertEqual(version["version_patch"], "0")
197 self.assertEqual(version["pkg_version"], "1")
198 self.assertEqual(version["codename"], "")
200 def test_oxygen_release_zip_url(self):
201 """Test URL of the ODL Oxygen release zip archive."""
202 url = "%s/repositories/opendaylight.release/org/opendaylight/integration/karaf/0.8.0/karaf-0.8.0.zip" % self.nexus_url
203 version = lib.extract_version(url)
204 self.assertEqual(version["version_major"], "8")
205 self.assertEqual(version["version_minor"], "0")
206 self.assertEqual(version["version_patch"], "0")
207 self.assertEqual(version["pkg_version"], "1")
208 self.assertEqual(version["codename"], "")
210 def test_oxygen_snapshot_url(self):
211 """Test URL of an ODL Oxygen snapshot build."""
212 # NB: This will need to be updated as old builds expire
213 url = "%s/opendaylight.snapshot/org/opendaylight/integration/karaf/0.8.0-SNAPSHOT/karaf-0.8.0-20180202.194543-1393.tar.gz" % self.nexus_url
214 version = lib.extract_version(url)
215 self.assertEqual(version["version_major"], "8")
216 self.assertEqual(version["version_minor"], "0")
217 self.assertEqual(version["version_patch"], "0")
218 self.assertEqual(version["pkg_version"], "0.1.20180202snap1393")
219 self.assertEqual(version["codename"], "-SNAPSHOT")
221 def test_oxygen_snapshot_zip_url(self):
222 """Test URL of an ODL Oxygen snapshot build zip archive."""
223 # NB: This will need to be updated as old builds expire
224 url = "%s/opendaylight.snapshot/org/opendaylight/integration/karaf/0.8.0-SNAPSHOT/karaf-0.8.0-20180202.194543-1393.zip" % self.nexus_url
225 version = lib.extract_version(url)
226 self.assertEqual(version["version_major"], "8")
227 self.assertEqual(version["version_minor"], "0")
228 self.assertEqual(version["version_patch"], "0")
229 self.assertEqual(version["pkg_version"], "0.1.20180202snap1393")
230 self.assertEqual(version["codename"], "-SNAPSHOT")
232 def test_fluorine_snapshot_url(self):
233 """Test URL of an ODL Fluorine snapshot build."""
234 # NB: This will need to be updated as old builds expire
235 url = "%s/opendaylight.snapshot/org/opendaylight/integration/karaf/0.9.0-SNAPSHOT/karaf-0.9.0-20180411.203859-563.tar.gz" % self.nexus_url
236 version = lib.extract_version(url)
237 self.assertEqual(version["version_major"], "9")
238 self.assertEqual(version["version_minor"], "0")
239 self.assertEqual(version["version_patch"], "0")
240 self.assertEqual(version["pkg_version"], "0.1.20180411snap563")
241 self.assertEqual(version["codename"], "-SNAPSHOT")
243 def test_fluorine_snapshot_zip_url(self):
244 """Test URL of an ODL Fluorine snapshot build zip archive."""
245 # NB: This will need to be updated as old builds expire
246 url = "%s/opendaylight.snapshot/org/opendaylight/integration/karaf/0.9.0-SNAPSHOT/karaf-0.9.0-20180411.203859-563.tar.gz" % self.nexus_url
247 version = lib.extract_version(url)
248 self.assertEqual(version["version_major"], "9")
249 self.assertEqual(version["version_minor"], "0")
250 self.assertEqual(version["version_patch"], "0")
251 self.assertEqual(version["pkg_version"], "0.1.20180411snap563")
252 self.assertEqual(version["codename"], "-SNAPSHOT")
254 def test_carbon_multipatch_zip_url(self):
255 """Test URL of an ODL Carbon multipatch-test build zip archive."""
256 # NB: This will need to be updated as old builds expire
257 url = "%s/opendaylight.snapshot/org/opendaylight/integration/integration/distribution/distribution-karaf/0.6.3-SNAPSHOT/distribution-karaf-0.6.3-20180115.181738-1.zip" % self.nexus_url
258 version = lib.extract_version(url)
259 self.assertEqual(version["version_major"], "6")
260 self.assertEqual(version["version_minor"], "3")
261 self.assertEqual(version["version_patch"], "0")
262 self.assertEqual(version["pkg_version"], "0.1.20180115snap1")
263 self.assertEqual(version["codename"], "-SNAPSHOT")
265 def test_nitrogen_multipatch_zip_url(self):
266 """Test URL of an ODL Nitrogen multipatch-test build zip archive."""
267 # NB: This will need to be updated as old builds expire
268 url = "%s/opendaylight.snapshot/org/opendaylight/integration/integration/distribution/karaf/0.7.2-SNAPSHOT/karaf-0.7.2-20180115.183312-2.zip" % self.nexus_url
269 version = lib.extract_version(url)
270 self.assertEqual(version["version_major"], "7")
271 self.assertEqual(version["version_minor"], "2")
272 self.assertEqual(version["version_patch"], "0")
273 self.assertEqual(version["pkg_version"], "0.1.20180115snap2")
274 self.assertEqual(version["codename"], "-SNAPSHOT")
276 def test_oxygen_multipatch_zip_url(self):
277 """Test URL of an ODL Oxygen multipatch-test build zip archive."""
278 # NB: This will need to be updated as old builds expire
279 url = "%s/opendaylight.snapshot/org/opendaylight/integration/integration/distribution/karaf/0.8.0-SNAPSHOT/karaf-0.8.0-20180204.191936-134.zip" % self.nexus_url
280 version = lib.extract_version(url)
281 self.assertEqual(version["version_major"], "8")
282 self.assertEqual(version["version_minor"], "0")
283 self.assertEqual(version["version_patch"], "0")
284 self.assertEqual(version["pkg_version"], "0.1.20180204snap134")
285 self.assertEqual(version["codename"], "-SNAPSHOT")
288 class TestGetSnapURL(unittest.TestCase):
290 """Test logic get URL to latest snapshot build of given major version."""
292 url_base = "https://nexus.opendaylight.org/content/repositories/opendaylight.snapshot/org/opendaylight/integration"
294 def validate_snap_url(self, snap_url):
295 """Helper for validating snapshot URLs are sane."""
296 self.assertIn(self.url_base, snap_url)
297 self.assertIn("tar.gz", snap_url)
298 self.assertNotIn("release", snap_url)
299 self.assertNotIn("public", snap_url)
301 def test_carbon(self):
302 """Test Carbon major version gives sane snapshot URL."""
303 self.validate_snap_url(lib.get_snap_url("6"))
305 def test_nitrogen(self):
306 """Test Nitrogen major version gives sane snapshot URL."""
307 self.validate_snap_url(lib.get_snap_url("7"))
309 def test_oxygen(self):
310 """Test Oxygen major version gives sane snapshot URL."""
311 self.validate_snap_url(lib.get_snap_url("8"))
314 class TestGetDistroNamePrefix(unittest.TestCase):
316 """Test logic to get Karaf 3/4 distro name prefix per ODL major version."""
318 k3_distro_prefix = "distribution-karaf"
319 k4_distro_prefix = "karaf"
321 def test_carbon(self):
322 """Test Carbon major version gives Karaf 3 prefix."""
323 distro_prefix = lib.get_distro_name_prefix("6")
324 self.assertEqual(distro_prefix, self.k3_distro_prefix)
326 def test_nitrogen(self):
327 """Test Nitrogen major version gives Karaf 4 prefix."""
328 distro_prefix = lib.get_distro_name_prefix("7")
329 self.assertEqual(distro_prefix, self.k4_distro_prefix)
331 def test_oxygen(self):
332 """Test Oxygen major version gives Karaf 4 prefix."""
333 distro_prefix = lib.get_distro_name_prefix("8")
334 self.assertEqual(distro_prefix, self.k4_distro_prefix)
336 def test_carbon_int(self):
337 """Test Carbon major version as int gives Karaf 3 prefix."""
338 distro_prefix = lib.get_distro_name_prefix(6)
339 self.assertEqual(distro_prefix, self.k3_distro_prefix)
341 def test_nitrogen_int(self):
342 """Test Nitrogen major version as int gives Karaf 4 prefix."""
343 distro_prefix = lib.get_distro_name_prefix(7)
344 self.assertEqual(distro_prefix, self.k4_distro_prefix)
346 def test_oxygen_int(self):
347 """Test Oxygen major version as int gives Karaf 4 prefix."""
348 distro_prefix = lib.get_distro_name_prefix(8)
349 self.assertEqual(distro_prefix, self.k4_distro_prefix)
352 class TestGetSysdCommit(unittest.TestCase):
354 """Test fn to get most recent Int/Pack hash to use as sysd file version."""
357 """Check that returned value is of the right type."""
358 sysd_hash = lib.get_sysd_commit()
359 self.assertIsInstance(sysd_hash, str)
362 """Check that returned value the normal length for a commit hash."""
363 sysd_hash = lib.get_sysd_commit()
364 self.assertEqual(len(sysd_hash), 40)
366 def test_only_valid_chars(self):
367 """Check that returned value only contains typical commit hash chars."""
368 sysd_hash = lib.get_sysd_commit()
369 self.assertRegexpMatches(sysd_hash, "^[A-Za-z0-9-]+$")
372 class TestGetJavaVersion(unittest.TestCase):
374 """Test fn to get Java version required for a given ODL version."""
376 def test_type_given_int(self):
377 """Pass int, check that returned value is of the right type."""
378 java_version = lib.get_java_version(6)
379 self.assertIsInstance(java_version, int)
381 def test_type_given_str(self):
382 """Pass int, check that returned value is of the right type."""
383 java_version = lib.get_java_version("6")
384 self.assertIsInstance(java_version, int)
386 def test_old_given_int(self):
387 """Pass old ODL major version, check that Java 7 returned."""
388 java_version = lib.get_java_version(4)
389 self.assertEqual(java_version, 7)
391 def test_old_given_str(self):
392 """Pass old ODL major version, check that Java 7 returned."""
393 java_version = lib.get_java_version("4")
394 self.assertEqual(java_version, 7)
396 def test_carbon_given_int(self):
397 """Pass Carbon major version, check that Java 8 returned."""
398 java_version = lib.get_java_version(6)
399 self.assertEqual(java_version, 8)
401 def test_carbon_given_str(self):
402 """Pass Carbon major version, check that Java 8 returned."""
403 java_version = lib.get_java_version("6")
404 self.assertEqual(java_version, 8)
406 def test_nitrogen_given_int(self):
407 """Pass Nitrogen major version, check that Java 8 returned."""
408 java_version = lib.get_java_version(7)
409 self.assertEqual(java_version, 8)
411 def test_nitrogen_given_str(self):
412 """Pass Nitrogen major version, check that Java 8 returned."""
413 java_version = lib.get_java_version("7")
414 self.assertEqual(java_version, 8)
416 def test_oxygen_given_int(self):
417 """Pass Oxygen major version, check that Java 8 returned."""
418 java_version = lib.get_java_version(8)
419 self.assertEqual(java_version, 8)
421 def test_oxygen_given_str(self):
422 """Pass Oxygen major version, check that Java 8 returned."""
423 java_version = lib.get_java_version("8")
424 self.assertEqual(java_version, 8)
427 class TestGetChangelogDate(unittest.TestCase):
429 """Test lib fn that gives date for changelog in RPM or Deb format."""
431 def test_type_rpm(self):
432 """Test type of return object is correct given RPM arg."""
433 changelog_date = lib.get_changelog_date("rpm")
434 self.assertIsInstance(changelog_date, str)
436 def test_type_deb(self):
437 """Test type of return object is correct given Deb arg."""
438 changelog_date = lib.get_changelog_date("deb")
439 self.assertIsInstance(changelog_date, str)
441 def test_has_year_rpm(self):
442 """Test returned value has a year in it given RPM arg."""
443 changelog_date = lib.get_changelog_date("rpm")
444 self.assertRegexpMatches(changelog_date, "[20]\d\d")
446 def test_has_year_deb(self):
447 """Test returned value has a year in it given Deb arg."""
448 changelog_date = lib.get_changelog_date("deb")
449 self.assertRegexpMatches(changelog_date, "[20]\d\d")
451 def test_has_month_rpm(self):
452 """Test returned value has a month in it given RPM arg."""
453 changelog_date = lib.get_changelog_date("rpm")
454 self.assertRegexpMatches(
456 "Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec")
458 def test_has_month_deb(self):
459 """Test returned value has a month in it given Deb arg."""
460 changelog_date = lib.get_changelog_date("deb")
461 self.assertRegexpMatches(
463 "Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec")
465 def test_has_day_rpm(self):
466 """Test returned value has a day in it given RPM arg."""
467 changelog_date = lib.get_changelog_date("rpm")
468 self.assertRegexpMatches(
470 "Mon|Tue|Wed|Thu|Fri|Sat|Sun")
472 def test_has_day_deb(self):
473 """Test returned value has a day in it given Deb arg."""
474 changelog_date = lib.get_changelog_date("deb")
475 self.assertRegexpMatches(
477 "Mon|Tue|Wed|Thu|Fri|Sat|Sun")