예제 #1
0
 def test_client_Client_processRequest_some_historyReadRawModifiedRequest(self):
      
     request = HistoryReadRawModifiedRequest(2) 
      
     request.targets[0].address = self.address_byte
     request.targets[1].address = self.address_double
     request.serviceSettingsGiven = True
     serviceSettings = pyuaf.client.settings.HistoryReadRawModifiedSettings()
     serviceSettings.startTime = DateTime(time.time() - 1.0)
     serviceSettings.endTime   = DateTime(time.time())
     request.serviceSettings = serviceSettings
     result = self.client.processRequest(request)
      
     self.assertTrue( result.overallStatus.isGood() )
     self.assertGreater( result.targets[0].dataValues , 0 )
     self.assertGreater( result.targets[1].dataValues , 0 )
예제 #2
0
 def test_client_Client_processRequest_some_historyReadRawModifiedRequest_with_automatic_continuation(self):
      
     request = HistoryReadRawModifiedRequest(2) 
      
     request.targets[0].address = self.address_byte
     request.targets[1].address = self.address_double
     
     request.serviceSettingsGiven = True
     serviceSettings = pyuaf.client.settings.HistoryReadRawModifiedSettings()
     serviceSettings.startTime        = DateTime(self.startTime)
     serviceSettings.endTime          = DateTime(time.time())
     serviceSettings.maxAutoReadMore  = 20
     serviceSettings.numValuesPerNode = 1   # ridiculously low, to force automatic calls
     request.serviceSettings = serviceSettings
     
     result = self.client.processRequest(request)
      
     self.assertTrue( result.overallStatus.isGood() )
     self.assertGreater( result.targets[0].dataValues , 0 )
     self.assertGreater( result.targets[1].dataValues , 0 )
     self.assertGreater( result.targets[0].autoReadMore , 0 )
     self.assertGreater( result.targets[1].autoReadMore , 0 )
예제 #3
0
 def test_client_Client_processRequest_some_historyReadRawModifiedRequest_with_manual_continuation(self):
     
     request = HistoryReadRawModifiedRequest(1) 
     
     request.targets[0].address = self.address_byte
     serviceSettings = pyuaf.client.settings.HistoryReadRawModifiedSettings()
     serviceSettings.startTime        = DateTime(self.startTime)
     serviceSettings.endTime          = DateTime(time.time())
     serviceSettings.maxAutoReadMore  = 0   # force no automatic calls by the UAF
     serviceSettings.numValuesPerNode = 1   # ridiculously low, to force automatic calls
     
     request.serviceSettingsGiven = True
     request.serviceSettings = serviceSettings
     
     noOfManualBrowseNext = 0
     allData = pyuaf.util.DataValueVector()
     
     result = self.client.processRequest(request)
     
     while len(result.targets[0].continuationPoint) > 0 and noOfManualBrowseNext < 50:
         
         request.targets[0].continuationPoint = result.targets[0].continuationPoint
          
         result = self.client.processRequest(request)
          
         for i in xrange(len(result.targets[0].dataValues)):
             # IMPORTANT: use     <DataValueVector>.allData.append(result.targets[0].dataValues[i])
             #            or      <Python list>.append(DataValue(result.targets[0].dataValues[i]))
             #            but NOT <Python list>.append(result.targets[0].dataValues[i]))
             #            
             #            because <Python list>.append() will NOT COPY THE DATA! It will only 
             #            store the the pointer that was returned by (...).dataValues[i]! 
             allData.append(result.targets[0].dataValues[i])
          
         noOfManualBrowseNext += 1
     
     self.assertTrue( result.overallStatus.isGood() )
     self.assertGreater( len(allData) , 2 )
     self.assertGreater( noOfManualBrowseNext , 0 )
    print("---------------")
    
    # create a request with 1 target
    request = HistoryReadRawModifiedRequest(1)
    request.targets[0].address = doubleAddress
    
    # configure the request further:
    serviceSettings = HistoryReadRawModifiedSettings()
    serviceSettings.startTime         = DateTime(time.time() - 1)
    serviceSettings.endTime           = DateTime(time.time())
    serviceSettings.callTimeoutSec    = 2.0                        # optional of course
    serviceSettings.numValuesPerNode  = 100
    serviceSettings.maxAutoReadMore   = 10
    serviceSettings.isReadModified    = False                      # we want raw historical data
    request.serviceSettings = serviceSettings
    request.serviceSettingsGiven = True
    
    sessionSettings = SessionSettings()
    sessionSettings.sessionTimeoutSec = 600.0                      # optional of course
    request.sessionSettings = sessionSettings
    request.sessionSettingsGiven = True
    
    # process the request
    result = myClient.processRequest(request)
    
    # print the result
    print(str(result))
    
    # process the result in the same way as before
    
except UafError, e: