summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJean-Philippe NOEL2013-03-29 09:39:37 +0100
committerJean-Philippe NOEL2013-04-08 17:57:40 +0200
commit7721cc7a6ef8fa83f97a5230123d4ac649902612 (patch)
treef03cb9fcab503b9e37c304aa6150e3100f3bac37
parentbcc669cf454c0f3b9f3cd41a250dba7072fff7e9 (diff)
validation: use templates for TCL files, closes #3902
-rw-r--r--[-rwxr-xr-x]validation/test/P2MP_throughput/P2MP_throughput.py72
-rw-r--r--validation/test/P2MP_throughput/config.py56
-rw-r--r--validation/test/P2MP_throughput/configs/MSE500-200_16_slaves.py41
-rw-r--r--validation/test/P2MP_throughput/configs/MSE500-500_16_slaves.py41
-rw-r--r--validation/test/P2MP_throughput/configs/MSE500-500_32_slaves.py41
-rw-r--r--validation/test/P2MP_throughput/configs/MSE500-500_64_slaves.py41
-rw-r--r--validation/test/P2MP_throughput/configs/MSE500-500_summary.py116
-rw-r--r--validation/test/P2MP_throughput/configs/SPC200_16_slaves.py41
-rw-r--r--validation/test/P2MP_throughput/configs/SPC300_16_slaves.py41
-rw-r--r--validation/validlib/ixia.py187
-rw-r--r--validation/validlib/ixia_tcl_templates/bcast.tcl535
-rw-r--r--validation/validlib/ixia_tcl_templates/floss.tcl660
-rw-r--r--validation/validlib/ixia_tcl_templates/latency.tcl655
-rw-r--r--validation/validlib/ixia_tcl_templates/tput.tcl737
14 files changed, 2931 insertions, 333 deletions
diff --git a/validation/test/P2MP_throughput/P2MP_throughput.py b/validation/test/P2MP_throughput/P2MP_throughput.py
index 8719039b2b..0846e84363 100755..100644
--- a/validation/test/P2MP_throughput/P2MP_throughput.py
+++ b/validation/test/P2MP_throughput/P2MP_throughput.py
@@ -58,15 +58,14 @@ def report(config, config_file):
# Generate the images and retrieve the traces
traces_files = []
- for (test_type, test_comment, prim_directory, sec_directory, _, tests,
+ for (test_type, slaves_nb, prim_directory, sec_directory, _, directions,
ylim) in config["tests"]:
prim_directory = get_ixia_directory(prim_directory, "primary")
sec_directory = get_ixia_directory(sec_directory, "secondary")
- figure_file = get_figure_file(test_type, test_comment, prim_directory)
+ figure_file = get_figure_file(test_type, slaves_nb, prim_directory)
figure_path = os.path.join(reports_directory, figure_file)
- [prim_scripts, sec_scripts, labels] = zip(*tests)
- traces_files_aux = ixia.draw(test_type, prim_scripts, sec_scripts,
- prim_directory, sec_directory, labels,
+ traces_files_aux = ixia.draw(test_type, slaves_nb, directions,
+ prim_directory, sec_directory,
ylim, figure_path)
traces_files.append(traces_files_aux)
@@ -78,31 +77,19 @@ def report(config, config_file):
def check_config():
- for (test_type, _, _, sec_directory, _, tests, _) in config["tests"]:
+ for (test_type, slaves_nb, _, sec_directory, _, _, _) in config["tests"]:
if test_type != "tput":
assert sec_directory is None, \
("A secondary directory is allowed for ""tput"" tests only",
(test_type, sec_directory))
- for test in tests:
- (prim_script, sec_script, _) = test
- # We check that the scripts are available
- if config["make_measurements"]:
- ixia.check_script_exists(prim_script)
- ixia.check_script_exists(sec_script)
- # We check that the secondary scripts are correctly specified
- if test_type == "tput" or test_type == "bcast":
- assert sec_script is None, \
- ("A secondary script is not allowed", (test_type, test))
- elif test_type == "latency" or test_type == "floss":
- assert sec_script is not None, \
- ("A secondary script is mandatory", (test_type, test))
- else:
- assert False, test_type
+ assert (1 + slaves_nb) <= len(plug.get_keys()), \
+ "There are more active slaves than slaves"
# We check the unicity of the figure files
- combinations = [ (test_type, test_comment, prim_directory)
- for (test_type, test_comment, prim_directory, _, _, _, _) \
- in config["tests"] ]
+ combinations = \
+ [ (test_type, slaves_nb, prim_directory)
+ for (test_type, slaves_nb, prim_directory, _, _, _, _) \
+ in config["tests"] ]
figures_files = map(get_figure_file, *zip(*combinations))
assert sorted(list_utils.drop_duplicates(figures_files)) == \
sorted(figures_files), \
@@ -127,27 +114,28 @@ def rst_results():
"=======\n" \
"\n"
results = []
- for (test_type, test_comment, prim_directory, _, _, _, _) \
+ for (test_type, slaves_nb, prim_directory, _, _, _, _) \
in config["tests"]:
prim_directory = get_ixia_directory(prim_directory, "primary")
- results.append(rst_result(test_type, test_comment, prim_directory))
+ results.append(rst_result(test_type, slaves_nb, prim_directory))
return title + rst_utils.page_break().join(results)
-def rst_result(test_type, test_comment, prim_directory):
+def rst_result(test_type, slaves_nb, prim_directory):
formatted_test_type = {"tput":"Throughput", "latency":"Latency",
"bcast":"Broadcast", "floss":"Frame loss"}[test_type]
formatted_prim_directory = prim_directory.replace("_", " ").split("/")
- title_elements = [formatted_test_type, test_comment] + \
- formatted_prim_directory
+ title_elements = [formatted_test_type] + \
+ formatted_prim_directory + \
+ ["%d active slave(s)" % slaves_nb]
return \
" - ".join(title_elements) + \
rst_utils.title_break("-") + \
".. figure:: " + \
- get_figure_file(test_type, test_comment, prim_directory) + "\n" + \
+ get_figure_file(test_type, slaves_nb, prim_directory) + "\n" + \
" :scale: 100 %\n" + \
"\n"
@@ -161,12 +149,12 @@ def make_measurements():
# is executed
prim_directory = config["reports_directory"]
- for (test_type, test_comment, _, _, parameters, tests, _) \
+ for (test_type, slaves_nb, _, _, parameters, directions, _) \
in config["tests"]:
- for (prim_script, sec_script, direction) in tests:
+ for direction in directions:
- print "\nExecuting", (test_type, test_comment, prim_script), \
+ print "\nExecuting", (test_type, slaves_nb, direction), \
"..."
# We switch off the power plugs which may have been switched on by
@@ -181,7 +169,7 @@ def make_measurements():
# We retrieve here the new parameters deduced from the
# secondary script
new_parameters_list = get_parameters(test_type,
- sec_script,
+ slaves_nb,
direction,
prim_directory)
@@ -190,9 +178,10 @@ def make_measurements():
new_parameters = [ (test_type, key, value)
for (key, value) in new_parameters]
clean_traces()
- ixia.execute(prim_script, prim_directory, new_parameters)
- ixia.dump_traces(test_type, prim_directory, prim_script,
- config["ftp_server"])
+ ixia.execute(test_type, slaves_nb, direction, prim_directory,
+ new_parameters)
+ ixia.dump_traces(test_type, slaves_nb, direction,
+ prim_directory, config["ftp_server"])
def restart_plugs(ixia_master_plug_checked):
@@ -208,12 +197,12 @@ def restart_plugs(ixia_master_plug_checked):
prim_directory = config["reports_directory"]
ixia.check_master_plug(prim_directory)
-def get_parameters(test_type, sec_script, direction, prim_directory):
+def get_parameters(test_type, slaves_nb, direction, prim_directory):
if (test_type == "tput" or test_type == "bcast"):
return [[]]
elif (test_type == "floss" or test_type == "latency"):
(frame_sizes, [max_values], _, _) = \
- ixia.extract_data("tput", [sec_script], [None], prim_directory)
+ ixia.extract_data("tput", slaves_nb, [direction], prim_directory)
directions = [direction] * len(frame_sizes)
return map(get_parameters_aux, frame_sizes, max_values, directions)
else:
@@ -241,10 +230,9 @@ def get_reports_directory():
os.makedirs(directory)
return directory
-def get_figure_file(test_type, test_comment, prim_directory):
- test_comment = test_comment.replace(" ","_")
+def get_figure_file(test_type, slaves_nb, prim_directory):
prim_directory = prim_directory.replace(" ","_").replace("/", "_")
- return test_type + "_" + test_comment + "_" + prim_directory + ".png"
+ return test_type + "_" + str(slaves_nb) + "_" + prim_directory + ".png"
def get_ixia_directory(directory, level):
if directory == "default":
diff --git a/validation/test/P2MP_throughput/config.py b/validation/test/P2MP_throughput/config.py
index 704af9061a..7412e4117e 100644
--- a/validation/test/P2MP_throughput/config.py
+++ b/validation/test/P2MP_throughput/config.py
@@ -44,24 +44,23 @@
},
# [("tput" (for throughput) | "latency" (for latency) |
# "bcast" (for broadcast) | "floss" (for frame loss),
- # Type of Ixia test - It is used to :
+ # Type of Ixia test
+ # It is used to :
# - change the right parameters in the TCL files
# - select the right Ixia result files
# - customize the layout of the figures
- # Comment about the test. This parameter is used only for the report
- # generation, for both the figure file names and for the titles in the
- # PDF files. Indeed, since there may be several tests results,
- # corresponding to different TCL scripts applied on the same bench,
- # it is necessary to be able to distinguish them.
+ # Number of active slaves
# Name of the directory where to read (but not write) the Ixia
# results
# If "default", the above value of "reports_directory" is used
- # Each combination of (type of Ixia test, test comment, name of directory)
- # must be unique. Nevertheless, it is not possible to define
- # config["tests"] as a dictionnary since the order is important
+ # Each combination of (type of Ixia test, number of active slaves,
+ # name of directory) must be unique since it is used for the figure file
+ # names and for the titles in the PDF files.
+ # Nevertheless, it is not possible to define config["tests"] as a
+ # dictionnary since the order is important
# (an "floss" test must be executed after the corresponging "tput" test)
# Name of the secondary directory where to read the Ixia results
@@ -75,12 +74,8 @@
# See the Ixia doc for more details about the units and the meaning
# of these parameters
- # [(Name of the primary TCL file, used for the Ixia test,
- # Name of the secondary TCL file, used to modify the parameters
- # of the primary TCL file,
- # "up"|"down"|"bi"
- # Direction
- # )]
+ # ["up"|"down"|"bi"]
+ # Directions
# "default"|(Ymin, Ymax)
# Limits of the Y-axis on the figure
@@ -88,7 +83,7 @@
"tests":
[
("tput",
- "All slaves active",
+ 16,
"default",
"default",
[("numtrials", 3),
@@ -96,43 +91,39 @@
("resolution", 0.05),
("burstSize", 1),
("framesizeList",
- "{ 68 128 256 512 768 1024 1280 1518 }")],
- [("Quick_Bench-5_down16", None, "down"),
- ("Quick_Bench-5_up16", None, "up"),
- ("Quick_Bench-5_bidir16", None, "bi")],
+ "{ 68 128 256 512 768 1024 1280 1518 }"),
+ ("percentMaxRate", 20)],
+ ["down", "up", "bi"],
"default"
),
("latency",
- "All slaves active",
+ 16,
"default",
None,
[("numtrials", 1)],
- [("Quick_Bench-5_Latency_down16", "Quick_Bench-5_down16", "down"),
- ("Quick_Bench-5_Latency_up16", "Quick_Bench-5_up16", "up"),
- ('Quick_Bench-5_Latency_bidir16', "Quick_Bench-5_bidir16", "bi")],
+ ["down", "up", "bi"],
(0, 70)
),
("bcast",
- "All slaves active",
+ 16,
"default",
None,
[("numtrials", 3),
("tolerance", 0),
("resolution", 0.01),
("framesizeList",
- "{ 68 128 256 512 768 1024 1280 1518 }")],
- [('Bench-5_Broadcast_16slaves', None, "down")],
+ "{ 68 128 256 512 768 1024 1280 1518 }"),
+ ("percentMaxRate", 3)],
+ ["down"],
"default"
),
("floss",
- "All slaves active",
+ 16,
"default",
None,
[("numtrials", 1),
("duration", 600)],
- [("Quick_Bench-5_Frame_loss_down16", "Quick_Bench-5_down16", "down"),
- ("Quick_Bench-5_Frame_loss_up16", "Quick_Bench-5_up16", "up"),
- ("Quick_Bench-5_Frame_loss_bidir16", "Quick_Bench-5_bidir16", "bi")],
+ ["down", "up", "bi"],
"default"
),
],
@@ -174,5 +165,8 @@
"scripts_path":"ixos/scripts",
"results_path":"ixos/Results",
"master_key":(1, 2, "master"),
+ "master_port":"1.3.1",
+ "slave_port":"1.3.2",
+ "min_vlan_id":11
}
}
diff --git a/validation/test/P2MP_throughput/configs/MSE500-200_16_slaves.py b/validation/test/P2MP_throughput/configs/MSE500-200_16_slaves.py
index a76177d3ab..1c1071f96f 100644
--- a/validation/test/P2MP_throughput/configs/MSE500-200_16_slaves.py
+++ b/validation/test/P2MP_throughput/configs/MSE500-200_16_slaves.py
@@ -8,66 +8,61 @@
"tests":
[
("tput",
- "All slaves active",
+ 16,
"default",
"default",
- [("numtrials", 3),
+ [("percentMaxRate", 100),
+ ("numtrials", 3),
("tolerance", 0),
("resolution", 0.5),
("burstSize", 1),
("framesizeList",
"{ 68 128 256 512 1024 1280 1518 }")],
- [("Bench-200_down", None, "down"),
- ("Bench-200_up", None, "up"),
- ("Bench-200_bidir", None, "bi")],
+ ["down", "up", "bi"],
"default"
),
("tput",
- "One active slave",
+ 1,
"default",
"default",
- [("numtrials", 3),
+ [("percentMaxRate", 100),
+ ("numtrials", 3),
("tolerance", 0),
("resolution", 0.5),
("burstSize", 1),
("framesizeList",
"{ 68 128 256 512 1024 1280 1518 }")],
- [("Bench-200_P2P_down", None, "down"),
- ("Bench-200_P2P_up", None, "up"),
- ("Bench-200_P2P_bidir", None, "bi")],
+ ["down", "up", "bi"],
"default"
),
("latency",
- "All slaves active",
+ 16,
"default",
None,
[("numtrials", 3)],
- [("Bench-200_Latency_down16", "Bench-200_down", "down"),
- ("Bench-200_Latency_up16", "Bench-200_up", "up"),
- ('Bench-200_Latency_bidir16', "Bench-200_bidir", "bi")],
+ ["down", "up", "bi"],
(0, 70)
),
# ("bcast",
- # "All slaves active",
+ # 16,
# "default",
# None,
- # [("numtrials", 3),
+ # [("percentMaxRate", 30),
+ # ("numtrials", 3),
# ("tolerance", 0),
# ("resolution", 0.01),
# ("framesizeList",
# "{ 68 128 256 512 768 1024 1280 1518 }")],
- # [('Bench-200_Broadcast_16slaves', None, "down")],
+ # ["down"],
# "default"
# ),
# ("floss",
- # "All slaves active",
+ # 16,
# "default",
# None,
# [("numtrials", 1),
# ("duration", 600)],
- # [("Bench-200_Frame_loss_down16", "Bench-200_down", "down"),
- # ("Bench-200_Frame_loss_up16", "Bench-200_up", "up"),
- # ("Bench-200_Frame_loss_bidir16", "Bench-200_bidir", "bi")],
+ # ["down", "up", "bi"],
# "default"
# ),
],
@@ -102,8 +97,10 @@
}
},
"ixia":{
- "scripts_path":"ixos/scripts",
"results_path":"ixos/Results",
"master_key":(1, 1, "master"),
+ "master_port":"1.1.1",
+ "slave_port":"1.1.2",
+ "min_vlan_id":201
}
}
diff --git a/validation/test/P2MP_throughput/configs/MSE500-500_16_slaves.py b/validation/test/P2MP_throughput/configs/MSE500-500_16_slaves.py
index f035e6805b..c6d049b0ea 100644
--- a/validation/test/P2MP_throughput/configs/MSE500-500_16_slaves.py
+++ b/validation/test/P2MP_throughput/configs/MSE500-500_16_slaves.py
@@ -13,66 +13,61 @@
"tests":
[
("tput",
- "All slaves active",
+ 16,
"default",
"default",
- [("numtrials", 3),
+ [("percentMaxRate", 35),
+ ("numtrials", 3),
("tolerance", 0),
("resolution", 0.05),
("burstSize", 1),
("framesizeList",
"{ 68 128 256 512 768 1024 1280 1518 }")],
- [("Bench-1_down16", None, "down"),
- ("Bench-1_up16", None, "up"),
- ("Bench-1_bidir16", None, "bi")],
+ ["down", "up", "bi"],
"default"
),
("tput",
- "One slaves active",
+ 1,
"default",
"default",
- [("numtrials", 3),
+ [("percentMaxRate", 35),
+ ("numtrials", 3),
("tolerance", 0),
("resolution", 0.05),
("burstSize", 1),
("framesizeList",
"{ 68 128 256 512 768 1024 1280 1518 }")],
- [("Bench-1_2_down33-16", None, "down"),
- ("Bench-1_2_up33-16", None, "up"),
- ("Bench-1_2_bidir33-16", None, "bi")],
+ ["down", "up", "bi"],
"default"
),
("latency",
- "All slaves active",
+ 16,
"default",
None,
[("numtrials", 3)],
- [("Bench-1_Latency_RFC_down16", "Bench-1_down16", "down"),
- ("Bench-1_Latency_RFC_up16", "Bench-1_up16", "up"),
- ('Bench-1_Latency_RFC_bidir16', "Bench-1_bidir16", "bi")],
+ ["down", "up", "bi"],
(0, 70)
),
("bcast",
- "All slaves active",
+ 16,
"default",
None,
- [("numtrials", 3),
+ [("percentMaxRate", 3),
+ ("numtrials", 3),
("tolerance", 0),
("resolution", 0.01),
("framesizeList",
"{ 68 128 256 512 768 1024 1280 1518 }")],
- [('Bench-1_Broadcast_16slaves', None, "down")],
+ ["down"],
"default"
),
#~ ("floss",
- #~ "All slaves active",
+ #~ 16,
#~ "default",
#~ None,
#~ [("numtrials", 3),
#~ ("duration", 600)],
- #~ [("Bench-1_Frame_loss_down16", "Bench-1_down16", "down"),
- #~ ("Bench-1_Frame_loss_up16", "Bench-1_up16", "up"),
- #~ ("Bench-1_Frame_loss_bidir16", "Bench-1_bidir16", "bi")],
+ #~ ["down", "up", "bi"],
#~ "default"
#~ ),
],
@@ -107,8 +102,10 @@
}
},
"ixia":{
- "scripts_path":"ixos/scripts",
"results_path":"ixos/Results",
"master_key":(1, 1, "master"),
+ "master_port":"1.3.1",
+ "slave_port":"1.3.2",
+ "min_vlan_id":43
}
}
diff --git a/validation/test/P2MP_throughput/configs/MSE500-500_32_slaves.py b/validation/test/P2MP_throughput/configs/MSE500-500_32_slaves.py
index 310754fed2..957d1f034a 100644
--- a/validation/test/P2MP_throughput/configs/MSE500-500_32_slaves.py
+++ b/validation/test/P2MP_throughput/configs/MSE500-500_32_slaves.py
@@ -13,66 +13,61 @@
"tests":
[
("tput",
- "All slaves active",
+ 32,
"default",
"default",
- [("numtrials", 3),
+ [("percentMaxRate", 35),
+ ("numtrials", 3),
("tolerance", 0),
("resolution", 0.05),
("burstSize", 1),
("framesizeList",
"{ 68 128 256 512 768 1024 1280 1518 }")],
- [("Bench-1_down32_last", None, "down"),
- ("Bench-1_up32_last", None, "up"),
- ("Bench-1_bidir32_last", None, "bi")],
+ ["down", "up", "bi"],
"default"
),
("tput",
- "One slave active",
+ 1,
"default",
"default",
- [("numtrials", 3),
+ [("percentMaxRate", 35),
+ ("numtrials", 3),
("tolerance", 0),
("resolution", 0.05),
("burstSize", 1),
("framesizeList",
"{ 68 128 256 512 768 1024 1280 1518 }")],
- [("Bench-1_2_down33-32", None, "down"),
- ("Bench-1_2_up33-32", None, "up"),
- ("Bench-1_2_bidir33-32", None, "bi")],
+ ["down", "up", "bi"],
"default"
),
("latency",
- "All slaves active",
+ 32,
"default",
None,
[("numtrials", 3)],
- [("Bench-1_Latency_RFC_down32", "Bench-1_down32_last", "down"),
- ("Bench-1_Latency_RFC_up32", "Bench-1_up32_last", "up"),
- ('Bench-1_Latency_RFC_bidir32', "Bench-1_bidir32_last", "bi")],
+ ["down", "up", "bi"],
(0, 70)
),
("bcast",
- "All slaves active",
+ 32,
"default",
None,
- [("numtrials", 3),
+ [("percentMaxRate", 3),
+ ("numtrials", 3),
("tolerance", 0),
("resolution", 0.01),
("framesizeList",
"{ 68 128 256 512 768 1024 1280 1518 }")],
- [('Bench-1_Broadcast_32slaves', None, "down")],
+ ["down"],
"default"
),
#~ ("floss",
- #~ "All slaves active",
+ #~ 32,
#~ "default",
#~ None,
#~ [("numtrials", 3),
#~ ("duration", 600)],
- #~ [("Bench-1_Frame_loss_down32", "Bench-1_down32_last", "down"),
- #~ ("Bench-1_Frame_loss_up32", "Bench-1_up32_last", "up"),
- #~ ("Bench-1_Frame_loss_bidir32", "Bench-1_bidir32_last", "bi")],
+ #~ ["down", "up", "bi"],
#~ "default"
#~ )
],
@@ -123,8 +118,10 @@
}
},
"ixia":{
- "scripts_path":"ixos/scripts",
"results_path":"ixos/Results",
"master_key":(1, 1, "master"),
+ "master_port":"1.3.1",
+ "slave_port":"1.3.2",
+ "min_vlan_id":43
}
}
diff --git a/validation/test/P2MP_throughput/configs/MSE500-500_64_slaves.py b/validation/test/P2MP_throughput/configs/MSE500-500_64_slaves.py
index 7b5aa3a647..6d89ee7b28 100644
--- a/validation/test/P2MP_throughput/configs/MSE500-500_64_slaves.py
+++ b/validation/test/P2MP_throughput/configs/MSE500-500_64_slaves.py
@@ -13,66 +13,61 @@
"tests":
[
("tput",
- "All slaves active",
+ 64,
"default",
"default",
- [("numtrials", 3),
+ [("percentMaxRate", 35),
+ ("numtrials", 3),
("tolerance", 0),
("resolution", 0.05),
("burstSize", 1),
("framesizeList",
"{ 68 128 256 512 768 1024 1280 1518 }")],
- [("Bench-1_down64", None, "down"),
- ("Bench-1_up64", None, "up"),
- ("Bench-1_bidir64", None, "bi")],
+ ["down", "up", "bi"],
"default"
),
("tput",
- "One slave active",
+ 1,
"default",
"default",
- [("numtrials", 3),
+ [("percentMaxRate", 35),
+ ("numtrials", 3),
("tolerance", 0),
("resolution", 0.05),
("burstSize", 1),
("framesizeList",
"{ 68 128 256 512 768 1024 1280 1518 }")],
- [("Bench-1_2_down33-64", None, "down"),
- ("Bench-1_2_up33-64", None, "up"),
- ("Bench-1_2_bidir33-64", None, "bi")],
+ ["down", "up", "bi"],
"default"
),
("latency",
- "All slaves active",
+ 64,
"default",
None,
[("numtrials", 1)],
- [("Bench-1_Latency_RFC_down64", "Bench-1_down64", "down"),
- ("Bench-1_Latency_RFC_up64", "Bench-1_up64", "up"),
- ('Bench-1_Latency_RFC_bidir64', "Bench-1_bidir64", "bi")],
+ ["down", "up", "bi"],
(0, 70)
),
("bcast",
- "All slaves active",
+ 64,
"default",
None,
- [("numtrials", 3),
+ [("percentMaxRate", 3),
+ ("numtrials", 3),
("tolerance", 0),
("resolution", 0.01),
("framesizeList",
"{ 68 128 256 512 768 1024 1280 1518 }")],
- [('Bench-1_Broadcast_64slaves', None, "down")],
+ ["down"],
"default"
),
#~ ("floss",
- #~ "All slaves active",
+ #~ 64,
#~ "default",
#~ None,
#~ [("numtrials", 3),
#~ ("duration", 600)],
- #~ [("Bench-1_Frame_loss_down64", "Bench-1_down64", "down"),
- #~ ("Bench-1_Frame_loss_up64", "Bench-1_up64", "up"),
- #~ ("Bench-1_Frame_loss_bidir64", "Bench-1_bidir64", "bi")],
+ #~ ["down", "up", "bi"],
#~ "default"
#~ ),
],
@@ -155,8 +150,10 @@
}
},
"ixia":{
- "scripts_path":"ixos/scripts",
"results_path":"ixos/Results",
"master_key":(1, 1, "master"),
+ "master_port":"1.3.1",
+ "slave_port":"1.3.2",
+ "min_vlan_id":11
}
}
diff --git a/validation/test/P2MP_throughput/configs/MSE500-500_summary.py b/validation/test/P2MP_throughput/configs/MSE500-500_summary.py
index 6ea367a9a7..834204e0d2 100644
--- a/validation/test/P2MP_throughput/configs/MSE500-500_summary.py
+++ b/validation/test/P2MP_throughput/configs/MSE500-500_summary.py
@@ -1,3 +1,4 @@
+
{
"restart_plugs":False,
"make_measurements":False,
@@ -13,192 +14,177 @@
"tests":
[
("tput",
- "16 slaves active",
+ 16,
"eoc-drv-2.0.15/MSE500-500/16_slaves",
"eoc-drv-2.0.14/MSE500-500/16_slaves",
- [("numtrials", 3),
+ [("percentMaxRate", 35),
+ ("numtrials", 3),
("tolerance", 0),
("resolution", 0.05),
("burstSize", 1),
("framesizeList",
"{ 68 128 256 512 768 1024 1280 1518 }")],
- [("Bench-1_down16", None, "down"),
- ("Bench-1_up16", None, "up"),
- ("Bench-1_bidir16", None, "bi")],
+ ["down", "up", "bi"],
"default"
),
("tput",
- "1 slave active on 16",
+ 1,
"eoc-drv-2.0.15/MSE500-500/16_slaves",
"eoc-drv-2.0.14/MSE500-500/16_slaves",
- [("numtrials", 3),
+ [("percentMaxRate", 35),
+ ("numtrials", 3),
("tolerance", 0),
("resolution", 0.05),
("burstSize", 1),
("framesizeList",
"{ 68 128 256 512 768 1024 1280 1518 }")],
- [("Bench-1_2_down33-16", None, "down"),
- ("Bench-1_2_up33-16", None, "up"),
- ("Bench-1_2_bidir33-16", None, "bi")],
+ ["down", "up", "bi"],
"default"
),
("latency",
- "16 slaves active",
+ 16,
"eoc-drv-2.0.15/MSE500-500/16_slaves",
None,
[("numtrials", 3)],
- [("Bench-1_Latency_RFC_down16", "Bench-1_down16", "down"),
- ("Bench-1_Latency_RFC_up16", "Bench-1_up16", "up"),
- ('Bench-1_Latency_RFC_bidir16', "Bench-1_bidir16", "bi")],
+ ["down", "up", "bi"],
(0, 70)
),
("bcast",
- "16 slaves active",
+ 16,
"eoc-drv-2.0.15/MSE500-500/16_slaves",
None,
- [("numtrials", 3),
+ [("percentMaxRate", 3),
+ ("numtrials", 3),
("tolerance", 0),
("resolution", 0.01),
("framesizeList",
"{ 68 128 256 512 768 1024 1280 1518 }")],
- [('Bench-1_Broadcast_16slaves', None, "down")],
+ ["down"],
"default"
),
#~ ("floss",
- #~ "16 slaves active",
+ #~ 16,
#~ "eoc-drv-2.0.15/MSE500-500/16_slaves",
#~ None,
#~ [("numtrials", 3),
#~ ("duration", 600)],
- #~ [("Bench-1_Frame_loss_down16", "Bench-1_down16", "down"),
- #~ ("Bench-1_Frame_loss_up16", "Bench-1_up16", "up"),
- #~ ("Bench-1_Frame_loss_bidir16", "Bench-1_bidir16", "bi")],
+ #~ ["down", "up", "bi"],
#~ "default"
#~ ),
("tput",
- "32 slaves active",
+ 32,
"eoc-drv-2.0.15/MSE500-500/32_slaves",
"eoc-drv-2.0.14/MSE500-500/32_slaves",
- [("numtrials", 3),
+ [("percentMaxRate", 35),
+ ("numtrials", 3),
("tolerance", 0),
("resolution", 0.05),
("burstSize", 1),
("framesizeList",
"{ 68 128 256 512 768 1024 1280 1518 }")],
- [("Bench-1_down32_last", None, "down"),
- ("Bench-1_up32_last", None, "up"),
- ("Bench-1_bidir32_last", None, "bi")],
+ ["down", "up", "bi"],
"default"
),
("tput",
- "1 slave active on 32",
+ 1,
"eoc-drv-2.0.15/MSE500-500/32_slaves",
"eoc-drv-2.0.14/MSE500-500/32_slaves",
- [("numtrials", 3),
+ [("percentMaxRate", 35),
+ ("numtrials", 3),
("tolerance", 0),
("resolution", 0.05),
("burstSize", 1),
("framesizeList",
"{ 68 128 256 512 768 1024 1280 1518 }")],
- [("Bench-1_2_down33-32", None, "down"),
- ("Bench-1_2_up33-32", None, "up"),
- ("Bench-1_2_bidir33-32", None, "bi")],
+ ["down", "up", "bi"],
"default"
),
("latency",
- "32 slaves active",
+ 32,
"eoc-drv-2.0.15/MSE500-500/32_slaves",
None,
[("numtrials", 3)],
- [("Bench-1_Latency_RFC_down32", "Bench-1_down32_last", "down"),
- ("Bench-1_Latency_RFC_up32", "Bench-1_up32_last", "up"),
- ('Bench-1_Latency_RFC_bidir32', "Bench-1_bidir32_last", "bi")],
+ ["down", "up", "bi"],
(0, 70)
),
("bcast",
- "32 slaves active",
+ 32,
"eoc-drv-2.0.15/MSE500-500/32_slaves",
None,
- [("numtrials", 3),
+ [("percentMaxRate", 3),
+ ("numtrials", 3),
("tolerance", 0),
("resolution", 0.01),
("framesizeList",
"{ 68 128 256 512 768 1024 1280 1518 }")],
- [('Bench-1_Broadcast_32slaves', None, "down")],
+ ["down"],
"default"
),
#~ ("floss",
- #~ "32 slaves active",
+ #~ 32,
#~ "eoc-drv-2.0.15/MSE500-500/32_slaves",
#~ None,
#~ [("numtrials", 3),
#~ ("duration", 600)],
- #~ [("Bench-1_Frame_loss_down32", "Bench-1_down32_last", "down"),
- #~ ("Bench-1_Frame_loss_up32", "Bench-1_up32_last", "up"),
- #~ ("Bench-1_Frame_loss_bidir32", "Bench-1_bidir32_last", "bi")],
+ #~ ["down", "up", "bi"],
#~ "default"
#~ )
("tput",
- "64 slaves active",
+ 64,
"eoc-drv-2.0.15/MSE500-500/64_slaves",
"eoc-drv-2.0.14/MSE500-500/64_slaves",
- [("numtrials", 3),
+ [("percentMaxRate", 35),
+ ("numtrials", 3),
("tolerance", 0),
("resolution", 0.05),
("burstSize", 1),
("framesizeList",
"{ 68 128 256 512 768 1024 1280 1518 }")],
- [("Bench-1_down64", None, "down"),
- ("Bench-1_up64", None, "up"),
- ("Bench-1_bidir64", None, "bi")],
+ ["down", "up", "bi"],
"default"
),
("tput",
- "1 slave active on 64",
+ 1,
"eoc-drv-2.0.15/MSE500-500/64_slaves",
"eoc-drv-2.0.14/MSE500-500/64_slaves",
- [("numtrials", 3),
+ [("percentMaxRate", 35),
+ ("numtrials", 3),
("tolerance", 0),
("resolution", 0.05),
("burstSize", 1),
("framesizeList",
"{ 68 128 256 512 768 1024 1280 1518 }")],
- [("Bench-1_2_down33-64", None, "down"),
- ("Bench-1_2_up33-64", None, "up"),
- ("Bench-1_2_bidir33-64", None, "bi")],
+ ["down", "up", "bi"],
"default"
),
("latency",
- "64 slaves active",
+ 64,
"eoc-drv-2.0.15/MSE500-500/64_slaves",
None,
[("numtrials", 1)],
- [("Bench-1_Latency_RFC_down64", "Bench-1_down64", "down"),
- ("Bench-1_Latency_RFC_up64", "Bench-1_up64", "up"),
- ('Bench-1_Latency_RFC_bidir64', "Bench-1_bidir64", "bi")],
+ ["down", "up", "bi"],
(0, 70)
),
("bcast",
- "64 slaves active",
+ 64,
"eoc-drv-2.0.15/MSE500-500/64_slaves",
None,
- [("numtrials", 3),
+ [("percentMaxRate", 3),
+ ("numtrials", 3),
("tolerance", 0),
("resolution", 0.01),
("framesizeList",
"{ 68 128 256 512 768 1024 1280 1518 }")],
- [('Bench-1_Broadcast_64slaves', None, "down")],
+ ["down"],
"default"
),
#~ ("floss",
- #~ "64 slaves active",
+ #~ 64,
#~ "eoc-drv-2.0.15/MSE500-500/64_slaves",
#~ None,
#~ [("numtrials", 3),
#~ ("duration", 600)],
- #~ [("Bench-1_Frame_loss_down64", "Bench-1_down64", "down"),
- #~ ("Bench-1_Frame_loss_up64", "Bench-1_up64", "up"),
- #~ ("Bench-1_Frame_loss_bidir64", "Bench-1_bidir64", "bi")],
+ #~ ["down", "up", "bi"],
#~ "default"
#~ ),
],
@@ -281,8 +267,10 @@
}
},
"ixia":{
- "scripts_path":"ixos/scripts",
"results_path":"ixos/Results",
"master_key":(1, 1, "master"),
+ "master_port":"1.3.1",
+ "slave_port":"1.3.2",
+ "min_vlan_id":11
}
}
diff --git a/validation/test/P2MP_throughput/configs/SPC200_16_slaves.py b/validation/test/P2MP_throughput/configs/SPC200_16_slaves.py
index 6dd93e0f43..d00b5d0ffe 100644
--- a/validation/test/P2MP_throughput/configs/SPC200_16_slaves.py
+++ b/validation/test/P2MP_throughput/configs/SPC200_16_slaves.py
@@ -8,66 +8,61 @@
"tests":
[
("tput",
- "All slaves active",
+ 16,
"default",
"default",
- [("numtrials", 3),
+ [("percentMaxRate", 100),
+ ("numtrials", 3),
("tolerance", 0),
("resolution", 0.5),
("burstSize", 1),
("framesizeList",
"{ 68 128 256 512 1024 1280 1518 }")],
- [("Bench-200_down", None, "down"),
- ("Bench-200_up", None, "up"),
- ("Bench-200_bidir", None, "bi")],
+ ["down", "up", "bi"],
"default"
),
("tput",
- "One active slave",
+ 1,
"default",
"default",
- [("numtrials", 3),
+ [("percentMaxRate", 100),
+ ("numtrials", 3),
("tolerance", 0),
("resolution", 0.5),
("burstSize", 1),
("framesizeList",
"{ 68 128 256 512 1024 1280 1518 }")],
- [("Bench-200_P2P_down", None, "down"),
- ("Bench-200_P2P_up", None, "up"),
- ("Bench-200_P2P_bidir", None, "bi")],
+ ["down", "up", "bi"],
"default"
),
("latency",
- "All slaves active",
+ 16,
"default",
None,
[("numtrials", 3)],
- [("Bench-200_Latency_down16", "Bench-200_down", "down"),
- ("Bench-200_Latency_up16", "Bench-200_up", "up"),
- ('Bench-200_Latency_bidir16', "Bench-200_bidir", "bi")],
+ ["down", "up", "bi"],
(0, 70)
),
# ("bcast",
-# "All slaves active",
+# 16,
# "default",
# None,
-# [("numtrials", 3),
+# [("percentMaxRate", 30),
+# ("numtrials", 3),
# ("tolerance", 0),
# ("resolution", 0.01),
# ("framesizeList",
# "{ 68 128 256 512 768 1024 1280 1518 }")],
-# [('Bench-200_Broadcast_16slaves', None, "down")],
+# ["down"],
# "default"
# ),
# ("floss",
-# "All slaves active",
+# 16,
# "default",
# None,
# [("numtrials", 1),
# ("duration", 600)],
-# [("Bench-200_Frame_loss_down16", "Bench-200_down", "down"),
-# ("Bench-200_Frame_loss_up16", "Bench-200_up", "up"),
-# ("Bench-200_Frame_loss_bidir16", "Bench-200_bidir", "bi")],
+# ["down", "up", "bi"],
# "default"
# ),
],
@@ -102,8 +97,10 @@
}
},
"ixia":{
- "scripts_path":"ixos/scripts",
"results_path":"ixos/Results",
"master_key":(1, 2, "master"),
+ "master_port":"1.1.1",
+ "slave_port":"1.1.2",
+ "min_vlan_id":201
}
}
diff --git a/validation/test/P2MP_throughput/configs/SPC300_16_slaves.py b/validation/test/P2MP_throughput/configs/SPC300_16_slaves.py
index 5cef363fb9..0d72c6bcd5 100644
--- a/validation/test/P2MP_throughput/configs/SPC300_16_slaves.py
+++ b/validation/test/P2MP_throughput/configs/SPC300_16_slaves.py
@@ -13,66 +13,61 @@
"tests":
[
("tput",
- "All slaves active",
+ 16,
"default",
"default",
- [("numtrials", 3),
+ [("percentMaxRate", 20),
+ ("numtrials", 3),
("tolerance", 0),
("resolution", 0.05),
("burstSize", 1),
("framesizeList",
"{ 68 128 256 512 768 1024 1280 1518 }")],
- [("Quick_Bench-5_down16", None, "down"),
- ("Quick_Bench-5_up16", None, "up"),
- ("Quick_Bench-5_bidir16", None, "bi")],
+ ["down", "up", "bi"],
"default"
),
("tput",
- "One slaves active",
+ 1,
"default",
"default",
- [("numtrials", 3),
+ [("percentMaxRate", 20),
+ ("numtrials", 3),
("tolerance", 0),
("resolution", 0.05),
("burstSize", 1),
("framesizeList",
"{ 68 128 256 512 768 1024 1280 1518 }")],
- [("Quick_Bench-5_P2P_down", None, "down"),
- ("Quick_Bench-5_P2P_up", None, "up"),
- ("Quick_Bench-5_P2P_bidir", None, "bi")],
+ ["down", "up", "bi"],
"default"
),
("latency",
- "All slaves active",
+ 16,
"default",
None,
[("numtrials", 3)],
- [("Quick_Bench-5_Latency_down16", "Quick_Bench-5_down16", "down"),
- ("Quick_Bench-5_Latency_up16", "Quick_Bench-5_up16", "up"),
- ('Quick_Bench-5_Latency_bidir16', "Quick_Bench-5_bidir16", "bi")],
+ ["down", "up", "bi"],
(0, 70)
),
("bcast",
- "All slaves active",
+ 16,
"default",
None,
- [("numtrials", 3),
+ [("percentMaxRate", 3),
+ ("numtrials", 3),
("tolerance", 0),
("resolution", 0.01),
("framesizeList",
"{ 68 128 256 512 768 1024 1280 1518 }")],
- [('Bench-5_Broadcast_16slaves', None, "down")],
+ ["down"],
"default"
),
# ("floss",
-# "All slaves active",
+# 16,
# "default",
# None,
# [("numtrials", 3),
# ("duration", 600)],
-# [("Quick_Bench-5_Frame_loss_down16", "Quick_Bench-5_down16", "down"),
-# ("Quick_Bench-5_Frame_loss_up16", "Quick_Bench-5_up16", "up"),
-# ("Quick_Bench-5_Frame_loss_bidir16", "Quick_Bench-5_bidir16", "bi")],
+# ["down", "up", "bi"],
# "default"
# ),
],
@@ -107,8 +102,10 @@
}
},
"ixia":{
- "scripts_path":"ixos/scripts",
"results_path":"ixos/Results",
"master_key":(1, 2, "master"),
+ "master_port":"1.4.1",
+ "slave_port":"1.4.2",
+ "min_vlan_id":101
}
}
diff --git a/validation/validlib/ixia.py b/validation/validlib/ixia.py
index 5c9716f7f0..92fc0f5278 100644
--- a/validation/validlib/ixia.py
+++ b/validation/validlib/ixia.py
@@ -14,13 +14,18 @@ import spc300
config = {
# Path, relative to the home directory, of the directory containing the
- # TCL scripts
- "scripts_path":"ixos/scripts",
- # Path, relative to the home directory, of the directory containing the
# Ixia results
"results_path":"ixos/Results",
# Key of the plug of the Ixia master in spc300 or non_spc300
- "master_key":(1, 2, "master")
+ "master_key":(1, 2, "master"),
+ # Ixia port of the master, with the syntax X.Y.Z where
+ # X is the chassis index, Y is the board index and Z is the port index
+ "master_port":"1.3.1",
+ # Ixia port of the slaves, with the syntax X.Y.Z where
+ # X is the chassis index, Y is the board index and Z is the port index
+ "slave_port":"1.3.2",
+ # Minimum VLAN ID used
+ "min_vlan_id":11
}
font = {'color':'k',
@@ -46,17 +51,47 @@ def update_config(new_config):
# We check that the key of the Ixia master is the key of a plug
assert config["master_key"] in plug.get_keys()
-def check_script_exists(script):
- if script is not None:
- script_file = script + ".tcl"
- script_path = os.path.join(home(), config["scripts_path"], script_file)
- assert os.path.exists(script_path), script_path
+ assert re.search("^\d*\.\d*\.\d*$", config["master_port"])
+ assert re.search("^\d*\.\d*\.\d*$", config["slave_port"])
+
+def tcl_file_name(slaves_nb, direction):
+ return "%d_%s" % (slaves_nb, direction)
+
+def get_map_add(master_port, slave_port, direction):
+ master_port = master_port.replace(".", " ")
+ slave_port = slave_port.replace(".", " ")
+ up = "map add %s %s" % (slave_port, master_port)
+ down = "map add %s %s" % (master_port, slave_port)
+ if direction == "up":
+ return up
+ elif direction == "down":
+ return down
+ else:
+ return "%s\n%s" % (up, down)
+
+def execute(test_type, slaves_nb, direction, version_directory, parameters):
+ master_port = config["master_port"]
+ slave_port = config["slave_port"]
+ min_vlan_id = config["min_vlan_id"]
+ (tmp_directory, file_out_name) = create_tcl_file(test_type,
+ slaves_nb,
+ direction,
+ version_directory,
+ parameters,
+ master_port,
+ slave_port,
+ min_vlan_id)
+ file_out_path = os.path.join(tmp_directory, file_out_name)
+ subprocess.check_call(["ixwish", file_out_path])
+ shutil.rmtree(tmp_directory)
-def execute(script, version_directory, parameters):
+def create_tcl_file(test_type, slaves_nb, direction, version_directory,
+ parameters, master_port, slave_port, min_vlan_id):
- tcl_file = script + '.tcl'
+ file_in_name = test_type + ".tcl"
- file_in_path = os.path.join(home(), config["scripts_path"], tcl_file)
+ file_in_path = os.path.join(os.path.dirname(__file__),
+ "ixia_tcl_templates", file_in_name)
file_in = open(file_in_path, 'r')
file_in_content = file_in.read()
file_in.close()
@@ -67,22 +102,30 @@ def execute(script, version_directory, parameters):
[("user", "version", version_directory),
("results", "directory", directory)] + parameters)
+ template_dict = {"min_vlan_id":min_vlan_id,
+ "slaves_nb":slaves_nb,
+ "master_comma_port":master_port.replace('.', ','),
+ "slave_comma_port":slave_port.replace('.', ','),
+ "master_dot_port":master_port,
+ "slave_dot_port":slave_port,
+ "map_add":get_map_add(master_port, slave_port, direction)
+ }
+ for key, value in template_dict.items():
+ file_out_content = file_out_content.replace("{%s}" % key, str(value))
+
tmp_directory = tempfile.mkdtemp()
- file_out_path = os.path.join(tmp_directory, tcl_file)
+ file_out_name = tcl_file_name(slaves_nb, direction) + '.tcl'
+ file_out_path = os.path.join(tmp_directory, file_out_name)
file_out = open(file_out_path, 'w')
file_out.write(file_out_content)
file_out.close()
+ return (tmp_directory, file_out_name)
- subprocess.check_call(["ixwish", file_out_path])
-
- shutil.rmtree(tmp_directory)
-
-def dump_traces(test_type, version_directory, script, ftp_server):
+def dump_traces(test_type, slaves_nb, direction, version_directory, ftp_server):
"""Dump the traces present on the plugs in the directory containing the
results of the last executed script"""
- results_directory = get_last_results_directory(test_type,
- version_directory,
- script)
+ results_directory = get_last_results_directory(test_type, slaves_nb,
+ direction, version_directory)
for key in spc300.config["plugs"].keys():
spc300.dump_trace(key, results_directory, ftp_server)
@@ -229,21 +272,16 @@ def parameters(test_type):
else:
assert False, type
-def extract_data(test_type, prim_scripts, sec_scripts, version_directory):
+def extract_data(test_type, slaves_nb, directions, version_directory):
# Throughput and broadcast tests do not depend on other tests
if test_type == "tput" or test_type == "bcast":
- assert list(sec_scripts) == [None] * len(prim_scripts), \
- (prim_scripts, sec_scripts)
- expected_frame_sizes_vector = None
+ sec_frame_sizes_vector = None
directories_nb = 1
elif test_type == "latency" or test_type == "floss":
- (expected_frame_sizes_vector, _, _, _) = \
- extract_data("tput",
- sec_scripts,
- [None] * len(sec_scripts),
- version_directory)
- directories_nb = len(expected_frame_sizes_vector)
+ (sec_frame_sizes_vector, _, _, _) = \
+ extract_data("tput", slaves_nb, directions, version_directory)
+ directories_nb = len(sec_frame_sizes_vector)
else:
assert False, test_type
@@ -255,12 +293,13 @@ def extract_data(test_type, prim_scripts, sec_scripts, version_directory):
detailed_data = []
traces_files = []
- for prim_script in prim_scripts:
+ for direction in directions:
frame_sizes_vector, data_vectors, traces_files_aux = \
get_data(version_directory,
main_directory,
sub_directory,
- prim_script,
+ slaves_nb,
+ direction,
directories_nb,
file_name,
file_columns_headers)
@@ -276,13 +315,13 @@ def extract_data(test_type, prim_scripts, sec_scripts, version_directory):
for vector in frame_sizes_matrix:
assert vector == frame_sizes_vector, (vector, frame_sizes_vector)
- assert (expected_frame_sizes_vector is None) or \
- (expected_frame_sizes_vector == frame_sizes_vector), \
- (expected_frame_sizes_vector, frame_sizes_vector)
+ assert (sec_frame_sizes_vector is None) or \
+ (sec_frame_sizes_vector == frame_sizes_vector), \
+ (sec_frame_sizes_vector, frame_sizes_vector)
return (frame_sizes_vector, data, detailed_data, traces_files)
-def get_fig_data(sec_directory, scripts):
+def get_fig_data(sec_directory, directions):
figures_number = 0
# For the secondary table
@@ -291,7 +330,7 @@ def get_fig_data(sec_directory, scripts):
# For the primary table
figures_number = figures_number + 2
# For the figures
- figures_number = figures_number + len(scripts)
+ figures_number = figures_number + len(directions)
# For the first term:
# 121 means that the figures are displayed in a
@@ -314,17 +353,14 @@ def get_fig_data(sec_directory, scripts):
except:
assert False, ("Invalid figures number", figures_number)
-def draw(test_type, prim_scripts, sec_scripts, prim_directory, sec_directory,
- table_columns_labels, ylim, figure_path):
+def draw(test_type, slaves_nb, directions, prim_directory, sec_directory,
+ ylim, figure_path):
"""Draw a figure in a file in return the list of the corresponding traces"""
- assert len(prim_scripts) == len(sec_scripts)
- assert len(prim_scripts) == len(table_columns_labels)
-
(prim_frame_sizes_vector, prim_data, prim_detailed_data, traces_files) = \
- extract_data(test_type, prim_scripts, sec_scripts, prim_directory)
+ extract_data(test_type, slaves_nb, directions, prim_directory)
- (fig_index, fig_size) = get_fig_data(sec_directory, prim_scripts)
+ (fig_index, fig_size) = get_fig_data(sec_directory, directions)
init_pylab(fig_size)
@@ -337,15 +373,16 @@ def draw(test_type, prim_scripts, sec_scripts, prim_directory, sec_directory,
if sec_directory is not None:
(sec_frame_sizes_vector, sec_data, _ , _) = \
- extract_data(test_type, prim_scripts, sec_scripts, sec_directory)
+ extract_data(test_type, slaves_nb, directions, sec_directory)
assert sec_frame_sizes_vector == prim_frame_sizes_vector, \
("The secondary and the primary data have not the same frame sizes",
- test_type, prim_scripts, sec_scripts, prim_directory,
- sec_directory)
+ test_type, slaves_nb, directions,
+ prim_directory, sec_directory,
+ prim_frame_sizes_vector, sec_frame_sizes_vector)
draw_table(sec_data, prim_data, fig_index,
- sec_frame_sizes_vector, table_columns_labels,
+ sec_frame_sizes_vector, directions,
sec_directory + "(reference)", sec_table_colors_spec)
fig_index = fig_index + 2
@@ -353,17 +390,17 @@ def draw(test_type, prim_scripts, sec_scripts, prim_directory, sec_directory,
# Draw the primary table
draw_table(prim_data, prim_detailed_data, fig_index,
- prim_frame_sizes_vector, table_columns_labels,
+ prim_frame_sizes_vector, directions,
prim_directory + "(current)", prim_table_colors_spec)
fig_index = fig_index + 2
# Draw the bars
- for (_, vectors, prim_script) in \
- zip(prim_data, prim_detailed_data, prim_scripts):
+ for (_, vectors, direction) in \
+ zip(prim_data, prim_detailed_data, directions):
plot_bar(unit, prim_frame_sizes_vector, vectors, bar_labels,
- bar_legend_loc, prim_script, fig_index)
+ bar_legend_loc, direction, fig_index)
fig_index = fig_index + 1
if ylim != "default":
pylab.ylim(ylim)
@@ -406,7 +443,7 @@ def prepare_axis(fig_index):
pylab.setp(ax.get_yticklabels(), visible = False)
def draw_table(ref_data, comparison_data, fig_index,
- frame_sizes_vector, table_columns_labels, title,
+ frame_sizes_vector, directions, title,
table_colors_spec):
(color_fun, _, couples, last_color) = table_colors_spec
@@ -422,7 +459,7 @@ def draw_table(ref_data, comparison_data, fig_index,
pylab.table(cellText = zip(*ref_data),
rowLabels = frame_sizes_vector,
- colLabels = table_columns_labels,
+ colLabels = directions,
loc = 'center left',
cellColours = zip(*table_colors)
)
@@ -453,12 +490,12 @@ def draw_table_color_legend(fig_index, table_colors_spec):
pylab.title("table color legend", font)
def get_results_directories(version_directory, main_directory, sub_directory,
- test, directories_nb):
+ slaves_nb, direction, directories_nb):
path = os.path.join(results_path(),
version_directory,
main_directory + ".resDir",
sub_directory + ".resDir",
- test + ".res")
+ tcl_file_name(slaves_nb, direction) + ".res")
directories = os.listdir(path)
directories.sort()
first_file_index = len(directories) - directories_nb
@@ -469,21 +506,24 @@ def get_results_directories(version_directory, main_directory, sub_directory,
directory
return (path, directories)
-def get_last_results_directory(test_type, version_directory, script):
+def get_last_results_directory(test_type, slaves_nb, direction,
+ version_directory):
((main_directory, sub_directory, _, _, _), _) = parameters(test_type)
(path, [directory]) = get_results_directories(version_directory,
main_directory,
sub_directory,
- script,
+ slaves_nb,
+ direction,
1)
return os.path.join(path, directory)
-def get_data(version_directory, main_directory, sub_directory, script,
- directories_nb, file_name, file_columns_headers):
+def get_data(version_directory, main_directory, sub_directory, slaves_nb,
+ direction, directories_nb, file_name, file_columns_headers):
(path, directories) = get_results_directories(version_directory,
main_directory,
sub_directory,
- script,
+ slaves_nb,
+ direction,
directories_nb)
input_results = ""
traces_files = []
@@ -561,7 +601,7 @@ def get_data_aux(input_results, file_columns_headers):
return frame_sizes_vector, data_vectors
def plot_bar(unit, frame_sizes_vector, data_vectors, data_legends, legend_loc,
- test, fig_index):
+ direction, fig_index):
pylab.subplot(fig_index)
@@ -584,7 +624,7 @@ def plot_bar(unit, frame_sizes_vector, data_vectors, data_legends, legend_loc,
pylab.legend([ bars[data_index][0] for data_index in data_indexes ],
data_legends, legend_loc)
- pylab.title(test, font)
+ pylab.title(direction, font)
pylab.ylabel(unit, font)
pylab.xlabel("frame size (bytes)", font)
@@ -718,3 +758,22 @@ if __name__ == "__main__":
assert "orange" == get_color(2, [(2, "red"), (1, "orange")], "white")
assert "orange" == get_color(1.5, [(2, "red"), (1, "orange")], "white")
assert "white" == get_color(0.5, [(2, "red"), (1, "orange")], "white")
+
+ assert "map add 1 4 2 1 4 1" == get_map_add("1.4.1", "1.4.2", "up")
+ assert "map add 1 4 1 1 4 2" == get_map_add("1.4.1", "1.4.2", "down")
+ assert "map add 1 4 2 1 4 1\n" \
+ "map add 1 4 1 1 4 2" == get_map_add("1.4.1", "1.4.2", "bi")
+
+ (tmp_directory, file_out_name) = create_tcl_file("tput", 24, "up", "version_directory", [], "1.3.1", "1.4.1", 11)
+ file_out_path = os.path.join(tmp_directory, file_out_name)
+ assert "24_up.tcl" == file_out_name
+ file_out = open(file_out_path)
+ file_out_content = file_out.read()
+ for string in ["set testConf(portname,1.3.1) Master",
+ "set VlanID(1,4,1) 11",
+ "set NumVlans(1,4,1) 24",
+ "user config -version version_directory"]:
+ assert string in file_out_content
+
+ file_out.close()
+ shutil.rmtree(tmp_directory)
diff --git a/validation/validlib/ixia_tcl_templates/bcast.tcl b/validation/validlib/ixia_tcl_templates/bcast.tcl
new file mode 100644
index 0000000000..c64d78fc3c
--- /dev/null
+++ b/validation/validlib/ixia_tcl_templates/bcast.tcl
@@ -0,0 +1,535 @@
+###################################################
+# Begin Config Header
+###################################################
+#
+# <CONFIG_HEADER>
+# <CONFIG_VERSION>1.00</CONFIG_VERSION>
+# <APPLICATION_VERSION>IxAutomate 7.20.117.9</APPLICATION_VERSION>
+# <COPYRIGHT>Copyright 2012 by IXIA All Rights Reserved.</COPYRIGHT>
+# <TEST_CAT>rfc2889</TEST_CAT>
+# <TEST_CAT_STR>RFC 2889</TEST_CAT_STR>
+# <TEST_NAME>broadcast</TEST_NAME>
+# <TEST_NAME_STR>Broadcast Rate</TEST_NAME_STR>
+# </CONFIG_HEADER>
+
+###################################################
+# End Config Header
+###################################################
+
+###################################################
+# Begin Test Registration
+###################################################
+
+catch {wm withdraw .}
+catch {tk appname IxScriptMate}
+set ixA on
+package require IxTclHal
+package require Scriptmate
+global testConf
+configHeader::TestRegister;
+
+
+###################################################
+# End Test Registration
+# Above MUST remain unmodified
+###################################################
+
+logOn "broadcast.log.634707892441925637"
+logMsg \n
+logMsg -priority " RFC 2889 Broadcast Rate test"
+logMsg -priority " Copyright 2012 by IXIA"
+logMsg -priority " All Rights Reserved."
+logMsg -priority " ............................................\n"
+
+set testConf(hostname) {400T-0214240}
+set testConf(chassisID) {1}
+set testConf(chassisSequence) {1}
+set testConf(cableLength) {cable3feet}
+set testConf(timeSource) {Internal}
+set testConf(reconnect) {True}
+
+
+
+#
+# This part contains the configuration of card and port levels.
+#
+
+set testConf(enableAccmNegotiation) { {false Oc48}}
+set testConf(atmFillerCell) { {atmIdleCell Oc48}}
+set testConf(atmInterfaceType) { {atmInterfaceUni Oc48}}
+set testConf(autonegotiate) { {true 10100Gigabit} {true 10100}}
+set testConf(C2byteExpected) { {22 Oc48}}
+set testConf(C2byteTransmit) { {22 Oc48}}
+set testConf(atmEnableCoset) { {true Oc48}}
+set testConf(dataScrambling) { {true Oc48}}
+set testConf(duplex) { {full 10100Gigabit} {full 10100}}
+set testConf(hdlcHeader) { {ppp Oc48}}
+set testConf(useMagicNumber) { {true Oc48}}
+set testConf(enableIp) { {true Oc48}}
+set testConf(enableIpv6) { {true Oc48}}
+set testConf(enableOsi) { {true Oc48}}
+set testConf(PPPnegotiation) { {true Oc48}}
+set testConf(atmReassemblyTimeout) { {10 Oc48}}
+set testConf(useRecoveredClock) { {true Oc48}}
+set testConf(sonetRxCRC) { {sonetCrc32 Oc48}}
+set testConf(speed) { {Copper1000 10100Gigabit} {100 10100} {oc48 Oc48}}
+set testConf(sonetTxCRC) { {sonetCrc32 Oc48}}
+
+
+map new -type one2many
+map config -type one2many
+{map_add}
+
+
+
+#FCoE Multicast Map(one2many) Elements
+set VlanID({slave_comma_port}) {min_vlan_id}
+set VlanID({master_comma_port}) {min_vlan_id}
+set testConf(enableMpls) { {true Oc48}}
+
+
+#
+# Select the protocol to be used to run this test.
+# Supported protocols are MAC.
+# NOTE: MAC layer not valid for OC-n interfaces
+# mac = layer 2 MAC
+#
+set testConf(protocolName) "mac"
+
+
+
+
+#
+# The approximate length of time frames are transmitted for each trial is
+# set as a 'duration.
+# The duration is in seconds; for example, if the duration is set to one
+# second on a 100mbs switch, ~148810 frames will be transmitted. This
+# number must be an integer; minimum value is 1 second.
+# duration of transmit during test, in seconds
+#
+bcast config -duration 15
+
+
+#
+# One frame size/frame rate test is called a trial. The user may choose
+# to run one or more trials; the average result of each trial will be
+# presented in the result file. total number of trials per frame size/frame
+# rate
+#
+bcast config -numtrials 3
+
+
+#
+# Staggered start; if set to true, transmit start will be staggered; if
+# set to false, transmit will start on all ports at the same time.
+#
+bcast config -staggeredStart notStaggeredStart
+
+bcast config -linearBinarySearch false
+
+
+bcast config -searchType "binary"
+
+#
+# number of iterations from percentMaxRate
+#
+bcast config -numIterations 1
+
+
+bcast config -tolerance 0
+
+
+bcast config -resolution 0.1
+
+
+
+
+
+advancedTestParameter config -maxConnectRetries 3
+
+
+advancedTestParameter config -linkStateTimeout 25
+
+
+advancedTestParameter config -dutDelay 100
+
+
+advancedTestParameter config -gpsLockTimeout 60
+
+
+advancedTestParameter config -useServerConfig no
+
+advancedTestParameter config -removeStreamsAtCompletion false
+
+advancedTestParameter config -percentLossFormat 7.3
+
+
+advancedTestParameter config -streamFrameType "08 00"
+
+
+advancedTestParameter config -streamPatternType "repeat"
+
+
+advancedTestParameter config -streamDataPattern "x00010203"
+
+
+advancedTestParameter config -streamPattern ""
+
+
+
+
+
+
+
+
+bcast config -framesizeList { 68 128 256 512 768 1024 1280 1518 }
+
+
+#
+# NOTE: If the DUT strips VLAN tags, the minimum
+# frame size on Ethernet should be set to 68.
+#
+set testConf(enable802dot1qTag) true
+
+set testConf(firstVlanID) {min_vlan_id}
+
+
+set testConf(incrementVlanID) yes
+
+set testConf(vlansPerPort) {slaves_nb}
+
+
+set testConf(enableISLtag) false
+
+set tputMultipleVlans 1
+
+set testConf(ethernetType) "noType"
+
+advancedTestParameter config -l2DataProtocol native
+
+advancedTestParameter config -l2DAIpAddress "127.0.0.1"
+
+
+#
+# Enable Random MAC addresses asignment.
+#
+set testConf(enableRandomMAC) false
+
+#
+# Enable using same random MAC address between runs.
+#
+set testConf(enableKeepRandomMACAddress) false
+
+set testConf(randomMACSeedValue) 12345
+
+
+set testConf(firstSrcIpAddress) 198.18.1.100
+
+
+set testConf(firstDestDUTIpAddress) 198.18.1.1
+
+
+set testConf(firstMaskWidth) 24
+
+
+set testConf(firstSrcIpV6Address) 2000:0:0:1::1:100
+
+
+set testConf(firstDestDUTIpV6Address) 2000:0:0:1::1:1
+
+
+set testConf(incrIpV6AddressField) "siteLevelAggregationId"
+
+
+set testConf(firstSrcIpxSocket) "0x4011"
+
+
+set testConf(incrDUTaddress) yes
+
+set testConf(autoMapGeneration) "no"
+
+
+#
+# unidirectional only
+#
+set testConf(mapDirection) "unidirectional"
+
+
+set testConf(mapFromPort) {1 1 2}
+
+
+set testConf(mapToPort) {1 1 2}
+
+
+set testConf(mapTransmitPort) {1 1 1}
+
+
+set testConf(mapReceivePort) {1 1 1}
+
+
+bcast config -rateSelect "percentMaxRate"
+
+
+
+
+#
+# Enter the percentage of Maximum Frame rate to use for running the test.
+#
+bcast config -percentMaxRate 3
+
+
+bcast config -percentMaxRateIncrText 10
+
+
+
+
+#
+# Increment (+value) or decrement (-value) the rate by incrStep percent value
+# for decrement, enter negative value
+#
+bcast config -incrStep 10
+
+
+set testConf(passFailEnable) 0
+
+
+
+
+set testConf(passFailMode) "line"
+
+set testConf(passFailLineValue) 100
+
+
+set testConf(passFailLineType) "average"
+
+set testConf(passFailDataValue) 100
+
+
+set testConf(passFailDataUnit) "Mbps"
+
+
+set testConf(passFailDataType) "average"
+
+user config -productname ""
+
+
+user config -version ""
+
+
+user config -serial# ""
+
+
+#
+# Indicates the username to show in reports
+#
+user config -username ""
+
+
+user config -comments ""
+
+
+results config -fileBackup true
+
+results config -flatDir false
+
+set testConf(uniqueResultsName) false
+
+set testConf(userResultDir) true
+#
+# The results will be printed in test suite and test sub-directories
+# under this parent results directory.
+#
+results config -directory "/home/spidcom/ixos/Results"
+
+
+#
+# Indicates the username for use in port ownership
+#
+set testConf(loginId) "provence"
+
+
+#
+# Real time graphs configuration
+#
+set statViewer(config) "<?xml version=\"1.0\"?><StatViewer version=\"3.15.11.25\"><SessionList Key=\"aptixia.sv.persistence.SessionListWrapper\"><CONTENT /><PRESENTATION /><COMBINED><Sessions><Session Key=\"aptixia.sv.persistence.SessionWrapper\"><CONTENT><Frequency value=\"1\" /><CsvLogging value=\"True\" /><CsvLoggingHiddenViews value=\"False\" /><EnableDataStore value=\"True\" /><PersistenceType value=\"4\" /><EnableDataStoreHiddenViews value=\"False\" /><CsvOutputFrequencyMultiple value=\"1\" /><OutputDSFrequencyMultiple value=\"1\" /><MaxStatsPerCustomGraph value=\"16\" /><CsvFilePath /><Alerts><Alerts xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" /></Alerts><DefaultViews><DefaultViews><DefaultView>Port CPU Statistics</DefaultView></DefaultViews></DefaultViews></CONTENT><PRESENTATION /><COMBINED><Views><View Key=\"RealTime-AggregatedStatsCount\"><CONTENT><ViewXml></ViewXml><CsvLogging value=\"False\" /><DatastoreEnabled value=\"False\" /><Enabled value=\"True\" /><ContentPersistanceType value=\"kPersistInUserSettings\" /><DatastorePollingMultiplier value=\"1\" /><CsvPollingMultiplier value=\"1\" /></CONTENT><PRESENTATION /><COMBINED /></View><View Key=\"RealTime-Per-PortStatsCount\"><CONTENT><ViewXml></ViewXml><CsvLogging value=\"False\" /><DatastoreEnabled value=\"False\" /><Enabled value=\"True\" /><ContentPersistanceType value=\"kPersistInUserSettings\" /><DatastorePollingMultiplier value=\"1\" /><CsvPollingMultiplier value=\"1\" /></CONTENT><PRESENTATION /><COMBINED /></View><View Key=\"Port CPU Statistics\"><CONTENT><ViewXml></ViewXml><CsvLogging value=\"False\" /><DatastoreEnabled value=\"False\" /><Enabled value=\"True\" /><ContentPersistanceType value=\"kPersistInUserSettings\" /><DatastorePollingMultiplier value=\"1\" /><CsvPollingMultiplier value=\"1\" /></CONTENT><PRESENTATION /><COMBINED /></View></Views><LinkedViews /></COMBINED></Session></Sessions></COMBINED></SessionList><Group name=\"Views\" version=\"1\"><Group name=\"Defaults\" order=\"0\" accessLevel=\"1\"><Group name=\"Ports\" order=\"0\" accessLevel=\"1\" /></Group></Group><Snmp Key=\"aptixia.sv.persistence.SnmpPersistance\"><CONTENT><SnmpConfiguration value=\"&lt;snmpconf&gt;&lt;snmpvar name=&quot;Snmp&quot; active=&quot;true&quot; description=&quot;&quot;&gt;&lt;children /&gt;&lt;/snmpvar&gt;&lt;snmpdev&gt;&lt;children /&gt;&lt;/snmpdev&gt;&lt;/snmpconf&gt;\" /></CONTENT><PRESENTATION /><COMBINED /></Snmp></StatViewer>"
+
+
+#
+# Enable/Disable DUT Configuration
+#
+set testConf(dutConfEnabled) 0
+
+#
+# Enable/Disable DUT Configuration in Reports
+#
+set testConf(dutConfReportEnabled) 0
+
+#
+# The command executed at the beginning of the test
+#
+set testConf(dutConfTestSetupCmd) ""
+
+
+#
+# The command executed in background.
+#
+set testConf(dutConfTestSetupBackgroundMode) 0
+
+#
+# The arguments passed to the command
+#
+set testConf(dutConfTestSetupArgs) ""
+
+
+#
+# If value is 1, the background command is stopped at cleanup.
+#
+set testConf(dutConfTestSetupStopAtCleanup) 0
+
+#
+# The command executed at the end of the test
+#
+set testConf(dutConfTestCleanupCmd) ""
+
+
+#
+# The arguments passed to the command
+#
+set testConf(dutConfTestCleanupArgs) ""
+
+
+#
+# The command executed at the beginning of the trial
+#
+set testConf(dutConfTrialSetupCmd) ""
+
+
+#
+# The command executed in background.
+#
+set testConf(dutConfTrialSetupBackgroundMode) 0
+
+#
+# The arguments passed to the command
+#
+set testConf(dutConfTrialSetupArgs) ""
+
+
+#
+# If value is 1, the background command is stopped at cleanup.
+#
+set testConf(dutConfTrialSetupStopAtCleanup) 0
+
+#
+# The command executed at the end of the trial
+#
+set testConf(dutConfTrialCleanupCmd) ""
+
+
+#
+# The arguments passed to the command
+#
+set testConf(dutConfTrialCleanupArgs) ""
+
+
+#
+# The command executed at the beginning of the trial
+#
+set testConf(dutConfFramesizeSetupCmd) ""
+
+
+#
+# The command executed in background.
+#
+set testConf(dutConfFramesizeSetupBackgroundMode) 0
+
+#
+# The arguments passed to the command
+#
+set testConf(dutConfFramesizeSetupArgs) ""
+
+
+#
+# If value is 1, the background command is stopped at cleanup.
+#
+set testConf(dutConfFramesizeSetupStopAtCleanup) 0
+
+#
+# The command executed at the end of the trial
+#
+set testConf(dutConfFramesizeCleanupCmd) ""
+
+
+#
+# The arguments passed to the command
+#
+set testConf(dutConfFramesizeCleanupArgs) ""
+
+
+#
+# The command executed at the beginning of the trial
+#
+set testConf(dutConfIterationSetupCmd) ""
+
+
+#
+# The command executed in background.
+#
+set testConf(dutConfIterationSetupBackgroundMode) 0
+
+#
+# The arguments passed to the command
+#
+set testConf(dutConfIterationSetupArgs) ""
+
+
+#
+# If value is 1, the background command is stopped at cleanup.
+#
+set testConf(dutConfIterationSetupStopAtCleanup) 0
+
+#
+# The command executed at the end of the trial
+#
+set testConf(dutConfIterationCleanupCmd) ""
+
+
+#
+# The arguments passed to the command
+#
+set testConf(dutConfIterationCleanupArgs) ""
+
+
+#
+# The first arguments passed to each command
+#
+set testConf(dutConfGlobalArgs) ""
+
+
+# Enable/Disable DUT Polling
+set testConf(dutConfPollingEnabled) 0
+
+# Enable/Disable DUT Polling Reporting
+set testConf(dutConfReportPollingEnabled) 0
+
+# User authentification script
+set testConf(authenticationEnableScript) ""
+
+
+# User polling script
+set testConf(pollingScript) ""
+
+
+# DUT polling interval in seconds
+set testConf(dutPollingInterval) 10
+
+
+
+###################################################
+# Begin Config Trailer
+###################################################
+configTrailer::TestStart
+exit
+###################################################
+# End Config Trailer
+###################################################
diff --git a/validation/validlib/ixia_tcl_templates/floss.tcl b/validation/validlib/ixia_tcl_templates/floss.tcl
new file mode 100644
index 0000000000..0f5446ea95
--- /dev/null
+++ b/validation/validlib/ixia_tcl_templates/floss.tcl
@@ -0,0 +1,660 @@
+###################################################
+# Begin Config Header
+###################################################
+#
+# <CONFIG_HEADER>
+# <CONFIG_VERSION>1.00</CONFIG_VERSION>
+# <APPLICATION_VERSION>IxAutomate 6.90.102.3</APPLICATION_VERSION>
+# <COPYRIGHT>Copyright 2012 by IXIA All Rights Reserved.</COPYRIGHT>
+# <TEST_CAT>rfc2544</TEST_CAT>
+# <TEST_CAT_STR>RFC 2544 - IPv6 Benchmark</TEST_CAT_STR>
+# <TEST_NAME>floss</TEST_NAME>
+# <TEST_NAME_STR>Frame Loss</TEST_NAME_STR>
+# </CONFIG_HEADER>
+
+###################################################
+# End Config Header
+###################################################
+
+###################################################
+# Begin Test Registration
+###################################################
+
+catch {wm withdraw .}
+catch {tk appname IxScriptMate}
+set ixA on
+package require IxTclHal
+package require Scriptmate
+configHeader::TestRegister;
+
+
+###################################################
+# End Test Registration
+# Above MUST remain unmodified
+###################################################
+
+logOn "frameloss.log.634699095522898672"
+logMsg \n
+logMsg -priority " RFC 2544 - IPv6 Benchmark Frame Loss test"
+logMsg -priority " Copyright 2012 by IXIA"
+logMsg -priority " All Rights Reserved."
+logMsg -priority " ............................................\n"
+
+set testConf(hostname) {400T-0214240}
+set testConf(chassisID) {1}
+set testConf(chassisSequence) {1}
+set testConf(cableLength) {cable3feet}
+set testConf(timeSource) {Internal}
+set testConf(reconnect) {True}
+
+
+
+#
+# This part contains the configuration of card and port levels.
+#
+
+set testConf(enableAccmNegotiation) { {false Oc48}}
+set testConf(atmFillerCell) { {atmIdleCell Oc48}}
+set testConf(atmInterfaceType) { {atmInterfaceUni Oc48}}
+set testConf(autonegotiate) { {true 10100Gigabit} {true 10100}}
+set testConf(C2byteExpected) { {22 Oc48}}
+set testConf(C2byteTransmit) { {22 Oc48}}
+set testConf(atmEnableCoset) { {true Oc48}}
+set testConf(dataScrambling) { {true Oc48}}
+set testConf(duplex) { {full 10100Gigabit} {full 10100}}
+set testConf(hdlcHeader) { {ppp Oc48}}
+set testConf(useMagicNumber) { {true Oc48}}
+set testConf(enableIp) { {true Oc48}}
+set testConf(enableIpv6) { {true Oc48}}
+set testConf(enableOsi) { {true Oc48}}
+set testConf(PPPnegotiation) { {true Oc48}}
+set testConf(atmReassemblyTimeout) { {10 Oc48}}
+set testConf(useRecoveredClock) { {true Oc48}}
+set testConf(sonetRxCRC) { {sonetCrc32 Oc48}}
+set testConf(speed) { {Copper1000 10100Gigabit} {100 10100} {oc48 Oc48}}
+set testConf(sonetTxCRC) { {sonetCrc32 Oc48}}
+set NumVlans({slave_comma_port}) {slaves_nb}
+set NumVlans({master_comma_port}) {slaves_nb}
+
+map new -type one2one
+map config -type one2one
+{map_add}
+
+
+#FCoE Multicast Map(one2many) Elements
+set testConf(portname,{slave_dot_port}) Slaves
+set testConf(portname,{master_comma_port}) Master
+set testConf(portname,{master_dot_port}) Master
+set testConf(portname,{slave_comma_port}) Slaves
+set SrcIpAddress({slave_comma_port}) 10.10.10.101
+set SrcIpAddress({master_comma_port}) 10.10.10.1
+set DestDUTIpAddress({slave_comma_port}) 10.10.10.1
+set DestDUTIpAddress({master_comma_port}) 10.10.10.101
+set VlanID({slave_comma_port}) {min_vlan_id}
+set VlanID({master_comma_port}) {min_vlan_id}
+set testConf(enableMpls) { {true Oc48}}
+
+
+
+#
+# Select the protocol to be used to run this test.
+# Supported protocols are MAC, IP , IPV6 and IPX.
+# NOTE: MAC layer not valid for OC-n interfaces
+# mac = layer 2 MAC
+# ip = layer 3 IP
+# ipV6 = layer 3 IPv6
+# ipx = layer 3 IPX
+#
+set testConf(protocolName) "mac"
+
+
+set testConf(enableUdp) false
+
+#
+# Enables assigning addresses for excluded ports in Automatic Map.
+#
+set testConf(useExcludedPortsAddressing) false
+
+
+
+
+#
+# The approximate length of time frames are transmitted for each trial is
+# set as a 'duration.
+# The duration is in seconds; for example, if the duration is set to one
+# second on a 100mbs switch, ~148810 frames will be transmitted. This
+# number must be an integer; minimum value is 1 second.
+# duration of transmit during test, in seconds
+#
+floss config -duration 600
+
+
+floss config -runmode "duration"
+
+floss config -numFrames 100000
+
+
+#
+# One frame size/frame rate test is called a trial. The user may choose
+# to run one or more trials; the average result of each trial will be
+# presented in the result file. total number of trials per frame size/frame
+# rate
+#
+floss config -numtrials 1
+
+set testConf(numAddressesPerPort) {slaves_nb}
+
+floss config -grain "coarse"
+
+
+floss config -trafficType "Constant Loading"
+
+
+floss config -burstSize 1
+
+
+floss config -framesPerBurstGap 1
+
+
+#
+# Staggered start; if set to true, transmit start will be staggered; if
+# set to false, transmit will start on all ports at the same time.
+#
+floss config -staggeredStart notStaggeredStart
+
+floss config -reportSequenceError no
+
+
+floss config -reportrateSelect "mbpsRate"
+
+
+set testConf(ipv4rate) 50.0
+
+
+set testConf(ipv6rate) 50.0
+
+
+set testConf(IPv6Headers) {}
+
+
+advancedTestParameter config -maxConnectRetries 3
+
+
+advancedTestParameter config -linkStateTimeout 25
+
+
+advancedTestParameter config -dutDelay 100
+
+
+advancedTestParameter config -gpsLockTimeout 60
+
+
+advancedTestParameter config -useServerConfig no
+
+advancedTestParameter config -removeStreamsAtCompletion false
+
+advancedTestParameter config -ipTTL 10
+
+
+advancedTestParameter config -udpSourcePort 7
+
+
+advancedTestParameter config -udpDestPort 7
+
+
+advancedTestParameter config -verifyAllArpReply false
+
+advancedTestParameter config -percentLossFormat 7.3
+
+
+advancedTestParameter config -streamFrameType "08 00"
+
+
+advancedTestParameter config -streamPatternType "repeat"
+
+
+advancedTestParameter config -streamDataPattern "x00010203"
+
+
+advancedTestParameter config -streamPattern ""
+
+
+advancedTestParameter config -throughputOffsetCalculation "automatic"
+
+
+advancedTestParameter config -throughputTagOffset 46
+
+
+advancedTestParameter config -primeDut 0
+
+advancedTestParameter config -primeDutTime 2
+
+
+
+
+
+
+
+
+floss config -framesizeList { 1518 }
+
+
+learn config -when "oncePerTest"
+
+
+learn config -type default
+
+learn config -sendRouterSolicitation true
+
+learn config -waitTimeBeforeTransmit 0
+
+
+learn config -numframes 10
+
+
+learn config -retries 10
+
+
+learn config -rate 100
+
+
+learn config -waitTime 1000
+
+
+learn config -framesize 64
+
+
+fastpath config -enable false
+
+fastpath config -numframes 10
+
+
+fastpath config -rate 100
+
+
+set testConf(enableInnerVLANTag) false
+
+set testConf(firstInnerVlanID) {min_vlan_id}
+
+
+set testConf(incrInnerVlanIdInterPort) no
+
+
+#
+# NOTE: If the DUT strips VLAN tags, the minimum
+# frame size on Ethernet should be set to 68.
+#
+set testConf(enable802dot1qTag) true
+
+learn config -snoopConfig false
+
+set testConf(firstVlanID) {min_vlan_id}
+
+
+set testConf(incrementVlanID) yes
+
+set testConf(vlansPerPort) {slaves_nb}
+
+
+set testConf(enableISLtag) false
+
+set tputMultipleVlans 1
+
+set testConf(ethernetType) "noType"
+
+advancedTestParameter config -l2DataProtocol native
+
+advancedTestParameter config -l2DAIpAddress "127.0.0.1"
+
+
+#
+# Enable Random MAC addresses asignment.
+#
+set testConf(enableRandomMAC) false
+
+#
+# Enable using same random MAC address between runs.
+#
+set testConf(enableKeepRandomMACAddress) false
+
+set testConf(randomMACSeedValue) 12345
+
+
+set testConf(firstSrcIpAddress) 198.18.1.100
+
+
+set testConf(firstDestDUTIpAddress) 198.18.1.101
+
+
+set testConf(firstMaskWidth) 24
+
+
+
+set testConf(firstSrcIpV6Address) 2000:0:0:1::1:100
+
+
+set testConf(firstDestDUTIpV6Address) 2000:0:0:1::1:1
+
+
+set testConf(incrIpV6AddressField) "siteLevelAggregationId"
+
+
+
+set testConf(firstSrcIpxSocket) "0x4011"
+
+
+set testConf(firstSrcIpAddress) 198.18.1.100
+
+
+set testConf(firstDestDUTIpAddress) 198.18.1.101
+
+
+set testConf(firstMaskWidth) 24
+
+
+set testConf(firstSrcIpV6Address) 2000:0:0:1::1:100
+
+
+set testConf(firstDestDUTIpV6Address) 2000:0:0:1::1:1
+
+
+set testConf(incrIpV6AddressField) "siteLevelAggregationId"
+
+
+set testConf(incrDUTaddress) no
+
+#
+set testConf(protocolOverIp) "udp"
+
+
+set testConf(protocolSourcePort) 7
+
+
+set testConf(protocolDestinationPort) 7
+
+
+#
+set testConf(incrementSourceAddressPort) false
+
+#
+set testConf(incrementDestinationPort) false
+
+#
+set testConf(incrementDestinationAddressPort) false
+
+set testConf(autoMapGeneration) "no"
+
+
+set testConf(mapDirection) "unidirectional"
+
+
+set testConf(mapFromPort) {1 3 1}
+
+
+set testConf(mapToPort) {1 3 2}
+
+
+set testConf(mapTransmitPort) {1 1 1}
+
+
+set testConf(mapReceivePort) {1 1 1}
+
+
+map config -echo false
+
+floss config -rateSelect "mbpsRate"
+
+
+
+
+
+
+floss config -mbpsRate 10
+
+
+
+
+
+set testConf(passFailEnable) 0
+
+
+
+
+set testConf(passFailMode) "line"
+
+set testConf(passFailLineValue) 100
+
+
+set testConf(passFailLineType) "average"
+
+set testConf(passFailDataValue) 100
+
+
+set testConf(passFailDataUnit) "Mbps"
+
+
+set testConf(passFailDataType) "average"
+
+user config -productname ""
+
+
+user config -version ""
+
+
+user config -serial# ""
+
+
+#
+# Indicates the username to show in reports
+#
+user config -username ""
+
+
+user config -comments ""
+
+
+results config -fileBackup false
+
+results config -flatDir false
+
+set testConf(uniqueResultsName) false
+
+set testConf(userResultDir) false
+#
+# The results will be printed in test suite and test sub-directories
+# under this parent results directory.
+#
+results config -directory "/home/spidcom/ixos/Results"
+
+
+#
+# Indicates the username for use in port ownership
+#
+set testConf(loginId) "provence"
+
+
+#
+# Real time graphs configuration
+#
+set statViewer(config) "<?xml version=\"1.0\"?><StatViewer version=\"3.15.11.25\"><SessionList Key=\"aptixia.sv.persistence.SessionListWrapper\"><CONTENT /><PRESENTATION /><COMBINED><Sessions><Session Key=\"aptixia.sv.persistence.SessionWrapper\"><CONTENT><Frequency value=\"1\" /><CsvLogging value=\"True\" /><CsvLoggingHiddenViews value=\"False\" /><EnableDataStore value=\"True\" /><PersistenceType value=\"4\" /><EnableDataStoreHiddenViews value=\"False\" /><CsvOutputFrequencyMultiple value=\"1\" /><OutputDSFrequencyMultiple value=\"1\" /><MaxStatsPerCustomGraph value=\"16\" /><CsvFilePath /><Alerts><Alerts xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" /></Alerts><DefaultViews><DefaultViews><DefaultView>Port CPU Statistics</DefaultView></DefaultViews></DefaultViews></CONTENT><PRESENTATION /><COMBINED><Views><View Key=\"RealTime-AggregatedStatsCount\"><CONTENT><ViewXml></ViewXml><CsvLogging value=\"False\" /><DatastoreEnabled value=\"False\" /><Enabled value=\"True\" /><ContentPersistanceType value=\"kPersistInUserSettings\" /><DatastorePollingMultiplier value=\"1\" /><CsvPollingMultiplier value=\"1\" /></CONTENT><PRESENTATION /><COMBINED /></View><View Key=\"RealTime-Per-PortStatsCount\"><CONTENT><ViewXml></ViewXml><CsvLogging value=\"False\" /><DatastoreEnabled value=\"False\" /><Enabled value=\"True\" /><ContentPersistanceType value=\"kPersistInUserSettings\" /><DatastorePollingMultiplier value=\"1\" /><CsvPollingMultiplier value=\"1\" /></CONTENT><PRESENTATION /><COMBINED /></View><View Key=\"Port CPU Statistics\"><CONTENT><ViewXml></ViewXml><CsvLogging value=\"False\" /><DatastoreEnabled value=\"False\" /><Enabled value=\"True\" /><ContentPersistanceType value=\"kPersistInUserSettings\" /><DatastorePollingMultiplier value=\"1\" /><CsvPollingMultiplier value=\"1\" /></CONTENT><PRESENTATION /><COMBINED /></View></Views><LinkedViews /></COMBINED></Session></Sessions></COMBINED></SessionList><Group name=\"Views\" version=\"1\"><Group name=\"Defaults\" order=\"0\" accessLevel=\"1\"><Group name=\"Ports\" order=\"0\" accessLevel=\"1\" /></Group></Group><Snmp Key=\"aptixia.sv.persistence.SnmpPersistance\"><CONTENT><SnmpConfiguration value=\"&lt;snmpconf&gt;&lt;snmpvar name=&quot;Snmp&quot; active=&quot;true&quot; description=&quot;&quot;&gt;&lt;children /&gt;&lt;/snmpvar&gt;&lt;snmpdev&gt;&lt;children /&gt;&lt;/snmpdev&gt;&lt;/snmpconf&gt;\" /></CONTENT><PRESENTATION /><COMBINED /></Snmp></StatViewer>"
+
+
+#
+# Enable/Disable DUT Configuration
+#
+set testConf(dutConfEnabled) 0
+
+#
+# Enable/Disable DUT Configuration in Reports
+#
+set testConf(dutConfReportEnabled) 0
+
+#
+# The command executed at the beginning of the test
+#
+set testConf(dutConfTestSetupCmd) ""
+
+
+#
+# The command executed in background.
+#
+set testConf(dutConfTestSetupBackgroundMode) 0
+
+#
+# The arguments passed to the command
+#
+set testConf(dutConfTestSetupArgs) ""
+
+
+#
+# If value is 1, the background command is stopped at cleanup.
+#
+set testConf(dutConfTestSetupStopAtCleanup) 0
+
+#
+# The command executed at the end of the test
+#
+set testConf(dutConfTestCleanupCmd) ""
+
+
+#
+# The arguments passed to the command
+#
+set testConf(dutConfTestCleanupArgs) ""
+
+
+#
+# The command executed at the beginning of the trial
+#
+set testConf(dutConfTrialSetupCmd) ""
+
+
+#
+# The command executed in background.
+#
+set testConf(dutConfTrialSetupBackgroundMode) 0
+
+#
+# The arguments passed to the command
+#
+set testConf(dutConfTrialSetupArgs) ""
+
+
+#
+# If value is 1, the background command is stopped at cleanup.
+#
+set testConf(dutConfTrialSetupStopAtCleanup) 0
+
+#
+# The command executed at the end of the trial
+#
+set testConf(dutConfTrialCleanupCmd) ""
+
+
+#
+# The arguments passed to the command
+#
+set testConf(dutConfTrialCleanupArgs) ""
+
+
+#
+# The command executed at the beginning of the trial
+#
+set testConf(dutConfFramesizeSetupCmd) ""
+
+
+#
+# The command executed in background.
+#
+set testConf(dutConfFramesizeSetupBackgroundMode) 0
+
+#
+# The arguments passed to the command
+#
+set testConf(dutConfFramesizeSetupArgs) ""
+
+
+#
+# If value is 1, the background command is stopped at cleanup.
+#
+set testConf(dutConfFramesizeSetupStopAtCleanup) 0
+
+#
+# The command executed at the end of the trial
+#
+set testConf(dutConfFramesizeCleanupCmd) ""
+
+
+#
+# The arguments passed to the command
+#
+set testConf(dutConfFramesizeCleanupArgs) ""
+
+
+#
+# The command executed at the beginning of the trial
+#
+set testConf(dutConfIterationSetupCmd) ""
+
+
+#
+# The command executed in background.
+#
+set testConf(dutConfIterationSetupBackgroundMode) 0
+
+#
+# The arguments passed to the command
+#
+set testConf(dutConfIterationSetupArgs) ""
+
+
+#
+# If value is 1, the background command is stopped at cleanup.
+#
+set testConf(dutConfIterationSetupStopAtCleanup) 0
+
+#
+# The command executed at the end of the trial
+#
+set testConf(dutConfIterationCleanupCmd) ""
+
+
+#
+# The arguments passed to the command
+#
+set testConf(dutConfIterationCleanupArgs) ""
+
+
+#
+# The first arguments passed to each command
+#
+set testConf(dutConfGlobalArgs) ""
+
+
+# Enable/Disable DUT Polling
+set testConf(dutConfPollingEnabled) 0
+
+# Enable/Disable DUT Polling Reporting
+set testConf(dutConfReportPollingEnabled) 0
+
+# User authentification script
+set testConf(authenticationEnableScript) ""
+
+
+# User polling script
+set testConf(pollingScript) ""
+
+
+# DUT polling interval in seconds
+set testConf(dutPollingInterval) 10
+
+
+
+###################################################
+# Begin Config Trailer
+###################################################
+configTrailer::TestStart
+exit
+###################################################
+# End Config Trailer
+###################################################
diff --git a/validation/validlib/ixia_tcl_templates/latency.tcl b/validation/validlib/ixia_tcl_templates/latency.tcl
new file mode 100644
index 0000000000..12ef2fce1b
--- /dev/null
+++ b/validation/validlib/ixia_tcl_templates/latency.tcl
@@ -0,0 +1,655 @@
+###################################################
+# Begin Config Header
+###################################################
+#
+# <CONFIG_HEADER>
+# <CONFIG_VERSION>1.00</CONFIG_VERSION>
+# <APPLICATION_VERSION>IxAutomate 6.90.102.3</APPLICATION_VERSION>
+# <COPYRIGHT>Copyright 2012 by IXIA All Rights Reserved.</COPYRIGHT>
+# <TEST_CAT>rfc2544</TEST_CAT>
+# <TEST_CAT_STR>RFC 2544 - IPv6 Benchmark</TEST_CAT_STR>
+# <TEST_NAME>latency</TEST_NAME>
+# <TEST_NAME_STR>Latency</TEST_NAME_STR>
+# </CONFIG_HEADER>
+
+###################################################
+# End Config Header
+###################################################
+
+###################################################
+# Begin Test Registration
+###################################################
+
+catch {wm withdraw .}
+catch {tk appname IxScriptMate}
+set ixA on
+package require IxTclHal
+package require Scriptmate
+configHeader::TestRegister;
+
+
+###################################################
+# End Test Registration
+# Above MUST remain unmodified
+###################################################
+
+logOn "latency.log.634699092549122592"
+logMsg \n
+logMsg -priority " RFC 2544 - IPv6 Benchmark Latency test"
+logMsg -priority " Copyright 2012 by IXIA"
+logMsg -priority " All Rights Reserved."
+logMsg -priority " ............................................\n"
+
+set testConf(hostname) {400T-0214240}
+set testConf(chassisID) {1}
+set testConf(chassisSequence) {1}
+set testConf(cableLength) {cable3feet}
+set testConf(timeSource) {Internal}
+set testConf(reconnect) {True}
+
+
+
+#
+# This part contains the configuration of card and port levels.
+#
+
+set testConf(enableAccmNegotiation) { {false Oc48}}
+set testConf(atmFillerCell) { {atmIdleCell Oc48}}
+set testConf(atmInterfaceType) { {atmInterfaceUni Oc48}}
+set testConf(autonegotiate) { {true 10100Gigabit} {true 10100}}
+set testConf(C2byteExpected) { {22 Oc48}}
+set testConf(C2byteTransmit) { {22 Oc48}}
+set testConf(atmEnableCoset) { {true Oc48}}
+set testConf(dataScrambling) { {true Oc48}}
+set testConf(duplex) { {full 10100Gigabit} {full 10100}}
+set testConf(hdlcHeader) { {ppp Oc48}}
+set testConf(useMagicNumber) { {true Oc48}}
+set testConf(enableIp) { {true Oc48}}
+set testConf(enableIpv6) { {true Oc48}}
+set testConf(enableOsi) { {true Oc48}}
+set testConf(PPPnegotiation) { {true Oc48}}
+set testConf(atmReassemblyTimeout) { {10 Oc48}}
+set testConf(useRecoveredClock) { {true Oc48}}
+set testConf(sonetRxCRC) { {sonetCrc32 Oc48}}
+set testConf(speed) { {Copper1000 10100Gigabit} {100 10100} {oc48 Oc48}}
+set testConf(sonetTxCRC) { {sonetCrc32 Oc48}}
+set NumVlans({slave_comma_port}) {slaves_nb}
+set NumVlans({master_comma_port}) {slaves_nb}
+
+
+map new -type one2one
+map config -type one2one
+{map_add}
+
+
+
+#FCoE Multicast Map(one2many) Elements
+set testConf(portname,{slave_comma_port}) Slaves
+set testConf(portname,{master_dot_port}) Master
+set testConf(portname,{master_comma_port}) Master
+set testConf(portname,{slave_dot_port}) Slaves
+set VlanID({slave_comma_port}) {min_vlan_id}
+set VlanID({master_comma_port}) {min_vlan_id}
+set testConf(enableMpls) { {true Oc48}}
+
+
+
+#
+# Select the protocol to be used to run this test.
+# Supported protocols are MAC, IP , IPV6 and IPX.
+# NOTE: MAC layer not valid for OC-n interfaces
+# mac = layer 2 MAC
+# ip = layer 3 IP
+# ipV6 = layer 3 IPv6
+# ipx = layer 3 IPX
+#
+set testConf(protocolName) "mac"
+
+
+set testConf(enableUdp) true
+
+#
+# Enables assigning addresses for excluded ports in Automatic Map.
+#
+set testConf(useExcludedPortsAddressing) false
+
+
+
+
+#
+# The approximate length of time frames are transmitted for each trial is
+# set as a 'duration.
+# The duration is in seconds; for example, if the duration is set to one
+# second on a 100mbs switch, ~148810 frames will be transmitted. This
+# number must be an integer; minimum value is 1 second.
+# duration of transmit during test, in seconds
+#
+latency config -duration 30
+
+
+#
+# One frame size/frame rate test is called a trial. The user may choose
+# to run one or more trials; the average result of each trial will be
+# presented in the result file. total number of trials per frame size/frame
+# rate
+#
+latency config -numtrials 1
+
+
+set testConf(numAddressesPerPort) {slaves_nb}
+
+latency config -trafficType "Constant Loading"
+
+
+latency config -burstSize 1
+
+
+latency config -framesPerBurstGap 1
+
+
+set testConf(calibrateLatency) no
+
+latency config -latencyType "cutThrough"
+
+
+#
+# Staggered start; if set to true, transmit start will be staggered; if
+# set to false, transmit will start on all ports at the same time.
+#
+latency config -staggeredStart notStaggeredStart
+
+latency config -reportSequenceError no
+
+
+latency config -reportrateSelect "mbpsRate"
+
+
+set testConf(ipv4rate) 50.0
+
+
+set testConf(ipv6rate) 50.0
+
+
+set testConf(IPv6Headers) {}
+
+
+advancedTestParameter config -maxConnectRetries 3
+
+
+advancedTestParameter config -linkStateTimeout 25
+
+
+advancedTestParameter config -dutDelay 100
+
+
+advancedTestParameter config -gpsLockTimeout 60
+
+
+advancedTestParameter config -useServerConfig no
+
+advancedTestParameter config -removeStreamsAtCompletion false
+
+advancedTestParameter config -ipTTL 10
+
+
+advancedTestParameter config -udpSourcePort 7
+
+
+advancedTestParameter config -udpDestPort 7
+
+
+advancedTestParameter config -verifyAllArpReply false
+
+advancedTestParameter config -percentLossFormat 7.3
+
+
+advancedTestParameter config -streamFrameType "08 00"
+
+
+advancedTestParameter config -streamPatternType "repeat"
+
+
+advancedTestParameter config -streamDataPattern "x00010203"
+
+
+advancedTestParameter config -streamPattern ""
+
+
+advancedTestParameter config -throughputOffsetCalculation "automatic"
+
+
+advancedTestParameter config -throughputTagOffset 46
+
+
+advancedTestParameter config -timestampOffsetCalculation "automatic"
+
+
+advancedTestParameter config -timestampOffset 50
+
+
+advancedTestParameter config -primeDut 0
+
+advancedTestParameter config -primeDutTime 2
+
+
+
+
+
+
+
+
+latency config -framesizeList { 68 }
+
+
+learn config -when "oncePerTest"
+
+
+learn config -type mac
+
+learn config -sendRouterSolicitation true
+
+learn config -waitTimeBeforeTransmit 0
+
+
+learn config -numframes 10
+
+
+learn config -retries 10
+
+
+learn config -rate 100
+
+
+learn config -waitTime 1000
+
+
+learn config -framesize 64
+
+
+fastpath config -enable false
+
+fastpath config -numframes 10
+
+
+fastpath config -rate 100
+
+
+set testConf(enableInnerVLANTag) false
+
+set testConf(firstInnerVlanID) {min_vlan_id}
+
+
+set testConf(incrInnerVlanIdInterPort) no
+
+#
+# NOTE: If the DUT strips VLAN tags, the minimum
+# frame size on Ethernet should be set to 68.
+#
+set testConf(enable802dot1qTag) true
+
+learn config -snoopConfig false
+
+set testConf(firstVlanID) {min_vlan_id}
+
+
+set testConf(incrementVlanID) yes
+
+set testConf(vlansPerPort) {slaves_nb}
+
+
+set testConf(enableISLtag) false
+
+set tputMultipleVlans 1
+
+set testConf(ethernetType) "noType"
+
+advancedTestParameter config -l2DataProtocol native
+
+advancedTestParameter config -l2DAIpAddress "127.0.0.1"
+
+
+#
+# Enable Random MAC addresses asignment.
+#
+set testConf(enableRandomMAC) false
+
+#
+# Enable using same random MAC address between runs.
+#
+set testConf(enableKeepRandomMACAddress) false
+
+set testConf(randomMACSeedValue) 12345
+
+
+set testConf(firstSrcIpAddress) 198.18.1.100
+
+
+set testConf(firstDestDUTIpAddress) 198.18.1.101
+
+
+set testConf(firstMaskWidth) 24
+
+
+
+set testConf(firstSrcIpV6Address) 2000:0:0:1::1:100
+
+
+set testConf(firstDestDUTIpV6Address) 2000:0:0:1::1:1
+
+
+set testConf(incrIpV6AddressField) "siteLevelAggregationId"
+
+
+
+set testConf(firstSrcIpxSocket) "0x4011"
+
+
+set testConf(firstSrcIpAddress) 198.18.1.100
+
+
+set testConf(firstDestDUTIpAddress) 198.18.1.101
+
+
+set testConf(firstMaskWidth) 24
+
+
+set testConf(firstSrcIpV6Address) 2000:0:0:1::1:100
+
+
+set testConf(firstDestDUTIpV6Address) 2000:0:0:1::1:1
+
+
+set testConf(incrIpV6AddressField) "siteLevelAggregationId"
+
+
+set testConf(incrDUTaddress) no
+
+#
+set testConf(protocolOverIp) "udp"
+
+
+set testConf(protocolSourcePort) 7
+
+
+set testConf(protocolDestinationPort) 7
+
+
+#
+set testConf(incrementSourcePort) false
+
+#
+set testConf(incrementSourceAddressPort) false
+
+#
+set testConf(incrementDestinationPort) false
+
+#
+set testConf(incrementDestinationAddressPort) false
+
+set testConf(autoMapGeneration) "no"
+
+
+set testConf(mapDirection) "unidirectional"
+
+
+set testConf(mapFromPort) {1 3 1}
+
+
+set testConf(mapToPort) {1 3 2}
+
+
+set testConf(mapTransmitPort) {1 1 1}
+
+
+set testConf(mapReceivePort) {1 1 1}
+
+
+map config -echo false
+
+latency config -rateSelect "mbpsRate"
+
+
+
+
+
+
+latency config -mbpsRate 1
+
+
+
+
+
+set testConf(passFailEnable) 0
+
+set testConf(passFailLatencyType) "average"
+
+
+set testConf(passFailLatencyValue) 1.0
+
+
+set testConf(passFailLatencyUnit) "us"
+
+
+user config -productname ""
+
+
+user config -version ""
+
+
+user config -serial# ""
+
+
+#
+# Indicates the username to show in reports
+#
+user config -username ""
+
+
+user config -comments ""
+
+
+results config -fileBackup false
+
+results config -flatDir false
+
+set testConf(uniqueResultsName) false
+
+set testConf(userResultDir) false
+#
+# The results will be printed in test suite and test sub-directories
+# under this parent results directory.
+#
+results config -directory "/home/spidcom/ixos/Results/"
+
+
+#
+# Indicates the username for use in port ownership
+#
+set testConf(loginId) "provence"
+
+
+#
+# Real time graphs configuration
+#
+set statViewer(config) "<?xml version=\"1.0\"?><StatViewer version=\"3.15.11.25\"><SessionList Key=\"aptixia.sv.persistence.SessionListWrapper\"><CONTENT /><PRESENTATION /><COMBINED><Sessions><Session Key=\"aptixia.sv.persistence.SessionWrapper\"><CONTENT><Frequency value=\"1\" /><CsvLogging value=\"True\" /><CsvLoggingHiddenViews value=\"False\" /><EnableDataStore value=\"True\" /><PersistenceType value=\"4\" /><EnableDataStoreHiddenViews value=\"False\" /><CsvOutputFrequencyMultiple value=\"1\" /><OutputDSFrequencyMultiple value=\"1\" /><MaxStatsPerCustomGraph value=\"16\" /><CsvFilePath /><Alerts><Alerts xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" /></Alerts><DefaultViews><DefaultViews><DefaultView>Port CPU Statistics</DefaultView></DefaultViews></DefaultViews></CONTENT><PRESENTATION /><COMBINED><Views><View Key=\"RealTime-AggregatedStatsCount\"><CONTENT><ViewXml></ViewXml><CsvLogging value=\"False\" /><DatastoreEnabled value=\"False\" /><Enabled value=\"True\" /><ContentPersistanceType value=\"kPersistInUserSettings\" /><DatastorePollingMultiplier value=\"1\" /><CsvPollingMultiplier value=\"1\" /></CONTENT><PRESENTATION /><COMBINED /></View><View Key=\"RealTime-Per-PortStatsCount\"><CONTENT><ViewXml></ViewXml><CsvLogging value=\"False\" /><DatastoreEnabled value=\"False\" /><Enabled value=\"True\" /><ContentPersistanceType value=\"kPersistInUserSettings\" /><DatastorePollingMultiplier value=\"1\" /><CsvPollingMultiplier value=\"1\" /></CONTENT><PRESENTATION /><COMBINED /></View><View Key=\"Port CPU Statistics\"><CONTENT><ViewXml></ViewXml><CsvLogging value=\"False\" /><DatastoreEnabled value=\"False\" /><Enabled value=\"True\" /><ContentPersistanceType value=\"kPersistInUserSettings\" /><DatastorePollingMultiplier value=\"1\" /><CsvPollingMultiplier value=\"1\" /></CONTENT><PRESENTATION /><COMBINED /></View></Views><LinkedViews /></COMBINED></Session></Sessions></COMBINED></SessionList><Group name=\"Views\" version=\"1\"><Group name=\"Defaults\" order=\"0\" accessLevel=\"1\"><Group name=\"Ports\" order=\"0\" accessLevel=\"1\" /></Group></Group><Snmp Key=\"aptixia.sv.persistence.SnmpPersistance\"><CONTENT><SnmpConfiguration value=\"&lt;snmpconf&gt;&lt;snmpvar name=&quot;Snmp&quot; active=&quot;true&quot; description=&quot;&quot;&gt;&lt;children /&gt;&lt;/snmpvar&gt;&lt;snmpdev&gt;&lt;children /&gt;&lt;/snmpdev&gt;&lt;/snmpconf&gt;\" /></CONTENT><PRESENTATION /><COMBINED /></Snmp></StatViewer>"
+
+
+#
+# Enable/Disable DUT Configuration
+#
+set testConf(dutConfEnabled) 0
+
+#
+# Enable/Disable DUT Configuration in Reports
+#
+set testConf(dutConfReportEnabled) 0
+
+#
+# The command executed at the beginning of the test
+#
+set testConf(dutConfTestSetupCmd) ""
+
+
+#
+# The command executed in background.
+#
+set testConf(dutConfTestSetupBackgroundMode) 0
+
+#
+# The arguments passed to the command
+#
+set testConf(dutConfTestSetupArgs) ""
+
+
+#
+# If value is 1, the background command is stopped at cleanup.
+#
+set testConf(dutConfTestSetupStopAtCleanup) 0
+
+#
+# The command executed at the end of the test
+#
+set testConf(dutConfTestCleanupCmd) ""
+
+
+#
+# The arguments passed to the command
+#
+set testConf(dutConfTestCleanupArgs) ""
+
+
+#
+# The command executed at the beginning of the trial
+#
+set testConf(dutConfTrialSetupCmd) ""
+
+
+#
+# The command executed in background.
+#
+set testConf(dutConfTrialSetupBackgroundMode) 0
+
+#
+# The arguments passed to the command
+#
+set testConf(dutConfTrialSetupArgs) ""
+
+
+#
+# If value is 1, the background command is stopped at cleanup.
+#
+set testConf(dutConfTrialSetupStopAtCleanup) 0
+
+#
+# The command executed at the end of the trial
+#
+set testConf(dutConfTrialCleanupCmd) ""
+
+
+#
+# The arguments passed to the command
+#
+set testConf(dutConfTrialCleanupArgs) ""
+
+
+#
+# The command executed at the beginning of the trial
+#
+set testConf(dutConfFramesizeSetupCmd) ""
+
+
+#
+# The command executed in background.
+#
+set testConf(dutConfFramesizeSetupBackgroundMode) 0
+
+#
+# The arguments passed to the command
+#
+set testConf(dutConfFramesizeSetupArgs) ""
+
+
+#
+# If value is 1, the background command is stopped at cleanup.
+#
+set testConf(dutConfFramesizeSetupStopAtCleanup) 0
+
+#
+# The command executed at the end of the trial
+#
+set testConf(dutConfFramesizeCleanupCmd) ""
+
+
+#
+# The arguments passed to the command
+#
+set testConf(dutConfFramesizeCleanupArgs) ""
+
+
+#
+# The command executed at the beginning of the trial
+#
+set testConf(dutConfIterationSetupCmd) ""
+
+
+#
+# The command executed in background.
+#
+set testConf(dutConfIterationSetupBackgroundMode) 0
+
+#
+# The arguments passed to the command
+#
+set testConf(dutConfIterationSetupArgs) ""
+
+
+#
+# If value is 1, the background command is stopped at cleanup.
+#
+set testConf(dutConfIterationSetupStopAtCleanup) 0
+
+#
+# The command executed at the end of the trial
+#
+set testConf(dutConfIterationCleanupCmd) ""
+
+
+#
+# The arguments passed to the command
+#
+set testConf(dutConfIterationCleanupArgs) ""
+
+
+#
+# The first arguments passed to each command
+#
+set testConf(dutConfGlobalArgs) ""
+
+
+# Enable/Disable DUT Polling
+set testConf(dutConfPollingEnabled) 0
+
+# Enable/Disable DUT Polling Reporting
+set testConf(dutConfReportPollingEnabled) 0
+
+# User authentification script
+set testConf(authenticationEnableScript) ""
+
+
+# User polling script
+set testConf(pollingScript) ""
+
+
+# DUT polling interval in seconds
+set testConf(dutPollingInterval) 10
+
+
+
+###################################################
+# Begin Config Trailer
+###################################################
+configTrailer::TestStart
+exit
+###################################################
+# End Config Trailer
+###################################################
diff --git a/validation/validlib/ixia_tcl_templates/tput.tcl b/validation/validlib/ixia_tcl_templates/tput.tcl
new file mode 100644
index 0000000000..8454779e84
--- /dev/null
+++ b/validation/validlib/ixia_tcl_templates/tput.tcl
@@ -0,0 +1,737 @@
+###################################################
+# Begin Config Header
+###################################################
+#
+# <CONFIG_HEADER>
+# <CONFIG_VERSION>1.00</CONFIG_VERSION>
+# <APPLICATION_VERSION>IxAutomate 6.90.102.3</APPLICATION_VERSION>
+# <COPYRIGHT>Copyright 2011 by IXIA All Rights Reserved.</COPYRIGHT>
+# <TEST_CAT>rfc2544</TEST_CAT>
+# <TEST_CAT_STR>RFC 2544 - IPv6 Benchmark</TEST_CAT_STR>
+# <TEST_NAME>tput</TEST_NAME>
+# <TEST_NAME_STR>Throughput</TEST_NAME_STR>
+# </CONFIG_HEADER>
+
+###################################################
+# End Config Header
+###################################################
+
+###################################################
+# Begin Test Registration
+###################################################
+
+catch {wm withdraw .}
+catch {tk appname IxScriptMate}
+set ixA on
+package require IxTclHal
+package require Scriptmate
+configHeader::TestRegister;
+
+
+###################################################
+# End Test Registration
+# Above MUST remain unmodified
+###################################################
+
+logOn "thruput.log.634582719024882201"
+logMsg \n
+logMsg -priority " RFC 2544 - IPv6 Benchmark Throughput test"
+logMsg -priority " Copyright 2011 by IXIA"
+logMsg -priority " All Rights Reserved."
+logMsg -priority " ............................................\n"
+
+set testConf(hostname) {400T-0214240}
+set testConf(chassisID) {1}
+set testConf(chassisSequence) {1}
+set testConf(cableLength) {cable3feet}
+set testConf(timeSource) {Internal}
+set testConf(reconnect) {True}
+
+
+
+#
+# This part contains the configuration of card and port levels.
+#
+
+set testConf(enableAccmNegotiation) { {false Oc48}}
+set testConf(atmFillerCell) { {atmIdleCell Oc48}}
+set testConf(atmInterfaceType) { {atmInterfaceUni Oc48}}
+set testConf(autonegotiate) { {true 10100Gigabit} {true 10100}}
+set testConf(C2byteExpected) { {22 Oc48}}
+set testConf(C2byteTransmit) { {22 Oc48}}
+set testConf(atmEnableCoset) { {true Oc48}}
+set testConf(dataScrambling) { {true Oc48}}
+set testConf(duplex) { {full 10100Gigabit} {full 10100}}
+set testConf(hdlcHeader) { {ppp Oc48}}
+set testConf(ipV4Mask,1,2,2) 255.255.255.0
+set testConf(ipV4Mask,1,2,4) 255.255.255.0
+set testConf(ipV4Mask,1,2,6) 255.255.255.0
+set testConf(ipV4Mask,1,1,1) 255.255.255.0
+set testConf(ipV4Mask,1,1,3) 255.255.255.0
+set testConf(ipV4Mask,1,1,5) 255.255.255.0
+set testConf(ipV4Mask,1,1,7) 255.255.255.0
+set testConf(ipV4Mask,1,3,2) 255.255.255.0
+set testConf(ipV4Mask,1,4,1) 255.255.255.0
+set testConf(ipV4Mask,1,3,8) 255.255.255.0
+set testConf(ipV4Mask,1,4,3) 255.255.255.0
+set testConf(ipV4Mask,1,4,5) 255.255.255.0
+set testConf(ipV4Mask,1,4,7) 255.255.255.0
+set testConf(ipV4Mask,1,3,2) 255.255.255.0
+set testConf(ipV4Mask,1,3,4) 255.255.255.0
+set testConf(ipV4Mask,1,3,6) 255.255.255.0
+set testConf(ipV4Mask,1,2,1) 255.255.255.0
+set testConf(ipV4Mask,1,1,8) 255.255.255.0
+set testConf(ipV4Mask,1,2,3) 255.255.255.0
+set testConf(ipV4Mask,1,2,5) 255.255.255.0
+set testConf(ipV4Mask,1,2,7) 255.255.255.0
+set testConf(ipV4Mask,1,1,2) 255.255.255.0
+set testConf(ipV4Mask,1,3,1) 255.255.255.0
+set testConf(ipV4Mask,1,4,8) 255.255.255.0
+set testConf(ipV4Mask,1,1,6) 255.255.255.0
+set testConf(ipV4Mask,1,1,4) 255.255.255.0
+set testConf(ipV4Mask,1,4,2) 255.255.255.0
+set testConf(ipV4Mask,1,4,4) 255.255.255.0
+set testConf(ipV4Mask,1,4,6) 255.255.255.0
+set testConf(ipV4Mask,1,3,1) 255.255.255.0
+set testConf(ipV4Mask,1,2,8) 255.255.255.0
+set testConf(ipV4Mask,1,3,3) 255.255.255.0
+set testConf(ipV4Mask,1,3,5) 255.255.255.0
+set testConf(ipV4Mask,1,3,7) 255.255.255.0
+set testConf(useMagicNumber) { {true Oc48}}
+set testConf(enableIp) { {true Oc48}}
+set testConf(enableIpv6) { {true Oc48}}
+set testConf(enableOsi) { {true Oc48}}
+set NumVlans({slave_comma_port}) {slaves_nb}
+set NumVlans({master_comma_port}) {slaves_nb}
+set testConf(PPPnegotiation) { {true Oc48}}
+set testConf(atmReassemblyTimeout) { {10 Oc48}}
+set testConf(useRecoveredClock) { {true Oc48}}
+set testConf(sonetRxCRC) { {sonetCrc32 Oc48}}
+set testConf(speed) { {Copper1000 10100Gigabit} {100 10100} {oc48 Oc48}}
+set testConf(sonetTxCRC) { {sonetCrc32 Oc48}}
+set testConf(excludePorts) {}
+
+
+map new -type one2one
+map config -type one2one
+{map_add}
+
+
+
+#FCoE Multicast Map(one2many) Elements
+set testConf(portname,{master_comma_port}) Master
+set testConf(portname,{slave_dot_port}) Slaves
+set testConf(portname,{master_dot_port}) Master
+set testConf(portname,{slave_comma_port}) Slaves
+set SrcIpAddress({slave_comma_port}) 10.10.10.101
+set SrcIpAddress({master_comma_port}) 10.10.10.1
+set DestDUTIpAddress({slave_comma_port}) 10.10.10.1
+set DestDUTIpAddress({master_comma_port}) 10.10.10.101
+set VlanID({slave_comma_port}) {min_vlan_id}
+set VlanID({master_comma_port}) {min_vlan_id}
+set testConf(enableMpls) { {true Oc48}}
+
+
+
+#
+# Select the protocol to be used to run this test.
+# Supported protocols are MAC, IP , IPV6 and IPX.
+# NOTE: MAC layer not valid for OC-n interfaces
+# mac = layer 2 MAC
+# ip = layer 3 IP
+# ipV6 = layer 3 IPv6
+# ipx = layer 3 IPX
+#
+set testConf(protocolName) "mac"
+
+
+#
+# Enables assigning addresses for excluded ports in Automatic Map.
+#
+set testConf(useExcludedPortsAddressing) false
+
+set testConf(enableUdp) true
+
+
+
+set testConf(randomSeedValue) "9601177"
+
+
+
+#
+# The approximate length of time frames are transmitted for each trial is
+# set as a 'duration.
+# The duration is in seconds; for example, if the duration is set to one
+# second on a 100mbs switch, ~148810 frames will be transmitted. This
+# number must be an integer; minimum value is 1 second.
+# duration of transmit during test, in seconds
+#
+tput config -duration 15
+
+
+#
+# One frame size/frame rate test is called a trial. The user may choose
+# to run one or more trials; the average result of each trial will be
+# presented in the result file. total number of trials per frame size/frame
+# rate
+#
+tput config -numtrials 3
+
+
+set testConf(numAddressesPerPort) {slaves_nb}
+
+
+tput config -trafficType "Constant Loading"
+
+
+tput config -burstSize 1
+
+
+tput config -framesPerBurstGap 1
+
+
+#
+# Staggered start; if set to true, transmit start will be staggered; if
+# set to false, transmit will start on all ports at the same time.
+#
+tput config -staggeredStart notStaggeredStart
+
+tput config -reportSequenceError no
+
+set testConf(enableFlowControl) false
+
+set testConf(IPv6Headers) {}
+set testConf(ipv4rate) 50.0
+
+
+set testConf(ipv6rate) 50.0
+
+
+tput config -linearBinarySearch true
+
+
+tput config -searchType "binary"
+
+tput config -tolerance 0
+
+
+tput config -resolution 0.1
+
+
+
+tput config -listRateSelect "percentMaxRate"
+
+
+tput config -loadRateList {1 10 50 }
+
+
+tput config -reportrateSelect "mbpsRate"
+
+
+
+
+advancedTestParameter config -maxConnectRetries 3
+
+
+advancedTestParameter config -linkStateTimeout 25
+
+
+advancedTestParameter config -dutDelay 100
+
+
+advancedTestParameter config -gpsLockTimeout 60
+
+
+advancedTestParameter config -useServerConfig no
+
+advancedTestParameter config -removeStreamsAtCompletion false
+
+advancedTestParameter config -ipTTL 10
+
+
+advancedTestParameter config -udpSourcePort 7
+
+
+advancedTestParameter config -udpDestPort 7
+
+
+advancedTestParameter config -verifyAllArpReply false
+
+advancedTestParameter config -percentLossFormat 7.3
+
+
+advancedTestParameter config -streamFrameType "08 00"
+
+
+advancedTestParameter config -streamPatternType "repeat"
+
+
+advancedTestParameter config -streamDataPattern "x00010203"
+
+
+advancedTestParameter config -streamPattern ""
+
+
+advancedTestParameter config -throughputOffsetCalculation "automatic"
+
+
+advancedTestParameter config -throughputTagOffset 46
+
+
+advancedTestParameter config -timestampOffsetCalculation "automatic"
+
+
+advancedTestParameter config -timestampOffset 50
+
+
+advancedTestParameter config -primeDut 0
+
+advancedTestParameter config -primeDutTime 2
+
+
+
+
+
+
+
+
+tput config -framesizeList { 68 128 256 512 768 1024 1280 1518 }
+
+
+learn config -when "oncePerFramesize"
+
+
+learn config -type default
+
+learn config -sendRouterSolicitation true
+
+learn config -waitTimeBeforeTransmit 0
+
+
+learn config -numframes 10
+
+
+learn config -retries 10
+
+
+learn config -rate 100
+
+
+learn config -waitTime 7000
+
+
+learn config -framesize 64
+
+
+fastpath config -enable false
+
+fastpath config -numframes 10
+
+
+fastpath config -rate 100
+
+
+set testConf(enableInnerVLANTag) false
+
+set testConf(firstInnerVlanID) {min_vlan_id}
+
+
+set testConf(incrInnerVlanIdInterPort) no
+
+#
+# NOTE: If the DUT strips VLAN tags, the minimum
+# frame size on Ethernet should be set to 68.
+#
+set testConf(enable802dot1qTag) true
+
+learn config -snoopConfig false
+
+set testConf(firstVlanID) {min_vlan_id}
+
+
+set testConf(incrementVlanID) yes
+
+set testConf(vlansPerPort) {slaves_nb}
+
+
+set testConf(enableISLtag) false
+
+set tputMultipleVlans 1
+
+set testConf(ethernetType) "noType"
+
+advancedTestParameter config -l2DataProtocol native
+
+advancedTestParameter config -l2DAIpAddress "127.0.0.1"
+
+
+#
+# Enable Random MAC addresses asignment.
+#
+set testConf(enableRandomMAC) false
+
+#
+# Enable using same random MAC address between runs.
+#
+set testConf(enableKeepRandomMACAddress) false
+
+set testConf(randomMACSeedValue) 12345
+
+
+set testConf(firstSrcIpAddress) 198.18.1.100
+
+
+set testConf(firstDestDUTIpAddress) 198.18.1.101
+
+
+set testConf(firstMaskWidth) 24
+
+
+
+set testConf(firstSrcIpV6Address) 2000:0:0:1::1:100
+
+
+set testConf(firstDestDUTIpV6Address) 2000:0:0:1::1:1
+
+
+set testConf(incrIpV6AddressField) "siteLevelAggregationId"
+
+
+
+set testConf(firstSrcIpxSocket) "0x4011"
+
+
+set testConf(firstSrcIpAddress) 198.18.1.100
+
+
+set testConf(firstDestDUTIpAddress) 198.18.1.101
+
+
+set testConf(firstMaskWidth) 24
+
+
+set testConf(firstSrcIpV6Address) 2000:0:0:1::1:100
+
+
+set testConf(firstDestDUTIpV6Address) 2000:0:0:1::1:1
+
+
+set testConf(incrIpV6AddressField) "siteLevelAggregationId"
+
+
+set testConf(incrDUTaddress) no
+
+#
+set testConf(protocolOverIp) "udp"
+
+
+set testConf(protocolSourcePort) 7
+
+
+set testConf(protocolDestinationPort) 7
+
+
+#
+set testConf(incrementSourcePort) false
+
+#
+set testConf(incrementSourceAddressPort) false
+
+#
+set testConf(incrementDestinationPort) false
+
+#
+set testConf(incrementDestinationAddressPort) false
+
+set testConf(autoMapGeneration) "no"
+
+
+set testConf(mapDirection) "unidirectional"
+
+
+set testConf(mapFromPort) {1 3 1}
+
+
+set testConf(mapToPort) {1 3 2}
+
+
+set testConf(mapTransmitPort) {1 1 1}
+
+
+set testConf(mapReceivePort) {1 1 1}
+
+
+map config -echo false
+
+tput config -rateSelect "percentMaxRate"
+
+
+
+
+#
+# Enter the percentage of Maximum Frame rate to use for running the test.
+#
+tput config -percentMaxRate 35
+
+
+#
+# Enter the percentage of Minimum Frame rate to use for running the test.
+#
+tput config -percentMinRate 0.1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+set testConf(passFailEnable) 0
+
+
+
+
+set testConf(passFailMode) "line"
+
+set testConf(passFailLineValue) 100
+
+
+set testConf(passFailLineType) "average"
+
+set testConf(passFailDataValue) 100
+
+
+set testConf(passFailDataUnit) "Mbps"
+
+
+set testConf(passFailDataType) "average"
+
+user config -productname ""
+
+
+user config -version ""
+
+
+user config -serial# ""
+
+
+#
+# Indicates the username to show in reports
+#
+user config -username ""
+
+
+user config -comments ""
+
+
+results config -fileBackup true
+
+results config -flatDir false
+
+set testConf(uniqueResultsName) false
+
+set testConf(userResultDir) true
+#
+# The results will be printed in test suite and test sub-directories
+# under this parent results directory.
+#
+results config -directory ""
+
+
+#
+# Indicates the username for use in port ownership
+#
+set testConf(loginId) "provence"
+
+
+#
+# Real time graphs configuration
+#
+set statViewer(config) "<?xml version=\"1.0\"?><StatViewer version=\"3.15.11.25\"><SessionList Key=\"aptixia.sv.persistence.SessionListWrapper\"><CONTENT /><PRESENTATION /><COMBINED><Sessions><Session Key=\"aptixia.sv.persistence.SessionWrapper\"><CONTENT><Frequency value=\"1\" /><CsvLogging value=\"True\" /><CsvLoggingHiddenViews value=\"False\" /><EnableDataStore value=\"True\" /><PersistenceType value=\"4\" /><EnableDataStoreHiddenViews value=\"False\" /><CsvOutputFrequencyMultiple value=\"1\" /><OutputDSFrequencyMultiple value=\"1\" /><MaxStatsPerCustomGraph value=\"16\" /><CsvFilePath /><Alerts><Alerts xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" /></Alerts><DefaultViews><DefaultViews /></DefaultViews></CONTENT><PRESENTATION /><COMBINED><Views /><LinkedViews /></COMBINED></Session></Sessions></COMBINED></SessionList><Group name=\"Views\" version=\"1\"><Group name=\"Defaults\" order=\"0\" accessLevel=\"1\"><Group name=\"Ports\" order=\"0\" accessLevel=\"1\" /></Group></Group><Snmp Key=\"aptixia.sv.persistence.SnmpPersistance\"><CONTENT><SnmpConfiguration value=\"&lt;snmpconf&gt;&lt;snmpvar name=&quot;Snmp&quot; active=&quot;true&quot; description=&quot;&quot;&gt;&lt;children /&gt;&lt;/snmpvar&gt;&lt;snmpdev&gt;&lt;children /&gt;&lt;/snmpdev&gt;&lt;/snmpconf&gt;\" /></CONTENT><PRESENTATION /><COMBINED /></Snmp></StatViewer>"
+
+
+#
+# Enable/Disable DUT Configuration
+#
+set testConf(dutConfEnabled) 0
+
+#
+# Enable/Disable DUT Configuration in Reports
+#
+set testConf(dutConfReportEnabled) 0
+
+#
+# The command executed at the beginning of the test
+#
+set testConf(dutConfTestSetupCmd) ""
+
+
+#
+# The command executed in background.
+#
+set testConf(dutConfTestSetupBackgroundMode) 0
+
+#
+# The arguments passed to the command
+#
+set testConf(dutConfTestSetupArgs) ""
+
+
+#
+# If value is 1, the background command is stopped at cleanup.
+#
+set testConf(dutConfTestSetupStopAtCleanup) 0
+
+#
+# The command executed at the end of the test
+#
+set testConf(dutConfTestCleanupCmd) ""
+
+
+#
+# The arguments passed to the command
+#
+set testConf(dutConfTestCleanupArgs) ""
+
+
+#
+# The command executed at the beginning of the trial
+#
+set testConf(dutConfTrialSetupCmd) ""
+
+
+#
+# The command executed in background.
+#
+set testConf(dutConfTrialSetupBackgroundMode) 0
+
+#
+# The arguments passed to the command
+#
+set testConf(dutConfTrialSetupArgs) ""
+
+
+#
+# If value is 1, the background command is stopped at cleanup.
+#
+set testConf(dutConfTrialSetupStopAtCleanup) 0
+
+#
+# The command executed at the end of the trial
+#
+set testConf(dutConfTrialCleanupCmd) ""
+
+
+#
+# The arguments passed to the command
+#
+set testConf(dutConfTrialCleanupArgs) ""
+
+
+#
+# The command executed at the beginning of the trial
+#
+set testConf(dutConfFramesizeSetupCmd) ""
+
+
+#
+# The command executed in background.
+#
+set testConf(dutConfFramesizeSetupBackgroundMode) 0
+
+#
+# The arguments passed to the command
+#
+set testConf(dutConfFramesizeSetupArgs) ""
+
+
+#
+# If value is 1, the background command is stopped at cleanup.
+#
+set testConf(dutConfFramesizeSetupStopAtCleanup) 0
+
+#
+# The command executed at the end of the trial
+#
+set testConf(dutConfFramesizeCleanupCmd) ""
+
+
+#
+# The arguments passed to the command
+#
+set testConf(dutConfFramesizeCleanupArgs) ""
+
+
+#
+# The command executed at the beginning of the trial
+#
+set testConf(dutConfIterationSetupCmd) ""
+
+
+#
+# The command executed in background.
+#
+set testConf(dutConfIterationSetupBackgroundMode) 0
+
+#
+# The arguments passed to the command
+#
+set testConf(dutConfIterationSetupArgs) ""
+
+
+#
+# If value is 1, the background command is stopped at cleanup.
+#
+set testConf(dutConfIterationSetupStopAtCleanup) 0
+
+#
+# The command executed at the end of the trial
+#
+set testConf(dutConfIterationCleanupCmd) ""
+
+
+#
+# The arguments passed to the command
+#
+set testConf(dutConfIterationCleanupArgs) ""
+
+
+#
+# The first arguments passed to each command
+#
+set testConf(dutConfGlobalArgs) ""
+
+
+# Enable/Disable DUT Polling
+set testConf(dutConfPollingEnabled) 0
+
+# Enable/Disable DUT Polling Reporting
+set testConf(dutConfReportPollingEnabled) 0
+
+# User authentification script
+set testConf(authenticationEnableScript) ""
+
+
+# User polling script
+set testConf(pollingScript) ""
+
+
+# DUT polling interval in seconds
+set testConf(dutPollingInterval) 10
+
+
+
+###################################################
+# Begin Config Trailer
+###################################################
+configTrailer::TestStart
+exit
+###################################################
+# End Config Trailer
+###################################################