Source code for testlib.script

#!/usr/bin/env python
# -*- coding: utf-8 -*-

#
# Copyright (C) 2016 University of Dundee & Open Microscopy Environment.
# All rights reserved.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

import omero
import logging
from omero.testlib import ITest
from omero.gateway import BlitzGateway


[docs] class ScriptTest(ITest):
[docs] def get_script(self, path): script_service = self.root.sf.getScriptService() script = _get_script(script_service, path) if script is None: return -1 return script.getId().getValue()
[docs] def run_script(client, script_id, args, key=None): script_service = client.sf.getScriptService() proc = script_service.runScript(script_id, args, None) try: cb = omero.scripts.ProcessCallbackI(client, proc) while not cb.block(1000): # ms. pass cb.close() results = proc.getResults(0) # ms finally: proc.close(False) if 'stdout' in results: orig_file = results['stdout'].getValue() v = "Script generated StdOut in file:", orig_file.getId().getValue() logging.debug(v) assert orig_file.id.val > 0 if 'stderr' in results: orig_file = results['stderr'].getValue() v = "Script generated StdErr in file:", orig_file.getId().getValue() logging.debug(v) assert orig_file.getId().getValue() > 0 if key and key in results: return results[key]
def _get_script(script_service, script_path): """ Utility method, return the script or None """ scripts = script_service.getScripts() # returns list of OriginalFiles # make sure path starts with a slash. # ** If you are a Windows client - will need to convert all path separators # to "/" since server stores /path/to/script.py ** if not script_path.startswith("/"): script_path = "/" + script_path named_scripts = [ s for s in scripts if s.getPath().getValue() + s.getName().getValue() == script_path] if len(named_scripts) == 0: return None return named_scripts[0]
[docs] def points_to_string(points): """ Returns legacy format supported by Insight """ points = ["%s,%s" % (p[0], p[1]) for p in points] csv = ", ".join(points) return "points[%s] points1[%s] points2[%s]" % (csv, csv, csv)
[docs] def check_file_annotation(client, file_annotation, parent_type="Image", is_linked=True, file_name=None): """ Check validity of file annotation. If hasFileAnnotation, check the size, name and number of objects linked to the original file. """ assert file_annotation is not None orig_file = file_annotation.getValue().getFile() assert orig_file.getSize().getValue() > 0 assert orig_file.getName().getValue() is not None id = file_annotation.getValue().getId().getValue() assert id > 0 conn = BlitzGateway(client_obj=client) wrapper = conn.getObject("FileAnnotation", id) name = None if file_name is not None: name = wrapper.getFile().getName() links = sum(1 for i in wrapper.getParentLinks(parent_type)) conn.close() if is_linked: assert links == 1 else: assert links == 0 if file_name is not None: assert name == file_name