mirror of
https://github.com/ivan-usov-org/bec.git
synced 2025-04-20 01:40:02 +02:00
refactor!: moved services to bec_server
All services are now in the bec_server package. This is a breaking change as the standalone import of the services will no longer work.
This commit is contained in:
parent
2a7a93ef6e
commit
405d12e74a
@ -39,15 +39,6 @@ stages:
|
||||
- Build
|
||||
- Deploy
|
||||
|
||||
.install-bec-services: &install-bec-services
|
||||
- pip install -e ./device_server
|
||||
- pip install -e ./scan_server
|
||||
- pip install -e ./scan_bundler
|
||||
- pip install -e ./bec_client
|
||||
- pip install -e ./file_writer
|
||||
- pip install -e ./scihub
|
||||
- pip install -e ./data_processing
|
||||
|
||||
.install-bec-services-dev: &install-bec-services-dev
|
||||
- pip install wheel
|
||||
- pip install -e ./bec_server[dev]
|
||||
@ -69,7 +60,7 @@ pylint:
|
||||
- pip install pylint pylint-exit anybadge
|
||||
script:
|
||||
- mkdir ./pylint
|
||||
- pylint ./data_processing/data_processing ./bec_lib/bec_lib ./scan_server/scan_server ./device_server/device_server ./scan_bundler/scan_bundler ./bec_client/bec_client ./file_writer/file_writer --output-format=text | tee ./pylint/pylint.log || pylint-exit $?
|
||||
- pylint ./bec_server/bec_server ./bec_lib/bec_lib ./bec_client/bec_client --output-format=text | tee ./pylint/pylint.log || pylint-exit $?
|
||||
- PYLINT_SCORE=$(sed -n 's/^Your code has been rated at \([-0-9.]*\)\/.*/\1/p' ./pylint/pylint.log)
|
||||
- anybadge --label=Pylint --file=pylint/pylint.svg --value=$PYLINT_SCORE 2=red 4=orange 8=yellow 10=green
|
||||
- echo "Pylint score is $PYLINT_SCORE"
|
||||
@ -123,7 +114,7 @@ tests:
|
||||
- apt-get install -y gcc
|
||||
- apt-get install -y redis
|
||||
- *install-bec-services-dev
|
||||
- coverage run --source=./data_processing/data_processing,./bec_lib/bec_lib,./device_server/device_server,./scan_server/scan_server,./scan_bundler/scan_bundler,./bec_client/bec_client,./file_writer/file_writer,./scihub/scihub --omit=*/bec_client/bec_client/plugins/*,*/bec_client/scripts/*,./bec_lib/bec_lib/tests -m pytest -v --junitxml=report.xml --random-order ./data_processing/tests ./scan_server/tests ./device_server/tests ./scan_bundler/tests ./bec_client/tests/client_tests ./file_writer/tests ./scihub/tests ./bec_lib/tests
|
||||
- coverage run --source=./bec_server/bec_server,./bec_lib/bec_lib,./bec_client/bec_client, --omit=*/bec_server/scan_server/scan_plugins/*,*/bec_client/bec_client/plugins/*,*/bec_client/scripts/*,./bec_lib/bec_lib/tests -m pytest -v --junitxml=report.xml --random-order ./bec_server/tests ./bec_client/tests/client_tests ./bec_lib/tests
|
||||
- coverage report
|
||||
- coverage xml
|
||||
coverage: '/(?i)total.*? (100(?:\.0+)?\%|[1-9]?\d(?:\.\d+)?\%)$/'
|
||||
@ -147,7 +138,7 @@ tests-3.11:
|
||||
- apt-get install -y gcc
|
||||
- apt-get install -y redis
|
||||
- *install-bec-services-dev
|
||||
- pytest -v --junitxml=report.xml --random-order ./data_processing/tests ./bec_lib/tests ./scan_server/tests ./device_server/tests ./scan_bundler/tests ./bec_client/tests/client_tests ./file_writer/tests ./scihub/tests
|
||||
- pytest -v --junitxml=report.xml --random-order ./bec_server/tests ./bec_lib/tests ./bec_client/tests/client_tests
|
||||
|
||||
tests-3.12:
|
||||
extends: "tests-3.11"
|
||||
|
@ -167,15 +167,13 @@ def bec_servers(
|
||||
)
|
||||
|
||||
if _start_servers:
|
||||
from bec_server.service_handler import ServiceHandler
|
||||
from bec_server.bec_server_utils.service_handler import ServiceHandler
|
||||
|
||||
# Start all BEC servers, kill them at the end
|
||||
# when no_tmux=True, 'bec_path' indicate the cwd
|
||||
# for the process (working directory), i.e. where log files will go
|
||||
service_handler = ServiceHandler(
|
||||
bec_path=bec_files_path,
|
||||
config_path=bec_services_config_file_path,
|
||||
no_tmux=True,
|
||||
bec_path=bec_files_path, config_path=bec_services_config_file_path, no_tmux=True
|
||||
)
|
||||
processes = service_handler.start()
|
||||
try:
|
||||
|
@ -26,7 +26,7 @@ but they are executed in a specific order:
|
||||
# import numpy as np
|
||||
|
||||
# from bec_lib import MessageEndpoints, bec_logger, messages
|
||||
# from scan_server.errors import ScanAbortion
|
||||
# from scan_server.scans import FlyScanBase, RequestBase, ScanArgType, ScanBase
|
||||
# from bec_server.scan_server.errors import ScanAbortion
|
||||
# from bec_server.scan_server.scans import FlyScanBase, RequestBase, ScanArgType, ScanBase
|
||||
|
||||
# logger = bec_logger.logger
|
||||
|
@ -1 +1 @@
|
||||
from .launch import main
|
||||
from .bec_server_utils.launch import main
|
||||
|
@ -3,7 +3,7 @@ import os
|
||||
|
||||
import libtmux
|
||||
|
||||
from bec_server.service_handler import ServiceHandler
|
||||
from bec_server.bec_server_utils.service_handler import ServiceHandler
|
||||
|
||||
|
||||
def main():
|
@ -1,8 +1,8 @@
|
||||
import sys
|
||||
from string import Template
|
||||
|
||||
from bec_server.subprocess_launch import subprocess_start, subprocess_stop
|
||||
from bec_server.tmux_launch import tmux_start, tmux_stop
|
||||
from bec_server.bec_server_utils.subprocess_launch import subprocess_start, subprocess_stop
|
||||
from bec_server.bec_server_utils.tmux_launch import tmux_start, tmux_stop
|
||||
|
||||
|
||||
class bcolors:
|
||||
@ -28,10 +28,7 @@ class ServiceHandler:
|
||||
"""
|
||||
|
||||
SERVICES = {
|
||||
"scan_server": {
|
||||
"path": Template("$base_path/scan_server"),
|
||||
"command": "bec-scan-server",
|
||||
},
|
||||
"scan_server": {"path": Template("$base_path/scan_server"), "command": "bec-scan-server"},
|
||||
"scan_bundler": {
|
||||
"path": Template("$base_path/scan_bundler"),
|
||||
"command": "bec-scan-bundler",
|
@ -1,9 +1,9 @@
|
||||
import argparse
|
||||
import threading
|
||||
|
||||
import data_processing
|
||||
import bec_server.data_processing as data_processing
|
||||
from bec_lib import RedisConnector, ServiceConfig, bec_logger
|
||||
from data_processing.lmfit1d_service import LmfitService1D
|
||||
from bec_server.data_processing.lmfit1d_service import LmfitService1D
|
||||
|
||||
logger = bec_logger.logger
|
||||
bec_logger.level = bec_logger.LOGLEVEL.INFO
|
@ -11,7 +11,7 @@ import numpy as np
|
||||
from bec_lib import DeviceBase, MessageEndpoints, bec_logger, messages
|
||||
from bec_lib.lmfit_serializer import deserialize_param_object, serialize_lmfit_params
|
||||
from bec_lib.serialization import MsgpackSerialization
|
||||
from data_processing.dap_service import DAPError, DAPServiceBase
|
||||
from bec_server.data_processing.dap_service import DAPError, DAPServiceBase
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from bec_lib.scan_items import ScanItem
|
@ -15,8 +15,8 @@ if startup is not None:
|
||||
import argparse
|
||||
import threading
|
||||
|
||||
import device_server
|
||||
from bec_lib import RedisConnector, ServiceConfig, bec_logger
|
||||
from bec_server import device_server
|
||||
|
||||
logger = bec_logger.logger
|
||||
bec_logger.level = bec_logger.LOGLEVEL.INFO
|
||||
@ -27,11 +27,7 @@ def main():
|
||||
Launch the BEC device server.
|
||||
"""
|
||||
parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter)
|
||||
parser.add_argument(
|
||||
"--config",
|
||||
default="",
|
||||
help="path to the config file",
|
||||
)
|
||||
parser.add_argument("--config", default="", help="path to the config file")
|
||||
clargs = parser.parse_args()
|
||||
config_path = clargs.config
|
||||
|
@ -12,8 +12,8 @@ from bec_lib import Alarms, BECService, MessageEndpoints, bec_logger, messages
|
||||
from bec_lib.connector import ConnectorBase
|
||||
from bec_lib.device import OnFailure
|
||||
from bec_lib.messages import BECStatus
|
||||
from device_server.devices.devicemanager import DeviceManagerDS
|
||||
from device_server.rpc_mixin import RPCMixin
|
||||
from bec_server.device_server.devices.devicemanager import DeviceManagerDS
|
||||
from bec_server.device_server.rpc_mixin import RPCMixin
|
||||
|
||||
logger = bec_logger.logger
|
||||
|
@ -28,8 +28,8 @@ from bec_lib import (
|
||||
bec_logger,
|
||||
messages,
|
||||
)
|
||||
from device_server.devices.config_update_handler import ConfigUpdateHandler
|
||||
from device_server.devices.device_serializer import get_device_info
|
||||
from bec_server.device_server.devices.config_update_handler import ConfigUpdateHandler
|
||||
from bec_server.device_server.devices.device_serializer import get_device_info
|
||||
|
||||
try:
|
||||
from bec_plugins import devices as plugin_devices
|
@ -6,7 +6,7 @@ from typing import Any
|
||||
import ophyd
|
||||
|
||||
from bec_lib import Alarms, MessageEndpoints, bec_logger, messages
|
||||
from device_server.devices import is_serializable, rgetattr
|
||||
from bec_server.device_server.devices import is_serializable, rgetattr
|
||||
|
||||
logger = bec_logger.logger
|
||||
|
@ -2,8 +2,8 @@ import argparse
|
||||
import os
|
||||
import threading
|
||||
|
||||
import file_writer
|
||||
from bec_lib import RedisConnector, ServiceConfig, bec_logger
|
||||
from bec_server import file_writer
|
||||
|
||||
logger = bec_logger.logger
|
||||
bec_logger.level = bec_logger.LOGLEVEL.INFO
|
||||
@ -14,11 +14,7 @@ def main():
|
||||
Launch the file writer.
|
||||
"""
|
||||
parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter)
|
||||
parser.add_argument(
|
||||
"--config",
|
||||
default="",
|
||||
help="path to the config file",
|
||||
)
|
||||
parser.add_argument("--config", default="", help="path to the config file")
|
||||
clargs = parser.parse_args()
|
||||
config_path = clargs.config
|
||||
|
@ -7,10 +7,10 @@ import os
|
||||
import traceback
|
||||
import typing
|
||||
|
||||
import file_writer_plugins as fwp
|
||||
import h5py
|
||||
import xmltodict
|
||||
|
||||
import bec_server.file_writer_plugins as fwp
|
||||
from bec_lib import MessageEndpoints, bec_logger, messages
|
||||
|
||||
from .merged_dicts import merge_dicts
|
@ -16,7 +16,7 @@ from bec_lib.alarm_handler import Alarms
|
||||
from bec_lib.async_data import AsyncDataHandler
|
||||
from bec_lib.file_utils import FileWriter
|
||||
from bec_lib.redis_connector import MessageObject, RedisConnector
|
||||
from file_writer.file_writer import NexusFileWriter
|
||||
from bec_server.file_writer.file_writer import NexusFileWriter
|
||||
|
||||
logger = bec_logger.logger
|
||||
|
@ -6,7 +6,7 @@ import numpy as np
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from bec_lib import DeviceManagerBase
|
||||
from file_writer.file_writer import HDF5Storage
|
||||
from bec_server.file_writer.file_writer import HDF5Storage
|
||||
|
||||
|
||||
def get_entry(data: dict, name: str, default=None) -> Any:
|
||||
@ -25,10 +25,7 @@ def get_entry(data: dict, name: str, default=None) -> Any:
|
||||
|
||||
|
||||
def NeXus_format(
|
||||
storage: HDF5Storage,
|
||||
data: dict,
|
||||
file_references: dict,
|
||||
device_manager: DeviceManagerBase,
|
||||
storage: HDF5Storage, data: dict, file_references: dict, device_manager: DeviceManagerBase
|
||||
) -> HDF5Storage:
|
||||
"""
|
||||
Prepare the NeXus file format.
|
||||
@ -155,8 +152,7 @@ def NeXus_format(
|
||||
if isinstance(mokev, list):
|
||||
mokev = mokev[0]
|
||||
wavelength = mono.create_dataset(
|
||||
name="wavelength",
|
||||
data=12.3984193 / (mokev.get("mokev").get("value") + 1e-9),
|
||||
name="wavelength", data=12.3984193 / (mokev.get("mokev").get("value") + 1e-9)
|
||||
)
|
||||
wavelength.attrs["units"] = "Angstrom"
|
||||
energy = mono.create_dataset(name="energy", data=mokev.get("mokev").get("value"))
|
||||
@ -195,22 +191,19 @@ def NeXus_format(
|
||||
xbpm4_x_data = xbpm4_x.create_dataset(name="data", data=get_entry(data, "bpm4x"))
|
||||
xbpm4_x_data.attrs["units"] = "NX_DIMENSIONLESS"
|
||||
xbpm4_x.create_dataset(
|
||||
name="description",
|
||||
data="Normalized difference of counts between left and right quadrants.",
|
||||
name="description", data="Normalized difference of counts between left and right quadrants."
|
||||
)
|
||||
xbpm4_y = xbpm4.create_group("XBPM4_y")
|
||||
xbpm4_y_data = xbpm4_y.create_dataset(name="data", data=get_entry(data, "bpm4y"))
|
||||
xbpm4_y_data.attrs["units"] = "NX_DIMENSIONLESS"
|
||||
xbpm4_y.create_dataset(
|
||||
name="description",
|
||||
data="Normalized difference of counts between high and low quadrants.",
|
||||
name="description", data="Normalized difference of counts between high and low quadrants."
|
||||
)
|
||||
xbpm4_skew = xbpm4.create_group("XBPM4_skew")
|
||||
xbpm4_skew_data = xbpm4_skew.create_dataset(name="data", data=get_entry(data, "bpm4z"))
|
||||
xbpm4_skew_data.attrs["units"] = "NX_DIMENSIONLESS"
|
||||
xbpm4_skew.create_dataset(
|
||||
name="description",
|
||||
data="Normalized difference of counts between diagonal quadrants.",
|
||||
name="description", data="Normalized difference of counts between diagonal quadrants."
|
||||
)
|
||||
|
||||
mirror = instrument.create_group("mirror")
|
||||
@ -243,22 +236,19 @@ def NeXus_format(
|
||||
xbpm5_x_data = xbpm5_x.create_dataset(name="data", data=get_entry(data, "bpm5x"))
|
||||
xbpm5_x_data.attrs["units"] = "NX_DIMENSIONLESS"
|
||||
xbpm5_x.create_dataset(
|
||||
name="description",
|
||||
data="Normalized difference of counts between left and right quadrants.",
|
||||
name="description", data="Normalized difference of counts between left and right quadrants."
|
||||
)
|
||||
xbpm5_y = xbpm5.create_group("XBPM5_y")
|
||||
xbpm5_y_data = xbpm5_y.create_dataset(name="data", data=get_entry(data, "bpm5y"))
|
||||
xbpm5_y_data.attrs["units"] = "NX_DIMENSIONLESS"
|
||||
xbpm5_y.create_dataset(
|
||||
name="description",
|
||||
data="Normalized difference of counts between high and low quadrants.",
|
||||
name="description", data="Normalized difference of counts between high and low quadrants."
|
||||
)
|
||||
xbpm5_skew = xbpm5.create_group("XBPM5_skew")
|
||||
xbpm5_skew_data = xbpm5_skew.create_dataset(name="data", data=get_entry(data, "bpm5z"))
|
||||
xbpm5_skew_data.attrs["units"] = "NX_DIMENSIONLESS"
|
||||
xbpm5_skew.create_dataset(
|
||||
name="description",
|
||||
data="Normalized difference of counts between diagonal quadrants.",
|
||||
name="description", data="Normalized difference of counts between diagonal quadrants."
|
||||
)
|
||||
|
||||
slit_2 = instrument.create_group("slit_2")
|
||||
@ -373,8 +363,7 @@ def NeXus_format(
|
||||
rotation_angle = eiger_4.create_dataset(name="rotation_angle", data=0)
|
||||
rotation_angle.attrs["units"] = "degrees"
|
||||
description = eiger_4.create_dataset(
|
||||
name="description",
|
||||
data="Single-photon counting detector, 320 micron-thick Si chip",
|
||||
name="description", data="Single-photon counting detector, 320 micron-thick Si chip"
|
||||
)
|
||||
orientation = eiger_4.create_group("orientation")
|
||||
orientation.attrs["description"] = (
|
||||
@ -401,8 +390,7 @@ def NeXus_format(
|
||||
rotation_angle = eiger9m.create_dataset(name="rotation_angle", data=0)
|
||||
rotation_angle.attrs["units"] = "degrees"
|
||||
description = eiger9m.create_dataset(
|
||||
name="description",
|
||||
data="Eiger9M detector, in-house developed, Paul Scherrer Institute",
|
||||
name="description", data="Eiger9M detector, in-house developed, Paul Scherrer Institute"
|
||||
)
|
||||
orientation = eiger9m.create_group("orientation")
|
||||
orientation.attrs["description"] = (
|
||||
@ -442,9 +430,7 @@ def NeXus_format(
|
||||
orientation.create_dataset(name="transpose", data=1)
|
||||
orientation.create_dataset(name="rot90", data=2)
|
||||
data = pilatus_2.create_ext_link(
|
||||
"data",
|
||||
file_references["pilatus_2"]["path"],
|
||||
"entry/instrument/pilatus_2/data",
|
||||
"data", file_references["pilatus_2"]["path"], "entry/instrument/pilatus_2/data"
|
||||
)
|
||||
|
||||
if (
|
||||
@ -453,9 +439,7 @@ def NeXus_format(
|
||||
and "falcon" in file_references
|
||||
):
|
||||
falcon = instrument.create_ext_link(
|
||||
"falcon",
|
||||
file_references["falcon"]["path"],
|
||||
"entry/instrument/FalconX1",
|
||||
"falcon", file_references["falcon"]["path"], "entry/instrument/FalconX1"
|
||||
)
|
||||
|
||||
return storage
|
@ -4,14 +4,11 @@ from typing import TYPE_CHECKING
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from bec_lib import DeviceManagerBase
|
||||
from file_writer.file_writer import HDF5Storage
|
||||
from bec_server.file_writer.file_writer import HDF5Storage
|
||||
|
||||
|
||||
def NeXus_format(
|
||||
storage: HDF5Storage,
|
||||
data: dict,
|
||||
file_references: dict,
|
||||
device_manager: DeviceManagerBase,
|
||||
storage: HDF5Storage, data: dict, file_references: dict, device_manager: DeviceManagerBase
|
||||
) -> HDF5Storage:
|
||||
"""
|
||||
Prepare the NeXus file format.
|
@ -1,8 +1,8 @@
|
||||
import argparse
|
||||
import threading
|
||||
|
||||
import scan_bundler
|
||||
from bec_lib import RedisConnector, ServiceConfig, bec_logger
|
||||
from bec_server import scan_bundler
|
||||
|
||||
logger = bec_logger.logger
|
||||
bec_logger.level = bec_logger.LOGLEVEL.INFO
|
||||
@ -13,11 +13,7 @@ def main():
|
||||
Launch the scan bundler.
|
||||
"""
|
||||
parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter)
|
||||
parser.add_argument(
|
||||
"--config",
|
||||
default="",
|
||||
help="path to the config file",
|
||||
)
|
||||
parser.add_argument("--config", default="", help="path to the config file")
|
||||
clargs = parser.parse_args()
|
||||
config_path = clargs.config
|
||||
|
0
bec_server/bec_server/scan_server/cli/__init__.py
Normal file
0
bec_server/bec_server/scan_server/cli/__init__.py
Normal file
@ -1,8 +1,8 @@
|
||||
import argparse
|
||||
import threading
|
||||
|
||||
import scan_server
|
||||
from bec_lib import RedisConnector, ServiceConfig, bec_logger
|
||||
from bec_server import scan_server
|
||||
|
||||
logger = bec_logger.logger
|
||||
bec_logger.level = bec_logger.LOGLEVEL.INFO
|
||||
@ -13,20 +13,13 @@ def main():
|
||||
Launch the scan server.
|
||||
"""
|
||||
parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter)
|
||||
parser.add_argument(
|
||||
"--config",
|
||||
default="",
|
||||
help="path to the config file",
|
||||
)
|
||||
parser.add_argument("--config", default="", help="path to the config file")
|
||||
clargs = parser.parse_args()
|
||||
config_path = clargs.config
|
||||
|
||||
config = ServiceConfig(config_path)
|
||||
|
||||
bec_server = scan_server.scan_server.ScanServer(
|
||||
config=config,
|
||||
connector_cls=RedisConnector,
|
||||
)
|
||||
bec_server = scan_server.scan_server.ScanServer(config=config, connector_cls=RedisConnector)
|
||||
try:
|
||||
event = threading.Event()
|
||||
# pylint: disable=E1102
|
@ -25,8 +25,8 @@ import time
|
||||
import numpy as np
|
||||
|
||||
from bec_lib import MessageEndpoints, bec_logger
|
||||
from scan_server.errors import ScanAbortion
|
||||
from scan_server.scans import RequestBase, ScanArgType, ScanBase
|
||||
from bec_server.scan_server.errors import ScanAbortion
|
||||
from bec_server.scan_server.scans import RequestBase, ScanArgType, ScanBase
|
||||
|
||||
MOVEMENT_SCALE_X = np.sin(np.radians(15)) * np.cos(np.radians(30))
|
||||
MOVEMENT_SCALE_Y = np.cos(np.radians(15))
|
@ -25,8 +25,8 @@ import time
|
||||
import numpy as np
|
||||
|
||||
from bec_lib import MessageEndpoints, bec_logger, messages
|
||||
from scan_server.errors import ScanAbortion
|
||||
from scan_server.scans import SyncFlyScanBase
|
||||
from bec_server.scan_server.errors import ScanAbortion
|
||||
from bec_server.scan_server.scans import SyncFlyScanBase
|
||||
|
||||
logger = bec_logger.logger
|
||||
|
@ -1,7 +1,7 @@
|
||||
import time
|
||||
|
||||
from bec_lib import bec_logger
|
||||
from scan_server.scans import ScanArgType, ScanBase, SyncFlyScanBase
|
||||
from bec_server.scan_server.scans import ScanArgType, ScanBase, SyncFlyScanBase
|
||||
|
||||
logger = bec_logger.logger
|
||||
|
@ -23,7 +23,7 @@ but they are executed in a specific order:
|
||||
import time
|
||||
|
||||
from bec_lib import MessageEndpoints, bec_logger
|
||||
from scan_server.scans import AsyncFlyScanBase, ScanAbortion
|
||||
from bec_server.scan_server.scans import AsyncFlyScanBase, ScanAbortion
|
||||
|
||||
logger = bec_logger.logger
|
||||
|
@ -23,7 +23,7 @@ but they are executed in a specific order:
|
||||
import time
|
||||
|
||||
from bec_lib import MessageEndpoints, bec_logger
|
||||
from scan_server.scans import AsyncFlyScanBase
|
||||
from bec_server.scan_server.scans import AsyncFlyScanBase
|
||||
|
||||
logger = bec_logger.logger
|
||||
|
0
bec_server/bec_server/scihub/cli/__init__.py
Normal file
0
bec_server/bec_server/scihub/cli/__init__.py
Normal file
@ -1,8 +1,8 @@
|
||||
import argparse
|
||||
import threading
|
||||
|
||||
import scihub
|
||||
from bec_lib import RedisConnector, ServiceConfig, bec_logger
|
||||
from bec_server import scihub
|
||||
|
||||
logger = bec_logger.logger
|
||||
bec_logger.level = bec_logger.LOGLEVEL.INFO
|
||||
@ -14,11 +14,7 @@ def main():
|
||||
"""
|
||||
|
||||
parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter)
|
||||
parser.add_argument(
|
||||
"--config",
|
||||
default="",
|
||||
help="path to the config file",
|
||||
)
|
||||
parser.add_argument("--config", default="", help="path to the config file")
|
||||
clargs = parser.parse_args()
|
||||
config_path = clargs.config
|
||||
|
@ -15,7 +15,7 @@ from bec_lib.scibec_validator import SciBecValidator
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from bec_lib.device import DeviceBase
|
||||
from scihub.scibec.scibec_connector import SciBecConnector
|
||||
from bec_server.scihub.scibec.scibec_connector import SciBecConnector
|
||||
|
||||
logger = bec_logger.logger
|
||||
|
@ -8,13 +8,13 @@ from py_scibec import SciBecCore
|
||||
|
||||
from bec_lib import MessageEndpoints, bec_logger, messages
|
||||
from bec_lib.connector import ConnectorBase
|
||||
from scihub.repeated_timer import RepeatedTimer
|
||||
from bec_server.scihub.repeated_timer import RepeatedTimer
|
||||
|
||||
from .config_handler import ConfigHandler
|
||||
from .scibec_metadata_handler import SciBecMetadataHandler
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from scihub import SciHub
|
||||
from bec_server.scihub import SciHub
|
||||
|
||||
logger = bec_logger.logger
|
||||
|
@ -13,7 +13,7 @@ logger = bec_logger.logger
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from bec_lib import messages
|
||||
from scihub.scibec import SciBecConnector
|
||||
from bec_server.scihub.scibec import SciBecConnector
|
||||
|
||||
|
||||
class SciBecMetadataHandler:
|
@ -1,7 +1,7 @@
|
||||
from bec_lib import BECService, BECStatus, ServiceConfig
|
||||
from bec_lib.connector import ConnectorBase
|
||||
from scihub.scibec import SciBecConnector
|
||||
from scihub.scilog import SciLogConnector
|
||||
from bec_server.scihub.scibec import SciBecConnector
|
||||
from bec_server.scihub.scilog import SciLogConnector
|
||||
|
||||
|
||||
class SciHub(BECService):
|
@ -7,12 +7,12 @@ import requests
|
||||
from dotenv import dotenv_values
|
||||
|
||||
from bec_lib import MessageEndpoints, RedisConnector, bec_logger, messages
|
||||
from scihub.repeated_timer import RepeatedTimer
|
||||
from bec_server.scihub.repeated_timer import RepeatedTimer
|
||||
|
||||
logger = bec_logger.logger
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from scihub import SciHub
|
||||
from bec_server.scihub import SciHub
|
||||
|
||||
|
||||
class SciLogConnector:
|
@ -1,7 +1,4 @@
|
||||
import os
|
||||
import pathlib
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
from setuptools import setup
|
||||
|
||||
@ -10,56 +7,46 @@ current_path = pathlib.Path(__file__).parent.resolve()
|
||||
__version__ = "1.24.1"
|
||||
|
||||
|
||||
def run_install(setup_args: dict, bec_deps: list, editable=False):
|
||||
"""
|
||||
Run the setup function with the given arguments.
|
||||
|
||||
Args:
|
||||
setup_args (dict): Arguments for the setup function.
|
||||
bec_deps (list): List of tuples with the dependencies of the BEC server.
|
||||
editable (bool, optional): If True, the dependencies are installed in editable mode. Defaults to False.
|
||||
"""
|
||||
if editable:
|
||||
# check if "[dev]" was requested
|
||||
if "dev" in os.environ.get("EXTRAS_REQUIRE", ""):
|
||||
suffix = "[dev]"
|
||||
else:
|
||||
suffix = ""
|
||||
setup(**setup_args)
|
||||
deps = [f"{current_path}/../{dep[1]}/" for dep in bec_deps]
|
||||
for dep in deps:
|
||||
subprocess.run(f"pip install -e {dep}{suffix}", shell=True, check=True)
|
||||
return
|
||||
|
||||
install_deps = [dep[0] for dep in bec_deps]
|
||||
setup_args["install_requires"].extend(install_deps)
|
||||
print(setup_args)
|
||||
setup(**setup_args)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
bec_deps_in = [
|
||||
("bec_lib", "bec_lib"),
|
||||
("bec_ipython_client", "bec_client"),
|
||||
("bec_scan_server", "scan_server"),
|
||||
("bec_scan_bundler", "scan_bundler"),
|
||||
("bec_file_writer", "file_writer"),
|
||||
("bec_dap", "data_processing"),
|
||||
("bec_device_server", "device_server"),
|
||||
("bec_scihub", "scihub"),
|
||||
setup(
|
||||
install_requires=[
|
||||
"bec-lib",
|
||||
"cytoolz",
|
||||
"h5py",
|
||||
"libtmux",
|
||||
"lmfit",
|
||||
"msgpack",
|
||||
"numpy",
|
||||
"ophyd",
|
||||
"ophyd_devices",
|
||||
"pydantic",
|
||||
"py-scibec",
|
||||
"pyyaml",
|
||||
"python-dotenv",
|
||||
"rich",
|
||||
"xmltodict",
|
||||
],
|
||||
extras_require={
|
||||
"dev": [
|
||||
"black",
|
||||
"coverage",
|
||||
"isort",
|
||||
"pytest",
|
||||
"pytest-random-order",
|
||||
"pylint",
|
||||
"pytest-timeout",
|
||||
]
|
||||
|
||||
setup_args_in = {
|
||||
"entry_points": {"console_scripts": ["bec-server = bec_server:main"]},
|
||||
"install_requires": ["libtmux"],
|
||||
"version": __version__,
|
||||
"extras_require": {
|
||||
"dev": ["pytest", "pytest-random-order", "coverage", "black", "isort", "pylint"]
|
||||
},
|
||||
}
|
||||
|
||||
is_local = os.path.dirname(os.path.abspath(__file__)).split("/")[-1] == "bec_server"
|
||||
is_build = "bdist_wheel" in sys.argv
|
||||
|
||||
editable_in = is_local and not is_build
|
||||
run_install(setup_args_in, bec_deps_in, editable=editable_in)
|
||||
entry_points={
|
||||
"console_scripts": [
|
||||
"bec-dap = bec_server.data_processing:main",
|
||||
"bec-device-server = bec_server.device_server:main",
|
||||
"bec-file-writer = bec_server.file_writer:main",
|
||||
"bec-scan-server = bec_server.scan_server:main",
|
||||
"bec-scan-bundler = bec_server.scan_bundler:main",
|
||||
"bec-scihub = bec_server.scihub:main",
|
||||
"bec-server = bec_server:main",
|
||||
]
|
||||
},
|
||||
version=__version__,
|
||||
)
|
||||
|
@ -1,11 +1,11 @@
|
||||
from unittest import mock
|
||||
|
||||
from bec_server.launch import main
|
||||
from bec_server.bec_server_utils.launch import main
|
||||
|
||||
|
||||
def test_main_start():
|
||||
with mock.patch("bec_server.launch.ServiceHandler") as mock_service_handler:
|
||||
with mock.patch("bec_server.launch.argparse") as mock_argparse:
|
||||
with mock.patch("bec_server.bec_server_utils.launch.ServiceHandler") as mock_service_handler:
|
||||
with mock.patch("bec_server.bec_server_utils.launch.argparse") as mock_argparse:
|
||||
mock_argparse.ArgumentParser().parse_args.return_value = mock.MagicMock(
|
||||
command="start", config=None
|
||||
)
|
||||
@ -17,8 +17,8 @@ def test_main_start():
|
||||
|
||||
|
||||
def test_main_stop():
|
||||
with mock.patch("bec_server.launch.ServiceHandler") as mock_service_handler:
|
||||
with mock.patch("bec_server.launch.argparse") as mock_argparse:
|
||||
with mock.patch("bec_server.bec_server_utils.launch.ServiceHandler") as mock_service_handler:
|
||||
with mock.patch("bec_server.bec_server_utils.launch.argparse") as mock_argparse:
|
||||
mock_argparse.ArgumentParser().parse_args.return_value = mock.MagicMock(
|
||||
command="stop", config=None
|
||||
)
|
||||
@ -30,8 +30,8 @@ def test_main_stop():
|
||||
|
||||
|
||||
def test_main_restart():
|
||||
with mock.patch("bec_server.launch.ServiceHandler") as mock_service_handler:
|
||||
with mock.patch("bec_server.launch.argparse") as mock_argparse:
|
||||
with mock.patch("bec_server.bec_server_utils.launch.ServiceHandler") as mock_service_handler:
|
||||
with mock.patch("bec_server.bec_server_utils.launch.argparse") as mock_argparse:
|
||||
mock_argparse.ArgumentParser().parse_args.return_value = mock.MagicMock(
|
||||
command="restart", config=None
|
||||
)
|
||||
@ -43,8 +43,8 @@ def test_main_restart():
|
||||
|
||||
|
||||
def test_main_start_with_config():
|
||||
with mock.patch("bec_server.launch.ServiceHandler") as mock_service_handler:
|
||||
with mock.patch("bec_server.launch.argparse") as mock_argparse:
|
||||
with mock.patch("bec_server.bec_server_utils.launch.ServiceHandler") as mock_service_handler:
|
||||
with mock.patch("bec_server.bec_server_utils.launch.argparse") as mock_argparse:
|
||||
mock_argparse.ArgumentParser().parse_args.return_value = mock.MagicMock(
|
||||
command="start", config="/path/to/config"
|
||||
)
|
||||
@ -56,8 +56,8 @@ def test_main_start_with_config():
|
||||
|
||||
|
||||
def test_main_restart_with_config():
|
||||
with mock.patch("bec_server.launch.ServiceHandler") as mock_service_handler:
|
||||
with mock.patch("bec_server.launch.argparse") as mock_argparse:
|
||||
with mock.patch("bec_server.bec_server_utils.launch.ServiceHandler") as mock_service_handler:
|
||||
with mock.patch("bec_server.bec_server_utils.launch.argparse") as mock_argparse:
|
||||
mock_argparse.ArgumentParser().parse_args.return_value = mock.MagicMock(
|
||||
command="restart", config="/path/to/config"
|
||||
)
|
@ -1,13 +1,13 @@
|
||||
from unittest import mock
|
||||
|
||||
from bec_server.service_handler import ServiceHandler
|
||||
from bec_server.bec_server_utils.service_handler import ServiceHandler
|
||||
|
||||
|
||||
def test_service_handler():
|
||||
bec_path = "/path/to/bec"
|
||||
config_path = "/path/to/config"
|
||||
|
||||
with mock.patch("bec_server.service_handler.sys") as mock_sys:
|
||||
with mock.patch("bec_server.bec_server_utils.service_handler.sys") as mock_sys:
|
||||
mock_sys.platform = "linux"
|
||||
service_handler = ServiceHandler(bec_path, config_path)
|
||||
assert service_handler.interface == "tmux"
|
||||
@ -17,17 +17,19 @@ def test_service_handler_start():
|
||||
bec_path = "/path/to/bec"
|
||||
config_path = "/path/to/config"
|
||||
|
||||
with mock.patch("bec_server.service_handler.sys") as mock_sys:
|
||||
with mock.patch("bec_server.bec_server_utils.service_handler.sys") as mock_sys:
|
||||
mock_sys.platform = "linux"
|
||||
service_handler = ServiceHandler(bec_path, config_path)
|
||||
|
||||
with mock.patch("bec_server.service_handler.tmux_start") as mock_tmux_start:
|
||||
with mock.patch(
|
||||
"bec_server.bec_server_utils.service_handler.tmux_start"
|
||||
) as mock_tmux_start:
|
||||
service_handler.start()
|
||||
mock_tmux_start.assert_called_once_with(bec_path, config_path, service_handler.SERVICES)
|
||||
|
||||
|
||||
def test_service_handler_stop():
|
||||
with mock.patch("bec_server.service_handler.tmux_stop") as mock_tmux_stop:
|
||||
with mock.patch("bec_server.bec_server_utils.service_handler.tmux_stop") as mock_tmux_stop:
|
||||
service_handler = ServiceHandler("/path/to/bec", "/path/to/config")
|
||||
service_handler.stop()
|
||||
mock_tmux_stop.assert_called_once()
|
||||
@ -37,12 +39,14 @@ def test_service_handler_restart():
|
||||
bec_path = "/path/to/bec"
|
||||
config_path = "/path/to/config"
|
||||
|
||||
with mock.patch("bec_server.service_handler.sys") as mock_sys:
|
||||
with mock.patch("bec_server.bec_server_utils.service_handler.sys") as mock_sys:
|
||||
mock_sys.platform = "linux"
|
||||
service_handler = ServiceHandler(bec_path, config_path)
|
||||
|
||||
with mock.patch("bec_server.service_handler.tmux_stop") as mock_tmux_stop:
|
||||
with mock.patch("bec_server.service_handler.tmux_start") as mock_tmux_start:
|
||||
with mock.patch("bec_server.bec_server_utils.service_handler.tmux_stop") as mock_tmux_stop:
|
||||
with mock.patch(
|
||||
"bec_server.bec_server_utils.service_handler.tmux_start"
|
||||
) as mock_tmux_start:
|
||||
service_handler.restart()
|
||||
mock_tmux_stop.assert_called_once()
|
||||
mock_tmux_start.assert_called_once_with(
|
@ -1,11 +1,11 @@
|
||||
from string import Template
|
||||
from unittest import mock
|
||||
|
||||
from bec_server.tmux_launch import tmux_start, tmux_stop
|
||||
from bec_server.bec_server_utils.tmux_launch import tmux_start, tmux_stop
|
||||
|
||||
|
||||
def test_tmux_start():
|
||||
with mock.patch("bec_server.tmux_launch.libtmux") as mock_libtmux_server:
|
||||
with mock.patch("bec_server.bec_server_utils.tmux_launch.libtmux") as mock_libtmux_server:
|
||||
tmux_start(
|
||||
"/path/to/bec",
|
||||
"/path/to/config",
|
||||
@ -33,7 +33,7 @@ def test_tmux_start():
|
||||
|
||||
|
||||
def test_tmux_stop_without_sessions():
|
||||
with mock.patch("bec_server.tmux_launch.libtmux") as mock_libtmux_server:
|
||||
with mock.patch("bec_server.bec_server_utils.tmux_launch.libtmux") as mock_libtmux_server:
|
||||
mock_libtmux_server.Server().sessions.filter.return_value = []
|
||||
tmux_stop()
|
||||
mock_libtmux_server.Server().kill_server.assert_not_called()
|
||||
@ -41,7 +41,7 @@ def test_tmux_stop_without_sessions():
|
||||
|
||||
def test_tmux_stop_with_sessions():
|
||||
session = mock.MagicMock()
|
||||
with mock.patch("bec_server.tmux_launch.libtmux") as mock_libtmux_server:
|
||||
with mock.patch("bec_server.bec_server_utils.tmux_launch.libtmux") as mock_libtmux_server:
|
||||
mock_libtmux_server.Server().sessions.filter.return_value = [session]
|
||||
tmux_stop()
|
||||
session.kill_session.assert_called_once()
|
@ -0,0 +1,40 @@
|
||||
from unittest import mock
|
||||
|
||||
from bec_server.data_processing.cli.launch import main
|
||||
|
||||
|
||||
def test_main():
|
||||
with mock.patch("bec_server.data_processing.cli.launch.argparse.ArgumentParser") as mock_parser:
|
||||
with mock.patch("bec_server.data_processing.cli.launch.ServiceConfig") as mock_config:
|
||||
with mock.patch(
|
||||
"bec_server.data_processing.dap_server.DAPServer"
|
||||
) as mock_data_processing:
|
||||
with mock.patch(
|
||||
"bec_server.data_processing.cli.launch.threading.Event"
|
||||
) as mock_event:
|
||||
main()
|
||||
mock_parser.assert_called_once()
|
||||
mock_config.assert_called_once()
|
||||
mock_data_processing.assert_called_once()
|
||||
mock_event.assert_called_once()
|
||||
|
||||
|
||||
def test_main_shutdown():
|
||||
with mock.patch("bec_server.data_processing.cli.launch.argparse.ArgumentParser") as mock_parser:
|
||||
with mock.patch("bec_server.data_processing.cli.launch.ServiceConfig") as mock_config:
|
||||
with mock.patch(
|
||||
"bec_server.data_processing.dap_server.DAPServer"
|
||||
) as mock_data_processing:
|
||||
with mock.patch(
|
||||
"bec_server.data_processing.cli.launch.threading.Event"
|
||||
) as mock_event:
|
||||
mock_event.return_value.wait.side_effect = KeyboardInterrupt()
|
||||
try:
|
||||
main()
|
||||
except KeyboardInterrupt:
|
||||
pass
|
||||
mock_parser.assert_called_once()
|
||||
mock_config.assert_called_once()
|
||||
mock_data_processing.assert_called_once()
|
||||
mock_event.assert_called_once()
|
||||
mock_data_processing.return_value.shutdown.assert_called_once()
|
@ -1,8 +1,8 @@
|
||||
from unittest import mock
|
||||
|
||||
from bec_lib import ServiceConfig
|
||||
from data_processing.dap_server import DAPServer
|
||||
from data_processing.dap_service import DAPServiceBase
|
||||
from bec_server.data_processing.dap_server import DAPServer
|
||||
from bec_server.data_processing.dap_service import DAPServiceBase
|
||||
|
||||
|
||||
def test_dap_server():
|
@ -4,8 +4,8 @@ import pytest
|
||||
|
||||
from bec_lib import messages
|
||||
from bec_lib.redis_connector import MessageObject
|
||||
from data_processing.dap_service import DAPServiceBase
|
||||
from data_processing.dap_service_manager import DAPServiceManager
|
||||
from bec_server.data_processing.dap_service import DAPServiceBase
|
||||
from bec_server.data_processing.dap_service_manager import DAPServiceManager
|
||||
|
||||
|
||||
class ServiceMock(DAPServiceBase):
|
@ -4,8 +4,8 @@ import lmfit
|
||||
import numpy as np
|
||||
import pytest
|
||||
|
||||
from data_processing.dap_service import DAPError
|
||||
from data_processing.lmfit1d_service import LmfitService1D
|
||||
from bec_server.data_processing.dap_service import DAPError
|
||||
from bec_server.data_processing.lmfit1d_service import LmfitService1D
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
@ -113,7 +113,7 @@ def test_LmfitService1D_on_scan_status_update(lmfit_service):
|
||||
|
||||
|
||||
def test_LmfitService1D_on_scan_status_update_finishes_on_closed_scans(lmfit_service):
|
||||
with mock.patch("data_processing.lmfit1d_service.threading") as threading:
|
||||
with mock.patch("bec_server.data_processing.lmfit1d_service.threading") as threading:
|
||||
event = threading.Event()
|
||||
lmfit_service.finish_event = event
|
||||
with mock.patch.object(lmfit_service, "process_until_finished") as process_until_finished:
|
@ -8,8 +8,8 @@ from test_device_manager_ds import device_manager
|
||||
import bec_lib
|
||||
from bec_lib import messages
|
||||
from bec_lib.tests.utils import ConnectorMock, load_test_config
|
||||
from device_server.devices.config_update_handler import ConfigUpdateHandler
|
||||
from device_server.devices.devicemanager import DeviceConfigError, DeviceManagerDS
|
||||
from bec_server.device_server.devices.config_update_handler import ConfigUpdateHandler
|
||||
from bec_server.device_server.devices.devicemanager import DeviceConfigError, DeviceManagerDS
|
||||
|
||||
dir_path = os.path.dirname(bec_lib.__file__)
|
||||
|
@ -10,7 +10,7 @@ import yaml
|
||||
import bec_lib
|
||||
from bec_lib import MessageEndpoints, messages
|
||||
from bec_lib.tests.utils import ConnectorMock, create_session_from_config
|
||||
from device_server.devices.devicemanager import DeviceManagerDS
|
||||
from bec_server.device_server.devices.devicemanager import DeviceManagerDS
|
||||
|
||||
# pylint: disable=missing-function-docstring
|
||||
# pylint: disable=protected-access
|
@ -3,7 +3,7 @@ from ophyd import Component as Cpt
|
||||
from ophyd import Device, Signal
|
||||
|
||||
from bec_lib.bec_errors import DeviceConfigError
|
||||
from device_server.devices.device_serializer import get_device_info
|
||||
from bec_server.device_server.devices.device_serializer import get_device_info
|
||||
|
||||
|
||||
class DummyDeviceWithConflictingSignalNames(Device):
|
@ -10,8 +10,8 @@ from bec_lib import Alarms, MessageEndpoints, ServiceConfig, messages
|
||||
from bec_lib.messages import BECStatus
|
||||
from bec_lib.redis_connector import MessageObject
|
||||
from bec_lib.tests.utils import ConnectorMock
|
||||
from device_server import DeviceServer
|
||||
from device_server.device_server import InvalidDeviceError
|
||||
from bec_server.device_server import DeviceServer
|
||||
from bec_server.device_server.device_server import InvalidDeviceError
|
||||
|
||||
# pylint: disable=missing-function-docstring
|
||||
# pylint: disable=protected-access
|
@ -0,0 +1,32 @@
|
||||
from unittest import mock
|
||||
|
||||
from bec_server.device_server.cli.launch import main
|
||||
|
||||
|
||||
def test_main():
|
||||
with mock.patch("bec_server.device_server.cli.launch.argparse.ArgumentParser") as mock_parser:
|
||||
with mock.patch("bec_server.device_server.cli.launch.ServiceConfig") as mock_config:
|
||||
with mock.patch("bec_server.device_server.DeviceServer") as mock_device_server:
|
||||
with mock.patch(
|
||||
"bec_server.device_server.cli.launch.threading.Event"
|
||||
) as mock_event:
|
||||
main()
|
||||
mock_parser.assert_called_once()
|
||||
mock_config.assert_called_once()
|
||||
mock_device_server.assert_called_once()
|
||||
mock_event.assert_called_once()
|
||||
|
||||
|
||||
def test_main_shutdown():
|
||||
with mock.patch("bec_server.device_server.cli.launch.argparse.ArgumentParser") as mock_parser:
|
||||
with mock.patch("bec_server.device_server.cli.launch.ServiceConfig") as mock_config:
|
||||
with mock.patch("bec_server.device_server.DeviceServer") as mock_device_server:
|
||||
with mock.patch(
|
||||
"bec_server.device_server.cli.launch.threading.Event"
|
||||
) as mock_event:
|
||||
mock_event.return_value.wait.side_effect = KeyboardInterrupt
|
||||
main()
|
||||
mock_parser.assert_called_once()
|
||||
mock_config.assert_called_once()
|
||||
mock_device_server.assert_called_once()
|
||||
mock_event.assert_called_once()
|
@ -6,7 +6,7 @@ import pytest
|
||||
from ophyd import Device, Kind, Signal, Staged, StatusBase
|
||||
|
||||
from bec_lib import Alarms, MessageEndpoints, messages
|
||||
from device_server.rpc_mixin import RPCMixin
|
||||
from bec_server.device_server.rpc_mixin import RPCMixin
|
||||
|
||||
|
||||
@pytest.fixture
|
@ -5,14 +5,14 @@ from unittest import mock
|
||||
import h5py
|
||||
import numpy as np
|
||||
import pytest
|
||||
from file_writer_plugins.cSAXS import NeXus_format as cSAXS_Nexus_format
|
||||
from test_file_writer_manager import file_writer_manager_mock
|
||||
|
||||
import file_writer
|
||||
from bec_lib.tests.fixtures import dm_with_devices
|
||||
from file_writer import NexusFileWriter, NeXusFileXMLWriter
|
||||
from file_writer.file_writer import HDF5Storage
|
||||
from file_writer.file_writer_manager import ScanStorage
|
||||
from bec_server import file_writer
|
||||
from bec_server.file_writer import NexusFileWriter, NeXusFileXMLWriter
|
||||
from bec_server.file_writer.file_writer import HDF5Storage
|
||||
from bec_server.file_writer.file_writer_manager import ScanStorage
|
||||
from bec_server.file_writer_plugins.cSAXS import NeXus_format as cSAXS_Nexus_format
|
||||
|
||||
dir_path = os.path.dirname(file_writer.__file__)
|
||||
|
||||
@ -24,18 +24,6 @@ def file_writer_manager_mock_with_dm(file_writer_manager_mock, dm_with_devices):
|
||||
yield file_writer
|
||||
|
||||
|
||||
def test_nexus_file_xml_writer(file_writer_manager_mock_with_dm):
|
||||
file_manager = file_writer_manager_mock_with_dm
|
||||
file_writer = NeXusFileXMLWriter(file_manager)
|
||||
file_writer.configure(
|
||||
layout_file=os.path.abspath(os.path.join(dir_path, "../layout_cSAXS_NXsas.xml"))
|
||||
)
|
||||
with mock.patch.object(
|
||||
file_writer, "_create_device_data_storage", return_value={"samx": [0, 1, 2]}
|
||||
):
|
||||
file_writer.write("./test.h5", {})
|
||||
|
||||
|
||||
def test_csaxs_nexus_format(file_writer_manager_mock_with_dm):
|
||||
file_manager = file_writer_manager_mock_with_dm
|
||||
writer_storage = cSAXS_Nexus_format(
|
@ -1,13 +1,13 @@
|
||||
from unittest import mock
|
||||
|
||||
from file_writer.cli.launch import main
|
||||
from bec_server.file_writer.cli.launch import main
|
||||
|
||||
|
||||
def test_main():
|
||||
with mock.patch("file_writer.cli.launch.argparse.ArgumentParser") as mock_parser:
|
||||
with mock.patch("file_writer.cli.launch.ServiceConfig") as mock_config:
|
||||
with mock.patch("file_writer.FileWriterManager") as mock_file_writer:
|
||||
with mock.patch("file_writer.cli.launch.threading.Event") as mock_event:
|
||||
with mock.patch("bec_server.file_writer.cli.launch.argparse.ArgumentParser") as mock_parser:
|
||||
with mock.patch("bec_server.file_writer.cli.launch.ServiceConfig") as mock_config:
|
||||
with mock.patch("bec_server.file_writer.FileWriterManager") as mock_file_writer:
|
||||
with mock.patch("bec_server.file_writer.cli.launch.threading.Event") as mock_event:
|
||||
main()
|
||||
mock_parser.assert_called_once()
|
||||
mock_config.assert_called_once()
|
||||
@ -16,10 +16,10 @@ def test_main():
|
||||
|
||||
|
||||
def test_main_shutdown():
|
||||
with mock.patch("file_writer.cli.launch.argparse.ArgumentParser") as mock_parser:
|
||||
with mock.patch("file_writer.cli.launch.ServiceConfig") as mock_config:
|
||||
with mock.patch("file_writer.FileWriterManager") as mock_file_writer:
|
||||
with mock.patch("file_writer.cli.launch.threading.Event") as mock_event:
|
||||
with mock.patch("bec_server.file_writer.cli.launch.argparse.ArgumentParser") as mock_parser:
|
||||
with mock.patch("bec_server.file_writer.cli.launch.ServiceConfig") as mock_config:
|
||||
with mock.patch("bec_server.file_writer.FileWriterManager") as mock_file_writer:
|
||||
with mock.patch("bec_server.file_writer.cli.launch.threading.Event") as mock_event:
|
||||
mock_event.return_value.wait.side_effect = KeyboardInterrupt()
|
||||
try:
|
||||
main()
|
@ -13,9 +13,9 @@ from bec_lib.logger import bec_logger
|
||||
from bec_lib.messages import BECStatus
|
||||
from bec_lib.redis_connector import MessageObject
|
||||
from bec_lib.tests.utils import ConnectorMock, create_session_from_config, get_device_info_mock
|
||||
from file_writer import FileWriterManager
|
||||
from file_writer.file_writer import FileWriter
|
||||
from file_writer.file_writer_manager import ScanStorage
|
||||
from bec_server.file_writer import FileWriterManager
|
||||
from bec_server.file_writer.file_writer import FileWriter
|
||||
from bec_server.file_writer.file_writer_manager import ScanStorage
|
||||
|
||||
# pylint: disable=missing-function-docstring
|
||||
# pylint: disable=protected-access
|
@ -8,7 +8,7 @@ import bec_lib
|
||||
from bec_lib import DeviceManagerBase, ServiceConfig, bec_logger, messages
|
||||
from bec_lib.messages import BECStatus
|
||||
from bec_lib.tests.utils import ConnectorMock, create_session_from_config, get_device_info_mock
|
||||
from scan_bundler import ScanBundler
|
||||
from bec_server.scan_bundler import ScanBundler
|
||||
|
||||
# overwrite threads_check fixture from bec_lib,
|
||||
# to have it in autouse
|
@ -3,7 +3,7 @@ from unittest import mock
|
||||
import pytest
|
||||
|
||||
from bec_lib import MessageEndpoints, messages
|
||||
from scan_bundler.bec_emitter import BECEmitter
|
||||
from bec_server.scan_bundler.bec_emitter import BECEmitter
|
||||
|
||||
|
||||
@pytest.fixture
|
@ -4,7 +4,7 @@ import msgpack
|
||||
import pytest
|
||||
|
||||
from bec_lib import MessageEndpoints
|
||||
from scan_bundler.bluesky_emitter import BlueskyEmitter
|
||||
from bec_server.scan_bundler.bluesky_emitter import BlueskyEmitter
|
||||
|
||||
|
||||
@pytest.fixture
|
@ -3,7 +3,7 @@ from unittest import mock
|
||||
import pytest
|
||||
|
||||
from bec_lib import messages
|
||||
from scan_bundler.emitter import EmitterBase
|
||||
from bec_server.scan_bundler.emitter import EmitterBase
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
@ -582,7 +582,7 @@ def test_send_scan_point(scan_bundler_mock, scan_id, point_id, sent):
|
||||
sb.sync_storage[scan_id] = {"sent": set([1])}
|
||||
sb.sync_storage[scan_id][point_id] = {}
|
||||
with mock.patch.object(sb, "run_emitter") as emitter:
|
||||
with mock.patch("scan_bundler.scan_bundler.logger") as logger:
|
||||
with mock.patch("bec_server.scan_bundler.scan_bundler.logger") as logger:
|
||||
sb._send_scan_point(scan_id, point_id)
|
||||
emitter.assert_called_once_with("on_scan_point_emit", scan_id, point_id)
|
||||
if sent:
|
||||
@ -591,7 +591,7 @@ def test_send_scan_point(scan_bundler_mock, scan_id, point_id, sent):
|
||||
|
||||
def test_run_emitter(scan_bundler_mock):
|
||||
sb = scan_bundler_mock
|
||||
with mock.patch("scan_bundler.scan_bundler.logger") as logger:
|
||||
with mock.patch("bec_server.scan_bundler.scan_bundler.logger") as logger:
|
||||
sb.run_emitter("on_init", "jlaksjd", "jlkasjd")
|
||||
logger.error.assert_called()
|
||||
|
@ -1,13 +1,13 @@
|
||||
from unittest import mock
|
||||
|
||||
from scan_bundler.cli.launch import main
|
||||
from bec_server.scan_bundler.cli.launch import main
|
||||
|
||||
|
||||
def test_main():
|
||||
with mock.patch("scan_bundler.cli.launch.argparse.ArgumentParser") as mock_parser:
|
||||
with mock.patch("scan_bundler.cli.launch.ServiceConfig") as mock_config:
|
||||
with mock.patch("scan_bundler.ScanBundler") as mock_scan_bundler:
|
||||
with mock.patch("scan_bundler.cli.launch.threading.Event") as mock_event:
|
||||
with mock.patch("bec_server.scan_bundler.cli.launch.argparse.ArgumentParser") as mock_parser:
|
||||
with mock.patch("bec_server.scan_bundler.cli.launch.ServiceConfig") as mock_config:
|
||||
with mock.patch("bec_server.scan_bundler.ScanBundler") as mock_scan_bundler:
|
||||
with mock.patch("bec_server.scan_bundler.cli.launch.threading.Event") as mock_event:
|
||||
main()
|
||||
mock_parser.assert_called_once()
|
||||
mock_config.assert_called_once()
|
||||
@ -16,10 +16,10 @@ def test_main():
|
||||
|
||||
|
||||
def test_main_shutdown():
|
||||
with mock.patch("scan_bundler.cli.launch.argparse.ArgumentParser") as mock_parser:
|
||||
with mock.patch("scan_bundler.cli.launch.ServiceConfig") as mock_config:
|
||||
with mock.patch("scan_bundler.ScanBundler") as mock_scan_bundler:
|
||||
with mock.patch("scan_bundler.cli.launch.threading.Event") as mock_event:
|
||||
with mock.patch("bec_server.scan_bundler.cli.launch.argparse.ArgumentParser") as mock_parser:
|
||||
with mock.patch("bec_server.scan_bundler.cli.launch.ServiceConfig") as mock_config:
|
||||
with mock.patch("bec_server.scan_bundler.ScanBundler") as mock_scan_bundler:
|
||||
with mock.patch("bec_server.scan_bundler.cli.launch.threading.Event") as mock_event:
|
||||
mock_event.return_value.wait.side_effect = KeyboardInterrupt()
|
||||
try:
|
||||
main()
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user