From 09df63fdec3683373c3d1c1905de6ae49cda9fd5 Mon Sep 17 00:00:00 2001 From: Enrico Faulhaber Date: Wed, 7 Feb 2018 15:54:28 +0100 Subject: [PATCH] Remove old demo code (no longer used) Change-Id: I6976a28b57258cc451bac410767fd3acf2fb8d49 Reviewed-on: https://forge.frm2.tum.de/review/17267 Tested-by: JenkinsCodeReview Reviewed-by: Enrico Faulhaber --- src/demo_syntax/cmd_lineserver.py | 40 ---- src/demo_syntax/demo_server.py | 330 ------------------------------ src/demo_syntax/secnode.json | 104 ---------- src/demo_syntax/tcp_lineserver.py | 61 ------ src/demo_syntax/test_requests.txt | 13 -- 5 files changed, 548 deletions(-) delete mode 100644 src/demo_syntax/cmd_lineserver.py delete mode 100644 src/demo_syntax/demo_server.py delete mode 100644 src/demo_syntax/secnode.json delete mode 100644 src/demo_syntax/tcp_lineserver.py delete mode 100644 src/demo_syntax/test_requests.txt diff --git a/src/demo_syntax/cmd_lineserver.py b/src/demo_syntax/cmd_lineserver.py deleted file mode 100644 index 8e51977..0000000 --- a/src/demo_syntax/cmd_lineserver.py +++ /dev/null @@ -1,40 +0,0 @@ -import fileinput - - -class LineHandler(): - - def __init__(self, *args, **kwargs): - pass - - def send_line(self, line): - print " ", line - - def handle_line(self, line): - ''' - test: simple echo handler - ''' - self.send_line("> " + line) - - -class LineServer(): - - def __init__(self, isfile, lineHandlerClass): - self.lineHandlerClass = lineHandlerClass - self.isfile = isfile - - def loop(self): - handler = self.lineHandlerClass() - while True: - try: - if self.isfile: - line = raw_input("") - print "> " + line - else: - line = raw_input("> ") - except EOFError: - return - handler.handle_line(line) - -if __name__ == "__main__": - server = LineServer("localhost", 9999, LineHandler) - server.loop() diff --git a/src/demo_syntax/demo_server.py b/src/demo_syntax/demo_server.py deleted file mode 100644 index d32b089..0000000 --- a/src/demo_syntax/demo_server.py +++ /dev/null @@ -1,330 +0,0 @@ -# SECoP demo syntax simulation -# -# Author: Markus Zolliker -# -# Input from a file for test purposes: -# -# python -m demo_server f < test.txt -# -# Input from commandline: -# -# python -m demo_server -# -# Input from TCP/IP connections: -# -# python -m demo_server - - -import json -from collections import OrderedDict -from fnmatch import fnmatch -from datetime import datetime - -import sys -if len(sys.argv) <= 1: - port = 0 - import cmd_lineserver as lineserver -elif sys.argv[1] == "f": - port = 1 - import cmd_lineserver as lineserver -else: - port = int(sys.argv[1]) - import tcp_lineserver as lineserver - - -class SecopError(Exception): - - def __init__(self, message, text): - Exception.__init__(self, message, text) - - -class UnknownModuleError(SecopError): - - def __init__(self, message, args): - SecopError.__init__(self, "NoSuchModule", args[0]) - - -class UnknownParamError(SecopError): - - def __init__(self, message, args): - SecopError.__init__(self, "NoSuchParam", "%s:%s" % args) - - -class UnknownPropError(SecopError): - - def __init__(self, message, args): - SecopError.__init__(self, "NoSuchProperty", "%s:%s:%s" % args) - - -class SyntaxError(SecopError): - - def __init__(self, message): - SecopError.__init__(self, "SyntaxError", message) - - -class OtherError(SecopError): - - def __init__(self, message): - SecopError.__init__(self, "OtherError", message) - - -def encode(input): - inp = str(input) - enc = repr(inp) - if inp.find(';') >= 0 or inp != enc[1:-1]: - return enc - return inp - - -def gettype(obj): - typ = str(type(obj).__name__) - if typ == "unicode": - typ = "string" - return typ - - -def wildcard(dictionary, pattern): - list = [] - if pattern == "": - pattern = "." - for p in pattern.split(","): - if p[-1] == "*": - if p[:-1].find("*") >= 0: - raise SyntaxError("illegal wildcard pattern %s" % p) - for key in dictionary: - if key.startswith(p[:-1]): - list.append(key) - elif p in dictionary: - list.append(p) - else: - raise KeyError(pattern) - return list - - -class SecopClientProps(object): - - def __init__(self): - self.reply_items = {".": "t", "writable": 1} - self.compact_output = {".": 0, "writable": 1} - - -class SecopLineHandler(lineserver.LineHandler): - - def __init__(self, *args, **kwargs): - lineserver.LineHandler.__init__(self, *args, **kwargs) - self.props = SecopClientProps() - - def handle_line(self, msg): - try: - if msg[-1:] == "\r": # strip CR at end (for CRLF) - msg = msg[:-1] - if msg[:1] == "+": - self.subscribe(msg[1:].split(":")) - elif msg[:1] == "-": - self.unsubscribe(msg[1:].split(":")) - elif msg[:1] == "!": - self.list(msg[1:]) - else: - j = msg.find("=") - if j >= 0: - self.write(msg[0:j], msg[j + 1:]) - else: - self.read(msg) - except SecopError as e: - self.send_line("~%s~ %s" % (e.args[0], e.args[1])) - self.send_line("") - - def get_device(self, d): - if d == "": - d = "." - if d == ".": - return self.props.__dict__ - try: - return secNodeDict[d] - except KeyError: - raise UnknownModuleError("", (d)) - - def get_param(self, d, p): - if p == "": - p = "." - try: - return self.get_device(d)[p] - except KeyError: - raise UnknownParamError("", (d, p)) - - def get_prop(self, d, p, y): - if y == "": - y = "." - try: - paramDict = self.get_param(d, p) - return (paramDict, paramDict[y]) - except KeyError: - raise UnknownPropertyError("", (d, p, y)) - - def clear_output_path(self): - # used for compressing only - self.outpath = [".", ".", "."] - try: - self.compact = self.props.compact_output["."] != 0 - except KeyError: - self.compact = False - - def output_path(self, d, p=".", y="."): - # compose path from arguments. compress if compact is True - if d == self.outpath[0]: - msg = ":" - else: - msg = d + ":" - if self.compact: - self.outpath[0] = d - self.outpath[1] = "." - self.outpath[2] = "." - if p == self.outpath[1]: - msg += ":" - else: - msg += p + ":" - if self.compact: - self.outpath[1] = p - self.outpath[2] = "." - if y == "" or y == self.outpath[2]: - while msg[-1:] == ":": - msg = msg[:-1] - else: - msg += y - if self.compact: - self.outpath[2] = y - return msg - - def write(self, pathArg, value): - self.clear_output_path() - path = pathArg.split(":") - while len(path) < 3: - path.append("") - d, p, y = path - parDict = self.get_param(d, p) - if (y != "." and y != "") or not parDict.get("writable", 0): - self.send_line("? %s is not writable" % self.output_path(d, p, y)) - typ = type(parDict["."]) - try: - val = (typ)(value) - except ValueError: - raise SyntaxError("can not convert '%s' to %s" % - (value, gettype(value))) - parDict["."] = val - parDict["t"] = datetime.utcnow() - self.send_line(self.output_path(d, p, ".") + - "=" + encode(parDict["."])) - - def read(self, pathArg): - self.clear_output_path() - path = pathArg.split(":") - if len(path) > 3: - raise SyntaxError("path may only contain 3 elements") - while len(path) < 3: - path.append("") - - # first collect a list of matched properties - list = [] - try: - devList = wildcard(secNodeDict, path[0]) - except KeyError as e: - raise UnknownModuleError("", (e.message)) - for d in devList: - devDict = secNodeDict[d] - try: - parList = wildcard(devDict, path[1]) - except KeyError as e: - raise UnknownParamError("", (d, e.message)) - for p in parList: - parDict = devDict[p] - try: - propList = wildcard(parDict, path[2]) - except KeyError as e: - raise UnknownPropError("", (d, p, e.message)) - for y in propList: - list.append((d, p, y)) - - # then, if no error happened, write out the messages - try: - replyitems = self.props.reply_items["."] - replyitems = replyitems.split(",") - except KeyError: - replyitems = [] - for item in list: - d, p, y = item - paramDict = secNodeDict[d][p] - if path[2] == "": - msg = self.output_path(d, p, "") + "=" + encode(paramDict["."]) - for y in replyitems: - if y == ".": - continue # do not show the value twice - try: - msg += ";" + y + "=" + encode(paramDict[y]) - except KeyError: - pass - else: - msg = self.output_path(d, p, y) + "=" + encode(paramDict[y]) - self.send_line(msg) - - def list(self, pathArg): - self.clear_output_path() - path = pathArg.split(":") - # first collect a list of matched items - list = [] - try: - devList = wildcard(secNodeDict, path[0]) - except KeyError as e: - raise UnknownModuleError("", (e.message)) - for d in devList: - devDict = secNodeDict[d] - if len(path) == 1: - list.append((d, ".", ".")) - else: - try: - parList = wildcard(devDict, path[1]) - except KeyError as e: - raise UnknownParamError("", (d, e.message)) - for p in parList: - parDict = devDict[p] - if len(path) == 2: - list.append((d, p, ".")) - else: - try: - propList = wildcard(parDict, path[2]) - except KeyError as e: - raise UnknownPropError("", (d, p, e.message)) - for y in propList: - list.append((d, p, y)) - - # then, if no error happened, write out the items - for item in list: - d, p, y = item - self.send_line(self.output_path(d, p, y)) - - def subscribe(self, pathArg): - raise OtherError("subscribe unimplemented") - - def unsubscribe(self, pathArg): - raise OtherError("unsubscribe unimplemented") - -if port <= 1: - server = lineserver.LineServer(port, SecopLineHandler) -else: - server = lineserver.LineServer("localhost", port, SecopLineHandler) - - -secNodeDict = json.load(open("secnode.json", "r"), - object_pairs_hook=OrderedDict) -#json.dump(secNodeDict, open("secnode_out.json", "w"), indent=2, separators=(",",":")) -for d in secNodeDict: - devDict = secNodeDict[d] - for p in devDict: - parDict = devDict[p] - try: - parDict["type"] = gettype(parDict["."]) - except KeyError: - print d, p, " no '.' (value) property" - continue - parDict["t"] = datetime.utcnow() - -server.loop() diff --git a/src/demo_syntax/secnode.json b/src/demo_syntax/secnode.json deleted file mode 100644 index fbefaf7..0000000 --- a/src/demo_syntax/secnode.json +++ /dev/null @@ -1,104 +0,0 @@ -{ - "ts":{ - ".":{ - ".":9.887, - "meaning":"temperature", - "unit":"K", - "description":"VTI sensor (15 Tesla magnet)\ncalibration: X28611" - }, - "status":{ - ".":0 - }, - "target":{ - ".":10.0, - "writable":1, - "unit":"K" - }, - "ramp":{ - ".":0.0, - "writable":1, - "unit":"K/min" - }, - "use_ramp":{ - ".":0 - }, - "set_point":{ - ".":10.0, - "unit":"K" - }, - "heater_power":{ - ".":0.154, - "unit":"W" - }, - "raw_sensor":{ - ".":1876.3, - "unit":"Ohm" - } - }, - "mf":{ - ".":{ - ".":5.13, - "meaning":"magnetic_field", - "unit":"T", - "description":"magnetic field (15 Tesla magnet)" - }, - "status":{ - ".":0, - "value_names":"0:idle,1:busy,2:error" - }, - "target":{ - ".":14.9, - "writable":1, - "unit":"T" - }, - "ramp":{ - ".":0.4, - "writable":1, - "unit":"T/min" - }, - "set_point":{ - ".":5.13, - "unit":"T" - }, - "persistent_mode":{ - ".":0 - }, - "switch_heater":{ - ".":1 - } - }, - "tc1":{ - ".":{ - ".":2.23, - "unit":"K", - "description":"top coil (15 Tesla magnet)\ncalibration: X30906" - }, - "status":{ - ".":0 - }, - "raw_sensor":{ - ".":5434.0, - "unit":"Ohm" - } - }, - "tc2":{ - ".":{ - ".":2.311, - "unit":"K", - "description":"bottom coil (15 Tesla magnet)\ncalibration: C103" - }, - "status":{ - ".":0 - }, - "raw_sensor":{ - ".":4834.5, - "unit":"Ohm" - } - }, - "label":{ - ".":{ - ".": "test;test", - "writable": 1 - } - } -} diff --git a/src/demo_syntax/tcp_lineserver.py b/src/demo_syntax/tcp_lineserver.py deleted file mode 100644 index c2cbd69..0000000 --- a/src/demo_syntax/tcp_lineserver.py +++ /dev/null @@ -1,61 +0,0 @@ -import asyncore -import socket - - -class LineHandler(asyncore.dispatcher_with_send): - - def __init__(self, sock): - self.buffer = "" - asyncore.dispatcher_with_send.__init__(self, sock) - self.crlf = 0 - - def handle_read(self): - data = self.recv(8192) - if data: - parts = data.split("\n") - if len(parts) == 1: - self.buffer += data - else: - self.handle_line(self.buffer + parts[0]) - for part in parts[1:-1]: - if part[-1] == "\r": - self.crlf = True - part = part[:-1] - else: - self.crlf = False - self.handle_line(part) - self.buffer = parts[-1] - - def send_line(self, line): - self.send(line + ("\r\n" if self.crlf else "\n")) - - def handle_line(self, line): - ''' - test: simple echo handler - ''' - self.send_line("> " + line) - - -class LineServer(asyncore.dispatcher): - - def __init__(self, host, port, lineHandlerClass): - asyncore.dispatcher.__init__(self) - self.create_socket(socket.AF_INET, socket.SOCK_STREAM) - self.set_reuse_addr() - self.bind((host, port)) - self.listen(5) - self.lineHandlerClass = lineHandlerClass - - def handle_accept(self): - pair = self.accept() - if pair is not None: - sock, addr = pair - print "Incoming connection from %s" % repr(addr) - handler = self.lineHandlerClass(sock) - - def loop(self): - asyncore.loop() - -if __name__ == "__main__": - server = LineServer("localhost", 9999, LineHandler) - server.loop() diff --git a/src/demo_syntax/test_requests.txt b/src/demo_syntax/test_requests.txt deleted file mode 100644 index 88b16e6..0000000 --- a/src/demo_syntax/test_requests.txt +++ /dev/null @@ -1,13 +0,0 @@ -:reply_items= -ts -mf -tc1 -* -mf:* -mf:target=12 -mf:* -mf:target:* -:reply_items=t -* -!* -*:*:*