| # test_host.py - Unit tests for swift_build_support.cmake -*-- python -*- |
| # |
| # This source file is part of the Swift.org open source project |
| # |
| # Copyright (c) 2014 - 2017 Apple Inc. and the Swift project authors |
| # Licensed under Apache License v2.0 with Runtime Library Exception |
| # |
| # See https://swift.org/LICENSE.txt for license information |
| # See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors |
| |
| import platform |
| import unittest |
| |
| import swift_build_support.host as sbs_host |
| |
| |
| class HostTestCase(unittest.TestCase): |
| |
| def test_system_memory(self): |
| # We make sure that we get an integer back. If we get an integer back, |
| # we know that we at least were able to get some sort of information |
| # from the system and it could be parsed as an integer. This is just a |
| # smoke test. |
| supported_platforms = [('Darwin', 'x86_64')] |
| |
| mem = sbs_host.system_memory() |
| |
| if (platform.system(), platform.machine()) not in supported_platforms: |
| self.assertIsNone(mem) |
| else: |
| self.assertIsInstance(mem, int) |
| |
| def test_lto_link_job_counts(self): |
| # Make sure that: |
| # |
| # 1. we get back a dictionary with two keys in it, the first called |
| # llvm, the other called swift. |
| # |
| # 2. The values associated with these keys is either None (if we do not |
| # support the platform) or is an int that is reasonable (i.e. < |
| # 100). The number 100 is just a heuristic number that is appropriate |
| # currently since LTO uses so much memory. If and when that changes, |
| # this number should change. |
| supported_platforms = [('Darwin', 'x86_64')] |
| reasonable_upper_bound_of_lto_threads = 100 |
| |
| result = sbs_host.max_lto_link_job_counts() |
| self.assertIsInstance(result, dict) |
| self.assertEqual(len(result), 2) |
| |
| if (platform.system(), platform.machine()) not in supported_platforms: |
| self.assertIsNone(result['llvm']) |
| self.assertIsNone(result['swift']) |
| return |
| |
| self.assertIsNotNone(result['llvm']) |
| self.assertIsNotNone(result['swift']) |
| self.assertIsInstance(result['llvm'], int) |
| self.assertIsInstance(result['swift'], int) |
| self.assertLess(result['llvm'], reasonable_upper_bound_of_lto_threads) |
| self.assertLess(result['swift'], reasonable_upper_bound_of_lto_threads) |