py-eb-model 1.1.6__py3-none-any.whl → 1.1.8__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- eb_model/cli/pref_system_importer_cli.py +22 -13
- eb_model/cli/rte_xdm_2_xls_cli.py +28 -27
- eb_model/models/abstract.py +20 -8
- eb_model/models/importer_xdm.py +3 -1
- eb_model/models/nvm_xdm.py +321 -12
- eb_model/models/os_xdm.py +320 -55
- eb_model/models/rte_xdm.py +16 -11
- eb_model/parser/eb_parser.py +28 -20
- eb_model/parser/nvm_xdm_parser.py +89 -12
- eb_model/parser/os_xdm_parser.py +56 -12
- eb_model/parser/rte_xdm_parser.py +11 -11
- eb_model/reporter/excel_reporter/abstract.py +20 -6
- eb_model/reporter/excel_reporter/nvm_xdm.py +97 -7
- eb_model/reporter/excel_reporter/os_xdm.py +104 -20
- eb_model/reporter/excel_reporter/rte_xdm.py +15 -4
- eb_model/tests/models/test_abstract.py +201 -0
- eb_model/tests/models/test_eb_doc.py +66 -0
- eb_model/tests/models/test_eclipse_project.py +21 -0
- eb_model/tests/models/test_importer_xdm.py +45 -40
- eb_model/tests/parser/__init__.py +0 -0
- eb_model/tests/parser/test_nvm_xdm_parser.py +259 -0
- eb_model/tests/parser/test_os_xdm_parser.py +396 -0
- eb_model/writer/text_writer.py +4 -2
- {py_eb_model-1.1.6.dist-info → py_eb_model-1.1.8.dist-info}/METADATA +12 -1
- py_eb_model-1.1.8.dist-info/RECORD +48 -0
- py_eb_model-1.1.6.dist-info/RECORD +0 -42
- {py_eb_model-1.1.6.dist-info → py_eb_model-1.1.8.dist-info}/LICENSE +0 -0
- {py_eb_model-1.1.6.dist-info → py_eb_model-1.1.8.dist-info}/WHEEL +0 -0
- {py_eb_model-1.1.6.dist-info → py_eb_model-1.1.8.dist-info}/entry_points.txt +0 -0
- {py_eb_model-1.1.6.dist-info → py_eb_model-1.1.8.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,396 @@
|
|
1
|
+
from ...parser.os_xdm_parser import OsXdmParser
|
2
|
+
from ...models.os_xdm import Os, OsResource
|
3
|
+
from ...models.eb_doc import EBModel
|
4
|
+
|
5
|
+
import xml.etree.ElementTree as ET
|
6
|
+
import pytest
|
7
|
+
|
8
|
+
|
9
|
+
class TestOsXdmParser:
|
10
|
+
def test_read_os_resources(self):
|
11
|
+
|
12
|
+
# Create a mock XML element for testing
|
13
|
+
xml_content = """
|
14
|
+
<datamodel version="8.0"
|
15
|
+
xmlns="http://www.tresos.de/_projects/DataModel2/18/root.xsd"
|
16
|
+
xmlns:a="http://www.tresos.de/_projects/DataModel2/18/attribute.xsd"
|
17
|
+
xmlns:v="http://www.tresos.de/_projects/DataModel2/06/schema.xsd"
|
18
|
+
xmlns:d="http://www.tresos.de/_projects/DataModel2/06/data.xsd">
|
19
|
+
<d:lst name="OsResource" type="MAP">
|
20
|
+
<d:ctr name="Resource1">
|
21
|
+
<a:a name="IMPORTER_INFO" value="@CALC(SvcAs,os.resources,1)"/>
|
22
|
+
<d:var name="OsResourceProperty" type="ENUMERATION" value="STANDARD">
|
23
|
+
<d:lst name="OsResourceAccessingApplication">
|
24
|
+
<d:ref type="REFERENCE" value="ASPath:/Os/Os/OsApplication_C0">
|
25
|
+
<a:a name="IMPORTER_INFO" value="@CALC(SvcAs,os.resources,1)"/>
|
26
|
+
</d:ref>
|
27
|
+
</d:lst>
|
28
|
+
</d:var>
|
29
|
+
</d:ctr>
|
30
|
+
<d:ctr name="Resource2">
|
31
|
+
<d:var name="OsResourceProperty" type="ENUMERATION" value="INTERNAL"/>
|
32
|
+
<d:lst name="OsResourceAccessingApplication"/>
|
33
|
+
<d:ref name="OsResourceLinkedResourceRef" type="REFERENCE" >
|
34
|
+
<a:a name="ENABLE" value="false"/>
|
35
|
+
<a:a name="IMPORTER_INFO" value="@DEF"/>
|
36
|
+
</d:ref>
|
37
|
+
</d:ctr>
|
38
|
+
</d:lst>
|
39
|
+
</datamodel>
|
40
|
+
"""
|
41
|
+
element = ET.fromstring(xml_content)
|
42
|
+
|
43
|
+
# Mock Os object
|
44
|
+
model = EBModel.getInstance()
|
45
|
+
os = model.getOs()
|
46
|
+
|
47
|
+
# Create parser instance
|
48
|
+
parser = OsXdmParser()
|
49
|
+
parser.nsmap = {
|
50
|
+
'': "http://www.tresos.de/_projects/DataModel2/18/root.xsd",
|
51
|
+
'a': "http://www.tresos.de/_projects/DataModel2/18/attribute.xsd",
|
52
|
+
'v': "http://www.tresos.de/_projects/DataModel2/06/schema.xsd",
|
53
|
+
'd': "http://www.tresos.de/_projects/DataModel2/06/data.xsd"
|
54
|
+
}
|
55
|
+
|
56
|
+
# Call the method
|
57
|
+
parser.read_os_resources(element, os)
|
58
|
+
|
59
|
+
# Assertions
|
60
|
+
resources = os.getOsResourceList()
|
61
|
+
assert len(resources) == 2
|
62
|
+
|
63
|
+
resource1 = resources[0]
|
64
|
+
assert resource1.getName() == "Resource1"
|
65
|
+
assert resource1.getImporterInfo() == "@CALC(SvcAs,os.resources,1)"
|
66
|
+
assert resource1.isCalculatedSvcAs() is True
|
67
|
+
assert resource1.getOsResourceProperty() == "STANDARD"
|
68
|
+
assert len(resource1.getOsResourceAccessingApplicationRefs()) == 1
|
69
|
+
for ref in resource1.getOsResourceAccessingApplicationRefs():
|
70
|
+
assert ref.getValue() == "/Os/Os/OsApplication_C0"
|
71
|
+
|
72
|
+
resource2 = resources[1]
|
73
|
+
assert resource2.getName() == "Resource2"
|
74
|
+
assert resource2.getImporterInfo() is None
|
75
|
+
assert resource2.isCalculatedSvcAs() is False
|
76
|
+
assert resource2.getOsResourceProperty() == "INTERNAL"
|
77
|
+
assert len(resource2.getOsResourceAccessingApplicationRefs()) == 0
|
78
|
+
|
79
|
+
def test_read_os_tasks(self):
|
80
|
+
# Create a mock XML element for testing
|
81
|
+
xml_content = """
|
82
|
+
<datamodel version="8.0"
|
83
|
+
xmlns="http://www.tresos.de/_projects/DataModel2/18/root.xsd"
|
84
|
+
xmlns:a="http://www.tresos.de/_projects/DataModel2/18/attribute.xsd"
|
85
|
+
xmlns:v="http://www.tresos.de/_projects/DataModel2/06/schema.xsd"
|
86
|
+
xmlns:d="http://www.tresos.de/_projects/DataModel2/06/data.xsd">
|
87
|
+
<d:lst name="OsTask" type="MAP">
|
88
|
+
<d:ctr name="Task1">
|
89
|
+
<d:var name="OsTaskActivation" type="INTEGER" value="1">
|
90
|
+
<a:a name="IMPORTER_INFO" value="@DEF"/>
|
91
|
+
</d:var>
|
92
|
+
<d:var name="OsTaskPriority" type="INTEGER" value="250"/>
|
93
|
+
<d:var name="OsTaskPeriod" type="FLOAT" >
|
94
|
+
<a:a name="ENABLE" value="false"/>
|
95
|
+
<a:a name="IMPORTER_INFO" value="@DEF"/>
|
96
|
+
</d:var>
|
97
|
+
<d:var name="OsMeasure_Max_Runtime" type="BOOLEAN" value="false">
|
98
|
+
<a:a name="ENABLE" value="false"/>
|
99
|
+
<a:a name="IMPORTER_INFO" value="@DEF"/>
|
100
|
+
</d:var>
|
101
|
+
<d:lst name="OsTaskAccessingApplication">
|
102
|
+
<d:ref type="REFERENCE" value="ASPath:/Os/Os/Partition_01"/>
|
103
|
+
</d:lst>
|
104
|
+
<d:lst name="OsTaskEventRef"/>
|
105
|
+
<d:lst name="OsTaskResourceRef">
|
106
|
+
<d:ref type="REFERENCE" value="ASPath:/Os/Os/Res_Core0"/>
|
107
|
+
<d:ref type="REFERENCE" value="ASPath:/Os/Os/Res_Core1"/>
|
108
|
+
</d:lst>
|
109
|
+
<d:ctr name="OsTaskAutostart" type="IDENTIFIABLE">
|
110
|
+
<a:a name="ENABLE" value="true"/>
|
111
|
+
<d:lst name="OsTaskAppModeRef">
|
112
|
+
<d:ref type="REFERENCE" value="ASPath:/Os/Os/OSDEFAULTAPPMODE"/>
|
113
|
+
</d:lst>
|
114
|
+
</d:ctr>
|
115
|
+
<d:var name="OsTaskUse_Hw_Fp" type="BOOLEAN" >
|
116
|
+
<a:a name="ENABLE" value="false"/>
|
117
|
+
<a:a name="IMPORTER_INFO" value="@DEF"/>
|
118
|
+
</d:var>
|
119
|
+
<d:var name="OsTaskCallScheduler" type="ENUMERATION" >
|
120
|
+
<a:a name="ENABLE" value="false"/>
|
121
|
+
<a:a name="IMPORTER_INFO" value="@DEF"/>
|
122
|
+
</d:var>
|
123
|
+
<d:var name="OsTaskType" type="ENUMERATION" value="BASIC">
|
124
|
+
<a:a name="ENABLE" value="true"/>
|
125
|
+
</d:var>
|
126
|
+
<d:var name="OsStacksize" type="INTEGER" value="1024"/>
|
127
|
+
<d:ctr name="OsTaskTimingProtection" type="IDENTIFIABLE">
|
128
|
+
<a:a name="ENABLE" value="false"/>
|
129
|
+
<d:var name="OsTaskAllInterruptLockBudget" type="FLOAT">
|
130
|
+
<a:a name="ENABLE" value="false"/>
|
131
|
+
<a:a name="IMPORTER_INFO" value="@DEF"/>
|
132
|
+
</d:var>
|
133
|
+
<d:var name="OsTaskExecutionBudget" type="FLOAT" >
|
134
|
+
<a:a name="ENABLE" value="false"/>
|
135
|
+
<a:a name="IMPORTER_INFO" value="@DEF"/>
|
136
|
+
</d:var>
|
137
|
+
<d:var name="OsTaskOsInterruptLockBudget" type="FLOAT" >
|
138
|
+
<a:a name="ENABLE" value="false"/>
|
139
|
+
<a:a name="IMPORTER_INFO" value="@DEF"/>
|
140
|
+
</d:var>
|
141
|
+
<d:var name="OsTaskTimeFrame" type="FLOAT" >
|
142
|
+
<a:a name="ENABLE" value="false"/>
|
143
|
+
<a:a name="IMPORTER_INFO" value="@DEF"/>
|
144
|
+
</d:var>
|
145
|
+
<d:lst name="OsTaskResourceLock" type="MAP"/>
|
146
|
+
<d:var name="OsTaskCountLimit" type="INTEGER" value="1">
|
147
|
+
<a:a name="ENABLE" value="false"/>
|
148
|
+
<a:a name="IMPORTER_INFO" value="@DEF"/>
|
149
|
+
</d:var>
|
150
|
+
</d:ctr>
|
151
|
+
<d:var name="OsTaskSchedule" type="ENUMERATION" value="FULL"/>
|
152
|
+
<d:var name="OsTaskMkCreateMemoryRegion" type="BOOLEAN" value="false"/>
|
153
|
+
<d:var name="OsTaskMkExcludeAppRegions" type="BOOLEAN" value="false">
|
154
|
+
<a:a name="IMPORTER_INFO" value="@DEF"/>
|
155
|
+
</d:var>
|
156
|
+
<d:lst name="OsTaskMkMemoryRegionRef">
|
157
|
+
<d:ref type="REFERENCE" value="ASPath:/Os/Os/OsMicrokernel/MkMemoryProtection/MPU_01"/>
|
158
|
+
<d:ref type="REFERENCE" value="ASPath:/Os/Os/OsMicrokernel/MkMemoryProtection/MPU_02"/>
|
159
|
+
</d:lst>
|
160
|
+
<d:var name="OsTaskMkThreadModeOverride" type="ENUMERATION"
|
161
|
+
value="USER1">
|
162
|
+
<a:a name="ENABLE" value="true"/>
|
163
|
+
</d:var>
|
164
|
+
<d:var name="OsTaskSafetyIdentifier" type="BOOLEAN" value="false">
|
165
|
+
<a:a name="IMPORTER_INFO" value="@DEF"/>
|
166
|
+
</d:var>
|
167
|
+
<d:var name="OsTaskFastPartition" type="BOOLEAN" value="false">
|
168
|
+
<a:a name="IMPORTER_INFO" value="@DEF"/>
|
169
|
+
</d:var>
|
170
|
+
<d:var name="OsPswCallDepthCounting" type="BOOLEAN" value="false">
|
171
|
+
<a:a name="IMPORTER_INFO" value="@DEF"/>
|
172
|
+
</d:var>
|
173
|
+
<d:var name="OsPswCallDepthCounter" type="INTEGER" >
|
174
|
+
<a:a name="IMPORTER_INFO" value="@DEF"/>
|
175
|
+
</d:var>
|
176
|
+
</d:ctr>
|
177
|
+
<d:ctr name="Task2">
|
178
|
+
<d:var name="OsTaskPriority" type="INTEGER" value="3"/>
|
179
|
+
<d:var name="OsTaskActivation" type="INTEGER" value="2"/>
|
180
|
+
<d:var name="OsTaskSchedule" type="ENUMERATION" value="NON"/>
|
181
|
+
<d:var name="OsStacksize" type="INTEGER" value="2048"/>
|
182
|
+
</d:ctr>
|
183
|
+
<d:ctr name="Idle_Task_C0" type="IDENTIFIABLE">
|
184
|
+
<d:var name="OsTaskPeriod" type="FLOAT" >
|
185
|
+
<a:a name="ENABLE" value="false"/>
|
186
|
+
<a:a name="IMPORTER_INFO" value="@DEF"/>
|
187
|
+
</d:var>
|
188
|
+
<d:ref name="OsMemoryMappingCodeLocationRef" type="REFERENCE" >
|
189
|
+
<a:a name="ENABLE" value="false"/>
|
190
|
+
<a:a name="IMPORTER_INFO" value="@DEF"/>
|
191
|
+
</d:ref>
|
192
|
+
<d:lst name="OsTaskEventRef"/>
|
193
|
+
<d:lst name="OsTaskResourceRef"/>
|
194
|
+
<d:ctr name="OsTaskTimingProtection" type="IDENTIFIABLE">
|
195
|
+
<a:a name="ENABLE" value="false"/>
|
196
|
+
<d:var name="OsTaskAllInterruptLockBudget" type="FLOAT" >
|
197
|
+
<a:a name="ENABLE" value="false"/>
|
198
|
+
<a:a name="IMPORTER_INFO" value="@DEF"/>
|
199
|
+
</d:var>
|
200
|
+
<d:var name="OsTaskExecutionBudget" type="FLOAT" >
|
201
|
+
<a:a name="ENABLE" value="false"/>
|
202
|
+
<a:a name="IMPORTER_INFO" value="@DEF"/>
|
203
|
+
</d:var>
|
204
|
+
<d:var name="OsTaskOsInterruptLockBudget" type="FLOAT" >
|
205
|
+
<a:a name="ENABLE" value="false"/>
|
206
|
+
<a:a name="IMPORTER_INFO" value="@DEF"/>
|
207
|
+
</d:var>
|
208
|
+
<d:var name="OsTaskTimeFrame" type="FLOAT" >
|
209
|
+
<a:a name="ENABLE" value="false"/>
|
210
|
+
<a:a name="IMPORTER_INFO" value="@DEF"/>
|
211
|
+
</d:var>
|
212
|
+
<d:lst name="OsTaskResourceLock" type="MAP"/>
|
213
|
+
<d:var name="OsTaskCountLimit" type="INTEGER" value="1">
|
214
|
+
<a:a name="ENABLE" value="false"/>
|
215
|
+
<a:a name="IMPORTER_INFO" value="@DEF"/>
|
216
|
+
</d:var>
|
217
|
+
</d:ctr>
|
218
|
+
<d:var name="OsMeasure_Max_Runtime" type="BOOLEAN" value="false">
|
219
|
+
<a:a name="ENABLE" value="false"/>
|
220
|
+
<a:a name="IMPORTER_INFO" value="@DEF"/>
|
221
|
+
</d:var>
|
222
|
+
<d:var name="OsTaskCallScheduler" type="ENUMERATION" >
|
223
|
+
<a:a name="ENABLE" value="false"/>
|
224
|
+
<a:a name="IMPORTER_INFO" value="@DEF"/>
|
225
|
+
</d:var>
|
226
|
+
<d:var name="OsTaskType" type="ENUMERATION" >
|
227
|
+
<a:a name="ENABLE" value="false"/>
|
228
|
+
<a:a name="IMPORTER_INFO" value="@DEF"/>
|
229
|
+
</d:var>
|
230
|
+
<d:var name="OsStacksize" type="INTEGER" value="800"/>
|
231
|
+
<d:var name="OsTaskActivation" type="INTEGER" value="1"/>
|
232
|
+
<d:var name="OsTaskPriority" type="INTEGER" value="1"/>
|
233
|
+
<d:var name="OsTaskSchedule" type="ENUMERATION" value="FULL"/>
|
234
|
+
<d:var name="OsTaskUse_Hw_Fp" type="BOOLEAN" value="true">
|
235
|
+
<a:a name="ENABLE" value="true"/>
|
236
|
+
</d:var>
|
237
|
+
<d:lst name="OsTaskAccessingApplication">
|
238
|
+
<d:ref type="REFERENCE" value="ASPath:/Os/Os/OsApplication_C0"/>
|
239
|
+
</d:lst>
|
240
|
+
<d:ctr name="OsTaskAutostart" type="IDENTIFIABLE">
|
241
|
+
<a:a name="ENABLE" value="true"/>
|
242
|
+
<d:lst name="OsTaskAppModeRef">
|
243
|
+
<d:ref type="REFERENCE" value="ASPath:/Os/Os/OSDEFAULTAPPMODE"/>
|
244
|
+
</d:lst>
|
245
|
+
</d:ctr>
|
246
|
+
<d:var name="OsTaskMkCreateMemoryRegion" type="BOOLEAN" value="true">
|
247
|
+
<a:a name="IMPORTER_INFO" value="@DEF"/>
|
248
|
+
</d:var>
|
249
|
+
<d:var name="OsTaskMkExcludeAppRegions" type="BOOLEAN" value="false">
|
250
|
+
<a:a name="IMPORTER_INFO" value="@DEF"/>
|
251
|
+
</d:var>
|
252
|
+
<d:lst name="OsTaskMkMemoryRegionRef"/>
|
253
|
+
<d:var name="OsTaskMkThreadModeOverride" type="ENUMERATION" value="USER">
|
254
|
+
<a:a name="ENABLE" value="false"/>
|
255
|
+
<a:a name="IMPORTER_INFO" value="@DEF"/>
|
256
|
+
</d:var>
|
257
|
+
<d:ctr name="OsCORTEXMMemoryRegions" type="IDENTIFIABLE">
|
258
|
+
<d:var name="OsCORTEXMPrivateDataRegionSize" type="ENUMERATION" value="SIZE_4K">
|
259
|
+
<a:a name="ENABLE" value="false"/>
|
260
|
+
<a:a name="IMPORTER_INFO" value="@DEF"/>
|
261
|
+
</d:var>
|
262
|
+
</d:ctr>
|
263
|
+
</d:ctr>
|
264
|
+
</d:lst>
|
265
|
+
</datamodel>
|
266
|
+
"""
|
267
|
+
element = ET.fromstring(xml_content)
|
268
|
+
|
269
|
+
# Mock Os object
|
270
|
+
model = EBModel.getInstance()
|
271
|
+
os = model.getOs()
|
272
|
+
|
273
|
+
# Create parser instance
|
274
|
+
parser = OsXdmParser()
|
275
|
+
parser.nsmap = {
|
276
|
+
'': "http://www.tresos.de/_projects/DataModel2/18/root.xsd",
|
277
|
+
'a': "http://www.tresos.de/_projects/DataModel2/18/attribute.xsd",
|
278
|
+
'v': "http://www.tresos.de/_projects/DataModel2/06/schema.xsd",
|
279
|
+
'd': "http://www.tresos.de/_projects/DataModel2/06/data.xsd"
|
280
|
+
}
|
281
|
+
|
282
|
+
# Call the method
|
283
|
+
parser.read_os_tasks(element, os)
|
284
|
+
|
285
|
+
# Assertions
|
286
|
+
tasks = os.getOsTaskList()
|
287
|
+
assert len(tasks) == 3
|
288
|
+
|
289
|
+
task1 = tasks[0]
|
290
|
+
assert task1.getName() == "Idle_Task_C0"
|
291
|
+
assert task1.getOsTaskPriority() == 1
|
292
|
+
assert task1.getOsTaskActivation() == 1
|
293
|
+
assert task1.getOsTaskSchedule() == "FULL"
|
294
|
+
assert task1.getOsTaskType() is None
|
295
|
+
assert task1.getOsStacksize() == 800
|
296
|
+
assert len(task1.getOsTaskResourceRefList()) == 0
|
297
|
+
assert task1.getOsTaskAutostart() is not None
|
298
|
+
assert task1.getOsTaskAutostart().getOsTaskAppModeRefList() is not None
|
299
|
+
|
300
|
+
task2 = tasks[1]
|
301
|
+
assert task2.getName() == "Task1"
|
302
|
+
assert task2.getOsTaskPriority() == 250
|
303
|
+
assert task2.getOsTaskActivation() == 1
|
304
|
+
assert task2.getOsTaskSchedule() == "FULL"
|
305
|
+
assert task2.getOsTaskType() == "BASIC"
|
306
|
+
assert task2.getOsStacksize() == 1024
|
307
|
+
assert len(task2.getOsTaskResourceRefList()) == 2
|
308
|
+
assert task2.getOsTaskResourceRefList()[0].getValue() == "/Os/Os/Res_Core0"
|
309
|
+
assert task2.getOsTaskResourceRefList()[1].getValue() == "/Os/Os/Res_Core1"
|
310
|
+
autostart = task2.getOsTaskAutostart()
|
311
|
+
assert autostart is not None
|
312
|
+
assert len(autostart.getOsTaskAppModeRefList()) == 1
|
313
|
+
assert autostart.getOsTaskAppModeRefList()[0].getValue() == "/Os/Os/OSDEFAULTAPPMODE"
|
314
|
+
|
315
|
+
task3 = tasks[2]
|
316
|
+
assert task3.getName() == "Task2"
|
317
|
+
assert task3.getOsTaskPriority() == 3
|
318
|
+
assert task3.getOsTaskActivation() == 2
|
319
|
+
assert task3.getOsTaskSchedule() == "NON"
|
320
|
+
assert task3.getOsTaskType() is None
|
321
|
+
assert task3.getOsStacksize() == 2048
|
322
|
+
assert len(task3.getOsTaskResourceRefList()) == 0
|
323
|
+
assert task3.getOsTaskAutostart() is None
|
324
|
+
|
325
|
+
'''
|
326
|
+
def test_read_os_applications(self):
|
327
|
+
# Create a mock XML element for testing
|
328
|
+
xml_content = """
|
329
|
+
<datamodel version="8.0"
|
330
|
+
xmlns="http://www.tresos.de/_projects/DataModel2/18/root.xsd"
|
331
|
+
xmlns:a="http://www.tresos.de/_projects/DataModel2/18/attribute.xsd"
|
332
|
+
xmlns:v="http://www.tresos.de/_projects/DataModel2/06/schema.xsd"
|
333
|
+
xmlns:d="http://www.tresos.de/_projects/DataModel2/06/data.xsd">
|
334
|
+
<d:lst name="OsApplication" type="MAP">
|
335
|
+
<d:ctr name="App1">
|
336
|
+
<d:var name="OsTrusted" type="BOOLEAN" value="true"/>
|
337
|
+
<d:lst name="OsAppResourceRef">
|
338
|
+
<d:ref type="REFERENCE" value="/Os/OsResource1"/>
|
339
|
+
<d:ref type="REFERENCE" value="/Os/OsResource2"/>
|
340
|
+
</d:lst>
|
341
|
+
<d:lst name="OsAppTaskRef">
|
342
|
+
<d:ref type="REFERENCE" value="/Os/OsTask1"/>
|
343
|
+
</d:lst>
|
344
|
+
<d:lst name="OsAppIsrRef">
|
345
|
+
<d:ref type="REFERENCE" value="/Os/OsIsr1"/>
|
346
|
+
</d:lst>
|
347
|
+
</d:ctr>
|
348
|
+
<d:ctr name="App2">
|
349
|
+
<d:var name="OsTrusted" type="BOOLEAN" value="false"/>
|
350
|
+
<d:lst name="OsAppResourceRef"/>
|
351
|
+
<d:lst name="OsAppTaskRef"/>
|
352
|
+
<d:lst name="OsAppIsrRef"/>
|
353
|
+
</d:ctr>
|
354
|
+
</d:lst>
|
355
|
+
</datamodel>
|
356
|
+
"""
|
357
|
+
element = ET.fromstring(xml_content)
|
358
|
+
|
359
|
+
# Mock Os object
|
360
|
+
model = EBModel.getInstance()
|
361
|
+
os = model.getOs()
|
362
|
+
|
363
|
+
# Create parser instance
|
364
|
+
parser = OsXdmParser()
|
365
|
+
parser.nsmap = {
|
366
|
+
'': "http://www.tresos.de/_projects/DataModel2/18/root.xsd",
|
367
|
+
'a': "http://www.tresos.de/_projects/DataModel2/18/attribute.xsd",
|
368
|
+
'v': "http://www.tresos.de/_projects/DataModel2/06/schema.xsd",
|
369
|
+
'd': "http://www.tresos.de/_projects/DataModel2/06/data.xsd"
|
370
|
+
}
|
371
|
+
|
372
|
+
# Call the method
|
373
|
+
parser.read_os_applications(element, os)
|
374
|
+
|
375
|
+
# Assertions
|
376
|
+
applications = os.getOsApplicationList()
|
377
|
+
assert len(applications) == 2
|
378
|
+
|
379
|
+
app1 = applications[0]
|
380
|
+
assert app1.getName() == "App1"
|
381
|
+
assert app1.getOsTrusted() == "true"
|
382
|
+
assert len(app1.getOsAppResourceRefs()) == 2
|
383
|
+
assert app1.getOsAppResourceRefs()[0].getValue() == "/Os/OsResource1"
|
384
|
+
assert app1.getOsAppResourceRefs()[1].getValue() == "/Os/OsResource2"
|
385
|
+
assert len(app1.getOsAppTaskRefs()) == 1
|
386
|
+
assert app1.getOsAppTaskRefs()[0].getValue() == "/Os/OsTask1"
|
387
|
+
assert len(app1.getOsAppIsrRefs()) == 1
|
388
|
+
assert app1.getOsAppIsrRefs()[0].getValue() == "/Os/OsIsr1"
|
389
|
+
|
390
|
+
app2 = applications[1]
|
391
|
+
assert app2.getName() == "App2"
|
392
|
+
assert app2.getOsTrusted() == "false"
|
393
|
+
assert len(app2.getOsAppResourceRefs()) == 0
|
394
|
+
assert len(app2.getOsAppTaskRefs()) == 0
|
395
|
+
assert len(app2.getOsAppIsrRefs()) == 0
|
396
|
+
noqa: E501 '''
|
eb_model/writer/text_writer.py
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
import logging
|
2
2
|
from typing import List
|
3
|
-
|
4
3
|
from ..models.eb_doc import SystemDescriptionImporter
|
5
4
|
|
5
|
+
|
6
6
|
class TextWriter:
|
7
7
|
def __init__(self):
|
8
8
|
self.logger = logging.getLogger()
|
@@ -12,11 +12,13 @@ class TextWriter:
|
|
12
12
|
for line in lines:
|
13
13
|
f_out.write("%s\n" % line)
|
14
14
|
|
15
|
+
|
15
16
|
class TextPreferenceModelWriter(TextWriter):
|
16
17
|
def __init__(self):
|
17
18
|
super().__init__()
|
18
19
|
|
19
|
-
def writer_import_files(self, filename: str, importer: SystemDescriptionImporter,
|
20
|
+
def writer_import_files(self, filename: str, importer: SystemDescriptionImporter,
|
21
|
+
params={'base_path': None, 'wildcard': None, "tresos_output_base_dir": None}):
|
20
22
|
self.logger.info("Generate import files list <%s>" % filename)
|
21
23
|
lines = []
|
22
24
|
for file in sorted(importer.getParsedInputFiles(params)):
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: py-eb-model
|
3
|
-
Version: 1.1.
|
3
|
+
Version: 1.1.8
|
4
4
|
Summary: The parser for EB XDM file
|
5
5
|
Home-page: UNKNOWN
|
6
6
|
Author: melodypapa
|
@@ -222,3 +222,14 @@ PrefSystemImporter --base-path c:/EB/ACG-8_8_8_WIN32X86/workspace/simple_demo_rt
|
|
222
222
|
* Os::addOsResource
|
223
223
|
2. Read the NvMBlockDescriptor List
|
224
224
|
|
225
|
+
**Version 1.1.7**
|
226
|
+
|
227
|
+
1. Solve the case issue of read_optional_value enables attribute.
|
228
|
+
2. Support to read IMPORT_INFO for OsResource.
|
229
|
+
3. Add the test cases for OsXdmParser.
|
230
|
+
|
231
|
+
**Version 1.1.8**
|
232
|
+
|
233
|
+
1. Support to read NvM configuration from EB tresos Xdm file
|
234
|
+
2. Export the NvM Configuration to excel file.
|
235
|
+
|
@@ -0,0 +1,48 @@
|
|
1
|
+
eb_model/__init__.py,sha256=oMw5xoAS-lHLxufQSlBIXhGZZMcPmwGFA3PYpTwaQTU,92
|
2
|
+
eb_model/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
3
|
+
eb_model/cli/nvm_xdm_2_xls_cli.py,sha256=9OxWkT7OdL2DZbG8N_2sE3y8T0GWyzpwYKWnpTm8lag,1742
|
4
|
+
eb_model/cli/os_xdm_2_xls_cli.py,sha256=zUnxJ4uHWRSjMmpSK5hXRAzVt-_YGEyiMXrexnJSk6g,1970
|
5
|
+
eb_model/cli/pref_system_importer_cli.py,sha256=PamE_UT8GzTn6qLfKZxYycHfAujGMu6O2Jf7EsYExUA,3540
|
6
|
+
eb_model/cli/rte_xdm_2_xls_cli.py,sha256=AQogqNfbcAtRYnJVj7gVvUQc9xsOlpZAZzvIulom7qw,2191
|
7
|
+
eb_model/models/__init__.py,sha256=Jn4oOg6CxbAvULNaVt0obDLGPZC2sLzeo6rQt4eTDQ0,245
|
8
|
+
eb_model/models/abstract.py,sha256=hYUffwaL_9Z_4kG3z8dQVBIlxWjODktmCTP1JZP5ecg,4449
|
9
|
+
eb_model/models/eb_doc.py,sha256=d_vNhWda7ZwpmLPiCmlq316G-C2hvWz5bJBss9P2y_A,2955
|
10
|
+
eb_model/models/eclipse_project.py,sha256=I1y4UUPJQqy8Bh77sJkufzcH9wXMN1Wk82er-m1Sxhc,155
|
11
|
+
eb_model/models/importer_xdm.py,sha256=4sUxuu2-CbASiadW7qGFvhWRtbEPOZlLtvAhQDEHuQs,4442
|
12
|
+
eb_model/models/nvm_xdm.py,sha256=_QF5d32KKDUPWPWjItU1vS5BnrxZmPKuUqIlCcb4pYo,21939
|
13
|
+
eb_model/models/os_xdm.py,sha256=xBJPXDaKIczkI5TuKCBM28Xiga5FV3j7WK-UqLK8Qks,42939
|
14
|
+
eb_model/models/rte_xdm.py,sha256=5z7m5zp4_eoMypKhB4tq65RHLLm8Tww_3P59MqxZ6ZQ,22067
|
15
|
+
eb_model/parser/__init__.py,sha256=K_sp7EVjS2KoWUCdX_0h2jIY8Gxhwqs6AtRP1Pgj1TU,214
|
16
|
+
eb_model/parser/eb_parser.py,sha256=l3oLb60GxlXiOYNmT0bLIGDfojS8gxa6YoXlak7fkiM,8434
|
17
|
+
eb_model/parser/eb_parser_factory.py,sha256=zqsqq52uImU4-WcS5dvHfhM95hiEPAGRtNzVik8i8wc,971
|
18
|
+
eb_model/parser/nvm_xdm_parser.py,sha256=r3awxfeNIqXoJlhD_t05ebsnfZNuQ_AYhCikhhZziWo,7860
|
19
|
+
eb_model/parser/os_xdm_parser.py,sha256=M44HAGBj98s2xyAIwzVdAwJQb_JBlN7xh7CjXrSh8Kw,14212
|
20
|
+
eb_model/parser/pref_xdm_parser.py,sha256=EjfR4vrnjRVLw_7wyPmMYlBj6lPXZbBZMEdWlYPj3uI,1539
|
21
|
+
eb_model/parser/rte_xdm_parser.py,sha256=zKs1vz0DxIt4zPi6yBvPjGvLkq-BR2z_Dz7Pv8LBuDA,5560
|
22
|
+
eb_model/reporter/__init__.py,sha256=p-sMv7gJkxe3u8la09SZJjiWPgGGjZSaX0WoBD-hn-0,77
|
23
|
+
eb_model/reporter/markdown.py,sha256=NhcJOFQ_BVbkgGe66uAT7KUPIchWU4kfVMtMLQtbK-w,1647
|
24
|
+
eb_model/reporter/excel_reporter/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
25
|
+
eb_model/reporter/excel_reporter/abstract.py,sha256=iZKfuTBJRvvi7zcVBRZOeDw9pZCpwIKvhKu7P_clV3Q,2274
|
26
|
+
eb_model/reporter/excel_reporter/nvm_xdm.py,sha256=g8Fa1j_fPCUU6xz4CThjXVfKoGe92NcT2ObjBfrvOYc,6513
|
27
|
+
eb_model/reporter/excel_reporter/os_xdm.py,sha256=AHlM28djFoOznoxB8Qz188BxwQL5N0Uc2-qISbbgyfQ,12072
|
28
|
+
eb_model/reporter/excel_reporter/rte_xdm.py,sha256=ToU8ZQ7abG1qJyT2_TcND2cOq8YO2TBBzt3IAdl4qdI,4863
|
29
|
+
eb_model/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
30
|
+
eb_model/tests/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
31
|
+
eb_model/tests/models/test_abstract.py,sha256=P588Us1-Qjz28LEVFSnNTTS6zeNRS33kl-SuXRe8R-s,7283
|
32
|
+
eb_model/tests/models/test_eb_doc.py,sha256=zp5-JGGT6oKTPqef8cv10CayDGe3QJmadN37z8J_0uU,2360
|
33
|
+
eb_model/tests/models/test_eb_model.py,sha256=3fpIHhzQlf9KZjm4fZxcSTT4Zio6YhTrcn9UBvlhOfo,1632
|
34
|
+
eb_model/tests/models/test_eclipse_project.py,sha256=xvIhPXzqkrP7E3bLcVJFaN75Qx0yMrq6_gr_SG6g_sE,688
|
35
|
+
eb_model/tests/models/test_ecuc_container.py,sha256=-M_XZTSeWGVIJac6sj_an2-Ui65QVNXbfbETOD_Ipm8,758
|
36
|
+
eb_model/tests/models/test_importer_xdm.py,sha256=CG-kt8JrJa6MTnsotDEGCEymsu7OTxgpCVEOjkJeaCw,3415
|
37
|
+
eb_model/tests/parser/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
38
|
+
eb_model/tests/parser/test_nvm_xdm_parser.py,sha256=SfWvAVqOQgLeZzogSJzBr9hNNsBD5KsufY7Wa2jwVO0,15238
|
39
|
+
eb_model/tests/parser/test_os_xdm_parser.py,sha256=nZdlaW4slLVdfpf4W04c35WbEvcjNJ571axoWL6-AgU,19745
|
40
|
+
eb_model/writer/__init__.py,sha256=CXvQAsNV1OvYClkHdKCG7Q300OVBzcl2TmoD68MyQOs,95
|
41
|
+
eb_model/writer/project_writer.py,sha256=9BQU1CJAktVxFvQk89Pj4IbizTJXnlQidt4eX_CIFXU,2800
|
42
|
+
eb_model/writer/text_writer.py,sha256=kvPKC265bvTZq2g1YEvLXDBh5XpTvSr0iPAsedicAOM,1020
|
43
|
+
py_eb_model-1.1.8.dist-info/LICENSE,sha256=I52rGS7W1IwAmYCUfqTpDaSHoFAdt7grcNiBhk-Z3eI,1088
|
44
|
+
py_eb_model-1.1.8.dist-info/METADATA,sha256=n2nW1XZkNgZitE9s5LGaaajEhA_ZTw7lVDFw8glSqH4,7172
|
45
|
+
py_eb_model-1.1.8.dist-info/WHEEL,sha256=yQN5g4mg4AybRjkgi-9yy4iQEFibGQmlz78Pik5Or-A,92
|
46
|
+
py_eb_model-1.1.8.dist-info/entry_points.txt,sha256=N7cHTMb7nGQXu2X5JvJo3JJQdRE11vRMlLyx27uarHg,234
|
47
|
+
py_eb_model-1.1.8.dist-info/top_level.txt,sha256=DGBNh6YW_x4RF_UoLKW3cKqb2SLnmfuEIZlkTewR66A,9
|
48
|
+
py_eb_model-1.1.8.dist-info/RECORD,,
|
@@ -1,42 +0,0 @@
|
|
1
|
-
eb_model/__init__.py,sha256=oMw5xoAS-lHLxufQSlBIXhGZZMcPmwGFA3PYpTwaQTU,92
|
2
|
-
eb_model/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
3
|
-
eb_model/cli/nvm_xdm_2_xls_cli.py,sha256=9OxWkT7OdL2DZbG8N_2sE3y8T0GWyzpwYKWnpTm8lag,1742
|
4
|
-
eb_model/cli/os_xdm_2_xls_cli.py,sha256=zUnxJ4uHWRSjMmpSK5hXRAzVt-_YGEyiMXrexnJSk6g,1970
|
5
|
-
eb_model/cli/pref_system_importer_cli.py,sha256=Cra-rVpgxruLLyWHRdYAgbwfcHVPV2L8Jk6ck0v4lJU,3361
|
6
|
-
eb_model/cli/rte_xdm_2_xls_cli.py,sha256=83uzE2Vk0h267gWxF9mnWN3Bh69RJpYyKULFXpxTByY,2127
|
7
|
-
eb_model/models/__init__.py,sha256=Jn4oOg6CxbAvULNaVt0obDLGPZC2sLzeo6rQt4eTDQ0,245
|
8
|
-
eb_model/models/abstract.py,sha256=MSG0RYrrVbQtyWDqG1hlfpQa8nlvGdPsnLsBgU2NcxQ,4046
|
9
|
-
eb_model/models/eb_doc.py,sha256=d_vNhWda7ZwpmLPiCmlq316G-C2hvWz5bJBss9P2y_A,2955
|
10
|
-
eb_model/models/eclipse_project.py,sha256=I1y4UUPJQqy8Bh77sJkufzcH9wXMN1Wk82er-m1Sxhc,155
|
11
|
-
eb_model/models/importer_xdm.py,sha256=wUdwZQ-uq75EkhU4nzrYeNR5UphaTJ41MjywOPcCHsE,4246
|
12
|
-
eb_model/models/nvm_xdm.py,sha256=cFeAblxdSNlGP7yN2cPLMmvvJVMNB0LuYmuM_eRQOyQ,11956
|
13
|
-
eb_model/models/os_xdm.py,sha256=0iQrMshsbibxaTYwhHpbQFP5Xz3VoxV5eWSyd19GGNY,35557
|
14
|
-
eb_model/models/rte_xdm.py,sha256=dEsGhpnaG-VG5QfEPv6hxQdopzwMkHHz8kDHj_7MuYM,21851
|
15
|
-
eb_model/parser/__init__.py,sha256=K_sp7EVjS2KoWUCdX_0h2jIY8Gxhwqs6AtRP1Pgj1TU,214
|
16
|
-
eb_model/parser/eb_parser.py,sha256=6zYPYku30JfnLOV75k-MrfLc75sCkKdMwc11runqIbk,8248
|
17
|
-
eb_model/parser/eb_parser_factory.py,sha256=zqsqq52uImU4-WcS5dvHfhM95hiEPAGRtNzVik8i8wc,971
|
18
|
-
eb_model/parser/nvm_xdm_parser.py,sha256=UME7IRySnnkKvwHY1jehdraEatWTAxWWykxntWqadUk,2216
|
19
|
-
eb_model/parser/os_xdm_parser.py,sha256=M_77-Gxhe101WXo-97CSTNEa-oJmWjDKYeweuL7Niy0,11083
|
20
|
-
eb_model/parser/pref_xdm_parser.py,sha256=EjfR4vrnjRVLw_7wyPmMYlBj6lPXZbBZMEdWlYPj3uI,1539
|
21
|
-
eb_model/parser/rte_xdm_parser.py,sha256=plUue0c4ejreE9w71_mT0JNzGSClf30cXhfC2NalrII,5471
|
22
|
-
eb_model/reporter/__init__.py,sha256=p-sMv7gJkxe3u8la09SZJjiWPgGGjZSaX0WoBD-hn-0,77
|
23
|
-
eb_model/reporter/markdown.py,sha256=NhcJOFQ_BVbkgGe66uAT7KUPIchWU4kfVMtMLQtbK-w,1647
|
24
|
-
eb_model/reporter/excel_reporter/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
25
|
-
eb_model/reporter/excel_reporter/abstract.py,sha256=x_jW38GfyMGyHXsYQWRUUyRc6r6ywMo3zYoH_v79jto,1644
|
26
|
-
eb_model/reporter/excel_reporter/nvm_xdm.py,sha256=OM_hKXcuFQyZUnia0kuZ03OSSrOMW0i2vIpUa5LTdEc,1698
|
27
|
-
eb_model/reporter/excel_reporter/os_xdm.py,sha256=MG6-6qi7Dh1XXv4CR2I-iQpOvypso0dlfXt_ZQ3lO7I,6406
|
28
|
-
eb_model/reporter/excel_reporter/rte_xdm.py,sha256=IeBAeVJYSSle6sR0K4FiPgQToTziHKjXxr68Er7bXyg,3941
|
29
|
-
eb_model/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
30
|
-
eb_model/tests/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
31
|
-
eb_model/tests/models/test_eb_model.py,sha256=3fpIHhzQlf9KZjm4fZxcSTT4Zio6YhTrcn9UBvlhOfo,1632
|
32
|
-
eb_model/tests/models/test_ecuc_container.py,sha256=-M_XZTSeWGVIJac6sj_an2-Ui65QVNXbfbETOD_Ipm8,758
|
33
|
-
eb_model/tests/models/test_importer_xdm.py,sha256=F80kO77jeyfCkLPRgRLjEj3UPcrACimR5LhBhFgX_m4,3372
|
34
|
-
eb_model/writer/__init__.py,sha256=CXvQAsNV1OvYClkHdKCG7Q300OVBzcl2TmoD68MyQOs,95
|
35
|
-
eb_model/writer/project_writer.py,sha256=9BQU1CJAktVxFvQk89Pj4IbizTJXnlQidt4eX_CIFXU,2800
|
36
|
-
eb_model/writer/text_writer.py,sha256=7d4_PUTJk5Y6S_EQflAH3ACDnUw9VwJzP90GFDh0n0I,991
|
37
|
-
py_eb_model-1.1.6.dist-info/LICENSE,sha256=I52rGS7W1IwAmYCUfqTpDaSHoFAdt7grcNiBhk-Z3eI,1088
|
38
|
-
py_eb_model-1.1.6.dist-info/METADATA,sha256=t0LEDXkC1J778lrXQjCP0jA1UOgdqsReB4lY_AEDXAU,6861
|
39
|
-
py_eb_model-1.1.6.dist-info/WHEEL,sha256=yQN5g4mg4AybRjkgi-9yy4iQEFibGQmlz78Pik5Or-A,92
|
40
|
-
py_eb_model-1.1.6.dist-info/entry_points.txt,sha256=N7cHTMb7nGQXu2X5JvJo3JJQdRE11vRMlLyx27uarHg,234
|
41
|
-
py_eb_model-1.1.6.dist-info/top_level.txt,sha256=DGBNh6YW_x4RF_UoLKW3cKqb2SLnmfuEIZlkTewR66A,9
|
42
|
-
py_eb_model-1.1.6.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|