X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/fdc9a9308c646d23ec50073833f141ceebf78613..dd2e6f664a3e59e02349901a04e182bda6286f6f:/services/api/test/functional/arvados/v1/nodes_controller_test.rb diff --git a/services/api/test/functional/arvados/v1/nodes_controller_test.rb b/services/api/test/functional/arvados/v1/nodes_controller_test.rb index 428c663a77..dc8b3acdd7 100644 --- a/services/api/test/functional/arvados/v1/nodes_controller_test.rb +++ b/services/api/test/functional/arvados/v1/nodes_controller_test.rb @@ -1,3 +1,7 @@ +# Copyright (C) The Arvados Authors. All rights reserved. +# +# SPDX-License-Identifier: AGPL-3.0 + require 'test_helper' class Arvados::V1::NodesControllerTest < ActionController::TestCase @@ -17,8 +21,8 @@ class Arvados::V1::NodesControllerTest < ActionController::TestCase authorize_with :inactive get :index assert_response :success - node_items = JSON.parse(@response.body)['items'] - assert_equal 0, node_items.size + assert_equal 0, json_response['items'].size + assert_equal 0, json_response['items_available'] end # active user sees non-secret attributes of up and recently-up nodes @@ -26,8 +30,9 @@ class Arvados::V1::NodesControllerTest < ActionController::TestCase authorize_with :active get :index assert_response :success - node_items = JSON.parse(@response.body)['items'] - assert_not_equal 0, node_items.size + assert_operator 0, :<, json_response['items_available'] + node_items = json_response['items'] + assert_operator 0, :<, node_items.size found_busy_node = false node_items.each do |node| assert_nil node['info'].andand['ping_secret'] @@ -73,6 +78,48 @@ class Arvados::V1::NodesControllerTest < ActionController::TestCase assert_not_nil json_response['uuid'] assert_not_nil json_response['info'].is_a? Hash assert_not_nil json_response['info']['ping_secret'] + assert_nil json_response['slot_number'] + assert_nil json_response['hostname'] + end + + test "create node and assign slot" do + authorize_with :admin + post :create, {node: {}, assign_slot: true} + assert_response :success + assert_not_nil json_response['uuid'] + assert_not_nil json_response['info'].is_a? Hash + assert_not_nil json_response['info']['ping_secret'] + assert_operator 0, :<, json_response['slot_number'] + n = json_response['slot_number'] + assert_equal "compute#{n}", json_response['hostname'] + + node = Node.where(uuid: json_response['uuid']).first + assert_equal n, node.slot_number + assert_equal "compute#{n}", node.hostname + end + + test "update node and assign slot" do + authorize_with :admin + node = nodes(:new_with_no_hostname) + post :update, {id: node.uuid, node: {}, assign_slot: true} + assert_response :success + assert_operator 0, :<, json_response['slot_number'] + n = json_response['slot_number'] + assert_equal "compute#{n}", json_response['hostname'] + + node.reload + assert_equal n, node.slot_number + assert_equal "compute#{n}", node.hostname + end + + test "update node and assign slot, don't clobber hostname" do + authorize_with :admin + node = nodes(:new_with_custom_hostname) + post :update, {id: node.uuid, node: {}, assign_slot: true} + assert_response :success + assert_operator 0, :<, json_response['slot_number'] + n = json_response['slot_number'] + assert_equal "custom1", json_response['hostname'] end test "ping adds node stats to info" do @@ -113,6 +160,7 @@ class Arvados::V1::NodesControllerTest < ActionController::TestCase authorize_with user get :index, {select: ['domain']} assert_response :success + assert_operator 0, :<, json_response['items_available'] end end