from paraview.simple import * from paraview import servermanager import time # Make sure the test driver know that process has properly started print "Process started" errors = 0 #-------------------- Helpers methods ---------------- def getHost(url): return url.split(':')[1][2:] def getScheme(url): return url.split(':')[0] def getPort(url): return int(url.split(':')[2]) #-------------------- import os def findInSubdirectory(filename, subdirectory=''): if subdirectory: path = subdirectory else: path = os.getcwd() for root, dirs, names in os.walk(path): for name in names: if (name.find(filename) > -1) and ( (name.find('.dll') > -1) or (name.find('.so') > -1) or (name.find('.dylib') > -1)): return os.path.join(root, name) raise 'File not found' #-------------------- print "Start multi-server testing" options = servermanager.vtkProcessModule.GetProcessModule().GetOptions() available_server_urls = options.GetServerURL().split('|') built_in_connection = servermanager.ActiveConnection # Test if the built-in connection is here if (len(servermanager.Connections) != 1): errors += 1 print "Error pvpython should be connected to a built-in session. Currently connected to ", servermanager.Connections url = available_server_urls[0] print "Connect to first server ", url server1_connection = Connect(getHost(url), getPort(url)) # Test that we have one more connection if (len(servermanager.Connections) != 2): errors += 1 print "Error pvpython should be connected to a built-in session + one remote one. Currently connected to ", servermanager.Connections url = available_server_urls[1] print "Connect to second server ", url server2_connection = Connect(getHost(url), getPort(url)) # Test that we have one more connection if (len(servermanager.Connections) != 3): errors += 1 print "Error pvpython should be connected to a built-in session + two remote one. Currently connected to ", servermanager.Connections print "Available connections: ", servermanager.Connections # Test that last created connection is the active one if ( servermanager.ActiveConnection != server2_connection): errors += 1 print "Error Invalid active connection. Expected ", server2_connection, " and got ", servermanager.ActiveConnection # Test that SetActiveConnection is working as expected SetActiveConnection(server1_connection, globals()) if ( servermanager.ActiveConnection != server1_connection): errors += 1 print "Error Invalid active connection. Expected ", server1_connection, " and got ", servermanager.ActiveConnection # Test that SetActiveConnection is working as expected SetActiveConnection(built_in_connection, globals()) if ( servermanager.ActiveConnection != built_in_connection): errors += 1 print "Error Invalid active connection. Expected ", built_in_connection, " and got ", servermanager.ActiveConnection # Test that SetActiveConnection is working as expected SetActiveConnection(server2_connection, globals()) if ( servermanager.ActiveConnection != server2_connection): errors += 1 print "Error Invalid active connection. Expected ", server2_connection, " and got ", servermanager.ActiveConnection # Load plugin on server2 SetActiveConnection(server2_connection, globals()) LoadDistributedPlugin("PacMan", True, globals()) # Create PacMan on server2 pacMan_s2 = PacMan() # Swtich to server1 and Create PacMan ==> This should fail SetActiveConnection(server1_connection, globals()) try: pacMan_s1 = PacMan() errors += 1 print "Error: PacMan should not be available on Server1" except NameError: print "OK: PacMan is not available on server1" # Swtich to server2 with globals and switch back to server1 with not updating the globals SetActiveConnection(server2_connection, globals()) SetActiveConnection(server1_connection) # Create PacMan ==> This should fail try: pacMan_s1 = PacMan() errors += 1 print "Error: PacMan should not be available on Server1" except RuntimeError: print "OK: PacMan is not available on server1" # Make sure built-in as not the pacMan SetActiveConnection(server2_connection, globals()) SetActiveConnection(built_in_connection, globals()) try: pacMan_builtin = PacMan() errors += 1 print "Error: PacMan should not be available on built-in" except NameError: print "OK: PacMan is not available on built-in" # Load plugin localy for built-in # Create PacMan ==> This should be OK on built-in SetActiveConnection(built_in_connection, globals()) LoadDistributedPlugin("PacMan", False, globals()) pacMan_builtin = PacMan() print "After loading the plugin locally in built-in, the PacMan definition is available" # Swtich to server1 and Create PacMan ==> This should fail SetActiveConnection(server1_connection, globals()) try: pacMan_s1 = PacMan() errors += 1 print "Error: PacMan should not be available on Server1" except NameError: print "OK: PacMan is still not available on server1" # Disconnect and quit application... Disconnect() print "Available connections after disconnect: ", servermanager.Connections Disconnect() print "Available connections after disconnect: ", servermanager.Connections Disconnect() print "Available connections after disconnect: ", servermanager.Connections if errors > 0: raise RuntimeError, "An error occured during the execution"