Mentions légales du service

Skip to content
Snippets Groups Projects
Commit 04f94602 authored by Jonathan Pastor's avatar Jonathan Pastor
Browse files

add a spec test for cluster with 'round-robin' cpuset distributions

parent 55f0982f
No related branches found
No related tags found
1 merge request!6WIP: Features/oar gpus
...@@ -1198,7 +1198,7 @@ def extract_clusters_description(clusters, site_name, options, data_hierarchy, s ...@@ -1198,7 +1198,7 @@ def extract_clusters_description(clusters, site_name, options, data_hierarchy, s
gpu_idx += 1 gpu_idx += 1
end end
if core_numbering == 'continuous' if core_numbering == 'contiguous'
cpuset = 0 cpuset = 0
end end
...@@ -1270,7 +1270,7 @@ def extract_clusters_description(clusters, site_name, options, data_hierarchy, s ...@@ -1270,7 +1270,7 @@ def extract_clusters_description(clusters, site_name, options, data_hierarchy, s
############################################ ############################################
# (2-d) Associate a cpuset to each core # (2-d) Associate a cpuset to each core
############################################ ############################################
if core_numbering == 'continuous' if core_numbering == 'contiguous'
row[:cpuset] = cpuset row[:cpuset] = cpuset
else else
# CPUSETs starts at 0 # CPUSETs starts at 0
...@@ -1298,7 +1298,7 @@ def extract_clusters_description(clusters, site_name, options, data_hierarchy, s ...@@ -1298,7 +1298,7 @@ def extract_clusters_description(clusters, site_name, options, data_hierarchy, s
core_idx += 1 core_idx += 1
if core_numbering == 'continuous' if core_numbering == 'contiguous'
cpuset += 1 cpuset += 1
end end
......
...@@ -489,6 +489,219 @@ TXT ...@@ -489,6 +489,219 @@ TXT
end end
end end
context 'interracting with an empty OAR server (round-robin cpusets)' do
before do
prepare_stubs("dump_oar_api_empty_server.json", "load_data_hierarchy_stubbed_data_round_robin_cpusets.json")
end
it 'should generate correctly a table of nodes' do
uri = URI(conf["uri"])
response = Net::HTTP.get(uri)
expect(response).to be_an_instance_of(String)
options = {
:table => true,
:print => false,
:update => false,
:diff => false,
:site => "fakesite",
:clusters => ["clustera"]
}
expected_header = <<-TXT
+---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
| cluster | host | cpu | core | cpuset | gpu | gpudevice | cpumodel | gpumodel |
+---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
TXT
expected_clustera1_desc = <<-TXT
| clustera | clustera-1 | 1 | 1 | 0 | 1 | 0 | Intel Xeon Silver 4110 | GeForce RTX 2080 Ti |
| clustera | clustera-1 | 1 | 2 | 2 | 1 | 0 | Intel Xeon Silver 4110 | GeForce RTX 2080 Ti |
| clustera | clustera-1 | 1 | 3 | 4 | 1 | 0 | Intel Xeon Silver 4110 | GeForce RTX 2080 Ti |
| clustera | clustera-1 | 1 | 4 | 6 | 1 | 0 | Intel Xeon Silver 4110 | GeForce RTX 2080 Ti |
| clustera | clustera-1 | 1 | 5 | 8 | 2 | 1 | Intel Xeon Silver 4110 | GeForce RTX 2080 Ti |
| clustera | clustera-1 | 1 | 6 | 10 | 2 | 1 | Intel Xeon Silver 4110 | GeForce RTX 2080 Ti |
TXT
expected_clustera2_desc = <<-TXT
| clustera | clustera-2 | 4 | 26 | 3 | 7 | 2 | Intel Xeon Silver 4110 | GeForce RTX 2080 Ti |
| clustera | clustera-2 | 4 | 27 | 5 | 7 | 2 | Intel Xeon Silver 4110 | GeForce RTX 2080 Ti |
| clustera | clustera-2 | 4 | 28 | 7 | 7 | 2 | Intel Xeon Silver 4110 | GeForce RTX 2080 Ti |
| clustera | clustera-2 | 4 | 29 | 9 | 8 | 3 | Intel Xeon Silver 4110 | GeForce RTX 2080 Ti |
| clustera | clustera-2 | 4 | 30 | 11 | 8 | 3 | Intel Xeon Silver 4110 | GeForce RTX 2080 Ti |
| clustera | clustera-2 | 4 | 31 | 13 | 8 | 3 | Intel Xeon Silver 4110 | GeForce RTX 2080 Ti |
| clustera | clustera-2 | 4 | 32 | 15 | 8 | 3 | Intel Xeon Silver 4110 | GeForce RTX 2080 Ti |
TXT
generator_output = capture do
generate_oar_properties(options)
end
expect(generator_output[:stdout]).to include(expected_header)
expect(generator_output[:stdout]).to include(expected_clustera1_desc)
expect(generator_output[:stdout]).to include(expected_clustera2_desc)
end
it 'should generate correctly all the commands to update OAR' do
uri = URI(conf["uri"])
response = Net::HTTP.get(uri)
expect(response).to be_an_instance_of(String)
options = {
:table => false,
:print => true,
:update => false,
:diff => false,
:site => "fakesite",
:clusters => ["clustera"]
}
expected_header = <<-TXT
#############################################
# Create OAR properties that were created by 'oar_resources_add'
#############################################
property_exist 'host' || oarproperty -a host --varchar
property_exist 'cpu' || oarproperty -a cpu
property_exist 'core' || oarproperty -a core
property_exist 'gpudevice' || oarproperty -a gpudevice
property_exist 'gpu' || oarproperty -a gpu
property_exist 'gpu_model' || oarproperty -a gpu_model --varchar
TXT
expected_clustera1_cmds = <<-TXT
###################################
# clustera-1.fakesite.grid5000.fr
###################################
oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=1 -p cpuset=0 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=2 -p cpuset=2 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=3 -p cpuset=4 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
TXT
expected_clustera2_cmds = <<-TXT
oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=29 -p cpuset=9 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=30 -p cpuset=11 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=31 -p cpuset=13 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=32 -p cpuset=15 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
TXT
expected_clustera3_cmds = <<-TXT
oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' and type='default'" -p ip='172.16.64.2' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw-fakesite' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p opa='NO' -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
TXT
generator_output = capture do
generate_oar_properties(options)
end
expect(generator_output[:stdout]).to include(expected_header)
expect(generator_output[:stdout]).to include(expected_clustera1_cmds)
expect(generator_output[:stdout]).to include(expected_clustera2_cmds)
expect(generator_output[:stdout]).to include(expected_clustera3_cmds)
end
it 'should generate correctly a diff with the OAR server' do
uri = URI(conf["uri"])
response = Net::HTTP.get(uri)
expect(response).to be_an_instance_of(String)
options = {
:table => false,
:print => false,
:update => false,
:diff => true,
:site => "fakesite",
:clusters => ["clustera"],
:verbose => 2
}
expected_clustera1_diff = <<-TXT
clustera-1: new node !
["+", "cluster", "clustera"]
["+", "cluster_priority", 201906]
["+", "cpuarch", "x86_64"]
["+", "cpucore", 8]
["+", "cpufreq", "2.1"]
["+", "cputype", "Intel Xeon Silver 4110"]
["+", "disk_reservation_count", 0]
["+", "disktype", "SATA"]
["+", "eth_count", 1]
["+", "eth_rate", 10]
["+", "gpu_count", 4]
["+", "ib", "NO"]
["+", "ib_count", 0]
["+", "ib_rate", 0]
["+", "ip", "172.16.64.1"]
["+", "maintenance", "NO"]
["+", "max_walltime", 86400]
["+", "memcore", 8192]
["+", "memcpu", 65536]
["+", "memnode", 131072]
["+", "mic", "NO"]
["+", "myri", "NO"]
["+", "myri_count", 0]
["+", "myri_rate", 0]
["+", "nodemodel", "Dell PowerEdge T640"]
["+", "opa", "NO"]
["+", "opa_count", 0]
["+", "opa_rate", 0]
["+", "production", "YES"]
["+", "switch", "gw-fakesite"]
["+", "virtual", "ivt"]
["+", "wattmeter", "MULTIPLE"]
TXT
expected_clustera2_diff = <<-TXT
clustera-2: new node !
["+", "cluster", "clustera"]
["+", "cluster_priority", 201906]
["+", "cpuarch", "x86_64"]
["+", "cpucore", 8]
["+", "cpufreq", "2.1"]
["+", "cputype", "Intel Xeon Silver 4110"]
["+", "disk_reservation_count", 0]
["+", "disktype", "SATA"]
["+", "eth_count", 1]
["+", "eth_rate", 10]
["+", "gpu_count", 4]
["+", "ib", "NO"]
["+", "ib_count", 0]
["+", "ib_rate", 0]
["+", "ip", "172.16.64.2"]
["+", "maintenance", "NO"]
["+", "max_walltime", 86400]
["+", "memcore", 8192]
["+", "memcpu", 65536]
["+", "memnode", 131072]
["+", "mic", "NO"]
["+", "myri", "NO"]
["+", "myri_count", 0]
["+", "myri_rate", 0]
["+", "nodemodel", "Dell PowerEdge T640"]
["+", "opa", "NO"]
["+", "opa_count", 0]
["+", "opa_rate", 0]
["+", "production", "YES"]
["+", "switch", "gw-fakesite"]
["+", "virtual", "ivt"]
["+", "wattmeter", "MULTIPLE"]
TXT
generator_output = capture do
generate_oar_properties(options)
end
expect(generator_output[:stdout]).to include(expected_clustera1_diff)
expect(generator_output[:stdout]).to include(expected_clustera2_diff)
end
end
context 'interracting with an empty OAR server (cluster with disk)' do context 'interracting with an empty OAR server (cluster with disk)' do
before do before do
prepare_stubs("dump_oar_api_empty_server.json", "load_data_hierarchy_stubbed_data_with_disk.json") prepare_stubs("dump_oar_api_empty_server.json", "load_data_hierarchy_stubbed_data_with_disk.json")
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
"nb_procs": 2, "nb_procs": 2,
"nb_threads": 32, "nb_threads": 32,
"platform_type": "x86_64", "platform_type": "x86_64",
"cpu_core_numbering": "continuous" "cpu_core_numbering": "contiguous"
}, },
"bios": { "bios": {
"release_date": "06/14/2019", "release_date": "06/14/2019",
...@@ -217,7 +217,7 @@ ...@@ -217,7 +217,7 @@
"nb_procs": 2, "nb_procs": 2,
"nb_threads": 32, "nb_threads": 32,
"platform_type": "x86_64", "platform_type": "x86_64",
"cpu_core_numbering": "continuous" "cpu_core_numbering": "contiguous"
}, },
"bios": { "bios": {
"release_date": "06/14/2019", "release_date": "06/14/2019",
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
"nb_procs": 2, "nb_procs": 2,
"nb_threads": 32, "nb_threads": 32,
"platform_type": "x86_64", "platform_type": "x86_64",
"cpu_core_numbering": "continuous" "cpu_core_numbering": "contiguous"
}, },
"bios": { "bios": {
"release_date": "06/14/2019", "release_date": "06/14/2019",
...@@ -231,7 +231,7 @@ ...@@ -231,7 +231,7 @@
"nb_procs": 2, "nb_procs": 2,
"nb_threads": 32, "nb_threads": 32,
"platform_type": "x86_64", "platform_type": "x86_64",
"cpu_core_numbering": "continuous" "cpu_core_numbering": "contiguous"
}, },
"bios": { "bios": {
"release_date": "06/14/2019", "release_date": "06/14/2019",
...@@ -465,7 +465,7 @@ ...@@ -465,7 +465,7 @@
"nb_procs": 2, "nb_procs": 2,
"nb_threads": 32, "nb_threads": 32,
"platform_type": "x86_64", "platform_type": "x86_64",
"cpu_core_numbering": "continuous" "cpu_core_numbering": "contiguous"
}, },
"bios": { "bios": {
"release_date": "06/14/2019", "release_date": "06/14/2019",
...@@ -725,7 +725,7 @@ ...@@ -725,7 +725,7 @@
"nb_procs": 2, "nb_procs": 2,
"nb_threads": 32, "nb_threads": 32,
"platform_type": "x86_64", "platform_type": "x86_64",
"cpu_core_numbering": "continuous" "cpu_core_numbering": "contiguous"
}, },
"bios": { "bios": {
"release_date": "06/14/2019", "release_date": "06/14/2019",
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
"nb_procs": 2, "nb_procs": 2,
"nb_threads": 32, "nb_threads": 32,
"platform_type": "x86_64", "platform_type": "x86_64",
"cpu_core_numbering": "continuous" "cpu_core_numbering": "contiguous"
}, },
"bios": { "bios": {
"release_date": "06/14/2019", "release_date": "06/14/2019",
...@@ -231,7 +231,7 @@ ...@@ -231,7 +231,7 @@
"nb_procs": 2, "nb_procs": 2,
"nb_threads": 32, "nb_threads": 32,
"platform_type": "x86_64", "platform_type": "x86_64",
"cpu_core_numbering": "continuous" "cpu_core_numbering": "contiguous"
}, },
"bios": { "bios": {
"release_date": "06/14/2019", "release_date": "06/14/2019",
...@@ -465,7 +465,7 @@ ...@@ -465,7 +465,7 @@
"nb_procs": 2, "nb_procs": 2,
"nb_threads": 32, "nb_threads": 32,
"platform_type": "x86_64", "platform_type": "x86_64",
"cpu_core_numbering": "continuous" "cpu_core_numbering": "contiguous"
}, },
"bios": { "bios": {
"release_date": "06/14/2019", "release_date": "06/14/2019",
...@@ -687,7 +687,7 @@ ...@@ -687,7 +687,7 @@
"nb_procs": 2, "nb_procs": 2,
"nb_threads": 32, "nb_threads": 32,
"platform_type": "x86_64", "platform_type": "x86_64",
"cpu_core_numbering": "continuous" "cpu_core_numbering": "contiguous"
}, },
"bios": { "bios": {
"release_date": "06/14/2019", "release_date": "06/14/2019",
...@@ -922,7 +922,7 @@ ...@@ -922,7 +922,7 @@
"nb_procs": 2, "nb_procs": 2,
"nb_threads": 32, "nb_threads": 32,
"platform_type": "x86_64", "platform_type": "x86_64",
"cpu_core_numbering": "continuous" "cpu_core_numbering": "contiguous"
}, },
"bios": { "bios": {
"release_date": "06/14/2019", "release_date": "06/14/2019",
...@@ -1182,7 +1182,7 @@ ...@@ -1182,7 +1182,7 @@
"nb_procs": 2, "nb_procs": 2,
"nb_threads": 32, "nb_threads": 32,
"platform_type": "x86_64", "platform_type": "x86_64",
"cpu_core_numbering": "continuous" "cpu_core_numbering": "contiguous"
}, },
"bios": { "bios": {
"release_date": "06/14/2019", "release_date": "06/14/2019",
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment