tdl-xoa-driver 1.3.0__py3-none-any.whl → 1.4.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.
- {tdl_xoa_driver-1.3.0.dist-info → tdl_xoa_driver-1.4.0.dist-info}/METADATA +5 -5
- tdl_xoa_driver-1.4.0.dist-info/RECORD +218 -0
- xoa_driver/__init__.py +2 -2
- xoa_driver/functions/anlt.py +2 -2
- xoa_driver/functions/mgmt.py +11 -20
- xoa_driver/hlfuncs.py +1 -1
- xoa_driver/internals/commands/p_commands.py +12 -10
- xoa_driver/internals/commands/pt_commands.py +21 -1
- xoa_driver/internals/commands/px_commands.py +1686 -6
- xoa_driver/internals/core/transporter/_request_id_counter.py +1 -1
- xoa_driver/internals/core/transporter/protocol/payload/__init__.py +3 -1
- xoa_driver/internals/core/transporter/protocol/payload/field.py +41 -0
- xoa_driver/internals/core/transporter/protocol/payload/types.py +19 -0
- xoa_driver/internals/{hli_v1 → hli}/indices/filter/base_filter.py +1 -1
- xoa_driver/internals/{hli_v1 → hli}/indices/length_term.py +1 -1
- xoa_driver/internals/{hli_v1 → hli}/indices/macsecscs/base_macsecsc.py +2 -2
- xoa_driver/internals/{hli_v1 → hli}/indices/match_term.py +1 -1
- xoa_driver/internals/{hli_v1 → hli}/indices/port_dataset.py +1 -1
- xoa_driver/internals/{hli_v1 → hli}/indices/streams/base_stream.py +1 -1
- xoa_driver/internals/{hli_v1 → hli}/modules/module_chimera.py +3 -3
- xoa_driver/internals/{hli_v1 → hli}/modules/module_l47.py +1 -1
- xoa_driver/internals/{hli_v1 → hli}/modules/modules_l23/family_combi.py +1 -1
- xoa_driver/internals/{hli_v1 → hli}/modules/modules_l23/family_d.py +1 -1
- xoa_driver/internals/{hli_v1 → hli}/modules/modules_l23/family_e.py +1 -1
- xoa_driver/internals/{hli_v1 → hli}/modules/modules_l23/family_f.py +1 -1
- xoa_driver/internals/{hli_v1 → hli}/modules/modules_l23/family_g.py +17 -2
- xoa_driver/internals/{hli_v1 → hli}/modules/modules_l23/family_h.py +1 -1
- xoa_driver/internals/{hli_v1 → hli}/modules/modules_l23/family_i.py +1 -1
- xoa_driver/internals/{hli_v1 → hli}/modules/modules_l23/family_j.py +1 -1
- xoa_driver/internals/{hli_v1 → hli}/modules/modules_l23/family_k.py +1 -1
- xoa_driver/internals/{hli_v1 → hli}/modules/modules_l23/family_l.py +1 -1
- xoa_driver/internals/{hli_v1 → hli}/modules/modules_l23/family_l1.py +1 -1
- xoa_driver/internals/{hli_v1 → hli}/modules/modules_l23/family_m.py +1 -1
- xoa_driver/internals/{hli_v1 → hli}/modules/modules_l23/family_n.py +1 -1
- xoa_driver/internals/{hli_v1 → hli}/modules/modules_l23/module_l23_base.py +1 -1
- xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/bases/port_l23.py +3 -3
- xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/bases/port_l23_genuine.py +4 -4
- xoa_driver/internals/hli/ports/port_l23/bases/port_transceiver.py +247 -0
- xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/bases/port_transmission_statistics.py +1 -1
- xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/chimera/port_chimera.py +1 -1
- xoa_driver/internals/{hli_v2 → hli}/ports/port_l23/family_g.py +5 -0
- xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/port_l23ve.py +2 -2
- xoa_driver/internals/{hli_v1 → hli}/ports/port_l47/main.py +2 -2
- xoa_driver/internals/{hli_v1 → hli}/testers/l23_tester.py +1 -1
- xoa_driver/internals/{hli_v1 → hli}/testers/l47_tester.py +2 -2
- xoa_driver/misc.py +12 -17
- xoa_driver/modules.py +18 -22
- xoa_driver/ports.py +20 -20
- xoa_driver/testers.py +4 -8
- tdl_xoa_driver-1.3.0.dist-info/RECORD +0 -325
- xoa_driver/internals/hli_v1/ports/port_l23/bases/port_transceiver.py +0 -117
- xoa_driver/internals/hli_v1/ports/port_l23/family_g.py +0 -77
- xoa_driver/internals/hli_v2/__init__.py +0 -0
- xoa_driver/internals/hli_v2/indices/__init__.py +0 -0
- xoa_driver/internals/hli_v2/indices/base_index.py +0 -39
- xoa_driver/internals/hli_v2/indices/connection_group/__init__.py +0 -0
- xoa_driver/internals/hli_v2/indices/connection_group/cg.py +0 -115
- xoa_driver/internals/hli_v2/indices/connection_group/histogram.py +0 -59
- xoa_driver/internals/hli_v2/indices/connection_group/l2.py +0 -71
- xoa_driver/internals/hli_v2/indices/connection_group/l3.py +0 -96
- xoa_driver/internals/hli_v2/indices/connection_group/raw.py +0 -148
- xoa_driver/internals/hli_v2/indices/connection_group/replay.py +0 -89
- xoa_driver/internals/hli_v2/indices/connection_group/tcp.py +0 -261
- xoa_driver/internals/hli_v2/indices/connection_group/tls.py +0 -166
- xoa_driver/internals/hli_v2/indices/connection_group/udp.py +0 -112
- xoa_driver/internals/hli_v2/indices/connection_group/user_state.py +0 -25
- xoa_driver/internals/hli_v2/indices/filter/__init__.py +0 -0
- xoa_driver/internals/hli_v2/indices/filter/base_filter.py +0 -50
- xoa_driver/internals/hli_v2/indices/filter/genuine_filter.py +0 -17
- xoa_driver/internals/hli_v2/indices/length_term.py +0 -44
- xoa_driver/internals/hli_v2/indices/match_term.py +0 -49
- xoa_driver/internals/hli_v2/indices/port_dataset.py +0 -53
- xoa_driver/internals/hli_v2/indices/streams/__init__.py +0 -0
- xoa_driver/internals/hli_v2/indices/streams/base_stream.py +0 -234
- xoa_driver/internals/hli_v2/indices/streams/genuine_stream.py +0 -32
- xoa_driver/internals/hli_v2/modules/__init__.py +0 -0
- xoa_driver/internals/hli_v2/modules/__interfaces.py +0 -21
- xoa_driver/internals/hli_v2/modules/base_module.py +0 -125
- xoa_driver/internals/hli_v2/modules/module_chimera.py +0 -358
- xoa_driver/internals/hli_v2/modules/module_l23ve.py +0 -58
- xoa_driver/internals/hli_v2/modules/module_l47.py +0 -230
- xoa_driver/internals/hli_v2/modules/module_l47ve.py +0 -8
- xoa_driver/internals/hli_v2/modules/modules_l23/__init__.py +0 -0
- xoa_driver/internals/hli_v2/modules/modules_l23/family_combi.py +0 -73
- xoa_driver/internals/hli_v2/modules/modules_l23/family_d.py +0 -75
- xoa_driver/internals/hli_v2/modules/modules_l23/family_e.py +0 -85
- xoa_driver/internals/hli_v2/modules/modules_l23/family_f.py +0 -144
- xoa_driver/internals/hli_v2/modules/modules_l23/family_g.py +0 -84
- xoa_driver/internals/hli_v2/modules/modules_l23/family_h.py +0 -40
- xoa_driver/internals/hli_v2/modules/modules_l23/family_i.py +0 -25
- xoa_driver/internals/hli_v2/modules/modules_l23/family_j.py +0 -25
- xoa_driver/internals/hli_v2/modules/modules_l23/family_k.py +0 -39
- xoa_driver/internals/hli_v2/modules/modules_l23/family_l.py +0 -55
- xoa_driver/internals/hli_v2/modules/modules_l23/family_l1.py +0 -797
- xoa_driver/internals/hli_v2/modules/modules_l23/family_m.py +0 -25
- xoa_driver/internals/hli_v2/modules/modules_l23/family_n.py +0 -40
- xoa_driver/internals/hli_v2/modules/modules_l23/module_l23_base.py +0 -339
- xoa_driver/internals/hli_v2/ports/__init__.py +0 -0
- xoa_driver/internals/hli_v2/ports/base_port.py +0 -105
- xoa_driver/internals/hli_v2/ports/port_l23/__init__.py +0 -0
- xoa_driver/internals/hli_v2/ports/port_l23/bases/__init__.py +0 -0
- xoa_driver/internals/hli_v2/ports/port_l23/bases/port_capture.py +0 -64
- xoa_driver/internals/hli_v2/ports/port_l23/bases/port_l23.py +0 -441
- xoa_driver/internals/hli_v2/ports/port_l23/bases/port_l23_genuine.py +0 -172
- xoa_driver/internals/hli_v2/ports/port_l23/bases/port_reception_statistics.py +0 -156
- xoa_driver/internals/hli_v2/ports/port_l23/bases/port_transceiver.py +0 -117
- xoa_driver/internals/hli_v2/ports/port_l23/bases/port_transmission_statistics.py +0 -59
- xoa_driver/internals/hli_v2/ports/port_l23/chimera/__init__.py +0 -0
- xoa_driver/internals/hli_v2/ports/port_l23/chimera/filter_definition/__init__.py +0 -0
- xoa_driver/internals/hli_v2/ports/port_l23/chimera/filter_definition/_utils.py +0 -15
- xoa_driver/internals/hli_v2/ports/port_l23/chimera/filter_definition/general.py +0 -340
- xoa_driver/internals/hli_v2/ports/port_l23/chimera/filter_definition/shadow.py +0 -99
- xoa_driver/internals/hli_v2/ports/port_l23/chimera/filter_definition/working.py +0 -36
- xoa_driver/internals/hli_v2/ports/port_l23/chimera/pe_custom_distribution.py +0 -116
- xoa_driver/internals/hli_v2/ports/port_l23/chimera/pe_distribution.py +0 -102
- xoa_driver/internals/hli_v2/ports/port_l23/chimera/port_chimera.py +0 -113
- xoa_driver/internals/hli_v2/ports/port_l23/chimera/port_emulation.py +0 -420
- xoa_driver/internals/hli_v2/ports/port_l23/chimera/reception_statistics.py +0 -22
- xoa_driver/internals/hli_v2/ports/port_l23/chimera/transmission_statistics.py +0 -22
- xoa_driver/internals/hli_v2/ports/port_l23/family_combi.py +0 -36
- xoa_driver/internals/hli_v2/ports/port_l23/family_d.py +0 -49
- xoa_driver/internals/hli_v2/ports/port_l23/family_e.py +0 -96
- xoa_driver/internals/hli_v2/ports/port_l23/family_f.py +0 -144
- xoa_driver/internals/hli_v2/ports/port_l23/family_h.py +0 -60
- xoa_driver/internals/hli_v2/ports/port_l23/family_i.py +0 -66
- xoa_driver/internals/hli_v2/ports/port_l23/family_j.py +0 -53
- xoa_driver/internals/hli_v2/ports/port_l23/family_k.py +0 -58
- xoa_driver/internals/hli_v2/ports/port_l23/family_l.py +0 -67
- xoa_driver/internals/hli_v2/ports/port_l23/family_l1.py +0 -149
- xoa_driver/internals/hli_v2/ports/port_l23/family_m.py +0 -28
- xoa_driver/internals/hli_v2/ports/port_l23/fault_jkl.py +0 -22
- xoa_driver/internals/hli_v2/ports/port_l23/pcs_pma_ghijkl.py +0 -342
- xoa_driver/internals/hli_v2/ports/port_l23/pcs_pma_ijkl_chimera.py +0 -50
- xoa_driver/internals/hli_v2/ports/port_l23/pcs_pma_l.py +0 -65
- xoa_driver/internals/hli_v2/ports/port_l23/port_l23ve.py +0 -81
- xoa_driver/internals/hli_v2/ports/port_l47/__init__.py +0 -0
- xoa_driver/internals/hli_v2/ports/port_l47/counters.py +0 -146
- xoa_driver/internals/hli_v2/ports/port_l47/main.py +0 -137
- xoa_driver/internals/hli_v2/ports/port_l47/packet_engine.py +0 -20
- xoa_driver/internals/hli_v2/revisions.py +0 -11
- xoa_driver/internals/hli_v2/testers/__init__.py +0 -0
- xoa_driver/internals/hli_v2/testers/_base_tester.py +0 -207
- xoa_driver/internals/hli_v2/testers/genuine/__init__.py +0 -0
- xoa_driver/internals/hli_v2/testers/genuine/l_23/__init__.py +0 -0
- xoa_driver/internals/hli_v2/testers/genuine/l_23/health.py +0 -16
- xoa_driver/internals/hli_v2/testers/genuine/l_23/rest_api.py +0 -34
- xoa_driver/internals/hli_v2/testers/genuine/l_23/time_keeper.py +0 -50
- xoa_driver/internals/hli_v2/testers/genuine/l_23/upload_file.py +0 -26
- xoa_driver/internals/hli_v2/testers/genuine/management_interface.py +0 -38
- xoa_driver/internals/hli_v2/testers/l23_tester.py +0 -159
- xoa_driver/internals/hli_v2/testers/l23ve_tester.py +0 -98
- xoa_driver/internals/hli_v2/testers/l47_tester.py +0 -95
- xoa_driver/internals/hli_v2/testers/l47ve_tester.py +0 -50
- xoa_driver/v2/__init__.py +0 -11
- xoa_driver/v2/misc.py +0 -77
- xoa_driver/v2/modules.py +0 -308
- xoa_driver/v2/ports.py +0 -232
- xoa_driver/v2/testers.py +0 -24
- {tdl_xoa_driver-1.3.0.dist-info → tdl_xoa_driver-1.4.0.dist-info}/WHEEL +0 -0
- {tdl_xoa_driver-1.3.0.dist-info → tdl_xoa_driver-1.4.0.dist-info}/licenses/LICENSE +0 -0
- {tdl_xoa_driver-1.3.0.dist-info → tdl_xoa_driver-1.4.0.dist-info}/top_level.txt +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/__init__.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/indices/__init__.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/indices/base_index.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/indices/connection_group/__init__.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/indices/connection_group/cg.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/indices/connection_group/histogram.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/indices/connection_group/l2.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/indices/connection_group/l3.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/indices/connection_group/raw.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/indices/connection_group/replay.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/indices/connection_group/tcp.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/indices/connection_group/tls.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/indices/connection_group/udp.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/indices/connection_group/user_state.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/indices/filter/__init__.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/indices/filter/genuine_filter.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/indices/macsecscs/__init__.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/indices/macsecscs/genuine_macsecsc.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/indices/streams/__init__.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/indices/streams/genuine_stream.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/modules/__init__.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/modules/__interfaces.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/modules/base_module.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/modules/module_l23ve.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/modules/module_l47ve.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/modules/modules_l23/__init__.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/__init__.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/base_port.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/__init__.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/bases/__init__.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/bases/port_capture.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/bases/port_reception_statistics.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/chimera/__init__.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/chimera/filter_definition/__init__.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/chimera/filter_definition/_utils.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/chimera/filter_definition/general.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/chimera/filter_definition/shadow.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/chimera/filter_definition/working.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/chimera/pe_custom_distribution.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/chimera/pe_distribution.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/chimera/port_emulation.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/chimera/reception_statistics.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/chimera/transmission_statistics.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/family_combi.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/family_d.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/family_e.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/family_f.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/family_h.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/family_i.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/family_j.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/family_k.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/family_l.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/family_l1.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/family_m.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/fault_jkl.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/freya_l1.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/pcs_pma_ghijkl.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/pcs_pma_ijkl_chimera.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/pcs_pma_l.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l47/__init__.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l47/counters.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l47/packet_engine.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/revisions.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/testers/__init__.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/testers/_base_tester.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/testers/genuine/__init__.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/testers/genuine/l_23/__init__.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/testers/genuine/l_23/health.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/testers/genuine/l_23/rest_api.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/testers/genuine/l_23/time_keeper.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/testers/genuine/l_23/upload_file.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/testers/genuine/management_interface.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/testers/l23ve_tester.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/testers/l47ve_tester.py +0 -0
|
@@ -1,159 +0,0 @@
|
|
|
1
|
-
from __future__ import annotations
|
|
2
|
-
from typing import (
|
|
3
|
-
Union,
|
|
4
|
-
TYPE_CHECKING,
|
|
5
|
-
Type,
|
|
6
|
-
)
|
|
7
|
-
from xoa_driver.internals.commands import (
|
|
8
|
-
C_PORTCOUNTS,
|
|
9
|
-
C_MULTIUSER,
|
|
10
|
-
C_TRAFFIC,
|
|
11
|
-
C_TRAFFICSYNC,
|
|
12
|
-
C_VERSIONNO_MINOR,
|
|
13
|
-
C_BUILDSTRING,
|
|
14
|
-
C_VERSIONSTR,
|
|
15
|
-
)
|
|
16
|
-
from xoa_driver.internals.core.transporter.logger import CustomLogger
|
|
17
|
-
from xoa_driver.internals.utils.managers.modules_manager import ModulesManager
|
|
18
|
-
from ._base_tester import BaseTester
|
|
19
|
-
from .genuine import management_interface as mi
|
|
20
|
-
from .genuine.l_23 import (
|
|
21
|
-
upload_file,
|
|
22
|
-
time_keeper,
|
|
23
|
-
rest_api,
|
|
24
|
-
health,
|
|
25
|
-
)
|
|
26
|
-
if TYPE_CHECKING:
|
|
27
|
-
from xoa_driver.v2 import modules
|
|
28
|
-
|
|
29
|
-
from xoa_driver.internals.state_storage import testers_state
|
|
30
|
-
from xoa_driver.internals.hli_v2 import revisions
|
|
31
|
-
from xoa_driver.internals import exceptions
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
TypeL23Manager = ModulesManager[
|
|
35
|
-
Union[
|
|
36
|
-
"modules.GenericL23Module",
|
|
37
|
-
"modules.ModuleChimera",
|
|
38
|
-
]
|
|
39
|
-
]
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
def get_module_type(revision: str) -> Type:
|
|
43
|
-
module_type = dict(
|
|
44
|
-
**revisions.VALKYRIE_MODULES,
|
|
45
|
-
**revisions.CHIMERA_MODULES,
|
|
46
|
-
).get(revision)
|
|
47
|
-
if not module_type:
|
|
48
|
-
raise exceptions.WrongModuleError(
|
|
49
|
-
revision,
|
|
50
|
-
set.union(
|
|
51
|
-
set(revisions.VALKYRIE_MODULES.keys()),
|
|
52
|
-
set(revisions.CHIMERA_MODULES.keys()),
|
|
53
|
-
)
|
|
54
|
-
)
|
|
55
|
-
return module_type
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
class L23Tester(BaseTester["testers_state.GenuineTesterLocalState"]):
|
|
59
|
-
"""
|
|
60
|
-
This is a conceptual class of Xena Valkyrie Tester.
|
|
61
|
-
It is essentially an extended :class:`BaseTester`.
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
:param host: tester's address/hostname
|
|
65
|
-
:type host: str
|
|
66
|
-
:param username: username of the user
|
|
67
|
-
:type username: str
|
|
68
|
-
:param password: login password of the tester, defaults to "xena"
|
|
69
|
-
:type password: str, optional
|
|
70
|
-
:param port: the port number for connection establishment, default to 22606
|
|
71
|
-
:type port: int, optional
|
|
72
|
-
:param enable_logging: `True` if debug log output from the tester is needed, and `False` otherwise
|
|
73
|
-
:type enable_logging: bool
|
|
74
|
-
:param custom_logger: `None` allow to specify logger with custom configurations
|
|
75
|
-
:type enable_logging: CustomLogger | None
|
|
76
|
-
:param session_timeout: `130` Session timeout in seconds
|
|
77
|
-
:type session_timeout: int
|
|
78
|
-
"""
|
|
79
|
-
|
|
80
|
-
def __init__(self, host: str, username: str, password: str = "xena", port: int = 22606, *, enable_logging: bool = False, custom_logger: CustomLogger | None = None, session_timeout: int = 130) -> None:
|
|
81
|
-
super().__init__(
|
|
82
|
-
host=host,
|
|
83
|
-
username=username,
|
|
84
|
-
password=password,
|
|
85
|
-
port=port,
|
|
86
|
-
enable_logging=enable_logging,
|
|
87
|
-
custom_logger=custom_logger,
|
|
88
|
-
session_timeout=session_timeout
|
|
89
|
-
)
|
|
90
|
-
|
|
91
|
-
self._local_states = testers_state.GenuineTesterLocalState(host, port)
|
|
92
|
-
|
|
93
|
-
self.management_interface = mi.ManagementInterface(self._conn)
|
|
94
|
-
"""Tester management interface that includes IP address, DHCP, MAC address and hostname.
|
|
95
|
-
"""
|
|
96
|
-
|
|
97
|
-
self.upload_file = upload_file.UploadFile(self._conn)
|
|
98
|
-
"""File upload functions of the tester.
|
|
99
|
-
"""
|
|
100
|
-
|
|
101
|
-
self.rest_api_server = rest_api.RestApiServer(self._conn)
|
|
102
|
-
"""REST API server of the tester.
|
|
103
|
-
"""
|
|
104
|
-
|
|
105
|
-
self.time_keeper = time_keeper.TimeKeeper(self._conn)
|
|
106
|
-
"""TimeKeeper of the tester.
|
|
107
|
-
"""
|
|
108
|
-
|
|
109
|
-
self.multiuser = C_MULTIUSER(self._conn)
|
|
110
|
-
"""
|
|
111
|
-
Representation of C_MULTIUSER
|
|
112
|
-
"""
|
|
113
|
-
|
|
114
|
-
self.traffic = C_TRAFFIC(self._conn)
|
|
115
|
-
"""
|
|
116
|
-
Representation of C_TRAFFIC
|
|
117
|
-
"""
|
|
118
|
-
self.traffic_sync = C_TRAFFICSYNC(self._conn)
|
|
119
|
-
"""
|
|
120
|
-
Representation of C_TRAFFICSYNC
|
|
121
|
-
"""
|
|
122
|
-
self.version_no_minor = C_VERSIONNO_MINOR(self._conn)
|
|
123
|
-
"""
|
|
124
|
-
Representation of C_VERSIONNO_MINOR
|
|
125
|
-
"""
|
|
126
|
-
self.version_str = C_VERSIONSTR(self._conn)
|
|
127
|
-
"""
|
|
128
|
-
Returns xenaserver version number in the new format.
|
|
129
|
-
|
|
130
|
-
:type: C_VERSIONSTR
|
|
131
|
-
"""
|
|
132
|
-
self.build_string = C_BUILDSTRING(self._conn)
|
|
133
|
-
"""
|
|
134
|
-
Representation of C_BUILDSTRING
|
|
135
|
-
"""
|
|
136
|
-
self.health = health.Health(self._conn)
|
|
137
|
-
"""
|
|
138
|
-
Chassis system health information.
|
|
139
|
-
|
|
140
|
-
:type: C_HEALTH
|
|
141
|
-
"""
|
|
142
|
-
self.modules: TypeL23Manager = ModulesManager(self._conn, get_module_type)
|
|
143
|
-
"""
|
|
144
|
-
Module index manager of the L23 tester.
|
|
145
|
-
"""
|
|
146
|
-
|
|
147
|
-
@property
|
|
148
|
-
def info(self) -> testers_state.GenuineTesterLocalState:
|
|
149
|
-
return self._local_states
|
|
150
|
-
|
|
151
|
-
async def _setup(self):
|
|
152
|
-
await super()._setup()
|
|
153
|
-
await self._local_states.initiate(self)
|
|
154
|
-
self._local_states.register_subscriptions(self)
|
|
155
|
-
|
|
156
|
-
ft_pc = await C_PORTCOUNTS(self._conn).get()
|
|
157
|
-
port_counts = ft_pc.port_counts
|
|
158
|
-
await self.modules.fill_l23(port_counts)
|
|
159
|
-
return self
|
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
from __future__ import annotations
|
|
2
|
-
from typing import Type
|
|
3
|
-
from xoa_driver.internals.commands import (
|
|
4
|
-
C_PORTCOUNTS,
|
|
5
|
-
C_MULTIUSER,
|
|
6
|
-
C_TRAFFIC,
|
|
7
|
-
C_TRAFFICSYNC,
|
|
8
|
-
C_VERSIONNO_MINOR,
|
|
9
|
-
)
|
|
10
|
-
from xoa_driver.internals.core.transporter.logger import CustomLogger
|
|
11
|
-
from xoa_driver.internals.utils.managers.modules_manager import ModulesManager
|
|
12
|
-
from ._base_tester import BaseTester
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
from xoa_driver.v2 import modules
|
|
16
|
-
from xoa_driver.internals.state_storage import testers_state
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
TypeL23Manager = ModulesManager["modules.ModuleL23VE"]
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
def get_module_type(revision: str) -> Type:
|
|
23
|
-
return modules.ModuleL23VE
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
class L23VeTester(BaseTester["testers_state.TesterLocalState"]):
|
|
27
|
-
"""
|
|
28
|
-
This is a conceptual class of Xena ValkyrieVE Tester.
|
|
29
|
-
It is essentially an extended :class:`BaseTester`.
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
:param host: tester's address/hostname
|
|
33
|
-
:type host: str
|
|
34
|
-
:param username: username of the user
|
|
35
|
-
:type username: str
|
|
36
|
-
:param password: login password of the tester, defaults to "xena"
|
|
37
|
-
:type password: str, optional
|
|
38
|
-
:param port: the port number for connection establishment, default to 22606
|
|
39
|
-
:type port: int, optional
|
|
40
|
-
:param enable_logging: `True` if debug log output from the tester is needed, and `False` otherwise
|
|
41
|
-
:type enable_logging: bool
|
|
42
|
-
:param custom_logger: `None` allow to specify logger with custom configurations
|
|
43
|
-
:type enable_logging: CustomLogger | None
|
|
44
|
-
:param session_timeout: `130` Session timeout in seconds
|
|
45
|
-
:type session_timeout: int
|
|
46
|
-
"""
|
|
47
|
-
|
|
48
|
-
def __init__(self, host: str, username: str, password: str = "xena", port: int = 22606, *, enable_logging: bool = False, custom_logger: CustomLogger | None = None, session_timeout: int = 130) -> None:
|
|
49
|
-
super().__init__(
|
|
50
|
-
host=host,
|
|
51
|
-
username=username,
|
|
52
|
-
password=password,
|
|
53
|
-
port=port,
|
|
54
|
-
enable_logging=enable_logging,
|
|
55
|
-
custom_logger=custom_logger,
|
|
56
|
-
session_timeout=session_timeout
|
|
57
|
-
)
|
|
58
|
-
|
|
59
|
-
self._local_states = testers_state.TesterLocalState(host, port)
|
|
60
|
-
|
|
61
|
-
self.multiuser = C_MULTIUSER(self._conn)
|
|
62
|
-
"""
|
|
63
|
-
Representation of C_MULTIUSER
|
|
64
|
-
"""
|
|
65
|
-
|
|
66
|
-
self.traffic = C_TRAFFIC(self._conn)
|
|
67
|
-
"""
|
|
68
|
-
Representation of C_TRAFFIC
|
|
69
|
-
"""
|
|
70
|
-
|
|
71
|
-
self.traffic_sync = C_TRAFFICSYNC(self._conn)
|
|
72
|
-
"""
|
|
73
|
-
Representation of C_TRAFFICSYNC
|
|
74
|
-
"""
|
|
75
|
-
|
|
76
|
-
self.version_no_minor = C_VERSIONNO_MINOR(self._conn)
|
|
77
|
-
"""
|
|
78
|
-
Representation of C_VERSIONNO_MINOR
|
|
79
|
-
"""
|
|
80
|
-
|
|
81
|
-
self.modules: TypeL23Manager = ModulesManager(self._conn, get_module_type)
|
|
82
|
-
"""
|
|
83
|
-
Module index manager of the L23 tester.
|
|
84
|
-
"""
|
|
85
|
-
|
|
86
|
-
@property
|
|
87
|
-
def info(self) -> testers_state.TesterLocalState:
|
|
88
|
-
return self._local_states
|
|
89
|
-
|
|
90
|
-
async def _setup(self):
|
|
91
|
-
await super()._setup()
|
|
92
|
-
await self._local_states.initiate(self)
|
|
93
|
-
self._local_states.register_subscriptions(self)
|
|
94
|
-
|
|
95
|
-
ft_pc = await C_PORTCOUNTS(self._conn).get()
|
|
96
|
-
port_counts = ft_pc.port_counts
|
|
97
|
-
await self.modules.fill_l23(port_counts)
|
|
98
|
-
return self
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
from __future__ import annotations
|
|
2
|
-
from typing import (
|
|
3
|
-
TYPE_CHECKING,
|
|
4
|
-
Type
|
|
5
|
-
)
|
|
6
|
-
from typing import Self
|
|
7
|
-
from xoa_driver.internals.commands import (
|
|
8
|
-
C_REMOTEPORTCOUNTS,
|
|
9
|
-
C_BUILDSTRING,
|
|
10
|
-
)
|
|
11
|
-
from xoa_driver.internals.core.transporter.logger import CustomLogger
|
|
12
|
-
from xoa_driver.internals.utils.managers.modules_manager import ModulesManager
|
|
13
|
-
from xoa_driver.internals.hli_v2 import revisions
|
|
14
|
-
from xoa_driver.internals import exceptions
|
|
15
|
-
if TYPE_CHECKING:
|
|
16
|
-
from xoa_driver.internals.hli_v2.modules import module_l47 as ml47
|
|
17
|
-
|
|
18
|
-
from xoa_driver.internals.state_storage import testers_state
|
|
19
|
-
from ._base_tester import BaseTester
|
|
20
|
-
from .genuine import management_interface as mi
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
def get_module_type(revision: str) -> "Type":
|
|
24
|
-
module_type = revisions.VULCAN_MODULES.get(revision)
|
|
25
|
-
if not module_type:
|
|
26
|
-
raise exceptions.WrongModuleError(
|
|
27
|
-
revision,
|
|
28
|
-
set(revisions.VULCAN_MODULES.keys()),
|
|
29
|
-
)
|
|
30
|
-
return module_type
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
class L47Tester(BaseTester["testers_state.GenuineTesterLocalState"]):
|
|
34
|
-
"""
|
|
35
|
-
This is a conceptual class of Xena Vulcan Tester.
|
|
36
|
-
It is essentially an extended :class:`BaseTester`.
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
:param host: tester's address/hostname
|
|
40
|
-
:type host: str
|
|
41
|
-
:param username: username of the user
|
|
42
|
-
:type username: str
|
|
43
|
-
:param password: login password of the tester, defaults to "xena"
|
|
44
|
-
:type password: str, optional
|
|
45
|
-
:param port: the port number for connection establishment, default to 22606
|
|
46
|
-
:type port: int, optional
|
|
47
|
-
:param enable_logging: `True` if debug log output from the tester is needed, and `False` otherwise
|
|
48
|
-
:type enable_logging: bool
|
|
49
|
-
:param custom_logger: `None` allow to specify logger with custom configurations
|
|
50
|
-
:type enable_logging: CustomLogger | None
|
|
51
|
-
:param session_timeout: `130` Session timeout in seconds
|
|
52
|
-
:type session_timeout: int
|
|
53
|
-
"""
|
|
54
|
-
|
|
55
|
-
def __init__(self, host: str, username: str, password: str = "xena", port: int = 22606, *, enable_logging: bool = False, custom_logger: CustomLogger | None = None, session_timeout: int = 130) -> None:
|
|
56
|
-
super().__init__(
|
|
57
|
-
host=host,
|
|
58
|
-
username=username,
|
|
59
|
-
password=password,
|
|
60
|
-
port=port,
|
|
61
|
-
enable_logging=enable_logging,
|
|
62
|
-
custom_logger=custom_logger,
|
|
63
|
-
session_timeout=session_timeout
|
|
64
|
-
)
|
|
65
|
-
|
|
66
|
-
self._local_states = testers_state.GenuineTesterLocalState(host, port)
|
|
67
|
-
|
|
68
|
-
self.build_string = C_BUILDSTRING(self._conn)
|
|
69
|
-
"""
|
|
70
|
-
Representation of C_BUILDSTRING
|
|
71
|
-
"""
|
|
72
|
-
|
|
73
|
-
self.management_interface = mi.ManagementInterface(self._conn)
|
|
74
|
-
"""
|
|
75
|
-
Tester management interface that includes IP address, DHCP, MAC address and hostname.
|
|
76
|
-
"""
|
|
77
|
-
|
|
78
|
-
self.modules: ModulesManager["ml47.ModuleL47"] = ModulesManager(self._conn, get_module_type)
|
|
79
|
-
"""
|
|
80
|
-
Module index manager of the tester.
|
|
81
|
-
"""
|
|
82
|
-
|
|
83
|
-
@property
|
|
84
|
-
def info(self) -> testers_state.GenuineTesterLocalState:
|
|
85
|
-
return self._local_states
|
|
86
|
-
|
|
87
|
-
async def _setup(self) -> Self:
|
|
88
|
-
await super()._setup()
|
|
89
|
-
await self._local_states.initiate(self)
|
|
90
|
-
self._local_states.register_subscriptions(self)
|
|
91
|
-
|
|
92
|
-
ft_pc = await C_REMOTEPORTCOUNTS(self._conn).get()
|
|
93
|
-
port_counts = ft_pc.port_counts
|
|
94
|
-
await self.modules.fill_l47(port_counts)
|
|
95
|
-
return self
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
from __future__ import annotations
|
|
2
|
-
from xoa_driver.internals.commands import (
|
|
3
|
-
C_BUILDSTRING,
|
|
4
|
-
C_VERSIONNO_MINOR
|
|
5
|
-
)
|
|
6
|
-
from xoa_driver.internals.core.transporter.logger import CustomLogger
|
|
7
|
-
from .l47_tester import L47Tester
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
class L47VeTester(L47Tester):
|
|
11
|
-
"""
|
|
12
|
-
This is a conceptual class of Xena VulcanVE Tester.
|
|
13
|
-
It is essentially an extended :class:`BaseTester`.
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
:param host: tester's address/hostname
|
|
17
|
-
:type host: str
|
|
18
|
-
:param username: username of the user
|
|
19
|
-
:type username: str
|
|
20
|
-
:param password: login password of the tester, defaults to "xena"
|
|
21
|
-
:type password: str, optional
|
|
22
|
-
:param port: the port number for connection establishment, default to 22606
|
|
23
|
-
:type port: int, optional
|
|
24
|
-
:param enable_logging: `True` if debug log output from the tester is needed, and `False` otherwise
|
|
25
|
-
:type enable_logging: bool
|
|
26
|
-
:param custom_logger: `None` allow to specify logger with custom configurations
|
|
27
|
-
:type enable_logging: CustomLogger | None
|
|
28
|
-
:param session_timeout: `130` Session timeout in seconds
|
|
29
|
-
:type session_timeout: int
|
|
30
|
-
"""
|
|
31
|
-
|
|
32
|
-
def __init__(self, host: str, username: str, password: str = "xena", port: int = 22606, *, enable_logging: bool = False, custom_logger: CustomLogger | None = None, session_timeout: int = 130) -> None:
|
|
33
|
-
super().__init__(
|
|
34
|
-
host=host,
|
|
35
|
-
username=username,
|
|
36
|
-
password=password,
|
|
37
|
-
port=port,
|
|
38
|
-
enable_logging=enable_logging,
|
|
39
|
-
custom_logger=custom_logger,
|
|
40
|
-
session_timeout=session_timeout
|
|
41
|
-
)
|
|
42
|
-
self.version_no_minor = C_VERSIONNO_MINOR(self._conn)
|
|
43
|
-
"""
|
|
44
|
-
Representation of C_VERSIONNO_MINOR
|
|
45
|
-
"""
|
|
46
|
-
|
|
47
|
-
self.build_string = C_BUILDSTRING(self._conn)
|
|
48
|
-
"""
|
|
49
|
-
Representation of C_BUILDSTRING
|
|
50
|
-
"""
|
xoa_driver/v2/__init__.py
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import sys
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
if "xoa_driver.internals.hli_v1" in sys.modules:
|
|
5
|
-
raise ImportError("\33[101mUsing xoa_driver and xoa_driver.v2 at the same time is not allowed.\33[0m")
|
|
6
|
-
|
|
7
|
-
from xoa_driver.internals import warn
|
|
8
|
-
|
|
9
|
-
warn.resource(
|
|
10
|
-
"xoa_driver.v2 is under development and it subject to changes without notice.",
|
|
11
|
-
)
|
xoa_driver/v2/misc.py
DELETED
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
#: Other types which are used by ports or as a parameter to attribute set method.
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
from xoa_driver.internals.core.token import Token
|
|
5
|
-
from xoa_driver.internals.commands.subtypes import (
|
|
6
|
-
ArpChunk,
|
|
7
|
-
NdpChunk,
|
|
8
|
-
)
|
|
9
|
-
from xoa_driver.internals.core.transporter.protocol.payload.types import Hex
|
|
10
|
-
|
|
11
|
-
# indices types
|
|
12
|
-
from xoa_driver.internals.hli_v2.indices.connection_group.cg import ConnectionGroupIdx as ConnectionGroup
|
|
13
|
-
from xoa_driver.internals.hli_v2.indices.filter.base_filter import BaseFilterIdx as BasePortFilter
|
|
14
|
-
from xoa_driver.internals.hli_v2.indices.filter.genuine_filter import GenuineFilterIdx as GenuinePortFilter
|
|
15
|
-
from xoa_driver.internals.hli_v2.indices.length_term import LengthTermIdx as LengthTerm
|
|
16
|
-
from xoa_driver.internals.hli_v2.indices.match_term import MatchTermIdx as MatchTerm
|
|
17
|
-
from xoa_driver.internals.hli_v2.indices.port_dataset import PortDatasetIdx as PortDataset
|
|
18
|
-
from xoa_driver.internals.hli_v2.indices.streams.base_stream import BaseStreamIdx as BaseStream
|
|
19
|
-
from xoa_driver.internals.hli_v2.indices.streams.genuine_stream import GenuineStreamIdx as GenuineStream
|
|
20
|
-
from xoa_driver.internals.hli_v2.ports.port_l23.chimera.filter_definition.general import ProtocolSegment
|
|
21
|
-
from xoa_driver.internals.hli_v2.ports.port_l23.chimera.port_emulation import (
|
|
22
|
-
CFlow as ImpairmentFlow,
|
|
23
|
-
StatisticsTotals,
|
|
24
|
-
CPerFlowStats as PerImpairmentFlowStats,
|
|
25
|
-
CLatencyJitterImpairment,
|
|
26
|
-
CDropImpairment,
|
|
27
|
-
CMisorderingImpairment,
|
|
28
|
-
CDuplicationImpairment,
|
|
29
|
-
CCorruptionImpairment,
|
|
30
|
-
CPolicerImpairment,
|
|
31
|
-
CShaperImpairment,
|
|
32
|
-
)
|
|
33
|
-
from xoa_driver.internals.hli_v2.ports.port_l23.chimera.filter_definition.general import ModeBasic as BasicImpairmentFlowFilter
|
|
34
|
-
from xoa_driver.internals.hli_v2.ports.port_l23.chimera.filter_definition.general import ModeExtended as ExtendedImpairmentFlowFilter
|
|
35
|
-
from xoa_driver.internals.hli_v2.ports.port_l23.chimera.pe_custom_distribution import (
|
|
36
|
-
CustomDistributions,
|
|
37
|
-
CustomDistribution,
|
|
38
|
-
)
|
|
39
|
-
from xoa_driver.internals.hli_v2.ports.port_l23.chimera.filter_definition.shadow import (
|
|
40
|
-
FilterDefinitionShadow,
|
|
41
|
-
ModeExtendedS,
|
|
42
|
-
)
|
|
43
|
-
from xoa_driver.internals.hli_v2.ports.port_l23.chimera.filter_definition.general import ModeBasic
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
__all__ = (
|
|
47
|
-
"Token",
|
|
48
|
-
"ArpChunk",
|
|
49
|
-
"NdpChunk",
|
|
50
|
-
"Hex",
|
|
51
|
-
"ConnectionGroup",
|
|
52
|
-
"BasePortFilter",
|
|
53
|
-
"GenuinePortFilter",
|
|
54
|
-
"LengthTerm",
|
|
55
|
-
"MatchTerm",
|
|
56
|
-
"PortDataset",
|
|
57
|
-
"BaseStream",
|
|
58
|
-
"GenuineStream",
|
|
59
|
-
"ImpairmentFlow",
|
|
60
|
-
"BasicImpairmentFlowFilter",
|
|
61
|
-
"ExtendedImpairmentFlowFilter",
|
|
62
|
-
"StatisticsTotals",
|
|
63
|
-
"CustomDistributions",
|
|
64
|
-
"CustomDistribution",
|
|
65
|
-
"PerImpairmentFlowStats",
|
|
66
|
-
"CLatencyJitterImpairment",
|
|
67
|
-
"CDropImpairment",
|
|
68
|
-
"CMisorderingImpairment",
|
|
69
|
-
"CDuplicationImpairment",
|
|
70
|
-
"CCorruptionImpairment",
|
|
71
|
-
"CPolicerImpairment",
|
|
72
|
-
"CShaperImpairment",
|
|
73
|
-
"FilterDefinitionShadow",
|
|
74
|
-
"ModeExtendedS",
|
|
75
|
-
"ModeBasic",
|
|
76
|
-
"ProtocolSegment",
|
|
77
|
-
)
|