Files
pide/script/test/test_thread.py
2022-08-25 16:54:29 +02:00

112 lines
3.3 KiB
Python

import threading
import sys
import queue
import traceback
from bsread import source, Source, PUB, SUB, PUSH, PULL, DEFAULT_DISPATCHER_URL
from cam_server.pipeline.configuration import PipelineConfig
from cam_server import CamClient, PipelineClient, ProxyClient, config
from cam_server.pipeline.types.processing import run as processing_pipeline
import multiprocessing
import time
from importlib import reload
class Namespace(object):
def __init__(self, **kwds):
self.__dict__.update(kwds)
def __repr__(self):
items = self.__dict__.items()
temp = []
for name, value in items:
if not name.startswith('_'):
temp.append('%s=%r' % (name, value))
temp.sort()
return 'Namespace(%s)' % str.join(', ', temp)
class MockBackgroundManager:
def __init__(self):
self.backgrounds = {}
def get_background(self, background_name):
if not background_name:
return None
if background_name not in self.backgrounds:
raise ValueError("Requested background '%s' does not exist." % background_name)
return self.backgrounds[background_name]
def save_background(self, background_name, image, append_timestamp=True):
if append_timestamp:
background_name += datetime.now().strftime("_%Y%m%d_%H%M%S_%f")
self.backgrounds[background_name] = image
return background_name
def get_latest_background_id(self, background_prefix):
raise NotImplementedError("This cannot work in the mock.")
def get_background_ids(self, background_prefix):
raise NotImplementedError("This cannot work in the mock.")
statistics= Namespace()
pipeline_config = PipelineConfig("test_pipeline", parameters={"camera_name": "simulation", "function":"transparent"})
camera_client = CamClient("http://localhost:8888" )
def dont_exit(status):
print ("System Exit status: ", status)
sys.exit = dont_exit
def run_pipeline(port, pipeline_config, parameter_queue, stop_event):
print ("Startint pipeline on port: ", port)
try:
processing_pipeline(stop_event, statistics, parameter_queue, camera_client, pipeline_config, port, MockBackgroundManager())
except:
traceback.print_exc()
def get_data(port):
with source(host="127.0.0.1", port=port, mode=SUB, receive_timeout = 3000) as stream:
data = stream.receive()
if not data:
raise Exception("Received None message.")
return data.data.data
for port in (12007, 12008):
print ( "--------------------------------------")
print ("Port: ", port)
stop_event = threading.Event()
parameter_queue = queue.Queue()
thread = threading.Thread(target=run_pipeline, args=(port,pipeline_config, parameter_queue, stop_event))
thread.start()
#data = get_data(port)
#print ("Received: ", data.keys())
time.sleep(1.0)
stop_event.set()
thread.join(5.0)
print ("Finished OK")
time.sleep(2.0)
from cam_server.pipeline import utils
reload(utils)
"""
OUTPUT_PORT = 12008
stop_event = threading.Event()
parameter_queue = queue.Queue()
thread = threading.Thread(target=run_pipeline, args=(OUTPUT_PORT,pipeline_config, parameter_queue, stop_event))
thread.start()'
get_data(OUTPUT_PORT)
stop_event.set()
thread.join(5.0)
print ("Done")
"""