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_nitrogen_release_url(self):
23 """Test URL of the ODL Nitrogen release."""
24 url = "%s/opendaylight.release/org/opendaylight/integration/karaf/0.7.0/karaf-0.7.0.tar.gz" % self.nexus_url
25 version = lib.extract_version(url)
26 self.assertEqual(version["version_major"], "7")
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"], "")
32 def test_nitrogen_release_zip_url(self):
33 """Test URL of the ODL Nitrogen release zip archive."""
34 url = "%s/opendaylight.release/org/opendaylight/integration/karaf/0.7.0/karaf-0.7.0.zip" % self.nexus_url
35 version = lib.extract_version(url)
36 self.assertEqual(version["version_major"], "7")
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"], "")
42 def test_nitrogen_sr1_release_url(self):
43 """Test URL of the ODL Nitrogen SR1 release."""
44 url = "%s/opendaylight.release/org/opendaylight/integration/karaf/0.7.1/karaf-0.7.1.tar.gz" % self.nexus_url
45 version = lib.extract_version(url)
46 self.assertEqual(version["version_major"], "7")
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"], "")
52 def test_nitrogen_release_zip_url(self):
53 """Test URL of the ODL Nitrogen release zip archive."""
54 url = "%s/opendaylight.release/org/opendaylight/integration/karaf/0.7.1/karaf-0.7.1.zip" % self.nexus_url
55 version = lib.extract_version(url)
56 self.assertEqual(version["version_major"], "7")
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"], "")
62 def test_nitrogen_autorelease_url(self):
63 """Test URL of an ODL Nitrogen autorelease build."""
64 # NB: This will need to be updated as old builds expire
65 url = "%s/autorelease-2096/org/opendaylight/integration/karaf/0.7.2/karaf-0.7.2.tar.gz" % self.nexus_url
66 version = lib.extract_version(url)
67 self.assertEqual(version["version_major"], "7")
68 self.assertEqual(version["version_minor"], "2")
69 self.assertEqual(version["version_patch"], "0")
70 self.assertEqual(version["pkg_version"], "0.1.20180221rel2096")
71 self.assertEqual(version["codename"], "")
73 def test_nitrogen_autorelease_zip_url(self):
74 """Test URL of an ODL Nitrogen autorelease build zip archive."""
75 # NB: This will need to be updated as old builds expire
76 url = "%s/autorelease-2096/org/opendaylight/integration/karaf/0.7.2/karaf-0.7.2.zip" % self.nexus_url
77 version = lib.extract_version(url)
78 self.assertEqual(version["version_major"], "7")
79 self.assertEqual(version["version_minor"], "2")
80 self.assertEqual(version["version_patch"], "0")
81 self.assertEqual(version["pkg_version"], "0.1.20180221rel2096")
82 self.assertEqual(version["codename"], "")
84 def test_nitrogen_snapshot_url(self):
85 """Test URL of an ODL Nitrogen snapshot build."""
86 # NB: This will need to be updated as old builds expire
87 url = "%s/opendaylight.snapshot/org/opendaylight/integration/karaf/0.7.2-SNAPSHOT/karaf-0.7.2-20180130.170631-330.tar.gz" % self.nexus_url
88 version = lib.extract_version(url)
89 self.assertEqual(version["version_major"], "7")
90 self.assertEqual(version["version_minor"], "2")
91 self.assertEqual(version["version_patch"], "0")
92 self.assertEqual(version["pkg_version"], "0.1.20180130snap330")
93 self.assertEqual(version["codename"], "-SNAPSHOT")
95 def test_nitrogen_snapshot_zip_url(self):
96 """Test URL of an ODL Nitrogen snapshot build zip archive."""
97 # NB: This will need to be updated as old builds expire
98 url = "%s/opendaylight.snapshot/org/opendaylight/integration/karaf/0.7.2-SNAPSHOT/karaf-0.7.2-20180130.170631-330.zip" % self.nexus_url
99 version = lib.extract_version(url)
100 self.assertEqual(version["version_major"], "7")
101 self.assertEqual(version["version_minor"], "2")
102 self.assertEqual(version["version_patch"], "0")
103 self.assertEqual(version["pkg_version"], "0.1.20180130snap330")
104 self.assertEqual(version["codename"], "-SNAPSHOT")
106 def test_oxygen_release_url(self):
107 """Test URL of the ODL Oxygen release."""
108 url = "%s/repositories/opendaylight.release/org/opendaylight/integration/karaf/0.8.0/karaf-0.8.0.tar.gz" % self.nexus_url
109 version = lib.extract_version(url)
110 self.assertEqual(version["version_major"], "8")
111 self.assertEqual(version["version_minor"], "0")
112 self.assertEqual(version["version_patch"], "0")
113 self.assertEqual(version["pkg_version"], "1")
114 self.assertEqual(version["codename"], "")
116 def test_oxygen_release_zip_url(self):
117 """Test URL of the ODL Oxygen release zip archive."""
118 url = "%s/repositories/opendaylight.release/org/opendaylight/integration/karaf/0.8.0/karaf-0.8.0.zip" % self.nexus_url
119 version = lib.extract_version(url)
120 self.assertEqual(version["version_major"], "8")
121 self.assertEqual(version["version_minor"], "0")
122 self.assertEqual(version["version_patch"], "0")
123 self.assertEqual(version["pkg_version"], "1")
124 self.assertEqual(version["codename"], "")
126 def test_oxygen_snapshot_url(self):
127 """Test URL of an ODL Oxygen snapshot build."""
128 # NB: This will need to be updated as old builds expire
129 url = "%s/opendaylight.snapshot/org/opendaylight/integration/karaf/0.8.0-SNAPSHOT/karaf-0.8.0-20180202.194543-1393.tar.gz" % self.nexus_url
130 version = lib.extract_version(url)
131 self.assertEqual(version["version_major"], "8")
132 self.assertEqual(version["version_minor"], "0")
133 self.assertEqual(version["version_patch"], "0")
134 self.assertEqual(version["pkg_version"], "0.1.20180202snap1393")
135 self.assertEqual(version["codename"], "-SNAPSHOT")
137 def test_oxygen_snapshot_zip_url(self):
138 """Test URL of an ODL Oxygen snapshot build zip archive."""
139 # NB: This will need to be updated as old builds expire
140 url = "%s/opendaylight.snapshot/org/opendaylight/integration/karaf/0.8.0-SNAPSHOT/karaf-0.8.0-20180202.194543-1393.zip" % self.nexus_url
141 version = lib.extract_version(url)
142 self.assertEqual(version["version_major"], "8")
143 self.assertEqual(version["version_minor"], "0")
144 self.assertEqual(version["version_patch"], "0")
145 self.assertEqual(version["pkg_version"], "0.1.20180202snap1393")
146 self.assertEqual(version["codename"], "-SNAPSHOT")
148 def test_fluorine_snapshot_url(self):
149 """Test URL of an ODL Fluorine snapshot build."""
150 # NB: This will need to be updated as old builds expire
151 url = "%s/opendaylight.snapshot/org/opendaylight/integration/karaf/0.9.0-SNAPSHOT/karaf-0.9.0-20180411.203859-563.tar.gz" % self.nexus_url
152 version = lib.extract_version(url)
153 self.assertEqual(version["version_major"], "9")
154 self.assertEqual(version["version_minor"], "0")
155 self.assertEqual(version["version_patch"], "0")
156 self.assertEqual(version["pkg_version"], "0.1.20180411snap563")
157 self.assertEqual(version["codename"], "-SNAPSHOT")
159 def test_fluorine_snapshot_zip_url(self):
160 """Test URL of an ODL Fluorine snapshot build zip archive."""
161 # NB: This will need to be updated as old builds expire
162 url = "%s/opendaylight.snapshot/org/opendaylight/integration/karaf/0.9.0-SNAPSHOT/karaf-0.9.0-20180411.203859-563.tar.gz" % self.nexus_url
163 version = lib.extract_version(url)
164 self.assertEqual(version["version_major"], "9")
165 self.assertEqual(version["version_minor"], "0")
166 self.assertEqual(version["version_patch"], "0")
167 self.assertEqual(version["pkg_version"], "0.1.20180411snap563")
168 self.assertEqual(version["codename"], "-SNAPSHOT")
170 def test_nitrogen_multipatch_zip_url(self):
171 """Test URL of an ODL Nitrogen multipatch-test build zip archive."""
172 # NB: This will need to be updated as old builds expire
173 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
174 version = lib.extract_version(url)
175 self.assertEqual(version["version_major"], "7")
176 self.assertEqual(version["version_minor"], "2")
177 self.assertEqual(version["version_patch"], "0")
178 self.assertEqual(version["pkg_version"], "0.1.20180115snap2")
179 self.assertEqual(version["codename"], "-SNAPSHOT")
181 def test_oxygen_multipatch_zip_url(self):
182 """Test URL of an ODL Oxygen multipatch-test build zip archive."""
183 # NB: This will need to be updated as old builds expire
184 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
185 version = lib.extract_version(url)
186 self.assertEqual(version["version_major"], "8")
187 self.assertEqual(version["version_minor"], "0")
188 self.assertEqual(version["version_patch"], "0")
189 self.assertEqual(version["pkg_version"], "0.1.20180204snap134")
190 self.assertEqual(version["codename"], "-SNAPSHOT")
193 class TestGetSnapURL(unittest.TestCase):
195 """Test logic get URL to latest snapshot build of given major version."""
197 url_base = "https://nexus.opendaylight.org/content/repositories/opendaylight.snapshot/org/opendaylight/integration"
199 def validate_snap_url(self, snap_url):
200 """Helper for validating snapshot URLs are sane."""
201 self.assertIn(self.url_base, snap_url)
202 self.assertIn("tar.gz", snap_url)
203 self.assertNotIn("release", snap_url)
204 self.assertNotIn("public", snap_url)
206 def test_nitrogen(self):
207 """Test Nitrogen major version gives sane snapshot URL."""
208 self.validate_snap_url(lib.get_snap_url("7"))
210 def test_oxygen(self):
211 """Test Oxygen major version gives sane snapshot URL."""
212 self.validate_snap_url(lib.get_snap_url("8"))
215 class TestGetDistroNamePrefix(unittest.TestCase):
217 """Test logic to get Karaf 3/4 distro name prefix per ODL major version."""
219 k3_distro_prefix = "distribution-karaf"
220 k4_distro_prefix = "karaf"
222 def test_nitrogen(self):
223 """Test Nitrogen major version gives Karaf 4 prefix."""
224 distro_prefix = lib.get_distro_name_prefix("7")
225 self.assertEqual(distro_prefix, self.k4_distro_prefix)
227 def test_oxygen(self):
228 """Test Oxygen major version gives Karaf 4 prefix."""
229 distro_prefix = lib.get_distro_name_prefix("8")
230 self.assertEqual(distro_prefix, self.k4_distro_prefix)
232 def test_nitrogen_int(self):
233 """Test Nitrogen major version as int gives Karaf 4 prefix."""
234 distro_prefix = lib.get_distro_name_prefix(7)
235 self.assertEqual(distro_prefix, self.k4_distro_prefix)
237 def test_oxygen_int(self):
238 """Test Oxygen major version as int gives Karaf 4 prefix."""
239 distro_prefix = lib.get_distro_name_prefix(8)
240 self.assertEqual(distro_prefix, self.k4_distro_prefix)
243 class TestGetSysdCommit(unittest.TestCase):
245 """Test fn to get most recent Int/Pack hash to use as sysd file version."""
248 """Check that returned value is of the right type."""
249 sysd_hash = lib.get_sysd_commit()
250 self.assertIsInstance(sysd_hash, str)
253 """Check that returned value the normal length for a commit hash."""
254 sysd_hash = lib.get_sysd_commit()
255 self.assertEqual(len(sysd_hash), 40)
257 def test_only_valid_chars(self):
258 """Check that returned value only contains typical commit hash chars."""
259 sysd_hash = lib.get_sysd_commit()
260 self.assertRegexpMatches(sysd_hash, "^[A-Za-z0-9-]+$")
263 class TestGetJavaVersion(unittest.TestCase):
265 """Test fn to get Java version required for a given ODL version."""
267 def test_type_given_int(self):
268 """Pass int, check that returned value is of the right type."""
269 java_version = lib.get_java_version(6)
270 self.assertIsInstance(java_version, int)
272 def test_type_given_str(self):
273 """Pass int, check that returned value is of the right type."""
274 java_version = lib.get_java_version("6")
275 self.assertIsInstance(java_version, int)
277 def test_old_given_int(self):
278 """Pass old ODL major version, check that Java 7 returned."""
279 java_version = lib.get_java_version(4)
280 self.assertEqual(java_version, 7)
282 def test_old_given_str(self):
283 """Pass old ODL major version, check that Java 7 returned."""
284 java_version = lib.get_java_version("4")
285 self.assertEqual(java_version, 7)
287 def test_nitrogen_given_int(self):
288 """Pass Nitrogen major version, check that Java 8 returned."""
289 java_version = lib.get_java_version(7)
290 self.assertEqual(java_version, 8)
292 def test_nitrogen_given_str(self):
293 """Pass Nitrogen major version, check that Java 8 returned."""
294 java_version = lib.get_java_version("7")
295 self.assertEqual(java_version, 8)
297 def test_oxygen_given_int(self):
298 """Pass Oxygen major version, check that Java 8 returned."""
299 java_version = lib.get_java_version(8)
300 self.assertEqual(java_version, 8)
302 def test_oxygen_given_str(self):
303 """Pass Oxygen major version, check that Java 8 returned."""
304 java_version = lib.get_java_version("8")
305 self.assertEqual(java_version, 8)
308 class TestGetChangelogDate(unittest.TestCase):
310 """Test lib fn that gives date for changelog in RPM or Deb format."""
312 def test_type_rpm(self):
313 """Test type of return object is correct given RPM arg."""
314 changelog_date = lib.get_changelog_date("rpm")
315 self.assertIsInstance(changelog_date, str)
317 def test_type_deb(self):
318 """Test type of return object is correct given Deb arg."""
319 changelog_date = lib.get_changelog_date("deb")
320 self.assertIsInstance(changelog_date, str)
322 def test_has_year_rpm(self):
323 """Test returned value has a year in it given RPM arg."""
324 changelog_date = lib.get_changelog_date("rpm")
325 self.assertRegexpMatches(changelog_date, "[20]\d\d")
327 def test_has_year_deb(self):
328 """Test returned value has a year in it given Deb arg."""
329 changelog_date = lib.get_changelog_date("deb")
330 self.assertRegexpMatches(changelog_date, "[20]\d\d")
332 def test_has_month_rpm(self):
333 """Test returned value has a month in it given RPM arg."""
334 changelog_date = lib.get_changelog_date("rpm")
335 self.assertRegexpMatches(
337 "Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec")
339 def test_has_month_deb(self):
340 """Test returned value has a month in it given Deb arg."""
341 changelog_date = lib.get_changelog_date("deb")
342 self.assertRegexpMatches(
344 "Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec")
346 def test_has_day_rpm(self):
347 """Test returned value has a day in it given RPM arg."""
348 changelog_date = lib.get_changelog_date("rpm")
349 self.assertRegexpMatches(
351 "Mon|Tue|Wed|Thu|Fri|Sat|Sun")
353 def test_has_day_deb(self):
354 """Test returned value has a day in it given Deb arg."""
355 changelog_date = lib.get_changelog_date("deb")
356 self.assertRegexpMatches(
358 "Mon|Tue|Wed|Thu|Fri|Sat|Sun")