ansys-fluent-core 0.28.2__py3-none-any.whl → 0.29.0__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.

Potentially problematic release.


This version of ansys-fluent-core might be problematic. Click here for more details.

Files changed (221) hide show
  1. ansys/fluent/core/__init__.py +26 -1
  2. ansys/fluent/core/_stand_alone_datamodel_client/_datamodel_client.py +22 -0
  3. ansys/fluent/core/_version.py +24 -2
  4. ansys/fluent/core/codegen/__init__.py +22 -0
  5. ansys/fluent/core/codegen/allapigen.py +38 -5
  6. ansys/fluent/core/codegen/builtin_settingsgen.py +22 -0
  7. ansys/fluent/core/codegen/data/__init__.py +21 -0
  8. ansys/fluent/core/codegen/data/fluent_gui_help_patch.py +22 -0
  9. ansys/fluent/core/codegen/data/meshing_utilities_examples.py +22 -0
  10. ansys/fluent/core/codegen/datamodelgen.py +40 -4
  11. ansys/fluent/core/codegen/print_fluent_version.py +22 -0
  12. ansys/fluent/core/codegen/settingsgen.py +67 -4
  13. ansys/fluent/core/codegen/tuigen.py +44 -6
  14. ansys/fluent/core/codegen/walk_api.py +67 -18
  15. ansys/fluent/core/codegen/write_settings_yaml.py +22 -0
  16. ansys/fluent/core/data_model_cache.py +22 -0
  17. ansys/fluent/core/examples/__init__.py +22 -0
  18. ansys/fluent/core/examples/downloads.py +22 -0
  19. ansys/fluent/core/exceptions.py +22 -0
  20. ansys/fluent/core/file_session.py +22 -0
  21. ansys/fluent/core/filereader/__init__.py +21 -0
  22. ansys/fluent/core/filereader/case_file.py +22 -0
  23. ansys/fluent/core/filereader/casereader.py +22 -0
  24. ansys/fluent/core/filereader/data_file.py +22 -0
  25. ansys/fluent/core/filereader/lispy.py +22 -0
  26. ansys/fluent/core/fluent_connection.py +23 -1
  27. ansys/fluent/core/generated/api_tree/api_objects.json +1 -1
  28. ansys/fluent/core/generated/datamodel_252/meshing.py +32 -0
  29. ansys/fluent/core/generated/fluent_version_252.py +3 -3
  30. ansys/fluent/core/generated/solver/settings_222.py +0 -72
  31. ansys/fluent/core/generated/solver/settings_222.pyi +0 -307
  32. ansys/fluent/core/generated/solver/settings_231.py +0 -574
  33. ansys/fluent/core/generated/solver/settings_231.pyi +0 -561
  34. ansys/fluent/core/generated/solver/settings_232.py +0 -527
  35. ansys/fluent/core/generated/solver/settings_232.pyi +0 -2803
  36. ansys/fluent/core/generated/solver/settings_241.py +0 -478
  37. ansys/fluent/core/generated/solver/settings_241.pyi +0 -522
  38. ansys/fluent/core/generated/solver/settings_242.py +0 -361
  39. ansys/fluent/core/generated/solver/settings_242.pyi +0 -591
  40. ansys/fluent/core/generated/solver/settings_251.py +0 -399
  41. ansys/fluent/core/generated/solver/settings_251.pyi +0 -629
  42. ansys/fluent/core/generated/solver/settings_252.py +7794 -4185
  43. ansys/fluent/core/generated/solver/settings_252.pyi +6986 -3213
  44. ansys/fluent/core/generated/solver/tui_252.py +537 -181
  45. ansys/fluent/core/get_build_details.py +22 -0
  46. ansys/fluent/core/journaling.py +38 -0
  47. ansys/fluent/core/launcher/__init__.py +22 -0
  48. ansys/fluent/core/launcher/container_launcher.py +65 -56
  49. ansys/fluent/core/launcher/error_handler.py +30 -0
  50. ansys/fluent/core/launcher/fluent_container.py +45 -20
  51. ansys/fluent/core/launcher/launcher.py +53 -5
  52. ansys/fluent/core/launcher/launcher_utils.py +22 -0
  53. ansys/fluent/core/launcher/pim_launcher.py +120 -86
  54. ansys/fluent/core/launcher/process_launch_string.py +22 -0
  55. ansys/fluent/core/launcher/pyfluent_enums.py +22 -0
  56. ansys/fluent/core/launcher/server_info.py +45 -3
  57. ansys/fluent/core/launcher/slurm_launcher.py +25 -3
  58. ansys/fluent/core/launcher/standalone_launcher.py +68 -63
  59. ansys/fluent/core/launcher/watchdog.py +22 -0
  60. ansys/fluent/core/logging.py +24 -0
  61. ansys/fluent/core/logging_config.yaml +3 -0
  62. ansys/fluent/core/meshing/meshing_workflow.py +22 -0
  63. ansys/fluent/core/parametric.py +22 -0
  64. ansys/fluent/core/post_objects/__init__.py +21 -0
  65. ansys/fluent/core/post_objects/check_in_notebook.py +22 -0
  66. ansys/fluent/core/post_objects/meta.py +22 -0
  67. ansys/fluent/core/post_objects/post_helper.py +22 -0
  68. ansys/fluent/core/post_objects/post_object_definitions.py +22 -0
  69. ansys/fluent/core/post_objects/post_objects_container.py +22 -0
  70. ansys/fluent/core/post_objects/singleton_meta.py +22 -0
  71. ansys/fluent/core/post_objects/timing_decorator.py +22 -0
  72. ansys/fluent/core/report.py +77 -0
  73. ansys/fluent/core/rpvars.py +22 -0
  74. ansys/fluent/core/scheduler/__init__.py +22 -0
  75. ansys/fluent/core/scheduler/load_machines.py +22 -0
  76. ansys/fluent/core/scheduler/machine_list.py +22 -0
  77. ansys/fluent/core/search.py +22 -0
  78. ansys/fluent/core/services/__init__.py +22 -0
  79. ansys/fluent/core/services/api_upgrade.py +22 -0
  80. ansys/fluent/core/services/app_utilities.py +38 -0
  81. ansys/fluent/core/services/batch_ops.py +22 -0
  82. ansys/fluent/core/services/datamodel_se.py +26 -1
  83. ansys/fluent/core/services/datamodel_tui.py +22 -0
  84. ansys/fluent/core/services/deprecated_field_data.py +23 -1
  85. ansys/fluent/core/services/events.py +22 -0
  86. ansys/fluent/core/services/field_data.py +285 -2
  87. ansys/fluent/core/services/health_check.py +22 -0
  88. ansys/fluent/core/services/interceptors.py +50 -2
  89. ansys/fluent/core/services/monitor.py +22 -0
  90. ansys/fluent/core/services/reduction.py +22 -0
  91. ansys/fluent/core/services/scheme_eval.py +22 -0
  92. ansys/fluent/core/services/settings.py +22 -0
  93. ansys/fluent/core/services/solution_variables.py +22 -0
  94. ansys/fluent/core/services/streaming.py +22 -0
  95. ansys/fluent/core/services/transcript.py +22 -0
  96. ansys/fluent/core/session.py +39 -2
  97. ansys/fluent/core/session_base_meshing.py +22 -0
  98. ansys/fluent/core/session_meshing.py +22 -0
  99. ansys/fluent/core/session_meshing.pyi +22 -0
  100. ansys/fluent/core/session_pure_meshing.py +22 -0
  101. ansys/fluent/core/session_pure_meshing.pyi +22 -0
  102. ansys/fluent/core/session_shared.py +22 -0
  103. ansys/fluent/core/session_solver.py +43 -0
  104. ansys/fluent/core/session_solver.pyi +22 -0
  105. ansys/fluent/core/session_solver_aero.py +22 -0
  106. ansys/fluent/core/session_solver_icing.py +22 -0
  107. ansys/fluent/core/session_solver_lite.py +22 -0
  108. ansys/fluent/core/solver/__init__.py +22 -0
  109. ansys/fluent/core/solver/error_message.py +22 -0
  110. ansys/fluent/core/solver/flobject.py +22 -0
  111. ansys/fluent/core/solver/flunits.py +22 -0
  112. ansys/fluent/core/solver/function/__init__.py +22 -0
  113. ansys/fluent/core/solver/function/reduction.py +22 -0
  114. ansys/fluent/core/solver/settings_builtin_bases.py +22 -0
  115. ansys/fluent/core/solver/settings_builtin_data.py +22 -0
  116. ansys/fluent/core/solver/settings_external.py +22 -0
  117. ansys/fluent/core/streaming_services/__init__.py +21 -0
  118. ansys/fluent/core/streaming_services/datamodel_event_streaming.py +22 -0
  119. ansys/fluent/core/streaming_services/datamodel_streaming.py +22 -0
  120. ansys/fluent/core/streaming_services/events_streaming.py +22 -0
  121. ansys/fluent/core/streaming_services/field_data_streaming.py +22 -0
  122. ansys/fluent/core/streaming_services/monitor_streaming.py +23 -1
  123. ansys/fluent/core/streaming_services/streaming.py +22 -0
  124. ansys/fluent/core/streaming_services/transcript_streaming.py +22 -0
  125. ansys/fluent/core/systemcoupling.py +22 -0
  126. ansys/fluent/core/utils/__init__.py +22 -0
  127. ansys/fluent/core/utils/data_transfer.py +22 -0
  128. ansys/fluent/core/utils/deprecate.py +24 -1
  129. ansys/fluent/core/utils/dictionary_operations.py +22 -0
  130. ansys/fluent/core/utils/dump_session_data.py +22 -0
  131. ansys/fluent/core/utils/event_loop.py +22 -0
  132. ansys/fluent/core/utils/execution.py +22 -0
  133. ansys/fluent/core/utils/file_transfer_service.py +22 -0
  134. ansys/fluent/core/utils/fix_doc.py +22 -0
  135. ansys/fluent/core/utils/fldoc.py +22 -0
  136. ansys/fluent/core/utils/fluent_version.py +22 -0
  137. ansys/fluent/core/utils/networking.py +22 -0
  138. ansys/fluent/core/utils/setup_for_fluent.py +22 -0
  139. ansys/fluent/core/warnings.py +22 -0
  140. ansys/fluent/core/workflow.py +22 -0
  141. {ansys_fluent_core-0.28.2.dist-info → ansys_fluent_core-0.29.0.dist-info}/LICENSE +8 -8
  142. {ansys_fluent_core-0.28.2.dist-info → ansys_fluent_core-0.29.0.dist-info}/METADATA +56 -33
  143. ansys_fluent_core-0.29.0.dist-info/RECORD +219 -0
  144. {ansys_fluent_core-0.28.2.dist-info → ansys_fluent_core-0.29.0.dist-info}/WHEEL +1 -1
  145. ansys/fluent/core/docs/README.rst +0 -155
  146. ansys/fluent/tests/conftest.py +0 -415
  147. ansys/fluent/tests/fluent_fixtures.py +0 -195
  148. ansys/fluent/tests/integration/test_optislang/test_optislang_integration.py +0 -263
  149. ansys/fluent/tests/parametric/test_local_parametric_run.py +0 -36
  150. ansys/fluent/tests/parametric/test_local_parametric_setup.py +0 -34
  151. ansys/fluent/tests/parametric/test_parametric_workflow.py +0 -279
  152. ansys/fluent/tests/test_aero_session.py +0 -88
  153. ansys/fluent/tests/test_batch_ops.py +0 -39
  154. ansys/fluent/tests/test_builtin_settings.py +0 -761
  155. ansys/fluent/tests/test_cad_to_post_ftm.py +0 -525
  156. ansys/fluent/tests/test_cad_to_post_wtm.py +0 -250
  157. ansys/fluent/tests/test_casereader.py +0 -324
  158. ansys/fluent/tests/test_codegen.py +0 -783
  159. ansys/fluent/tests/test_creatable.py +0 -31
  160. ansys/fluent/tests/test_data_model_cache.py +0 -434
  161. ansys/fluent/tests/test_datamodel_api.py +0 -429
  162. ansys/fluent/tests/test_datamodel_service.py +0 -814
  163. ansys/fluent/tests/test_datareader.py +0 -103
  164. ansys/fluent/tests/test_error_handling.py +0 -24
  165. ansys/fluent/tests/test_events_manager.py +0 -214
  166. ansys/fluent/tests/test_field_data.py +0 -466
  167. ansys/fluent/tests/test_file_session.py +0 -355
  168. ansys/fluent/tests/test_file_transfer_service.py +0 -165
  169. ansys/fluent/tests/test_fix_doc.py +0 -29
  170. ansys/fluent/tests/test_flobject.py +0 -1235
  171. ansys/fluent/tests/test_fluent_fixes.py +0 -106
  172. ansys/fluent/tests/test_fluent_session.py +0 -270
  173. ansys/fluent/tests/test_fluent_version.py +0 -66
  174. ansys/fluent/tests/test_fluent_version_marker.py +0 -65
  175. ansys/fluent/tests/test_icing_session.py +0 -9
  176. ansys/fluent/tests/test_launcher.py +0 -529
  177. ansys/fluent/tests/test_launcher_remote.py +0 -272
  178. ansys/fluent/tests/test_lispy.py +0 -40
  179. ansys/fluent/tests/test_logging.py +0 -16
  180. ansys/fluent/tests/test_mapped_api.py +0 -766
  181. ansys/fluent/tests/test_meshing_utilities.py +0 -2436
  182. ansys/fluent/tests/test_meshing_workflow.py +0 -421
  183. ansys/fluent/tests/test_meshingmode/test_meshing_launch.py +0 -168
  184. ansys/fluent/tests/test_new_meshing_workflow.py +0 -1801
  185. ansys/fluent/tests/test_preferences.py +0 -89
  186. ansys/fluent/tests/test_pure_mesh_vs_mesh_workflow.py +0 -101
  187. ansys/fluent/tests/test_reduction.py +0 -484
  188. ansys/fluent/tests/test_rp_vars.py +0 -77
  189. ansys/fluent/tests/test_scheduler.py +0 -471
  190. ansys/fluent/tests/test_scheme_eval_222.py +0 -338
  191. ansys/fluent/tests/test_scheme_eval_231.py +0 -243
  192. ansys/fluent/tests/test_search.py +0 -344
  193. ansys/fluent/tests/test_session.py +0 -594
  194. ansys/fluent/tests/test_settings_api.py +0 -606
  195. ansys/fluent/tests/test_settings_reader.py +0 -85
  196. ansys/fluent/tests/test_slurm_future.py +0 -67
  197. ansys/fluent/tests/test_solution_variables.py +0 -241
  198. ansys/fluent/tests/test_solver_monitors.py +0 -83
  199. ansys/fluent/tests/test_solvermode/boundaries_periodic_expDict +0 -1712
  200. ansys/fluent/tests/test_solvermode/test_boundaries.py +0 -127
  201. ansys/fluent/tests/test_solvermode/test_calculationactivities.py +0 -20
  202. ansys/fluent/tests/test_solvermode/test_controls.py +0 -131
  203. ansys/fluent/tests/test_solvermode/test_general.py +0 -109
  204. ansys/fluent/tests/test_solvermode/test_initialization.py +0 -83
  205. ansys/fluent/tests/test_solvermode/test_materials.py +0 -40
  206. ansys/fluent/tests/test_solvermode/test_methods.py +0 -65
  207. ansys/fluent/tests/test_solvermode/test_models.py +0 -99
  208. ansys/fluent/tests/test_solvermode/test_named_expressions.py +0 -35
  209. ansys/fluent/tests/test_solvermode/test_post_vector.py +0 -22
  210. ansys/fluent/tests/test_solvermode/test_species_model.py +0 -67
  211. ansys/fluent/tests/test_streaming_services.py +0 -52
  212. ansys/fluent/tests/test_systemcoupling.py +0 -44
  213. ansys/fluent/tests/test_topy.py +0 -179
  214. ansys/fluent/tests/test_tui_api.py +0 -70
  215. ansys/fluent/tests/test_type_stub.py +0 -37
  216. ansys/fluent/tests/test_utils.py +0 -82
  217. ansys/fluent/tests/util/__init__.py +0 -36
  218. ansys/fluent/tests/util/meshing_workflow.py +0 -33
  219. ansys/fluent/tests/util/solver.py +0 -72
  220. ansys_fluent_core-0.28.2.dist-info/AUTHORS +0 -12
  221. ansys_fluent_core-0.28.2.dist-info/RECORD +0 -294
@@ -1,429 +0,0 @@
1
- import time
2
-
3
- import pytest
4
- from util import create_datamodel_root_in_server
5
-
6
- from ansys.fluent.core.services.datamodel_se import SubscribeEventError
7
- from ansys.fluent.core.utils.execution import timeout_loop
8
-
9
- rule_str = (
10
- "RULES:\n"
11
- " STRING: X\n"
12
- " default = ijk\n"
13
- " END\n"
14
- " SINGLETON: ROOT\n"
15
- " members = A, B, D, G\n"
16
- " commands= C\n"
17
- " SINGLETON: A\n"
18
- " members = X\n"
19
- " x = $./X\n"
20
- " END\n"
21
- " OBJECT: B\n"
22
- " members = X\n"
23
- " END\n"
24
- " SINGLETON: D\n"
25
- " members = E, F, X\n"
26
- " SINGLETON: E\n"
27
- " members = X\n"
28
- " END\n"
29
- " SINGLETON: F\n"
30
- " members = X\n"
31
- " END\n"
32
- " END\n"
33
- " SINGLETON: G\n"
34
- " members = H\n"
35
- " DICT: H\n"
36
- " END\n"
37
- " END\n"
38
- " COMMAND: C\n"
39
- " arguments = X\n"
40
- " x = $/A/X\n"
41
- " END\n"
42
- " END\n"
43
- "END\n"
44
- )
45
-
46
-
47
- @pytest.mark.fluent_version(">=25.2")
48
- def test_env_var_setting(datamodel_api_version_all, request, new_solver_session):
49
- solver = new_solver_session
50
- test_name = request.node.name
51
- for var in ["REMOTING_NEW_DM_API", "REMOTING_MAPPED_NEW_DM_API"]:
52
- # TODO: It might be possible to check the param value in the fixture
53
- # instead of checking the test name here.
54
- if test_name.endswith("[old]"):
55
- assert solver.scheme_eval.scheme_eval(f'(getenv "{var}")') is None
56
- elif test_name.endswith("[new]"):
57
- assert solver.scheme_eval.scheme_eval(f'(getenv "{var}")') == "1"
58
-
59
-
60
- @pytest.mark.fluent_version(">=25.2")
61
- def test_datamodel_api_on_child_created(datamodel_api_version_all, new_solver_session):
62
- solver = new_solver_session
63
- app_name = "test"
64
- create_datamodel_root_in_server(solver, rule_str, app_name)
65
- service = solver._se_service
66
-
67
- called = 0
68
- created = []
69
-
70
- def cb(path: str):
71
- nonlocal called
72
- nonlocal created
73
- called += 1
74
- created.append(path)
75
-
76
- subscription = service.add_on_child_created(app_name, "/", "B", cb)
77
- assert called == 0
78
- assert created == []
79
- service.set_state(app_name, "/", {"B:b": {"_name_": "b"}})
80
- timeout_loop(lambda: called == 1, timeout=5)
81
- assert called == 1
82
- assert created == ["/B:b"]
83
- subscription.unsubscribe()
84
-
85
-
86
- @pytest.mark.fluent_version(">=25.2")
87
- def test_datamodel_api_on_changed(datamodel_api_version_all, new_solver_session):
88
- solver = new_solver_session
89
- app_name = "test"
90
- create_datamodel_root_in_server(solver, rule_str, app_name)
91
- service = solver._se_service
92
- called = 0
93
- state = None
94
- called_obj = 0
95
- state_obj = None
96
-
97
- def cb(value):
98
- nonlocal called
99
- nonlocal state
100
- state = value
101
- called += 1
102
-
103
- def cb_obj(value):
104
- nonlocal called_obj
105
- nonlocal state_obj
106
- state_obj = value
107
- called_obj += 1
108
-
109
- subscription = service.add_on_changed(app_name, "/A/X", cb)
110
- subscription_obj = service.add_on_changed(app_name, "/A", cb_obj)
111
- assert called == 0
112
- assert state is None
113
- assert called_obj == 0
114
- assert state_obj is None
115
- service.set_state(app_name, "/A/X", "lmn")
116
- timeout_loop(lambda: called == 1, timeout=5)
117
- assert called == 1
118
- assert state == "lmn"
119
- assert called_obj == 1
120
- assert state_obj == {"X": "lmn"}
121
- service.set_state(app_name, "/A/X", "abc")
122
- timeout_loop(lambda: called == 2, timeout=5)
123
- assert called == 2
124
- assert state == "abc"
125
- assert called_obj == 2
126
- assert state_obj == {"X": "abc"}
127
- subscription.unsubscribe()
128
- subscription_obj.unsubscribe()
129
- service.set_state(app_name, "/A/X", "xyz")
130
- time.sleep(5)
131
- assert called == 2
132
- assert state == "abc"
133
- assert called_obj == 2
134
- assert state_obj == {"X": "abc"}
135
-
136
-
137
- @pytest.mark.fluent_version(">=25.2")
138
- def test_datamodel_api_on_affected(datamodel_api_version_all, new_solver_session):
139
- solver = new_solver_session
140
- app_name = "test"
141
- create_datamodel_root_in_server(solver, rule_str, app_name)
142
- service = solver._se_service
143
- called = 0
144
-
145
- def cb():
146
- nonlocal called
147
- called += 1
148
-
149
- subscription = service.add_on_affected(app_name, "/D", cb)
150
- assert called == 0
151
- service.set_state(app_name, "/D/X", "lmn")
152
- timeout_loop(lambda: called == 1, timeout=5)
153
- assert called == 1
154
- service.set_state(app_name, "/D/E/X", "lmn")
155
- timeout_loop(lambda: called == 2, timeout=5)
156
- assert called == 2
157
- service.set_state(app_name, "/A/X", "lmn")
158
- time.sleep(5)
159
- assert called == 2
160
- subscription.unsubscribe()
161
- service.set_state(app_name, "/D/E/X", "pqr")
162
- time.sleep(5)
163
- assert called == 2
164
-
165
-
166
- @pytest.mark.fluent_version(">=25.2")
167
- def test_datamodel_api_on_affected_at_type_path(
168
- datamodel_api_version_all, new_solver_session
169
- ):
170
- solver = new_solver_session
171
- app_name = "test"
172
- create_datamodel_root_in_server(solver, rule_str, app_name)
173
- service = solver._se_service
174
- called = 0
175
-
176
- def cb():
177
- nonlocal called
178
- called += 1
179
-
180
- subscription = service.add_on_affected_at_type_path(app_name, "/D", "E", cb)
181
- assert called == 0
182
- service.set_state(app_name, "/D/X", "lmn")
183
- time.sleep(5)
184
- assert called == 0
185
- service.set_state(app_name, "/D/E/X", "lmn")
186
- timeout_loop(lambda: called == 1, timeout=5)
187
- assert called == 1
188
- service.set_state(app_name, "/D/F/X", "lmn")
189
- time.sleep(5)
190
- assert called == 1
191
- subscription.unsubscribe()
192
- service.set_state(app_name, "/D/E/X", "pqr")
193
- time.sleep(5)
194
- assert called == 1
195
-
196
-
197
- @pytest.mark.fluent_version(">=25.2")
198
- def test_datamodel_api_on_deleted(
199
- datamodel_api_version_all, request, new_solver_session
200
- ):
201
- solver = new_solver_session
202
- app_name = "test"
203
- create_datamodel_root_in_server(solver, rule_str, app_name)
204
- service = solver._se_service
205
- called = False
206
- called_obj = False
207
-
208
- def cb():
209
- nonlocal called
210
- called = True
211
-
212
- def cb_obj():
213
- nonlocal called_obj
214
- called_obj = True
215
-
216
- service.set_state(app_name, "/", {"B:b": {"_name_": "b"}})
217
- subscription = service.add_on_deleted(app_name, "/B:b/X", cb)
218
- subscription_obj = service.add_on_deleted(app_name, "/B:b", cb_obj)
219
- assert not called
220
- assert not called_obj
221
- service.delete_object(app_name, "/B:b")
222
- time.sleep(5)
223
- test_name = request.node.name
224
- # TODO: Note comment in StateEngine test testDataModelAPIOnDeleted
225
- if test_name.endswith("[old]"):
226
- assert called
227
- elif test_name.endswith("[new]"):
228
- assert not called
229
- assert called_obj
230
- subscription.unsubscribe()
231
- subscription_obj.unsubscribe()
232
-
233
-
234
- @pytest.mark.fluent_version(">=25.2")
235
- def test_datamodel_api_on_attribute_changed(
236
- datamodel_api_version_all, new_solver_session
237
- ):
238
- solver = new_solver_session
239
- app_name = "test"
240
- create_datamodel_root_in_server(solver, rule_str, app_name)
241
- service = solver._se_service
242
- called = 0
243
- value = None
244
-
245
- def cb(val):
246
- nonlocal called
247
- nonlocal value
248
- value = val
249
- called += 1
250
-
251
- subscription = service.add_on_attribute_changed(app_name, "/A", "x", cb)
252
- assert called == 0
253
- assert value is None
254
- service.set_state(app_name, "/A/X", "cde")
255
- timeout_loop(lambda: called == 1, timeout=5)
256
- assert called == 1
257
- assert value == "cde"
258
- service.set_state(app_name, "/A/X", "xyz")
259
- timeout_loop(lambda: called == 2, timeout=5)
260
- assert called == 2
261
- assert value == "xyz"
262
- subscription.unsubscribe()
263
- service.set_state(app_name, "/A/X", "abc")
264
- time.sleep(5)
265
- assert called == 2
266
- assert value == "xyz"
267
-
268
-
269
- @pytest.mark.fluent_version(">=25.2")
270
- def test_datamodel_api_on_command_attribute_changed(
271
- datamodel_api_version_all, new_solver_session
272
- ):
273
- solver = new_solver_session
274
- app_name = "test"
275
- create_datamodel_root_in_server(solver, rule_str, app_name)
276
- service = solver._se_service
277
- called = 0
278
- value = None
279
-
280
- def cb(val):
281
- nonlocal called
282
- nonlocal value
283
- value = val
284
- called += 1
285
-
286
- subscription = service.add_on_command_attribute_changed(app_name, "/", "C", "x", cb)
287
- assert called == 0
288
- assert value is None
289
- service.set_state(app_name, "/A/X", "cde")
290
- timeout_loop(lambda: called == 1, timeout=5)
291
- assert called == 1
292
- assert value == "cde"
293
- service.set_state(app_name, "/A/X", "xyz")
294
- timeout_loop(lambda: called == 2, timeout=5)
295
- assert called == 2
296
- # TODO: value is still "cde" in both old and new API
297
- # assert value == "xyz"
298
- subscription.unsubscribe()
299
- service.set_state(app_name, "/A/X", "abc")
300
- time.sleep(5)
301
- assert called == 2
302
- # Commented out because of the issue above
303
- # assert value == "xyz"
304
-
305
-
306
- @pytest.mark.fluent_version(">=25.2")
307
- def test_datamodel_api_on_command_executed(
308
- datamodel_api_version_all, new_solver_session
309
- ):
310
- solver = new_solver_session
311
- app_name = "test"
312
- create_datamodel_root_in_server(solver, rule_str, app_name)
313
- service = solver._se_service
314
- executed = 0
315
- command = None
316
- arguments = None
317
-
318
- def cb(cmd, args):
319
- nonlocal executed
320
- nonlocal command
321
- nonlocal arguments
322
- command = cmd
323
- arguments = args
324
- executed += 1
325
-
326
- # TODO: In C++ API, we don't need to pass the command name
327
- subscription = service.add_on_command_executed(app_name, "/", cb)
328
- assert executed == 0
329
- assert command is None
330
- assert arguments is None
331
- service.execute_command(app_name, "/", "C", dict(X="abc"))
332
- timeout_loop(lambda: executed == 1, timeout=5)
333
- assert executed == 1
334
- assert command == "C"
335
- assert arguments == {"X": "abc"}
336
- subscription.unsubscribe()
337
- service.execute_command(app_name, "/", "C", dict(X="uvw"))
338
- time.sleep(5)
339
- assert executed == 1
340
- assert command == "C"
341
- assert arguments == {"X": "abc"}
342
-
343
-
344
- @pytest.mark.fluent_version(">=25.2")
345
- def test_datamodel_api_get_state(datamodel_api_version_all, new_solver_session):
346
- solver = new_solver_session
347
- app_name = "test"
348
- create_datamodel_root_in_server(solver, rule_str, app_name)
349
- service = solver._se_service
350
- assert service.get_state(app_name, "/A/X") == "ijk"
351
-
352
-
353
- @pytest.mark.fluent_version(">=25.2")
354
- def test_datamodel_api_set_state(datamodel_api_version_all, new_solver_session):
355
- solver = new_solver_session
356
- app_name = "test"
357
- create_datamodel_root_in_server(solver, rule_str, app_name)
358
- service = solver._se_service
359
- service.set_state(app_name, "/A/X", "new_val")
360
- assert service.get_state(app_name, "/A/X") == "new_val"
361
-
362
-
363
- @pytest.mark.fluent_version(">=25.2")
364
- def test_datamodel_api_update_dict(datamodel_api_version_all, new_solver_session):
365
- solver = new_solver_session
366
- app_name = "test"
367
- create_datamodel_root_in_server(solver, rule_str, app_name)
368
- service = solver._se_service
369
- service.update_dict(app_name, "/G/H", {"X": "abc"})
370
- assert service.get_state(app_name, "/G/H") == {"X": "abc"}
371
-
372
-
373
- @pytest.mark.fluent_version(">=25.2")
374
- def test_datamodel_api_on_bad_input(
375
- datamodel_api_version_all, request, new_solver_session
376
- ):
377
- solver = new_solver_session
378
- app_name = "test"
379
- create_datamodel_root_in_server(solver, rule_str, app_name)
380
- service = solver._se_service
381
- test_name = request.node.name
382
- new_api = test_name.endswith("[new]")
383
- with pytest.raises(SubscribeEventError):
384
- service.add_on_child_created(app_name, "", "", lambda _: None)
385
- with pytest.raises(RuntimeError if new_api else SubscribeEventError): # TODO: issue
386
- service.add_on_child_created(app_name, "/BB", "B", lambda _: None)
387
- with pytest.raises(SubscribeEventError):
388
- service.add_on_child_created(app_name, "/", "A", lambda _: None)
389
- with pytest.raises(SubscribeEventError):
390
- service.add_on_child_created(app_name, "/", "BB", lambda _: None)
391
- with pytest.raises(RuntimeError if new_api else SubscribeEventError): # TODO: issue
392
- service.add_on_changed(app_name, "/BB", lambda _: None)
393
- with pytest.raises(RuntimeError if new_api else SubscribeEventError): # TODO: issue
394
- service.add_on_deleted(app_name, "/BB", lambda: None)
395
- with pytest.raises(RuntimeError if new_api else SubscribeEventError): # TODO: issue
396
- service.add_on_affected(app_name, "/BB", lambda _: None)
397
- with pytest.raises(RuntimeError if new_api else SubscribeEventError): # TODO: issue
398
- service.add_on_affected_at_type_path(app_name, "/BB", "B", lambda: None)
399
- # TODO: not raised in the old API - issue
400
- if new_api:
401
- with pytest.raises(SubscribeEventError):
402
- service.add_on_affected_at_type_path(app_name, "/", "BB", lambda: None)
403
- with pytest.raises(RuntimeError if new_api else SubscribeEventError): # TODO: issue
404
- service.add_on_attribute_changed(app_name, "/BB", "isActive", lambda _: None)
405
- with pytest.raises(SubscribeEventError):
406
- service.add_on_attribute_changed(app_name, "/A", "", lambda _: None)
407
- with pytest.raises(RuntimeError if new_api else SubscribeEventError): # TODO: issue
408
- service.add_on_command_attribute_changed(
409
- app_name, "/BB", "C", "isActive", lambda _: None
410
- )
411
- with pytest.raises(SubscribeEventError):
412
- service.add_on_command_attribute_changed(
413
- app_name, "/A", "CC", "", lambda _: None
414
- )
415
- with pytest.raises(SubscribeEventError):
416
- service.add_on_command_attribute_changed(
417
- app_name, "/", "CC", "isActive", lambda _: None
418
- )
419
- with pytest.raises(RuntimeError if new_api else SubscribeEventError): # TODO: issue
420
- service.add_on_command_executed(app_name, "/BB", lambda _: None)
421
-
422
-
423
- @pytest.mark.fluent_version(">=25.2")
424
- def test_datamodel_api_static_info(datamodel_api_version_all, new_solver_session):
425
- solver = new_solver_session
426
- app_name = "test"
427
- create_datamodel_root_in_server(solver, rule_str, app_name)
428
- service = solver._se_service
429
- assert service.get_static_info(app_name)