Пример #1
0
    def setUp(self):
        # Start the GDA SWMR demo
        ioc = "/dls_sw/work/R3.14.12.3/support/mapping/iocs/TS-EA-IOC-02/bin/linux-x86_64/stTS-EA-IOC-02.sh"
        self.ioc = subprocess.Popen([ioc, "512", "512"], stdin=subprocess.PIPE)
        cothread.Sleep(5)
        from socket import gethostname

        hostname = gethostname().split(".")[0]
        pre = "{}-AD-SIM-01:CAM:".format(hostname)
        self.s = SimDetector("S", pre)
        self.s.loop_run()
        self.in_params = dict(numImages=5, exposure=0.1)
        self.runtime = self.in_params["numImages"] * self.in_params["exposure"]
        self.send_params = {"imageMode": "Multiple", "exposure": 0.1, "arrayCounter": 0, "period": 0.1, "numImages": 5}
Пример #2
0
class SimDetectorTest(unittest.TestCase):
    def setUp(self):
        # Start the GDA SWMR demo
        ioc = "/dls_sw/work/R3.14.12.3/support/mapping/iocs/TS-EA-IOC-02/bin/linux-x86_64/stTS-EA-IOC-02.sh"
        self.ioc = subprocess.Popen([ioc, "512", "512"], stdin=subprocess.PIPE)
        cothread.Sleep(5)
        from socket import gethostname

        hostname = gethostname().split(".")[0]
        pre = "{}-AD-SIM-01:CAM:".format(hostname)
        self.s = SimDetector("S", pre)
        self.s.loop_run()
        self.in_params = dict(numImages=5, exposure=0.1)
        self.runtime = self.in_params["numImages"] * self.in_params["exposure"]
        self.send_params = {"imageMode": "Multiple", "exposure": 0.1, "arrayCounter": 0, "period": 0.1, "numImages": 5}

    def test_100_sequences(self):
        for i in range(100):
            self.do_sequence()
            cothread.Sleep(random.random())

    def do_sequence(self):
        start = time.time()
        self.s.configure(**self.in_params)
        end = time.time()
        self.assertAlmostEqual(end - start, 0, delta=0.05)
        for attr, val in self.send_params.items():
            actual = self.s.attributes[attr].value
            self.assertEqual(actual, val, "Attr {} = {} not {}".format(attr, actual, val))
        self.assertEqual(self.s.stateMachine.state, DState.Ready)
        self.assertEqual(self.s.arrayCounter, 0)
        # Do a run
        start = time.time()
        self.s.run()
        end = time.time()
        self.assertAlmostEqual(end - start, self.runtime, delta=0.05)
        self.assertEqual(self.s.stateMachine.state, DState.Idle)
        # Allow numImages to update
        cothread.Sleep(0.05)
        self.assertEqual(self.s.arrayCounter, self.in_params["numImages"])

    def tearDown(self):
        self.ioc.stdin.close()
        self.ioc.wait()
        pass