diff --git a/ee/app/models/search/zoekt/node.rb b/ee/app/models/search/zoekt/node.rb index d9d214735b501ded5abccfefaa2d5679070e7ead..f75d3ee9b0f9a05249da8480a40f96f4de030b1b 100644 --- a/ee/app/models/search/zoekt/node.rb +++ b/ee/app/models/search/zoekt/node.rb @@ -31,7 +31,7 @@ def self.find_or_initialize_by_task_request(params) # Note: if zoekt node makes task_request with a different `node.url`, # we will respect that and make change here. s.index_base_url = params.fetch("node.url") - s.search_base_url = params.fetch("node.url") + s.search_base_url = params['node.search_url'] || params.fetch("node.url") s.last_seen_at = Time.zone.now s.used_bytes = params.fetch("disk.used") diff --git a/ee/spec/models/search/zoekt/node_spec.rb b/ee/spec/models/search/zoekt/node_spec.rb index fb2b38f0754d7c2f5830ad1cd4cdb26d48f48f2c..c27499759b2a55ca8dfc0d1289943507f7ace56d 100644 --- a/ee/spec/models/search/zoekt/node_spec.rb +++ b/ee/spec/models/search/zoekt/node_spec.rb @@ -31,11 +31,11 @@ end describe '.find_or_initialize_by_task_request', :freeze_time do - let(:params) do + let(:base_params) do { 'uuid' => '3869fe21-36d1-4612-9676-0b783ef2dcd7', 'node.name' => 'm1.local', - 'node.url' => 'http://localhost:6090', + 'node.url' => 'http://localhost:6080', 'disk.all' => 994662584320, 'disk.used' => 532673712128, 'disk.free' => 461988872192 @@ -44,38 +44,52 @@ subject(:tasked_node) { described_class.find_or_initialize_by_task_request(params) } - context 'when node does not exist for given UUID' do - it 'returns a new record with correct attributes' do + context 'when node.search_url is unset' do + let(:params) { base_params } + + it 'returns a new record with correct base_urls' do expect(tasked_node).not_to be_persisted expect(tasked_node.index_base_url).to eq(params['node.url']) expect(tasked_node.search_base_url).to eq(params['node.url']) - expect(tasked_node.uuid).to eq(params['uuid']) - expect(tasked_node.last_seen_at).to eq(Time.zone.now) - expect(tasked_node.used_bytes).to eq(params['disk.used']) - expect(tasked_node.total_bytes).to eq(params['disk.all']) - expect(tasked_node.metadata['name']).to eq(params['node.name']) end end - context 'when node already exists for given UUID' do - it 'returns existing node and updates correct attributes' do - node.update!(uuid: params['uuid']) + context 'when node.search_url is set' do + let(:params) { base_params.merge('node.search_url' => 'http://localhost:6090') } - expect(tasked_node).to be_persisted - expect(tasked_node.id).to eq(node.id) - expect(tasked_node.index_base_url).to eq(params['node.url']) - expect(tasked_node.search_base_url).to eq(params['node.url']) - expect(tasked_node.uuid).to eq(params['uuid']) - expect(tasked_node.last_seen_at).to eq(Time.zone.now) - expect(tasked_node.used_bytes).to eq(params['disk.used']) - expect(tasked_node.total_bytes).to eq(params['disk.all']) - expect(tasked_node.metadata['name']).to eq(params['node.name']) + context 'when node does not exist for given UUID' do + it 'returns a new record with correct attributes' do + expect(tasked_node).not_to be_persisted + expect(tasked_node.index_base_url).to eq(params['node.url']) + expect(tasked_node.search_base_url).to eq(params['node.search_url']) + expect(tasked_node.uuid).to eq(params['uuid']) + expect(tasked_node.last_seen_at).to eq(Time.zone.now) + expect(tasked_node.used_bytes).to eq(params['disk.used']) + expect(tasked_node.total_bytes).to eq(params['disk.all']) + expect(tasked_node.metadata['name']).to eq(params['node.name']) + end end - it 'allows creation of another node with the same URL' do - node.update!(index_base_url: params['node.url'], search_base_url: params['node.url']) + context 'when node already exists for given UUID' do + it 'returns existing node and updates correct attributes' do + node.update!(uuid: params['uuid']) + + expect(tasked_node).to be_persisted + expect(tasked_node.id).to eq(node.id) + expect(tasked_node.index_base_url).to eq(params['node.url']) + expect(tasked_node.search_base_url).to eq(params['node.search_url']) + expect(tasked_node.uuid).to eq(params['uuid']) + expect(tasked_node.last_seen_at).to eq(Time.zone.now) + expect(tasked_node.used_bytes).to eq(params['disk.used']) + expect(tasked_node.total_bytes).to eq(params['disk.all']) + expect(tasked_node.metadata['name']).to eq(params['node.name']) + end + + it 'allows creation of another node with the same URL' do + node.update!(index_base_url: params['node.url'], search_base_url: params['node.url']) - expect(tasked_node.save).to eq(true) + expect(tasked_node.save).to eq(true) + end end end end