예제 #1
0
 def setUp(self):
     self.xdasrv = TestXDAServer(http_log_fn='http.log')
     root = resource.Resource()
     root.putChild('', self.xdasrv)
     site = server.Site(root)
     self.port = self._listen(site)
     reactor.iterate()
     reactor.iterate()
     self.portno = self.port.getHost().port
     self.URL = "http://127.0.0.1:%d/" % self.portno
     self.xda = TWXDAClient(OPCServerAddress=self.URL)
예제 #2
0
class BasicOperations(unittest.TestCase, TestXDAServer):
    def _listen(self, site):
        return reactor.listenTCP(8000, site, interface="127.0.0.1")

    def setUp(self):
        self.xdasrv = TestXDAServer(http_log_fn='http.log')
        root = resource.Resource()
        root.putChild('', self.xdasrv)
        site = server.Site(root)
        self.port = self._listen(site)
        reactor.iterate()
        reactor.iterate()
        self.portno = self.port.getHost().port
        self.URL = "http://127.0.0.1:%d/" % self.portno
        self.xda = TWXDAClient(OPCServerAddress=self.URL)

    def tearDown(self):
        self.port.stopListening()
        reactor.iterate()
        reactor.iterate()
        del self.port

    ###############################################################
    def testGetStatus(self):
        ''' Test Get Status and Reply Base '''
        d = self.xda.twGetStatus(LocaleID='NotAvailable',
                                 ClientRequestHandle='ui293')
        d.addCallback(self._cbGetStatus)
        return d

    def _cbGetStatus(self, (ilist, Options)):
        self.assertEqual(Options.get('ServerState', None), 'running')
        self.assertEqual(Options.get('ClientRequestHandle', None), 'ui293')
        self.assertEqual(Options.get('RevisedLocaleID', None), 'en-us')
        # There has to be a RcvTime and ReplyTime
        self.failUnless(Options.get('RcvTime', None))
        self.failUnless(Options.get('ReplyTime', None))
        self.assertEqual(Options.get('StatusInfo', None), self.StatusInfo)
        self.assertEqual(ilist, [])
예제 #3
0
class BasicOperations(unittest.TestCase, TestXDAServer):
    def _listen(self, site):
        return reactor.listenTCP(8000, site, interface="127.0.0.1")

    def setUp(self):
        self.xdasrv = TestXDAServer(http_log_fn='http.log')
        root = resource.Resource()
        root.putChild('', self.xdasrv)
        site = server.Site(root)
        self.port = self._listen(site)
        reactor.iterate()
        reactor.iterate()
        self.portno = self.port.getHost().port
        self.URL = "http://127.0.0.1:%d/" % self.portno
        self.xda = TWXDAClient(OPCServerAddress=self.URL)

    def tearDown(self):
        self.port.stopListening()
        reactor.iterate()
        reactor.iterate()
        del self.port

    ###############################################################
    def testDeadband(self):
        ''' Test Deadband function '''
        oldItem = ItemContainer()
        newItem = ItemContainer()
        # These should be equal
        self.failIf(self.HasChanged(oldItem, newItem))
        # Now change one attribute
        newItem.QualityField = 'bad'
        self.failUnless(self.HasChanged(oldItem, newItem))

        # Test Integer value change
        oldItem.Value = 100
        # Reset
        newItem = copy.copy(oldItem)
        # These should be equal
        self.failIf(self.HasChanged(oldItem, newItem))
        # Now set Deadband = 0
        newItem.Deadband = 0
        self.failIf(self.HasChanged(oldItem, newItem))
        # Now change one attribute
        newItem.Value = 105
        self.failUnless(self.HasChanged(oldItem, newItem))

        # DEADBAND TESTS
        oldItem.Value = None
        # Do all tests with deadband=10.1
        oldItem.Deadband = 10.1
        newItem = copy.copy(oldItem)
        # Integer
        oldItem.Value = 100
        newItem.Value = 110
        self.failIf(self.HasChanged(oldItem, newItem))
        newItem.Value = 111
        self.failUnless(self.HasChanged(oldItem, newItem))
        # Float
        oldItem.Value = 100.0
        newItem.Value = 110.0
        self.failIf(self.HasChanged(oldItem, newItem))
        newItem.Value = 111.0
        self.failUnless(self.HasChanged(oldItem, newItem))

    ###############################################################
    def testFault1(self):
        ''' Test if Server Faults are handled correctly '''
        d = self.xda.twGetStatus(ClientRequestHandle='ReturnFault1')
        d.addCallback(self._cbFault1)
        d.addErrback(self._ebFault1)
        return d

    def _cbFault1(self, (ilist, Options)):
        self.fail("Callback should never be called")
예제 #4
0
def print_options((ilist,options)):
    print ilist; print options; print
    global OPERATIONS
    OPERATIONS -= 1
    if OPERATIONS == 0:
        reactor.stop()

def handleError(failure):
    print "An Error occured"
    print failure.getTraceback()
    reactor.stop()
    
address='http://violin.qwer.tk:8000/'

xda = TWXDAClient(OPCServerAddress=address,
                ReturnErrorText=True)

d = xda.twGetStatus()
d.addCallback(print_options)
d.addErrback(handleError)

d = xda.twBrowse()
d.addCallback(print_options)
d.addErrback(handleError)

d = xda.twRead([ItemContainer(ItemName='simple_item', MaxAge=500)],
               LocaleID='en-us')
d.addCallback(print_options)
d.addErrback(handleError)

reactor.run()
예제 #5
0
    reactor.listenTCP(8000, site)

    def PrintArgs(result, cmd, stop=False):
        print cmd, ':', result
        if stop:
            reactor.callLater(2, reactor.stop)

    def PrintErr(failure, cmd, stop=False):
        print cmd, ':', failure.value
        if stop:
            reactor.callLater(2, reactor.stop)

    from PyOPC.TWXDAClient import TWXDAClient
    from PyOPC.OPCContainers import *
    URL = "http://127.0.0.1:8000/"
    xda = TWXDAClient(OPCServerAddress=URL)

    #xda.twBrowse().addCallback(PrintArgs,'Browse').addErrback(PrintErr,'Browse')
    #xda.twBrowse(ItemName='/LON').addCallback(PrintArgs,'Browse').addErrback(PrintErr,'Browse')
    #xda.twBrowse(ItemName='/LON/GATE1').addCallback(PrintArgs,'Browse').addErrback(PrintErr,'Browse')
    #xda.twBrowse(ItemName='/LON/GATE1/01:02:03:04:05:06').addCallback(PrintArgs,'Browse',True).addErrback(PrintErr,'Browse',True)
    #xda.twBrowse(ItemName='/LON/GATE1/01:02:03:04:05:06/11').addCallback(PrintArgs,'Browse',True).addErrback(PrintErr,'Browse',True)
    #xda.twBrowse(ItemName='/LON/GATE1/01:02:03:04:05:06/11/asdf').addCallback(PrintArgs,'Browse',True).addErrback(PrintErr,'Browse',True)
    #xda.twGetProperties((ItemContainer(ItemName = '/LON/GATE1/01:02:03:04:05:06/11'),
    #                   ItemContainer(ItemName = '/LON/GATE1/01:02:03:04:05:06/12')),
    #                    ReturnErrorText=True).addCallback(\
    #                       PrintArgs,'GetProperties',True).addErrback(\
    #                           PrintErr,'GetProperties',True)
    #xda.twRead((ItemContainer(ItemName = '/LON/GATE1/01:02:03:04:05:06/11/BINHEX'),
    #            ItemContainer(ItemName = '/LON/GATE1/01:02:03:04:05:06/12/STRING')),
    #           ReturnErrorText=True).addCallback(\