Skip to content

Commit

Permalink
Fix #10, added set-enable command to the protocol (#11)
Browse files Browse the repository at this point in the history
  • Loading branch information
giuseppe-carboni authored May 10, 2022
1 parent 2baa034 commit 46bf271
Show file tree
Hide file tree
Showing 5 changed files with 70 additions and 3 deletions.
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
import os

setup(name = "discosbackend",
version = "1.2",
version = "1.3",
author = "Marco Bartolini",
author_email = "bartolini@ira.inaf.it",
description = "reference implementation of the discos protocol for backend communication",
Expand Down
4 changes: 2 additions & 2 deletions src/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,5 +16,5 @@
# limitations under the License.
#

__version__ = "1.2"
__protocol_version__ = "1.2"
__version__ = "1.3"
__protocol_version__ = "1.3"
15 changes: 15 additions & 0 deletions src/handlers.py
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,8 @@ def __init__(self, backend):
"set-filename" : self.do_set_filename,
#new in version 1.2
"convert-data" : self.do_convert_data,
#new in version 1.3
"set-enable" : self.do_set_enable
}

def handle(self, message):
Expand Down Expand Up @@ -213,3 +215,16 @@ def do_convert_data(self, args):
"""
return self.backend.convert_data()

def do_set_enable(self, args):
"""
Added in version 1.3
"""
if len(args) < 2:
raise HandlerException("set-enable needs 2 arguments")
try:
_feed1 = int(args[0])
_feed2 = int(args[1])
except ValueError:
raise HandlerException("wrong parameter format")
return self.backend.set_enable(_feed1, _feed2)

13 changes: 13 additions & 0 deletions test/backend_simulator.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ def __init__(self):
self._max_sections = 5
self._filename = ""
self.interleave = 0
self.current_sections = range(0, self._max_sections)

def status(self):
return (self._get_time(),
Expand Down Expand Up @@ -101,6 +102,18 @@ def set_filename(self, filename):
def convert_data(self):
pass

def set_enable(self, feed1, feed2):
if feed1 not in range(self._max_sections / 2):
raise BackendError("feed1 out of range")
if feed2 not in range(self._max_sections / 2):
raise BackendError("feed2 out of range")
self.current_sections = [
feed1*2,
feed1*2 + 1,
feed2*2,
feed2*2 + 1
]

def _get_time(self):
#should ask the backend hardware clock
return time.time()
Expand Down
39 changes: 39 additions & 0 deletions test/test_simulator_server.py
Original file line number Diff line number Diff line change
Expand Up @@ -359,3 +359,42 @@ def test_bad_set_filename_command(self):
self.client.send_message(request)
reply = self.client.read_message()
self.assertEqual(reply.code, grammar.FAIL)

def test_set_enable_command(self):
request = grammar.Message(message_type = grammar.REQUEST,
name = "set-enable",
arguments = ['0', '1'])
self.client.send_message(request)
reply = self.client.read_message()
self.assertEqual(reply.code, grammar.OK)

def test_set_enable_less_than_2_feeds(self):
request = grammar.Message(message_type = grammar.REQUEST,
name = "set-enable")
self.client.send_message(request)
reply = self.client.read_message()
self.assertEqual(reply.code, grammar.FAIL)

def test_set_enable_wrong_parameter_type(self):
request = grammar.Message(message_type = grammar.REQUEST,
name = "set-enable",
arguments = ['foo', 'bar'])
self.client.send_message(request)
reply = self.client.read_message()
self.assertEqual(reply.code, grammar.FAIL)

def test_set_enable_feeds_out_of_range(self):
# Feed 1 out of range
request = grammar.Message(message_type = grammar.REQUEST,
name = "set-enable",
arguments = ['4', '1'])
self.client.send_message(request)
reply = self.client.read_message()
self.assertEqual(reply.code, grammar.FAIL)
# Feed 2 out of range
request = grammar.Message(message_type = grammar.REQUEST,
name = "set-enable",
arguments = ['0', '2'])
self.client.send_message(request)
reply = self.client.read_message()
self.assertEqual(reply.code, grammar.FAIL)

0 comments on commit 46bf271

Please sign in to comment.