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)
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("################################################################################################################")