Add Oxygen Packer var file
[integration/packaging.git] / packages / test_lib.py
1 ##############################################################################
2 # Copyright (c) 2016 Daniel Farrell.  All rights reserved.
3 #
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 ##############################################################################
8
9 """Tests for package build logic helper library."""
10
11 import unittest
12
13 import lib
14
15
16 class TestExtractVersion(unittest.TestCase):
17
18     """Test logic to extract ODL versions from artifact URLs."""
19
20     nexus_url = "https://nexus.opendaylight.org/content/repositories"
21
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"], "")
31
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"], "")
41
42     def test_oxygen_snapshot_url(self):
43         """Test URL of an ODL Oxygen snapshot build."""
44         # NB: This will need to be updated as old builds expire
45         url = "%s/opendaylight.snapshot/org/opendaylight/integration/karaf/0.8.0-SNAPSHOT/karaf-0.8.0-20180202.194543-1393.tar.gz" % self.nexus_url
46         version = lib.extract_version(url)
47         self.assertEqual(version["version_major"], "8")
48         self.assertEqual(version["version_minor"], "0")
49         self.assertEqual(version["version_patch"], "0")
50         self.assertEqual(version["pkg_version"], "0.1.20180202snap1393")
51         self.assertEqual(version["codename"], "-SNAPSHOT")
52
53     def test_oxygen_snapshot_zip_url(self):
54         """Test URL of an ODL Oxygen snapshot build zip archive."""
55         # NB: This will need to be updated as old builds expire
56         url = "%s/opendaylight.snapshot/org/opendaylight/integration/karaf/0.8.0-SNAPSHOT/karaf-0.8.0-20180202.194543-1393.zip" % self.nexus_url
57         version = lib.extract_version(url)
58         self.assertEqual(version["version_major"], "8")
59         self.assertEqual(version["version_minor"], "0")
60         self.assertEqual(version["version_patch"], "0")
61         self.assertEqual(version["pkg_version"], "0.1.20180202snap1393")
62         self.assertEqual(version["codename"], "-SNAPSHOT")
63
64     def test_fluorine_snapshot_url(self):
65         """Test URL of an ODL Fluorine snapshot build."""
66         # NB: This will need to be updated as old builds expire
67         url = "%s/opendaylight.snapshot/org/opendaylight/integration/karaf/0.9.0-SNAPSHOT/karaf-0.9.0-20180411.203859-563.tar.gz" % self.nexus_url
68         version = lib.extract_version(url)
69         self.assertEqual(version["version_major"], "9")
70         self.assertEqual(version["version_minor"], "0")
71         self.assertEqual(version["version_patch"], "0")
72         self.assertEqual(version["pkg_version"], "0.1.20180411snap563")
73         self.assertEqual(version["codename"], "-SNAPSHOT")
74
75     def test_fluorine_snapshot_zip_url(self):
76         """Test URL of an ODL Fluorine snapshot build zip archive."""
77         # NB: This will need to be updated as old builds expire
78         url = "%s/opendaylight.snapshot/org/opendaylight/integration/karaf/0.9.0-SNAPSHOT/karaf-0.9.0-20180411.203859-563.tar.gz" % self.nexus_url
79         version = lib.extract_version(url)
80         self.assertEqual(version["version_major"], "9")
81         self.assertEqual(version["version_minor"], "0")
82         self.assertEqual(version["version_patch"], "0")
83         self.assertEqual(version["pkg_version"], "0.1.20180411snap563")
84         self.assertEqual(version["codename"], "-SNAPSHOT")
85
86     def test_oxygen_multipatch_zip_url(self):
87         """Test URL of an ODL Oxygen multipatch-test build zip archive."""
88         # NB: This will need to be updated as old builds expire
89         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
90         version = lib.extract_version(url)
91         self.assertEqual(version["version_major"], "8")
92         self.assertEqual(version["version_minor"], "0")
93         self.assertEqual(version["version_patch"], "0")
94         self.assertEqual(version["pkg_version"], "0.1.20180204snap134")
95         self.assertEqual(version["codename"], "-SNAPSHOT")
96
97
98 class TestGetSnapURL(unittest.TestCase):
99
100     """Test logic get URL to latest snapshot build of given major version."""
101
102     url_base = "https://nexus.opendaylight.org/content/repositories/opendaylight.snapshot/org/opendaylight/integration"
103
104     def validate_snap_url(self, snap_url):
105         """Helper for validating snapshot URLs are sane."""
106         self.assertIn(self.url_base, snap_url)
107         self.assertIn("tar.gz", snap_url)
108         self.assertNotIn("release", snap_url)
109         self.assertNotIn("public", snap_url)
110
111     def test_oxygen(self):
112         """Test Oxygen major version gives sane snapshot URL."""
113         self.validate_snap_url(lib.get_snap_url("8"))
114
115
116 class TestGetDistroNamePrefix(unittest.TestCase):
117
118     """Test logic to get Karaf 3/4 distro name prefix per ODL major version."""
119
120     k3_distro_prefix = "distribution-karaf"
121     k4_distro_prefix = "karaf"
122
123     def test_oxygen(self):
124         """Test Oxygen major version gives Karaf 4 prefix."""
125         distro_prefix = lib.get_distro_name_prefix("8")
126         self.assertEqual(distro_prefix, self.k4_distro_prefix)
127
128     def test_oxygen_int(self):
129         """Test Oxygen major version as int gives Karaf 4 prefix."""
130         distro_prefix = lib.get_distro_name_prefix(8)
131         self.assertEqual(distro_prefix, self.k4_distro_prefix)
132
133
134 class TestGetSysdCommit(unittest.TestCase):
135
136     """Test fn to get most recent Int/Pack hash to use as sysd file version."""
137
138     def test_type(self):
139         """Check that returned value is of the right type."""
140         sysd_hash = lib.get_sysd_commit()
141         self.assertIsInstance(sysd_hash, str)
142
143     def test_len(self):
144         """Check that returned value the normal length for a commit hash."""
145         sysd_hash = lib.get_sysd_commit()
146         self.assertEqual(len(sysd_hash), 40)
147
148     def test_only_valid_chars(self):
149         """Check that returned value only contains typical commit hash chars."""
150         sysd_hash = lib.get_sysd_commit()
151         self.assertRegexpMatches(sysd_hash, "^[A-Za-z0-9-]+$")
152
153
154 class TestGetJavaVersion(unittest.TestCase):
155
156     """Test fn to get Java version required for a given ODL version."""
157
158     def test_type_given_int(self):
159         """Pass int, check that returned value is of the right type."""
160         java_version = lib.get_java_version(6)
161         self.assertIsInstance(java_version, int)
162
163     def test_type_given_str(self):
164         """Pass int, check that returned value is of the right type."""
165         java_version = lib.get_java_version("6")
166         self.assertIsInstance(java_version, int)
167
168     def test_old_given_int(self):
169         """Pass old ODL major version, check that Java 7 returned."""
170         java_version = lib.get_java_version(4)
171         self.assertEqual(java_version, 7)
172
173     def test_old_given_str(self):
174         """Pass old ODL major version, check that Java 7 returned."""
175         java_version = lib.get_java_version("4")
176         self.assertEqual(java_version, 7)
177
178     def test_oxygen_given_int(self):
179         """Pass Oxygen major version, check that Java 8 returned."""
180         java_version = lib.get_java_version(8)
181         self.assertEqual(java_version, 8)
182
183     def test_oxygen_given_str(self):
184         """Pass Oxygen major version, check that Java 8 returned."""
185         java_version = lib.get_java_version("8")
186         self.assertEqual(java_version, 8)
187
188
189 class TestGetChangelogDate(unittest.TestCase):
190
191     """Test lib fn that gives date for changelog in RPM or Deb format."""
192
193     def test_type_rpm(self):
194         """Test type of return object is correct given RPM arg."""
195         changelog_date = lib.get_changelog_date("rpm")
196         self.assertIsInstance(changelog_date, str)
197
198     def test_type_deb(self):
199         """Test type of return object is correct given Deb arg."""
200         changelog_date = lib.get_changelog_date("deb")
201         self.assertIsInstance(changelog_date, str)
202
203     def test_has_year_rpm(self):
204         """Test returned value has a year in it given RPM arg."""
205         changelog_date = lib.get_changelog_date("rpm")
206         self.assertRegexpMatches(changelog_date, "[20]\d\d")
207
208     def test_has_year_deb(self):
209         """Test returned value has a year in it given Deb arg."""
210         changelog_date = lib.get_changelog_date("deb")
211         self.assertRegexpMatches(changelog_date, "[20]\d\d")
212
213     def test_has_month_rpm(self):
214         """Test returned value has a month in it given RPM arg."""
215         changelog_date = lib.get_changelog_date("rpm")
216         self.assertRegexpMatches(
217             changelog_date,
218             "Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec")
219
220     def test_has_month_deb(self):
221         """Test returned value has a month in it given Deb arg."""
222         changelog_date = lib.get_changelog_date("deb")
223         self.assertRegexpMatches(
224             changelog_date,
225             "Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec")
226
227     def test_has_day_rpm(self):
228         """Test returned value has a day in it given RPM arg."""
229         changelog_date = lib.get_changelog_date("rpm")
230         self.assertRegexpMatches(
231             changelog_date,
232             "Mon|Tue|Wed|Thu|Fri|Sat|Sun")
233
234     def test_has_day_deb(self):
235         """Test returned value has a day in it given Deb arg."""
236         changelog_date = lib.get_changelog_date("deb")
237         self.assertRegexpMatches(
238             changelog_date,
239             "Mon|Tue|Wed|Thu|Fri|Sat|Sun")