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_oxygen_release_url(self):
23 """Test URL of the ODL Oxygen release."""
24 url = "%s/repositories/opendaylight.release/org/opendaylight/integration/karaf/0.8.0/karaf-0.8.0.tar.gz" % self.nexus_url
25 version = lib.extract_version(url)
26 self.assertEqual(version["version_major"], "8")
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_oxygen_release_zip_url(self):
33 """Test URL of the ODL Oxygen release zip archive."""
34 url = "%s/repositories/opendaylight.release/org/opendaylight/integration/karaf/0.8.0/karaf-0.8.0.zip" % self.nexus_url
35 version = lib.extract_version(url)
36 self.assertEqual(version["version_major"], "8")
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_oxygen_sr1_url(self):
43 """Test URL of the ODL Oxygen SR2."""
44 url = "%s/repositories/opendaylight.release/org/opendaylight/integration/karaf/0.8.2/karaf-0.8.2.tar.gz" % self.nexus_url
45 version = lib.extract_version(url)
46 self.assertEqual(version["version_major"], "8")
47 self.assertEqual(version["version_minor"], "2")
48 self.assertEqual(version["version_patch"], "0")
49 self.assertEqual(version["pkg_version"], "1")
50 self.assertEqual(version["codename"], "")
52 def test_oxygen_sr1_zip_url(self):
53 """Test URL of the ODL Oxygen SR2 zip archive."""
54 url = "%s/repositories/opendaylight.release/org/opendaylight/integration/karaf/0.8.2/karaf-0.8.2.zip" % self.nexus_url
55 version = lib.extract_version(url)
56 self.assertEqual(version["version_major"], "8")
57 self.assertEqual(version["version_minor"], "2")
58 self.assertEqual(version["version_patch"], "0")
59 self.assertEqual(version["pkg_version"], "1")
60 self.assertEqual(version["codename"], "")
62 def test_oxygen_snapshot_url(self):
63 """Test URL of an ODL Oxygen snapshot build."""
64 # NB: This will need to be updated as old builds expire
65 url = "%s/opendaylight.snapshot/org/opendaylight/integration/karaf/0.8.0-SNAPSHOT/karaf-0.8.0-20180202.194543-1393.tar.gz" % self.nexus_url
66 version = lib.extract_version(url)
67 self.assertEqual(version["version_major"], "8")
68 self.assertEqual(version["version_minor"], "0")
69 self.assertEqual(version["version_patch"], "0")
70 self.assertEqual(version["pkg_version"], "0.1.20180202snap1393")
71 self.assertEqual(version["codename"], "-SNAPSHOT")
73 def test_oxygen_snapshot_zip_url(self):
74 """Test URL of an ODL Oxygen snapshot build zip archive."""
75 # NB: This will need to be updated as old builds expire
76 url = "%s/opendaylight.snapshot/org/opendaylight/integration/karaf/0.8.0-SNAPSHOT/karaf-0.8.0-20180202.194543-1393.zip" % self.nexus_url
77 version = lib.extract_version(url)
78 self.assertEqual(version["version_major"], "8")
79 self.assertEqual(version["version_minor"], "0")
80 self.assertEqual(version["version_patch"], "0")
81 self.assertEqual(version["pkg_version"], "0.1.20180202snap1393")
82 self.assertEqual(version["codename"], "-SNAPSHOT")
84 def test_fluorine_snapshot_url(self):
85 """Test URL of an ODL Fluorine snapshot build."""
86 # NB: This will need to be updated as old builds expire
87 url = "%s/opendaylight.snapshot/org/opendaylight/integration/karaf/0.9.0-SNAPSHOT/karaf-0.9.0-20180411.203859-563.tar.gz" % self.nexus_url
88 version = lib.extract_version(url)
89 self.assertEqual(version["version_major"], "9")
90 self.assertEqual(version["version_minor"], "0")
91 self.assertEqual(version["version_patch"], "0")
92 self.assertEqual(version["pkg_version"], "0.1.20180411snap563")
93 self.assertEqual(version["codename"], "-SNAPSHOT")
95 def test_fluorine_snapshot_zip_url(self):
96 """Test URL of an ODL Fluorine 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.9.0-SNAPSHOT/karaf-0.9.0-20180411.203859-563.tar.gz" % self.nexus_url
99 version = lib.extract_version(url)
100 self.assertEqual(version["version_major"], "9")
101 self.assertEqual(version["version_minor"], "0")
102 self.assertEqual(version["version_patch"], "0")
103 self.assertEqual(version["pkg_version"], "0.1.20180411snap563")
104 self.assertEqual(version["codename"], "-SNAPSHOT")
106 def test_neon_snapshot_url(self):
107 """Test URL of an ODL Neon snapshot build."""
108 # NB: This will need to be updated as old builds expire
109 url = "%s/opendaylight.snapshot/org/opendaylight/integration/karaf/0.10.0-SNAPSHOT/karaf-0.10.0-20181004.142605-697.tar.gz" % self.nexus_url
110 version = lib.extract_version(url)
111 self.assertEqual(version["version_major"], "10")
112 self.assertEqual(version["version_minor"], "0")
113 self.assertEqual(version["version_patch"], "0")
114 self.assertEqual(version["pkg_version"], "0.1.20181004snap697")
115 self.assertEqual(version["codename"], "-SNAPSHOT")
117 def test_neon_snapshot_zip_url(self):
118 """Test URL of an ODL Neon snapshot build zip archive."""
119 # NB: This will need to be updated as old builds expire
120 url = "%s/opendaylight.snapshot/org/opendaylight/integration/karaf/0.10.0-SNAPSHOT/karaf-0.10.0-20181004.142605-697.zip" % self.nexus_url
121 version = lib.extract_version(url)
122 self.assertEqual(version["version_major"], "10")
123 self.assertEqual(version["version_minor"], "0")
124 self.assertEqual(version["version_patch"], "0")
125 self.assertEqual(version["pkg_version"], "0.1.20181004snap697")
126 self.assertEqual(version["codename"], "-SNAPSHOT")
128 def test_oxygen_multipatch_zip_url(self):
129 """Test URL of an ODL Oxygen multipatch-test build zip archive."""
130 # NB: This will need to be updated as old builds expire
131 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
132 version = lib.extract_version(url)
133 self.assertEqual(version["version_major"], "8")
134 self.assertEqual(version["version_minor"], "0")
135 self.assertEqual(version["version_patch"], "0")
136 self.assertEqual(version["pkg_version"], "0.1.20180204snap134")
137 self.assertEqual(version["codename"], "-SNAPSHOT")
139 def test_fluorine_multipatch_zip_url(self):
140 """Test URL of an ODL Fluorine multipatch-test build zip archive."""
141 # NB: This will need to be updated as old builds expire
142 url = "%s/opendaylight.snapshot/org/opendaylight/integration/integration/distribution/karaf/0.9.0-SNAPSHOT/karaf-0.9.0-20180531.192226-59.zip" % self.nexus_url
143 version = lib.extract_version(url)
144 self.assertEqual(version["version_major"], "9")
145 self.assertEqual(version["version_minor"], "0")
146 self.assertEqual(version["version_patch"], "0")
147 self.assertEqual(version["pkg_version"], "0.1.20180531snap59")
148 self.assertEqual(version["codename"], "-SNAPSHOT")
150 def test_neon_multipatch_zip_url(self):
151 """Test URL of an ODL Neon multipatch-test build zip archive."""
152 # NB: This will need to be updated as old builds expire
153 url = "%s/opendaylight.snapshot/org/opendaylight/integration/integration/distribution/karaf/0.10.0-SNAPSHOT/karaf-0.10.0-20180925.093600-5.zip" % self.nexus_url
154 version = lib.extract_version(url)
155 self.assertEqual(version["version_major"], "10")
156 self.assertEqual(version["version_minor"], "0")
157 self.assertEqual(version["version_patch"], "0")
158 self.assertEqual(version["pkg_version"], "0.1.20180925snap5")
159 self.assertEqual(version["codename"], "-SNAPSHOT")
162 class TestGetSnapURL(unittest.TestCase):
164 """Test logic get URL to latest snapshot build of given major version."""
166 url_base = "https://nexus.opendaylight.org/content/repositories/opendaylight.snapshot/org/opendaylight/integration"
168 def validate_snap_url(self, snap_url):
169 """Helper for validating snapshot URLs are sane."""
170 self.assertIn(self.url_base, snap_url)
171 self.assertIn("tar.gz", snap_url)
172 self.assertNotIn("release", snap_url)
173 self.assertNotIn("public", snap_url)
175 def test_oxygen(self):
176 """Test Oxygen major version gives sane snapshot URL."""
177 self.validate_snap_url(lib.get_snap_url("8"))
179 def test_fluorine(self):
180 """Test Fluorine major version gives sane snapshot URL."""
181 self.validate_snap_url(lib.get_snap_url("9"))
184 class TestGetDistroNamePrefix(unittest.TestCase):
186 """Test logic to get Karaf 3/4 distro name prefix per ODL major version."""
188 k3_distro_prefix = "distribution-karaf"
189 k4_distro_prefix = "karaf"
191 def test_oxygen(self):
192 """Test Oxygen major version gives Karaf 4 prefix."""
193 distro_prefix = lib.get_distro_name_prefix("8")
194 self.assertEqual(distro_prefix, self.k4_distro_prefix)
196 def test_oxygen_int(self):
197 """Test Oxygen major version as int gives Karaf 4 prefix."""
198 distro_prefix = lib.get_distro_name_prefix(8)
199 self.assertEqual(distro_prefix, self.k4_distro_prefix)
201 def test_fluorine(self):
202 """Test Fluorine major version gives Karaf 4 prefix."""
203 distro_prefix = lib.get_distro_name_prefix("9")
204 self.assertEqual(distro_prefix, self.k4_distro_prefix)
206 def test_fluorine_int(self):
207 """Test Fluorine major version as int gives Karaf 4 prefix."""
208 distro_prefix = lib.get_distro_name_prefix(9)
209 self.assertEqual(distro_prefix, self.k4_distro_prefix)
212 class TestGetSysdCommit(unittest.TestCase):
214 """Test fn to get most recent Int/Pack hash to use as sysd file version."""
217 """Check that returned value is of the right type."""
218 sysd_hash = lib.get_sysd_commit()
219 self.assertIsInstance(sysd_hash, str)
222 """Check that returned value the normal length for a commit hash."""
223 sysd_hash = lib.get_sysd_commit()
224 self.assertEqual(len(sysd_hash), 40)
226 def test_only_valid_chars(self):
227 """Check that returned value only contains typical commit hash chars."""
228 sysd_hash = lib.get_sysd_commit()
229 self.assertRegexpMatches(sysd_hash, "^[A-Za-z0-9-]+$")
232 class TestGetJavaVersion(unittest.TestCase):
234 """Test fn to get Java version required for a given ODL version."""
236 def test_type_given_int(self):
237 """Pass int, check that returned value is of the right type."""
238 java_version = lib.get_java_version(6)
239 self.assertIsInstance(java_version, int)
241 def test_type_given_str(self):
242 """Pass int, check that returned value is of the right type."""
243 java_version = lib.get_java_version("6")
244 self.assertIsInstance(java_version, int)
246 def test_old_given_int(self):
247 """Pass old ODL major version, check that Java 7 returned."""
248 java_version = lib.get_java_version(4)
249 self.assertEqual(java_version, 7)
251 def test_old_given_str(self):
252 """Pass old ODL major version, check that Java 7 returned."""
253 java_version = lib.get_java_version("4")
254 self.assertEqual(java_version, 7)
256 def test_oxygen_given_int(self):
257 """Pass Oxygen major version, check that Java 8 returned."""
258 java_version = lib.get_java_version(8)
259 self.assertEqual(java_version, 8)
261 def test_oxygen_given_str(self):
262 """Pass Oxygen major version, check that Java 8 returned."""
263 java_version = lib.get_java_version("8")
264 self.assertEqual(java_version, 8)
266 def test_fluorine_given_int(self):
267 """Pass Fluorine major version, check that Java 8 returned."""
268 java_version = lib.get_java_version(9)
269 self.assertEqual(java_version, 8)
271 def test_fluorine_given_str(self):
272 """Pass Fluorine major version, check that Java 8 returned."""
273 java_version = lib.get_java_version("9")
274 self.assertEqual(java_version, 8)
277 class TestGetChangelogDate(unittest.TestCase):
279 """Test lib fn that gives date for changelog in RPM or Deb format."""
281 def test_type_rpm(self):
282 """Test type of return object is correct given RPM arg."""
283 changelog_date = lib.get_changelog_date("rpm")
284 self.assertIsInstance(changelog_date, str)
286 def test_type_deb(self):
287 """Test type of return object is correct given Deb arg."""
288 changelog_date = lib.get_changelog_date("deb")
289 self.assertIsInstance(changelog_date, str)
291 def test_has_year_rpm(self):
292 """Test returned value has a year in it given RPM arg."""
293 changelog_date = lib.get_changelog_date("rpm")
294 self.assertRegexpMatches(changelog_date, "[20]\d\d")
296 def test_has_year_deb(self):
297 """Test returned value has a year in it given Deb arg."""
298 changelog_date = lib.get_changelog_date("deb")
299 self.assertRegexpMatches(changelog_date, "[20]\d\d")
301 def test_has_month_rpm(self):
302 """Test returned value has a month in it given RPM arg."""
303 changelog_date = lib.get_changelog_date("rpm")
304 self.assertRegexpMatches(
306 "Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec")
308 def test_has_month_deb(self):
309 """Test returned value has a month in it given Deb arg."""
310 changelog_date = lib.get_changelog_date("deb")
311 self.assertRegexpMatches(
313 "Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec")
315 def test_has_day_rpm(self):
316 """Test returned value has a day in it given RPM arg."""
317 changelog_date = lib.get_changelog_date("rpm")
318 self.assertRegexpMatches(
320 "Mon|Tue|Wed|Thu|Fri|Sat|Sun")
322 def test_has_day_deb(self):
323 """Test returned value has a day in it given Deb arg."""
324 changelog_date = lib.get_changelog_date("deb")
325 self.assertRegexpMatches(
327 "Mon|Tue|Wed|Thu|Fri|Sat|Sun")