mirror of
https://github.com/OpenFOAM/ThirdParty-6.git
synced 2025-12-08 06:57:43 +00:00
151 lines
5.2 KiB
Python
151 lines
5.2 KiB
Python
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])
|
|
#--------------------
|
|
|
|
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
|
|
|
|
url = available_server_urls[2]
|
|
print "Connect to third server ", url
|
|
server3_connection = Connect(getHost(url), getPort(url))
|
|
|
|
# Test that we have one more connection
|
|
if (len(servermanager.Connections) != 4):
|
|
errors += 1
|
|
print "Error pvpython should be connected to a built-in session + three remote one. Currently connected to ", servermanager.Connections
|
|
|
|
print "Available connections: ", servermanager.Connections
|
|
|
|
# Test that last created connection is the active one
|
|
if ( servermanager.ActiveConnection != server3_connection):
|
|
errors += 1
|
|
print "Error Invalid active connection. Expected ", server3_connection, " and got ", servermanager.ActiveConnection
|
|
|
|
# ------- Do the proper RemoteSourceProxy testing --------------
|
|
|
|
# Create a set of sphere across the remote sessions
|
|
SetActiveConnection(server1_connection, globals())
|
|
rSphere1 = Sphere(ThetaResolution=10, PhiResolution=10)
|
|
rSphere1.UpdatePipeline()
|
|
size1 = rSphere1.GetDataInformation().GetNumberOfPoints()
|
|
|
|
SetActiveConnection(server2_connection, globals())
|
|
rSphere2 = Sphere(ThetaResolution=11, PhiResolution=11)
|
|
rSphere2.UpdatePipeline()
|
|
size2 = rSphere2.GetDataInformation().GetNumberOfPoints()
|
|
|
|
SetActiveConnection(server3_connection, globals())
|
|
rSphere3 = Sphere(ThetaResolution=12, PhiResolution=12)
|
|
rSphere3.UpdatePipeline()
|
|
size3 = rSphere3.GetDataInformation().GetNumberOfPoints()
|
|
|
|
# Create remote source on the built-in session
|
|
SetActiveConnection(built_in_connection, globals())
|
|
remoteProxy = RemoteSourceProxy()
|
|
remoteProxy.SetExternalProxy(rSphere1, 0)
|
|
remoteProxy.UpdatePipeline()
|
|
|
|
# Test that the data in built-in is the same size as the remote one
|
|
remoteProxy.UpdatePipeline()
|
|
size = remoteProxy.GetDataInformation().GetNumberOfPoints()
|
|
if ( size1 != size ):
|
|
errors += 1
|
|
print "Error Invalid data size. Expected ", size1, " and got ", size
|
|
else:
|
|
print "Found size ", size, " for server 1"
|
|
|
|
# Switch to proxy on server 2 and test size
|
|
remoteProxy.SetExternalProxy(rSphere2, 0)
|
|
remoteProxy.UpdatePipeline()
|
|
size = remoteProxy.GetDataInformation().GetNumberOfPoints()
|
|
if ( size2 != size ):
|
|
errors += 1
|
|
print "Error Invalid data size. Expected ", size2, " and got ", size
|
|
else:
|
|
print "Found size ", size, " for server 2"
|
|
|
|
# Switch to proxy on server 3 and test size
|
|
remoteProxy.SetExternalProxy(rSphere3, 0)
|
|
remoteProxy.UpdatePipeline()
|
|
size = remoteProxy.GetDataInformation().GetNumberOfPoints()
|
|
if ( size3 != size ):
|
|
errors += 1
|
|
print "Error Invalid data size. Expected ", size3, " and got ", size
|
|
else:
|
|
print "Found size ", size, " for server 3"
|
|
|
|
# Change data size on server 3 and make sure the change get propagated to the built-in
|
|
rSphere3.ThetaResolution = 13
|
|
rSphere3.PhiResolution = 13
|
|
rSphere3.UpdatePipeline()
|
|
size3 = rSphere3.GetDataInformation().GetNumberOfPoints()
|
|
|
|
remoteProxy.UpdatePipeline()
|
|
size = remoteProxy.GetDataInformation().GetNumberOfPoints()
|
|
if ( size3 != size ):
|
|
errors += 1
|
|
print "Error Invalid data size. Expected ", size3, " and got ", size
|
|
else:
|
|
print "Found size ", size, " for server 3 after update"
|
|
|
|
# Make sure the size is not 0
|
|
if ( size == 0 or size1 == 0 or size1 == 0 or size1 == 0):
|
|
errors += 1
|
|
print "Error Invalid data size. None of them should be 0"
|
|
|
|
# --------------------------------------------------------------
|
|
# 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
|
|
Disconnect()
|
|
print "Available connections after disconnect: ", servermanager.Connections
|
|
|
|
if errors > 0:
|
|
raise RuntimeError, "An error occured during the execution"
|