Beispiel #1
0
 def do_test_client_Client_kwargs_sessionSettings(self, service):
     sessionSettings = SessionSettings()
     sessionSettings.connectTimeoutSec = 5.0
     
     result = self.doService(service, sessionSettings = sessionSettings)
     self.assertTrue(result.overallStatus.isGood())
     allSessionInfos = self.client.allSessionInformations()
     self.assertEqual(len(allSessionInfos), 1)
     self.assertEqual(allSessionInfos[0].sessionSettings, sessionSettings)
     # check if the following session is reused
     result = self.doService(service, sessionSettings = sessionSettings)
     self.assertTrue(result.overallStatus.isGood())
     allSessionInfos = self.client.allSessionInformations()
     self.assertEqual(len(allSessionInfos), 1)
     self.assertEqual(allSessionInfos[0].sessionSettings, sessionSettings)
     self.assertEqual(result.targets[0].clientConnectionId, 0)
     # check if the following session is not reused
     sessionSettings2 = SessionSettings()
     sessionSettings2.connectTimeoutSec = 6.0
     result = self.doService(service, sessionSettings = sessionSettings2)
     self.assertTrue(result.overallStatus.isGood())
     allSessionInfos = self.client.allSessionInformations()
     self.assertEqual(len(allSessionInfos), 2)
     self.assertEqual(allSessionInfos[1].sessionSettings, sessionSettings2)
     self.assertEqual(result.targets[0].clientConnectionId, 1)
     # check if the following session is not reused
     sessionSettings.unique = True
     result = self.doService(service, sessionSettings = sessionSettings)
     self.assertTrue(result.overallStatus.isGood())
     allSessionInfos = self.client.allSessionInformations()
     self.assertEqual(len(allSessionInfos), 3)
     self.assertEqual(allSessionInfos[2].sessionSettings, sessionSettings)
     self.assertEqual(result.targets[0].clientConnectionId, 2)
     # check if the following session is not reused
     result = self.doService(service, sessionSettings = sessionSettings)
     self.assertTrue(result.overallStatus.isGood())
     allSessionInfos = self.client.allSessionInformations()
     self.assertEqual(len(allSessionInfos), 4)
     self.assertEqual(allSessionInfos[3].sessionSettings, sessionSettings)
     self.assertEqual(result.targets[0].clientConnectionId, 3)
     # check if a specific ClientConnectionId may be reused:
     result = self.doService(service, clientConnectionId = 3)
     self.assertTrue(result.overallStatus.isGood())
     allSessionInfos = self.client.allSessionInformations()
     self.assertEqual(len(allSessionInfos), 4)
     self.assertEqual(result.targets[0].clientConnectionId, 3)
Beispiel #2
0
    def do_test_client_Client_kwargs_sessionSettings(self, service):
        sessionSettings = SessionSettings()
        sessionSettings.connectTimeoutSec = 5.0

        result = self.doService(service, sessionSettings=sessionSettings)
        self.assertTrue(result.overallStatus.isGood())
        allSessionInfos = self.client.allSessionInformations()
        self.assertEqual(len(allSessionInfos), 1)
        self.assertEqual(allSessionInfos[0].sessionSettings, sessionSettings)
        # check if the following session is reused
        result = self.doService(service, sessionSettings=sessionSettings)
        self.assertTrue(result.overallStatus.isGood())
        allSessionInfos = self.client.allSessionInformations()
        self.assertEqual(len(allSessionInfos), 1)
        self.assertEqual(allSessionInfos[0].sessionSettings, sessionSettings)
        self.assertEqual(result.targets[0].clientConnectionId, 0)
        # check if the following session is not reused
        sessionSettings2 = SessionSettings()
        sessionSettings2.connectTimeoutSec = 6.0
        result = self.doService(service, sessionSettings=sessionSettings2)
        self.assertTrue(result.overallStatus.isGood())
        allSessionInfos = self.client.allSessionInformations()
        self.assertEqual(len(allSessionInfos), 2)
        self.assertEqual(allSessionInfos[1].sessionSettings, sessionSettings2)
        self.assertEqual(result.targets[0].clientConnectionId, 1)
        # check if the following session is not reused
        sessionSettings.unique = True
        result = self.doService(service, sessionSettings=sessionSettings)
        self.assertTrue(result.overallStatus.isGood())
        allSessionInfos = self.client.allSessionInformations()
        self.assertEqual(len(allSessionInfos), 3)
        self.assertEqual(allSessionInfos[2].sessionSettings, sessionSettings)
        self.assertEqual(result.targets[0].clientConnectionId, 2)
        # check if the following session is not reused
        result = self.doService(service, sessionSettings=sessionSettings)
        self.assertTrue(result.overallStatus.isGood())
        allSessionInfos = self.client.allSessionInformations()
        self.assertEqual(len(allSessionInfos), 4)
        self.assertEqual(allSessionInfos[3].sessionSettings, sessionSettings)
        self.assertEqual(result.targets[0].clientConnectionId, 3)
        # check if a specific ClientConnectionId may be reused:
        result = self.doService(service, clientConnectionId=3)
        self.assertTrue(result.overallStatus.isGood())
        allSessionInfos = self.client.allSessionInformations()
        self.assertEqual(len(allSessionInfos), 4)
        self.assertEqual(result.targets[0].clientConnectionId, 3)
#  - the session we created before will be reused (as we're requesting a session with the
#    defaultSessionSettings, but such a session exists already, so it can be reused!)
#  - the Write service will be invoked, with the defaultWriteSettings we configured before
myClient.write( [address0, address1] , [ UInt32(60), Boolean(True) ] )


# ==================================================================================================
# 2) Overriding the defaults
# ==================================================================================================

# If needed, you can also configure the settings for each service call, using the **kwargs arguments
# of read/write/call/...

# e.g. set some special session settings for a specific read() call:
mySessionSettings = SessionSettings()
mySessionSettings.connectTimeoutSec = 0.5
mySessionSettings.sessionTimeoutSec = 100.0
# simply mention 'sessionSettings = ...' to use these settings as a **kwarg:
myClient.read( [address0, address1], sessionSettings = mySessionSettings ) 

# e.g. set some special service settings for a specific read() call:
myReadSettings = ReadSettings()
myReadSettings.callTimeoutSec = 0.5
myReadSettings.maxAgeSec      = 1.0
# simply mention 'serviceSettings = ...' to use these settings as a **kwarg:
myClient.read( [address0, address1], serviceSettings = myReadSettings ) 
# or combine them:
myClient.read( [address0, address1], serviceSettings = myReadSettings, sessionSettings = mySessionSettings ) 

# e.g. set some special subscription settings for a specific createMonitoredData() call:
mySubscriptionSettings = SubscriptionSettings()
myClientSettings.defaultSubscriptionSettings.lifeTimeCount         = 600
myClientSettings.defaultReadSettings.callTimeoutSec = 2.0
myClientSettings.defaultReadSettings.maxAgeSec      = 10.0
myClientSettings.defaultMethodCallSettings.callTimeoutSec = 2.0
myClientSettings.defaultWriteSettings.callTimeoutSec = 2.0
myClientSettings.defaultBrowseSettings.callTimeoutSec = 2.0
# and so on, and so on ...

# the clientSettings are in use as soon as you provide them again to the Client:
myClient.setClientSettings(myClientSettings)

# In case you want to choose different settings for specific read/write/... calls, then you can
# provide them also:
mySpecialSessionSettings = SessionSettings() 
mySpecialSessionSettings.sessionTimeoutSec = 500.0
mySpecialSessionSettings.connectTimeoutSec = 0.5
mySpecialReadSettings = ReadSettings()
mySpecialReadSettings.callTimeoutSec = 2.0
mySpecialReadSettings.maxAgeSec      = 10.0

result = myClient.read(addresses       = [address_TSetpoint, address_HeaterStatus],
                       attributeId     = pyuaf.util.attributeids.DisplayName,
                       sessionSettings = mySpecialSessionSettings,
                       serviceSettings = mySpecialReadSettings)



print("")
print("################################################################################################################")
print("Step 6: Learn how 'requests' and 'results' actually look like, and how you can configure them even more in detail")
print("################################################################################################################")