Index: OS/dev/dev_trunk_omp/GENERIC_TESTCASE/Root_check.py
===================================================================
--- /XIOS/dev/dev_trunk_omp/GENERIC_TESTCASE/Root_check.py	(revision 1707)
+++ 	(revision )
@@ -1,113 +1,0 @@
-import os
-import sys
-
-
-from user_param import *
-
-def main():
-	
-	configNamePattern=[0, 0, 0, 0, 0, 0]
-
-	f=open("user_param.py", "r")
-	for line in f:
-		line = line.strip()
-		if line.startswith("UsingServer2"):
-			configNamePattern[0] = '_UsingSrv2=' + UsingServer2
-		elif line.startswith("RatioServer2"):
-			configNamePattern[1] = '_RatioSrv2=' + repr(RatioServer2)
-		elif line.startswith("NumberPoolsServer2"):
-			configNamePattern[2] = '_NbPoolsSrv2=' + repr(NumberPoolsServer2)
-		elif line.startswith("NumberClients"):
-			configNamePattern[3] = '_NbClients=' + repr(NumberClients)
-		elif line.startswith("NumberServers"):
-			configNamePattern[4] = '_NbServers=' + repr(NumberServers)
-		elif line.startswith("Duration"):
-			configNamePattern[5] = '_Duration=' + Duration
-	f.close()
-		
-	
-	configName = "config"
-	defaultConfig = True
-
-	for i in range(len(configNamePattern)):
-		if configNamePattern[i] != 0:
-			configName = configName + configNamePattern[i]
-			defaultConfig = False
-
-	if defaultConfig:
-		configName = "config_default"
-
-
-	if not os.path.exists(configName):
-		os.mkdir(configName)
-		print("\n    ****************************************************************")
-		print("    * Directory " + repr(configName) + " Created ")
-		print("    * Copy results to \'not_validated_reference\' folder")
-		print("    ****************************************************************\n")
-
-		os.mkdir(configName+'/setup')
-		os.mkdir(configName+'/tmp_reference')
-		
-		os.system('cp param.def '+configName+'/setup/')
-		os.system('cp iodef.xml '+configName+'/setup/')
-		os.system('cp context_atm.xml '+configName+'/setup/')
-		os.system('cp context_grid_dynamico.xml '+configName+'/setup/')
-		os.system('cp dynamico_grid.nc '+configName+'/setup/')
-		
-		os.system('cp atm_output.nc '+configName+'/tmp_reference/')
-		# os.system('cp -r '+configName+'/tmp_reference/ ' + configName+'/reference/')
-
-	else:    
-		print("\n    ********************************************************")
-		print("    * Directory " + repr(configName) + " already exists")
-		print("    * Start comparing results with (tmp) references")
-		print("    ********************************************************\n")
-
-		tmp_ref = os.path.isdir(configName+'/tmp_reference')
-		ref = os.path.isdir(configName+'/reference')
-
-		if ref:
-			print("\n    =====================================")
-			print("    | Comparing results with references |")
-			print("    =====================================\n")
-			os.system('rm -rf '+configName+'/tmp_reference/')
-			tmp_ref = False
-			path = configName+'/reference/'
-		elif tmp_ref:
-			print("\n    ===================================================")
-			print("    | Comparing results with NON-Validated references |")
-			print("    ===================================================\n")
-			path = ' '+configName+'/tmp_reference/'
-
-		# os.system('> diff.txt')
-		
-		f=open("checkfile.def", "r")
-		g=open("diff.txt", "w+r")
-		h=open("report.txt", "a+")
-
-		for line in f:
-			line=line.strip()
-			line=line.rstrip()
-			if not line.startswith("#") and len(line) != 0:
-				cmd = 'cdo diffn '+ line + path + line + ' | tail -1 > diff.txt'
-				# print(cmd)
-				os.system(cmd)
-
-				for gline in g:
-					if gline.strip().startswith("0"):
-						h.write("test for "+configName+" for file "+line+"     \tPASSED\n")		
-						print "\n        ****************************************"
-						print "        ** "+line+" is valid !!! **"
-						print "\n        ****************************************"
-					else:
-						h.write("test for "+configName+" failed for "+line+"     \tFAILED\n")		
-						print "\n        **************************************************"
-						print "        ** "+line+" is NOT valid. Please debugging.. **"
-						print "\n        **************************************************"
-		f.close()
-
-
-
-
-if __name__== "__main__":
-  main()
Index: /XIOS/dev/dev_trunk_omp/GENERIC_TESTCASE/check.py
===================================================================
--- /XIOS/dev/dev_trunk_omp/GENERIC_TESTCASE/check.py	(revision 1708)
+++ /XIOS/dev/dev_trunk_omp/GENERIC_TESTCASE/check.py	(revision 1708)
@@ -0,0 +1,110 @@
+import os
+import sys
+
+
+from user_param import *
+
+def main():
+	
+	configNamePattern=[0, 0, 0, 0, 0, 0]
+
+	f=open("user_param.py", "r")
+	for line in f:
+		line = line.strip()
+		if line.startswith("UsingServer2"):
+			configNamePattern[0] = '_UsingSrv2=' + UsingServer2
+		elif line.startswith("RatioServer2"):
+			configNamePattern[1] = '_RatioSrv2=' + repr(RatioServer2)
+		elif line.startswith("NumberPoolsServer2"):
+			configNamePattern[2] = '_NbPoolsSrv2=' + repr(NumberPoolsServer2)
+		elif line.startswith("NumberClients"):
+			configNamePattern[3] = '_NbClients=' + repr(NumberClients)
+		elif line.startswith("NumberServers"):
+			configNamePattern[4] = '_NbServers=' + repr(NumberServers)
+		elif line.startswith("Duration"):
+			configNamePattern[5] = '_Duration=' + Duration
+	f.close()
+		
+	
+	configName = "config"
+	defaultConfig = True
+
+	for i in range(len(configNamePattern)):
+		if configNamePattern[i] != 0:
+			configName = configName + configNamePattern[i]
+			defaultConfig = False
+
+	if defaultConfig:
+		configName = "config_default"
+
+
+	if not os.path.exists(configName):
+		os.mkdir(configName)
+		print("\n    ****************************************************************")
+		print("    * Directory " + repr(configName) + " Created ")
+		print("    * Copy results to \'not_validated_reference\' folder")
+		print("    ****************************************************************\n")
+
+		os.mkdir(configName+'/setup')
+		os.mkdir(configName+'/tmp_reference')
+		
+		os.system('cp param.def '+configName+'/setup/')
+		os.system('cp iodef.xml '+configName+'/setup/')
+		os.system('cp context_atm.xml '+configName+'/setup/')
+		os.system('cp context_grid_dynamico.xml '+configName+'/setup/')
+		os.system('cp dynamico_grid.nc '+configName+'/setup/')
+		
+		os.system('cp atm_output.nc '+configName+'/tmp_reference/')
+		# os.system('cp -r '+configName+'/tmp_reference/ ' + configName+'/reference/')
+
+	else:    
+		print("\n    ********************************************************")
+		print("    * Directory " + repr(configName) + " already exists")
+		print("    * Start comparing results with (tmp) references")
+		print("    ********************************************************\n")
+
+		tmp_ref = os.path.isdir(configName+'/tmp_reference')
+		ref = os.path.isdir(configName+'/reference')
+
+		if ref:
+			print("\n    =====================================")
+			print("    | Comparing results with references |")
+			print("    =====================================\n")
+			os.system('rm -rf '+configName+'/tmp_reference/')
+			tmp_ref = False
+			path = configName+'/reference/'
+		elif tmp_ref:
+			print("\n    ===================================================")
+			print("    | Comparing results with NON-Validated references |")
+			print("    ===================================================\n")
+			path = ' '+configName+'/tmp_reference/'
+		
+		f=open("checkfile.def", "r")
+		g=open("diff.txt", "w+r")
+		h=open("report.txt", "a+")
+
+		for line in f:
+			line=line.strip()
+			line=line.rstrip()
+			if not line.startswith("#") and len(line) != 0:
+				cmd = 'cdo diffn '+ line + path + line + ' | tail -1 > diff.txt'
+				os.system(cmd)
+
+				for gline in g:
+					if gline.strip().startswith("0"):
+						h.write("test for "+configName+" for file "+line+"     \tPASSED\n")		
+						print "\n        ****************************************"
+						print "        ** "+line+" is valid !!! **"
+						print "\n        ****************************************"
+					else:
+						h.write("test for "+configName+" failed for "+line+"     \tFAILED\n")		
+						print "\n        **************************************************"
+						print "        ** "+line+" is NOT valid. Please debugging.. **"
+						print "\n        **************************************************"
+		f.close()
+
+
+
+
+if __name__== "__main__":
+  main()
Index: /XIOS/dev/dev_trunk_omp/GENERIC_TESTCASE/config.py
===================================================================
--- /XIOS/dev/dev_trunk_omp/GENERIC_TESTCASE/config.py	(revision 1708)
+++ /XIOS/dev/dev_trunk_omp/GENERIC_TESTCASE/config.py	(revision 1708)
@@ -0,0 +1,46 @@
+import os
+import sys
+
+from default_param import *
+from user_param import *
+
+def main():
+	
+	f=open("param.def", "w")
+
+	f.write("&params_run\n")
+	f.write('UsingServer2 = ' + UsingServer2 + '\n')
+	f.write('RatioServer2 = ' + repr(RatioServer2) + '\n')
+	f.write('NumberPoolsServer2 = ' + repr(NumberPoolsServer2) + '\n')
+	f.write('nb_proc_atm = ' + repr(NumberClients) + '\n')
+	f.write('NumberServers = ' + repr(NumberServers) + '\n')
+	f.write('duration = ' + repr(Duration) + '\n')
+	f.write('/\n\n')
+
+	f.close()
+
+	nb_proc = NumberClients+NumberServers
+
+	filein = open("iodef.xml", "r")
+	fileout = open("iodef.xml.tmp", "w")
+	for line in filein:
+		if 'number_pools_server2' in line:
+			fileout.write( "        <variable id=\"number_pools_server2\" type=\"int\">"+repr(NumberPoolsServer2)+"</variable>\n")
+		elif 'using_server2' in line:
+			fileout.write( "        <variable id=\"using_server2\" type=\"bool\">"+UsingServer2+"</variable>\n")
+		elif 'ratio_server2' in line:
+			fileout.write( "        <variable id=\"ratio_server2\" type=\"int\">"+repr(RatioServer2)+"</variable>\n")
+		else:
+			fileout.write(line)
+
+	filein.close()
+	fileout.close()
+	os.rename("iodef.xml.tmp", "iodef.xml")
+
+
+	print >>sys.stderr, nb_proc
+
+
+
+if __name__== "__main__":
+  main()
Index: /XIOS/dev/dev_trunk_omp/GENERIC_TESTCASE/default_param.py
===================================================================
--- /XIOS/dev/dev_trunk_omp/GENERIC_TESTCASE/default_param.py	(revision 1708)
+++ /XIOS/dev/dev_trunk_omp/GENERIC_TESTCASE/default_param.py	(revision 1708)
@@ -0,0 +1,6 @@
+UsingServer2 = 'false'
+RatioServer2 = 50
+NumberPoolsServer2 = 1
+NumberClients = 8
+NumberServers = 4
+Duration = '1d'
Index: /XIOS/dev/dev_trunk_omp/GENERIC_TESTCASE/run_sub_test.sh
===================================================================
--- /XIOS/dev/dev_trunk_omp/GENERIC_TESTCASE/run_sub_test.sh	(revision 1708)
+++ /XIOS/dev/dev_trunk_omp/GENERIC_TESTCASE/run_sub_test.sh	(revision 1708)
@@ -0,0 +1,33 @@
+#!/bin/bash
+
+
+cp ../user_config.py sub_config1.py
+cp ../config.py sub_config2.py
+cp ../check.py sub_check.py
+cp ../default_param.py default_param.py
+
+
+touch report.txt
+> report.txt
+
+nb_config=$(python sub_config1.py 2>&1)                                                                                                                    
+
+
+counter=0
+while [ $counter -lt $nb_config ]
+do
+
+rm -f user_param.py
+
+cp user_param.py.$counter user_param.py
+
+((counter++))
+
+nb_proc=$(python sub_config2.py 2>&1) 
+
+mpirun -np $nb_proc ../../build_prod/bin/generic_testcase.exe
+
+
+python sub_check.py
+
+done
Index: /XIOS/dev/dev_trunk_omp/GENERIC_TESTCASE/run_test.sh
===================================================================
--- /XIOS/dev/dev_trunk_omp/GENERIC_TESTCASE/run_test.sh	(revision 1707)
+++ /XIOS/dev/dev_trunk_omp/GENERIC_TESTCASE/run_test.sh	(revision 1708)
@@ -10,15 +10,10 @@
 
 cd test_function
+
 echo "" >> ../$fname
 echo "testing reduce functions..." >> ../$fname
 echo "" >> ../$fname
-./run.sh
-cat $gname >> ../$fname 
 
-cd ../test_axis_algo
-echo "" >> ../$fname
-echo "testing axis transformations..." >> ../$fname
-echo "" >> ../$fname
-./run.sh
+../run_sub_test.sh
 cat $gname >> ../$fname 
 
@@ -26,2 +21,14 @@
 
 
+cd ../test_axis_algo
+
+echo "" >> ../$fname
+echo "testing axis transformations..." >> ../$fname
+echo "" >> ../$fname
+
+../run_sub_test.sh
+cat $gname >> ../$fname 
+
+
+
+
Index: /XIOS/dev/dev_trunk_omp/GENERIC_TESTCASE/sub_test_run.sh
===================================================================
--- /XIOS/dev/dev_trunk_omp/GENERIC_TESTCASE/sub_test_run.sh	(revision 1708)
+++ /XIOS/dev/dev_trunk_omp/GENERIC_TESTCASE/sub_test_run.sh	(revision 1708)
@@ -0,0 +1,34 @@
+#!/bin/bash
+
+
+cp ../main_config.py first_config.py
+cp ../sub_config.py second_config.py
+cp ../Root_check.py check.py
+
+
+touch report.txt
+> report.txt
+
+nb_config=$(python first_config.py 2>&1)                                                                                                                    
+
+
+counter=0
+while [ $counter -lt $nb_config ]
+do
+
+rm -f user_param.py
+
+cp user_param.py.$counter user_param.py
+
+((counter++))
+
+# nb_proc=$(python Config.py 2>&1) 
+nb_proc=$(python second_config.py 2>&1) 
+
+mpirun -np $nb_proc ../../build_prod/bin/generic_testcase.exe
+
+
+python check.py
+# echo $valid
+
+done
Index: OS/dev/dev_trunk_omp/GENERIC_TESTCASE/test_axis_algo/default_param.py
===================================================================
--- /XIOS/dev/dev_trunk_omp/GENERIC_TESTCASE/test_axis_algo/default_param.py	(revision 1707)
+++ 	(revision )
@@ -1,6 +1,0 @@
-UsingServer2 = 'false'
-RatioServer2 = 50
-NumberPoolsServer2 = 1
-NumberClients = 8
-NumberServers = 4
-Duration = '1d'
Index: OS/dev/dev_trunk_omp/GENERIC_TESTCASE/test_axis_algo/run.sh
===================================================================
--- /XIOS/dev/dev_trunk_omp/GENERIC_TESTCASE/test_axis_algo/run.sh	(revision 1707)
+++ 	(revision )
@@ -1,27 +1,0 @@
-#!/bin/bash
-
-touch report.txt
-> report.txt
-
-nb_config=$(python mul_Config.py 2>&1)                                                                                                                    
-
-
-counter=0
-while [ $counter -lt $nb_config ]
-do
-
-rm -f user_param.py
-
-cp user_param.py.$counter user_param.py
-
-((counter++))
-
-nb_proc=$(python Config.py 2>&1) 
-
-mpirun -np $nb_proc ../../build_prod/bin/generic_testcase.exe
-
-cp ../Root_check.py check.py
-python check.py
-# echo $valid
-
-done
Index: OS/dev/dev_trunk_omp/GENERIC_TESTCASE/test_function/default_param.py
===================================================================
--- /XIOS/dev/dev_trunk_omp/GENERIC_TESTCASE/test_function/default_param.py	(revision 1707)
+++ 	(revision )
@@ -1,6 +1,0 @@
-UsingServer2 = 'false'
-RatioServer2 = 50
-NumberPoolsServer2 = 1
-NumberClients = 8
-NumberServers = 4
-Duration = '1d'
Index: OS/dev/dev_trunk_omp/GENERIC_TESTCASE/test_function/run.sh
===================================================================
--- /XIOS/dev/dev_trunk_omp/GENERIC_TESTCASE/test_function/run.sh	(revision 1707)
+++ 	(revision )
@@ -1,26 +1,0 @@
-#!/bin/bash
-
-touch report.txt
-> report.txt
-
-nb_config=$(python mul_Config.py 2>&1)                                                                                                                    
-
-
-counter=0
-while [ $counter -lt $nb_config ]
-do
-
-rm -f user_param.py
-
-cp user_param.py.$counter user_param.py
-
-((counter++))
-
-nb_proc=$(python Config.py 2>&1) 
-
-mpirun -np $nb_proc ../../build_prod/bin/generic_testcase.exe
-
-python Check.py
-# echo $valid
-
-done
Index: /XIOS/dev/dev_trunk_omp/GENERIC_TESTCASE/user_config.py
===================================================================
--- /XIOS/dev/dev_trunk_omp/GENERIC_TESTCASE/user_config.py	(revision 1708)
+++ /XIOS/dev/dev_trunk_omp/GENERIC_TESTCASE/user_config.py	(revision 1708)
@@ -0,0 +1,88 @@
+import os
+import sys
+
+from default_param import *
+
+def main():
+
+	nb_config = 1;
+	configs = [0, 0, 0, 0, 0, 0]
+	configs_arg = [[],[],[],[],[],[]]
+
+	f=open("user_params.def", "r")
+	for line in f:
+		line = line.strip()
+		if len(line) != 0:
+			if not line.startswith("#"):
+				nb_config = nb_config * (line.count(",")+1)
+				line = line.replace(",", "")
+				line = line.replace("=", "")
+				if line.startswith("UsingServer2"):
+					line = line.replace("UsingServer2", "")
+					for word in line.split():
+						configs[0] += 1
+						configs_arg[0].append('UsingServer2 = '+word)
+				elif line.startswith("RatioServer2"):
+					line = line.replace("RatioServer2", "")
+					for word in line.split():
+						configs[1] += 1
+						configs_arg[1].append('RatioServer2 = '+word)
+				elif line.startswith("NumberPoolsServer2"):
+					line = line.replace("NumberPoolsServer2", "")
+					for word in line.split():
+						configs[2] += 1
+						configs_arg[2].append('NumberPoolsServer2 = '+word)
+				elif line.startswith("NumberClients"):
+					line = line.replace("NumberClients", "")
+					for word in line.split():
+						configs[3] += 1
+						configs_arg[3].append('NumberClients = '+word)
+				elif line.startswith("NumberServers"):
+					line = line.replace("NumberServers", "")
+					for word in line.split():
+						configs[4] += 1
+						configs_arg[4].append('NumberServers = '+word)
+				elif line.startswith("Duration"):
+					line = line.replace("Duration", "")
+					for word in line.split():
+						configs[5] += 1
+						configs_arg[5].append('Duration = '+word)
+
+				
+	
+	for x in range(6):
+		if configs[x]==0:
+			configs[x] =1
+
+	config_id=0
+	for i0 in range(configs[0]):
+		hasContent0 = len(configs_arg[0])>0
+		for i1 in range(configs[1]):
+			hasContent1 = len(configs_arg[1])>0
+			for i2 in range(configs[2]):
+				hasContent2 = len(configs_arg[2])>0
+				for i3 in range(configs[3]):
+					hasContent3 = len(configs_arg[3])>0
+					for i4 in range(configs[4]):
+						hasContent4 = len(configs_arg[4])>0
+						for i5 in range(configs[5]):
+							hasContent5 = len(configs_arg[5])>0
+							filename = "user_param.py."+repr(config_id)
+							g = open(filename, "w")
+
+							if hasContent0: g.write(configs_arg[0][i0]+'\n')
+							if hasContent1: g.write(configs_arg[1][i1]+'\n')
+							if hasContent2: g.write(configs_arg[2][i2]+'\n')
+							if hasContent3: g.write(configs_arg[3][i3]+'\n')
+							if hasContent4: g.write(configs_arg[4][i4]+'\n')
+							if hasContent5: g.write(configs_arg[5][i5]+'\n')
+							
+							config_id +=1
+							g.close
+
+
+	print >>sys.stderr, nb_config
+
+
+if __name__== "__main__":
+  main()
