Skip to content
This repository was archived by the owner on Mar 11, 2026. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Jenkinsfile
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ pipeline {
goto ERROR
)
C:/Instrument/Apps/Python/python.exe run_tests.py || echo "running tests failed."
C:/Instrument/Apps/Python3/python.exe run_tests.py || echo "running tests failed."
"""
}
}
Expand Down
3 changes: 2 additions & 1 deletion block.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,11 @@
Classes for Blocks
"""

from builtins import object
from block_utils import format_block_value


class Block:
class Block(object):
"""
Class holding Block details. Used for displaying in dataweb
"""
Expand Down
2 changes: 1 addition & 1 deletion block_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ def format_block_value(val, precision):
assert small_number_threshold < big_number_threshold

# No precision specified = do not format.
if precision is None or precision < 0:
if precision is None or not isinstance(precision, int) or precision < 0:
return u"{}".format(val)
try:
float_val = float(val)
Expand Down
6 changes: 3 additions & 3 deletions external_webpage/data_source_reader.py
Original file line number Diff line number Diff line change
Expand Up @@ -101,9 +101,9 @@ def read_config(self):
"""

# read config
page = requests.get('http://%s:%s/' % (self._host, PORT_CONFIG))
corrected_page = page.content\
.replace("'", '"')\
page = requests.get('http://{}:{}/'.format(self._host, PORT_CONFIG))
content = page.content.decode("utf-8")
corrected_page = content.replace("'", '"')\
.replace("None", "null")\
.replace("True", "true")\
.replace("False", "false")
Expand Down
4 changes: 3 additions & 1 deletion external_webpage/instrument_information_collator.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@
Classes getting external resources from an instrument and formating them for the info page.
"""

from builtins import str
from builtins import object
import logging

from block_utils import (format_blocks, set_rc_values_for_blocks)
Expand Down Expand Up @@ -87,7 +89,7 @@ def block_is_visible(self, block_name):
return True


class InstrumentInformationCollator:
class InstrumentInformationCollator(object):
"""
Collect instrument information and summarise as a dictionary.
"""
Expand Down
2 changes: 2 additions & 0 deletions external_webpage/instrument_scapper.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
from builtins import str
from builtins import range
import logging
import traceback
from threading import Thread, Event, RLock
Expand Down
1 change: 1 addition & 0 deletions external_webpage/request_handler_utils.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
from builtins import str
import re
from collections import OrderedDict

Expand Down
6 changes: 4 additions & 2 deletions external_webpage/web_page_parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@
Classes for parsing web pages
"""

from builtins import str
from builtins import object
import logging

import re
Expand Down Expand Up @@ -90,9 +92,9 @@ def _create_block_from_channel(self, channel):
if connected:
units = current_value.get("Units", "")

precision = unicode(current_value.get("Precision", ""))
precision = str(current_value.get("Precision", ""))

value = unicode(current_value["Value"])
value = str(current_value["Value"])

replaced = True
while replaced:
Expand Down
7 changes: 5 additions & 2 deletions external_webpage/web_scrapper_manager.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
"""
Relation to web scrapper management.
"""
from __future__ import print_function
from builtins import range
from builtins import object
import json
import logging
import zlib
Expand Down Expand Up @@ -190,7 +193,7 @@ def _is_scrapper_in_inst_list(self, inst_list, scrapper):
Returns: True if in; False otherwise

"""
for name, host in inst_list.items():
for name, host in list(inst_list.items()):
if scrapper.is_instrument(name, host):
return True
return False
Expand All @@ -204,7 +207,7 @@ def _scrapper_to_start(self, instruments):
Returns:

"""
for name, host in instruments.items():
for name, host in list(instruments.items()):
for scrapper in self.scrappers:
if scrapper.is_instrument(name, host):
break
Expand Down
5 changes: 3 additions & 2 deletions run_tests.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
from __future__ import print_function
# This file is part of the ISIS IBEX application.
# Copyright (C) 2017 Science & Technology Facilities Council.
# All rights reserved.
Expand Down Expand Up @@ -37,10 +38,10 @@
test_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), "tests"))
test_suite = unittest.TestLoader().discover(test_dir, pattern="test_*.py")

print "\n\n------ BEGINNING JSON Bourne UNIT TESTS ------"
print("\n\n------ BEGINNING JSON Bourne UNIT TESTS ------")
ret_vals = list()
ret_vals.append(xmlrunner.XMLTestRunner(output=xml_dir).run(test_suite))
print "------ UNIT TESTS COMPLETE ------\n\n"
print("------ UNIT TESTS COMPLETE ------\n\n")

# Return failure exit code if a test failed
sys.exit(False in ret_vals)
3 changes: 2 additions & 1 deletion tests/data_mother.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
from builtins import object
class ArchiveMother(object):
"""
Data mother for JSON objects.
Expand Down Expand Up @@ -50,7 +51,7 @@ def create_channel(name=None, is_connected=True, value=u"0.000", alarm=u"", unit
u'State': True}


class ConfigMother():
class ConfigMother(object):

@staticmethod
def create_config(name="conf", blocks=None, groups=None):
Expand Down
74 changes: 37 additions & 37 deletions tests/test_block_utils.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-

from builtins import str
import os
import sys

Expand Down Expand Up @@ -114,7 +115,7 @@ def test_format_blocks_with_empty_dict(self):
formatted_blocks = format_blocks(test_blocks)

#Assert
self.assertEquals(formatted_blocks, expected_result)
self.assertEqual(formatted_blocks, expected_result)

def test_GIVEN_dict_of_ordered_blocks_WHEN_formatted_blocks_called_THEN_return_same_block_order(self):
#Arrange
Expand All @@ -130,7 +131,7 @@ def test_GIVEN_dict_of_ordered_blocks_WHEN_formatted_blocks_called_THEN_return_s
formatted_blocks = format_blocks(test_blocks)

#Assert
self.assertListEqual(expected_order_blocks.keys(), formatted_blocks.keys())
self.assertSequenceEqual(expected_order_blocks.keys(), formatted_blocks.keys())


def test_shorten_title_for_default_case(self):
Expand All @@ -141,7 +142,7 @@ def test_shorten_title_for_default_case(self):
shortened_title = shorten_title(test_pv)

#Assert
self.assertEquals(shortened_title, "COUNTRATE.VAL")
self.assertEqual(shortened_title, "COUNTRATE.VAL")

def test_shorten_title_with_rc_in_range(self):
#Arrange
Expand All @@ -151,7 +152,7 @@ def test_shorten_title_with_rc_in_range(self):
shortened_title = shorten_title(test_pv)

#Assert
self.assertEquals(shortened_title, "NEW_BLOCK:RC:INRANGE.VAL")
self.assertEqual(shortened_title, "NEW_BLOCK:RC:INRANGE.VAL")

def test_shorten_title_with_rc_enabled(self):
# Arrange
Expand All @@ -161,7 +162,7 @@ def test_shorten_title_with_rc_enabled(self):
shortened_title = shorten_title(test_pv)

# Assert
self.assertEquals(shortened_title, "NEW_BLOCK:RC:ENABLE.VAL")
self.assertEqual(shortened_title, "NEW_BLOCK:RC:ENABLE.VAL")

def test_shorten_title_with_rc_in_range(self):
# Arrange
Expand All @@ -171,7 +172,7 @@ def test_shorten_title_with_rc_in_range(self):
shortened_title = shorten_title(test_pv)

# Assert
self.assertEquals(shortened_title, "OLD_BLOCK:RC:INRANGE.VAL")
self.assertEqual(shortened_title, "OLD_BLOCK:RC:INRANGE.VAL")

def test_shorten_title_with_empty_string(self):
# Arrange
Expand All @@ -181,7 +182,7 @@ def test_shorten_title_with_empty_string(self):
shortened_title = shorten_title(test_pv)

# Assert
self.assertEquals(shortened_title, "")
self.assertEqual(shortened_title, "")

def test_shorten_title_with_bad_rc_value(self):
# Arrange
Expand All @@ -191,7 +192,7 @@ def test_shorten_title_with_bad_rc_value(self):
shortened_title = shorten_title(test_pv)

# Assert
self.assertEquals(shortened_title, "OUTRANGE.VAL")
self.assertEqual(shortened_title, "OUTRANGE.VAL")

def test_shorten_title_with_malformed_input_end_of_title(self):
# Arrange
Expand All @@ -201,7 +202,7 @@ def test_shorten_title_with_malformed_input_end_of_title(self):
shortened_title = shorten_title(test_pv)

# Assert
self.assertEquals(shortened_title, "INRANGE.VAL")
self.assertEqual(shortened_title, "INRANGE.VAL")

def test_shorten_title_with_malformed_input_rc_value(self):
# Arrange
Expand All @@ -211,7 +212,7 @@ def test_shorten_title_with_malformed_input_rc_value(self):
shortened_title = shorten_title(test_pv)

# Assert
self.assertEquals(shortened_title, "RC:INRANGE.VAL")
self.assertEqual(shortened_title, "RC:INRANGE.VAL")

def test_shorten_title_rc_in_pv_doesnt_count(self):
# Arrange
Expand All @@ -221,7 +222,7 @@ def test_shorten_title_rc_in_pv_doesnt_count(self):
shortened_title = shorten_title(test_pv)

# Assert
self.assertEquals(shortened_title, "RC.VAL")
self.assertEqual(shortened_title, "RC.VAL")

def test_shorten_title_larmor_block_high_rc(self):
# Arrange
Expand All @@ -231,7 +232,7 @@ def test_shorten_title_larmor_block_high_rc(self):
shortened_title = shorten_title(test_pv)

# Assert
self.assertEquals(shortened_title, "CJHCent:RC:HIGH.VAL")
self.assertEqual(shortened_title, "CJHCent:RC:HIGH.VAL")

def test_shorten_title_larmor_block_low_rc(self):
# Arrange
Expand All @@ -241,7 +242,7 @@ def test_shorten_title_larmor_block_low_rc(self):
shortened_title = shorten_title(test_pv)

# Assert
self.assertEquals(shortened_title, "Chi:RC:LOW.VAL")
self.assertEqual(shortened_title, "Chi:RC:LOW.VAL")

def test_when_rc_values_given_block_description_contains_rc_values(self):
# Arrange
Expand All @@ -254,12 +255,12 @@ def test_when_rc_values_given_block_description_contains_rc_values(self):
description = test_block.get_description()

# Assert
self.assertEquals(description["visibility"], "OFF")
self.assertEquals(description["status"], "INVALID")
self.assertEquals(description["alarm"], "UDF_ALARM")
self.assertEquals(description["rc_low"], 0)
self.assertEquals(description["rc_high"], 100)
self.assertEquals(description["rc_inrange"], False)
self.assertEqual(description["visibility"], "OFF")
self.assertEqual(description["status"], "INVALID")
self.assertEqual(description["alarm"], "UDF_ALARM")
self.assertEqual(description["rc_low"], 0)
self.assertEqual(description["rc_high"], 100)
self.assertEqual(description["rc_inrange"], False)

def test_when_rc_values_not_given_block_description_do_not_contain_rc_values(self):
# Arrange
Expand All @@ -269,9 +270,9 @@ def test_when_rc_values_not_given_block_description_do_not_contain_rc_values(sel
description = test_block.get_description()

# Assert
self.assertEquals(description["visibility"], "OFF")
self.assertEquals(description["status"], "INVALID")
self.assertEquals(description["alarm"], "UDF_ALARM")
self.assertEqual(description["visibility"], "OFF")
self.assertEqual(description["status"], "INVALID")
self.assertEqual(description["alarm"], "UDF_ALARM")
self.assertTrue("rc_low" not in description)
self.assertTrue("rc_high" not in description)
self.assertTrue("rc_inrange" not in description)
Expand All @@ -290,7 +291,7 @@ def test_set_rc_low_value_for_block_based_on_pv(self):
set_rc_values_for_blocks(blocks, runcontrol)

# Assert
self.assertEquals(blocks[block_name].get_rc_low(), expected_value)
self.assertEqual(blocks[block_name].get_rc_low(), expected_value)

def test_set_rc_high_value_for_block_based_on_pv(self):
# Arrange
Expand All @@ -306,8 +307,8 @@ def test_set_rc_high_value_for_block_based_on_pv(self):
set_rc_values_for_blocks(blocks, runcontrol)

# Assert
self.assertEquals(blocks[block_name].get_rc_low(), 10)
self.assertEquals(blocks[block_name].get_rc_high(), 100)
self.assertEqual(blocks[block_name].get_rc_low(), 10)
self.assertEqual(blocks[block_name].get_rc_high(), 100)

def test_set_rc_inrange_value_for_block_based_on_pv(self):
# Arrange
Expand All @@ -324,9 +325,9 @@ def test_set_rc_inrange_value_for_block_based_on_pv(self):
set_rc_values_for_blocks(blocks, runcontrol)

# Assert
self.assertEquals(blocks[block_name].get_rc_low(), 10)
self.assertEquals(blocks[block_name].get_rc_high(), 100)
self.assertEquals(blocks[block_name].get_rc_inrange(), False)
self.assertEqual(blocks[block_name].get_rc_low(), 10)
self.assertEqual(blocks[block_name].get_rc_high(), 100)
self.assertEqual(blocks[block_name].get_rc_inrange(), False)

def test_set_rc_not_low_value_for_block_based_on_pv(self):
# Arrange
Expand All @@ -341,7 +342,7 @@ def test_set_rc_not_low_value_for_block_based_on_pv(self):
set_rc_values_for_blocks(blocks, runcontrol)

# Assert
self.assertEquals(blocks[block_name].get_rc_low(), None)
self.assertEqual(blocks[block_name].get_rc_low(), None)

def test_set_rc_values_for_two_blocks_based_on_pv(self):
# Arrange
Expand All @@ -358,8 +359,8 @@ def test_set_rc_values_for_two_blocks_based_on_pv(self):
set_rc_values_for_blocks(blocks, runcontrol)

# Assert
self.assertEquals(blocks[new_block_name].get_rc_low(), 10)
self.assertEquals(blocks[not_new_block_name].get_rc_low(), 100)
self.assertEqual(blocks[new_block_name].get_rc_low(), 10)
self.assertEqual(blocks[not_new_block_name].get_rc_low(), 100)

def test_set_rc_values_for_one_blocks_based_on_pv_leaves_other_unchanged(self):
# Arrange
Expand All @@ -375,8 +376,8 @@ def test_set_rc_values_for_one_blocks_based_on_pv_leaves_other_unchanged(self):
set_rc_values_for_blocks(blocks, runcontrol)

# Assert
self.assertEquals(blocks[new_block_name].get_rc_low(), 10)
self.assertEquals(blocks[not_new_block_name].get_rc_low(), None)
self.assertEqual(blocks[new_block_name].get_rc_low(), 10)
self.assertEqual(blocks[not_new_block_name].get_rc_low(), None)

def test_set_rc_values_for_leaves_both_unchanged(self):
# Arrange
Expand All @@ -392,14 +393,14 @@ def test_set_rc_values_for_leaves_both_unchanged(self):
set_rc_values_for_blocks(blocks, {})

# Assert
self.assertEquals(blocks[block1_name].get_rc_low(), None)
self.assertEquals(blocks[block2_name].get_rc_low(), None)
self.assertEqual(blocks[block1_name].get_rc_low(), None)
self.assertEqual(blocks[block2_name].get_rc_low(), None)

def test_set_rc_values_with_empty_block_list(self):
# Act
try:
set_rc_values_for_blocks({}, {})
except Exception, e:
except Exception as e:
self.fail("set_rc_values_for_blocks should handle empty block list")

def _assert_blocks(self, actual_blocks, expected_blocks):
Expand Down Expand Up @@ -540,6 +541,5 @@ def test_GIVEN_nonsense_precision_containing_unicode_WHEN_formatting_THEN_origin
self.assertEqual(format_block_value(value, precision), value)



if __name__ == '__main__':
unittest.main()
Loading