Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
test/memap/memap_test.py@31:8ea194f6145b, 2017-01-04 (annotated)
- Committer:
- The Other Jimmy
- Date:
- Wed Jan 04 11:58:24 2017 -0600
- Revision:
- 31:8ea194f6145b
Update tools to follow mbed-os tools release 5.3.1
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| The Other Jimmy |
31:8ea194f6145b | 1 | """ |
| The Other Jimmy |
31:8ea194f6145b | 2 | mbed SDK |
| The Other Jimmy |
31:8ea194f6145b | 3 | Copyright (c) 2016 ARM Limited |
| The Other Jimmy |
31:8ea194f6145b | 4 | |
| The Other Jimmy |
31:8ea194f6145b | 5 | Licensed under the Apache License, Version 2.0 (the "License"); |
| The Other Jimmy |
31:8ea194f6145b | 6 | you may not use this file except in compliance with the License. |
| The Other Jimmy |
31:8ea194f6145b | 7 | You may obtain a copy of the License at |
| The Other Jimmy |
31:8ea194f6145b | 8 | |
| The Other Jimmy |
31:8ea194f6145b | 9 | http://www.apache.org/licenses/LICENSE-2.0 |
| The Other Jimmy |
31:8ea194f6145b | 10 | |
| The Other Jimmy |
31:8ea194f6145b | 11 | Unless required by applicable law or agreed to in writing, software |
| The Other Jimmy |
31:8ea194f6145b | 12 | distributed under the License is distributed on an "AS IS" BASIS, |
| The Other Jimmy |
31:8ea194f6145b | 13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| The Other Jimmy |
31:8ea194f6145b | 14 | See the License for the specific language governing permissions and |
| The Other Jimmy |
31:8ea194f6145b | 15 | limitations under the License. |
| The Other Jimmy |
31:8ea194f6145b | 16 | """ |
| The Other Jimmy |
31:8ea194f6145b | 17 | import sys |
| The Other Jimmy |
31:8ea194f6145b | 18 | import os |
| The Other Jimmy |
31:8ea194f6145b | 19 | |
| The Other Jimmy |
31:8ea194f6145b | 20 | ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "..", "..")) |
| The Other Jimmy |
31:8ea194f6145b | 21 | sys.path.insert(0, ROOT) |
| The Other Jimmy |
31:8ea194f6145b | 22 | |
| The Other Jimmy |
31:8ea194f6145b | 23 | import unittest |
| The Other Jimmy |
31:8ea194f6145b | 24 | from tools.memap import MemapParser |
| The Other Jimmy |
31:8ea194f6145b | 25 | from copy import deepcopy |
| The Other Jimmy |
31:8ea194f6145b | 26 | |
| The Other Jimmy |
31:8ea194f6145b | 27 | """ |
| The Other Jimmy |
31:8ea194f6145b | 28 | Tests for test_api.py |
| The Other Jimmy |
31:8ea194f6145b | 29 | """ |
| The Other Jimmy |
31:8ea194f6145b | 30 | |
| The Other Jimmy |
31:8ea194f6145b | 31 | class MemapParserTests(unittest.TestCase): |
| The Other Jimmy |
31:8ea194f6145b | 32 | """ |
| The Other Jimmy |
31:8ea194f6145b | 33 | Test cases for Test Api |
| The Other Jimmy |
31:8ea194f6145b | 34 | """ |
| The Other Jimmy |
31:8ea194f6145b | 35 | |
| The Other Jimmy |
31:8ea194f6145b | 36 | def setUp(self): |
| The Other Jimmy |
31:8ea194f6145b | 37 | """ |
| The Other Jimmy |
31:8ea194f6145b | 38 | Called before each test case |
| The Other Jimmy |
31:8ea194f6145b | 39 | |
| The Other Jimmy |
31:8ea194f6145b | 40 | :return: |
| The Other Jimmy |
31:8ea194f6145b | 41 | """ |
| The Other Jimmy |
31:8ea194f6145b | 42 | self.memap_parser = MemapParser() |
| The Other Jimmy |
31:8ea194f6145b | 43 | |
| The Other Jimmy |
31:8ea194f6145b | 44 | self.memap_parser.modules = { |
| The Other Jimmy |
31:8ea194f6145b | 45 | "Misc": { |
| The Other Jimmy |
31:8ea194f6145b | 46 | "unknown": 0, |
| The Other Jimmy |
31:8ea194f6145b | 47 | ".ARM": 8, |
| The Other Jimmy |
31:8ea194f6145b | 48 | ".ARM.extab": 0, |
| The Other Jimmy |
31:8ea194f6145b | 49 | ".init": 12, |
| The Other Jimmy |
31:8ea194f6145b | 50 | "OUTPUT": 0, |
| The Other Jimmy |
31:8ea194f6145b | 51 | ".stack": 0, |
| The Other Jimmy |
31:8ea194f6145b | 52 | ".eh_frame": 0, |
| The Other Jimmy |
31:8ea194f6145b | 53 | ".fini_array": 4, |
| The Other Jimmy |
31:8ea194f6145b | 54 | ".heap": 0, |
| The Other Jimmy |
31:8ea194f6145b | 55 | ".stabstr": 0, |
| The Other Jimmy |
31:8ea194f6145b | 56 | ".interrupts_ram": 0, |
| The Other Jimmy |
31:8ea194f6145b | 57 | ".init_array": 0, |
| The Other Jimmy |
31:8ea194f6145b | 58 | ".stab": 0, |
| The Other Jimmy |
31:8ea194f6145b | 59 | ".ARM.attributes": 7347, |
| The Other Jimmy |
31:8ea194f6145b | 60 | ".bss": 8517, |
| The Other Jimmy |
31:8ea194f6145b | 61 | ".flash_config": 16, |
| The Other Jimmy |
31:8ea194f6145b | 62 | ".interrupts": 1024, |
| The Other Jimmy |
31:8ea194f6145b | 63 | ".data": 2325, |
| The Other Jimmy |
31:8ea194f6145b | 64 | ".ARM.exidx": 0, |
| The Other Jimmy |
31:8ea194f6145b | 65 | ".text": 59906, |
| The Other Jimmy |
31:8ea194f6145b | 66 | ".jcr": 0 |
| The Other Jimmy |
31:8ea194f6145b | 67 | }, |
| The Other Jimmy |
31:8ea194f6145b | 68 | "Fill": { |
| The Other Jimmy |
31:8ea194f6145b | 69 | "unknown": 12, |
| The Other Jimmy |
31:8ea194f6145b | 70 | ".ARM": 0, |
| The Other Jimmy |
31:8ea194f6145b | 71 | ".ARM.extab": 0, |
| The Other Jimmy |
31:8ea194f6145b | 72 | ".init": 0, |
| The Other Jimmy |
31:8ea194f6145b | 73 | "OUTPUT": 0, |
| The Other Jimmy |
31:8ea194f6145b | 74 | ".stack": 0, |
| The Other Jimmy |
31:8ea194f6145b | 75 | ".eh_frame": 0, |
| The Other Jimmy |
31:8ea194f6145b | 76 | ".fini_array": 0, |
| The Other Jimmy |
31:8ea194f6145b | 77 | ".heap": 65536, |
| The Other Jimmy |
31:8ea194f6145b | 78 | ".stabstr": 0, |
| The Other Jimmy |
31:8ea194f6145b | 79 | ".interrupts_ram": 1024, |
| The Other Jimmy |
31:8ea194f6145b | 80 | ".init_array": 0, |
| The Other Jimmy |
31:8ea194f6145b | 81 | ".stab": 0, |
| The Other Jimmy |
31:8ea194f6145b | 82 | ".ARM.attributes": 0, |
| The Other Jimmy |
31:8ea194f6145b | 83 | ".bss": 2235, |
| The Other Jimmy |
31:8ea194f6145b | 84 | ".flash_config": 0, |
| The Other Jimmy |
31:8ea194f6145b | 85 | ".interrupts": 0, |
| The Other Jimmy |
31:8ea194f6145b | 86 | ".data": 3, |
| The Other Jimmy |
31:8ea194f6145b | 87 | ".ARM.exidx": 0, |
| The Other Jimmy |
31:8ea194f6145b | 88 | ".text": 136, |
| The Other Jimmy |
31:8ea194f6145b | 89 | ".jcr": 0 |
| The Other Jimmy |
31:8ea194f6145b | 90 | } |
| The Other Jimmy |
31:8ea194f6145b | 91 | } |
| The Other Jimmy |
31:8ea194f6145b | 92 | |
| The Other Jimmy |
31:8ea194f6145b | 93 | self.memap_parser.compute_report() |
| The Other Jimmy |
31:8ea194f6145b | 94 | |
| The Other Jimmy |
31:8ea194f6145b | 95 | def tearDown(self): |
| The Other Jimmy |
31:8ea194f6145b | 96 | """ |
| The Other Jimmy |
31:8ea194f6145b | 97 | Called after each test case |
| The Other Jimmy |
31:8ea194f6145b | 98 | |
| The Other Jimmy |
31:8ea194f6145b | 99 | :return: |
| The Other Jimmy |
31:8ea194f6145b | 100 | """ |
| The Other Jimmy |
31:8ea194f6145b | 101 | pass |
| The Other Jimmy |
31:8ea194f6145b | 102 | |
| The Other Jimmy |
31:8ea194f6145b | 103 | def generate_test_helper(self, output_type, file_output=None): |
| The Other Jimmy |
31:8ea194f6145b | 104 | """ |
| The Other Jimmy |
31:8ea194f6145b | 105 | Helper that ensures that the member variables "modules", "mem_report", |
| The Other Jimmy |
31:8ea194f6145b | 106 | and "mem_summary" are unchanged after calling "generate_output" |
| The Other Jimmy |
31:8ea194f6145b | 107 | |
| The Other Jimmy |
31:8ea194f6145b | 108 | :param output_type: type string that is passed to "generate_output" |
| The Other Jimmy |
31:8ea194f6145b | 109 | :param file_output: path to output file that is passed to "generate_output" |
| The Other Jimmy |
31:8ea194f6145b | 110 | :return: |
| The Other Jimmy |
31:8ea194f6145b | 111 | """ |
| The Other Jimmy |
31:8ea194f6145b | 112 | |
| The Other Jimmy |
31:8ea194f6145b | 113 | old_modules = deepcopy(self.memap_parser.modules) |
| The Other Jimmy |
31:8ea194f6145b | 114 | old_report = deepcopy(self.memap_parser.mem_report) |
| The Other Jimmy |
31:8ea194f6145b | 115 | old_summary = deepcopy(self.memap_parser.mem_summary) |
| The Other Jimmy |
31:8ea194f6145b | 116 | self.memap_parser.generate_output(output_type, file_output) |
| The Other Jimmy |
31:8ea194f6145b | 117 | self.assertEqual(self.memap_parser.modules, old_modules, |
| The Other Jimmy |
31:8ea194f6145b | 118 | "generate_output modified the 'modules' property") |
| The Other Jimmy |
31:8ea194f6145b | 119 | self.assertEqual(self.memap_parser.mem_report, old_report, |
| The Other Jimmy |
31:8ea194f6145b | 120 | "generate_output modified the 'mem_report' property") |
| The Other Jimmy |
31:8ea194f6145b | 121 | self.assertEqual(self.memap_parser.mem_summary, old_summary, |
| The Other Jimmy |
31:8ea194f6145b | 122 | "generate_output modified the 'mem_summary' property") |
| The Other Jimmy |
31:8ea194f6145b | 123 | |
| The Other Jimmy |
31:8ea194f6145b | 124 | def test_report_computed(self): |
| The Other Jimmy |
31:8ea194f6145b | 125 | """ |
| The Other Jimmy |
31:8ea194f6145b | 126 | Test ensures the report and summary are computed |
| The Other Jimmy |
31:8ea194f6145b | 127 | |
| The Other Jimmy |
31:8ea194f6145b | 128 | :return: |
| The Other Jimmy |
31:8ea194f6145b | 129 | """ |
| The Other Jimmy |
31:8ea194f6145b | 130 | self.assertTrue(self.memap_parser.mem_report) |
| The Other Jimmy |
31:8ea194f6145b | 131 | self.assertTrue(self.memap_parser.mem_summary) |
| The Other Jimmy |
31:8ea194f6145b | 132 | self.assertEqual(self.memap_parser.mem_report[-1]['summary'], |
| The Other Jimmy |
31:8ea194f6145b | 133 | self.memap_parser.mem_summary, |
| The Other Jimmy |
31:8ea194f6145b | 134 | "mem_report did not contain a correct copy of mem_summary") |
| The Other Jimmy |
31:8ea194f6145b | 135 | |
| The Other Jimmy |
31:8ea194f6145b | 136 | def test_generate_output_table(self): |
| The Other Jimmy |
31:8ea194f6145b | 137 | """ |
| The Other Jimmy |
31:8ea194f6145b | 138 | Test ensures that an output of type "table" can be generated correctly |
| The Other Jimmy |
31:8ea194f6145b | 139 | |
| The Other Jimmy |
31:8ea194f6145b | 140 | :return: |
| The Other Jimmy |
31:8ea194f6145b | 141 | """ |
| The Other Jimmy |
31:8ea194f6145b | 142 | self.generate_test_helper('table') |
| The Other Jimmy |
31:8ea194f6145b | 143 | |
| The Other Jimmy |
31:8ea194f6145b | 144 | def test_generate_output_json(self): |
| The Other Jimmy |
31:8ea194f6145b | 145 | """ |
| The Other Jimmy |
31:8ea194f6145b | 146 | Test ensures that an output of type "json" can be generated correctly |
| The Other Jimmy |
31:8ea194f6145b | 147 | |
| The Other Jimmy |
31:8ea194f6145b | 148 | :return: |
| The Other Jimmy |
31:8ea194f6145b | 149 | """ |
| The Other Jimmy |
31:8ea194f6145b | 150 | file_name = '.json_test_output.json' |
| The Other Jimmy |
31:8ea194f6145b | 151 | self.generate_test_helper('json', file_output=file_name) |
| The Other Jimmy |
31:8ea194f6145b | 152 | self.assertTrue(os.path.exists(file_name), "Failed to create json file") |
| The Other Jimmy |
31:8ea194f6145b | 153 | os.remove(file_name) |
| The Other Jimmy |
31:8ea194f6145b | 154 | |
| The Other Jimmy |
31:8ea194f6145b | 155 | def test_generate_output_csv_ci(self): |
| The Other Jimmy |
31:8ea194f6145b | 156 | """ |
| The Other Jimmy |
31:8ea194f6145b | 157 | Test ensures that an output of type "csv-ci" can be generated correctly |
| The Other Jimmy |
31:8ea194f6145b | 158 | |
| The Other Jimmy |
31:8ea194f6145b | 159 | :return: |
| The Other Jimmy |
31:8ea194f6145b | 160 | """ |
| The Other Jimmy |
31:8ea194f6145b | 161 | file_name = '.csv_ci_test_output.csv' |
| The Other Jimmy |
31:8ea194f6145b | 162 | self.generate_test_helper('csv-ci', file_output=file_name) |
| The Other Jimmy |
31:8ea194f6145b | 163 | self.assertTrue(os.path.exists(file_name), "Failed to create csv-ci file") |
| The Other Jimmy |
31:8ea194f6145b | 164 | os.remove(file_name) |
| The Other Jimmy |
31:8ea194f6145b | 165 | |
| The Other Jimmy |
31:8ea194f6145b | 166 | |
| The Other Jimmy |
31:8ea194f6145b | 167 | if __name__ == '__main__': |
| The Other Jimmy |
31:8ea194f6145b | 168 | unittest.main() |