Skip to content

Commit

Permalink
Merge pull request #114 from ISISComputingGroup/Ticket_23_Configure_B…
Browse files Browse the repository at this point in the history
…luesky_Logging

Ticket 23 configure bluesky logging
  • Loading branch information
jackbdoughty authored Oct 28, 2024
2 parents 41092da + be3e6c9 commit 7e37dbc
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 1 deletion.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ If you want to run these tests on a developer machine, clone this repo into `C:\


Once these files are in place, run the tests with `run_tests.bat`

You may have to start the IBEX server if it complains - `C:/Instrument/Apps/Epics/start_ibex_server.bat`

### Running all tests

Expand Down
47 changes: 47 additions & 0 deletions test_bluesky.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import os
import sys
import unittest

import bluesky.plan_stubs as bps
Expand All @@ -18,6 +20,7 @@
PeriodGoodFramesNormalizer,
)
from ibex_bluesky_core.devices.simpledae.waiters import GoodFramesWaiter, PeriodGoodFramesWaiter
from ibex_bluesky_core.logger import logger
from ibex_bluesky_core.run_engine import get_run_engine
from ophyd_async.plan_stubs import ensure_connected

Expand All @@ -31,6 +34,11 @@
P3_INIT_VALUE: float = 123.456
P5_INIT_VALUE: float = 987.654321

LOG_FOLDER = os.path.join("C:\\", "instrument", "var", "logs", "bluesky")
LOG_MESSAGE = "Logging something to "
LOG_ENV_PATH = "BLUESKY_LOGS"
LOG_FILE_NAME = "blueskylogs.log"


class TestBluesky(unittest.TestCase):
def setUp(self) -> None:
Expand Down Expand Up @@ -181,6 +189,45 @@ def _plan():
# Assert we successfully set npoints periods
self.assertEqual(g.get_number_periods(), npoints)

def test_GIVEN_logging_is_requested_THEN_the_log_folder_exists(self) -> None:
this_function_name = sys._getframe().f_code.co_name
message = LOG_MESSAGE + this_function_name
# Log invocation.
logger.blueskylogger.info(message)
if LOG_ENV_PATH in os.environ:
assert not os.path.exists(os.environ[LOG_ENV_PATH])

if LOG_ENV_PATH not in os.environ:
assert os.path.exists(LOG_FOLDER)

def test_GIVEN_logging_is_requested_THEN_the_log_file_exists(self) -> None:
log_path = LOG_FOLDER
if LOG_ENV_PATH in os.environ:
log_path = os.environ[LOG_ENV_PATH]

# Log invocation.
this_function_name = sys._getframe().f_code.co_name
message = LOG_MESSAGE + this_function_name
logger.blueskylogger.info(message)
qualified_log_filename = os.path.join(log_path, LOG_FILE_NAME)
assert os.path.exists(qualified_log_filename)

def test_GIVEN_logging_is_requested_THEN_the_log_file_contains_the_message(self) -> None:
log_path = LOG_FOLDER
if LOG_ENV_PATH in os.environ:
log_path = os.environ[LOG_ENV_PATH]

# Log invocation.
this_function_name = sys._getframe().f_code.co_name
message = LOG_MESSAGE + this_function_name
logger.blueskylogger.info(message)
qualified_log_filename = os.path.join(log_path, LOG_FILE_NAME)
assert os.path.exists(qualified_log_filename)
# Open the log file and read its content.
with open(qualified_log_filename, "r") as f:
content = f.read()
assert content.__contains__(message)


if __name__ == "__main__":
unittest.main()

0 comments on commit 7e37dbc

Please sign in to comment.