diff --git a/lib/qa/authorities/linked_data/find_term.rb b/lib/qa/authorities/linked_data/find_term.rb index 5f844e03..c053febb 100644 --- a/lib/qa/authorities/linked_data/find_term.rb +++ b/lib/qa/authorities/linked_data/find_term.rb @@ -15,8 +15,8 @@ def initialize(term_config) @term_config = term_config end - attr_reader :term_config, :full_graph, :filtered_graph, :language, :id, :uri, :access_time_s, :normalize_time_s - private :full_graph, :filtered_graph, :language, :id, :uri, :access_time_s, :normalize_time_s + attr_reader :term_config, :full_graph, :filtered_graph, :language, :id, :uri, :access_time_s, :normalize_time_s, :fetched_size, :normalized_size + private :full_graph, :filtered_graph, :language, :id, :uri, :access_time_s, :normalize_time_s, :fetched_size, :normalized_size delegate :term_subauthority?, :prefixes, :authority_name, to: :term_config @@ -60,6 +60,7 @@ def load_graph(url:) access_end_dt = Time.now.utc @access_time_s = access_end_dt - access_start_dt + @fetched_size = full_graph.triples.to_s.size if performance_data? Rails.logger.info("Time to receive data from authority: #{access_time_s}s") end @@ -70,8 +71,9 @@ def normalize_results json = perform_normalization @normalize_time_s = normalize_end_dt - normalize_start_dt + @normalized_size = json.to_s.size if performance_data? Rails.logger.info("Time to convert data to json: #{normalize_time_s}s") - json = append_performance_data(json) if performance_data? && !jsonld? + json = append_performance_data(json) if performance_data? json end @@ -178,7 +180,7 @@ def jsonld? end def performance_data? - @performance_data == true + @performance_data == true && !jsonld? end def preds_for_term @@ -254,6 +256,10 @@ def append_performance_data(results) performance = { predicate_count: pred_count, fetch_time_s: access_time_s, normalization_time_s: normalize_time_s, + fetched_bytes: fetched_size, + normalized_bytes: normalized_size, + fetch_bytes_per_s: fetched_size / access_time_s, + normalization_bytes_per_s: normalized_size / normalize_time_s, total_time_s: (access_time_s + normalize_time_s) } { performance: performance, results: results } end diff --git a/lib/qa/authorities/linked_data/search_query.rb b/lib/qa/authorities/linked_data/search_query.rb index 096792d9..7f501e0d 100644 --- a/lib/qa/authorities/linked_data/search_query.rb +++ b/lib/qa/authorities/linked_data/search_query.rb @@ -15,8 +15,8 @@ def initialize(search_config) @search_config = search_config end - attr_reader :search_config, :full_graph, :filtered_graph, :language, :access_time_s, :normalize_time_s - private :full_graph, :filtered_graph, :language, :access_time_s, :normalize_time_s + attr_reader :search_config, :full_graph, :filtered_graph, :language, :access_time_s, :normalize_time_s, :fetched_size, :normalized_size + private :full_graph, :filtered_graph, :language, :access_time_s, :normalize_time_s, :fetched_size, :normalized_size delegate :subauthority?, :supports_sort?, :prefixes, :authority_name, to: :search_config @@ -52,6 +52,7 @@ def load_graph(url:) access_end_dt = Time.now.utc @access_time_s = access_end_dt - access_start_dt + @fetched_size = full_graph.triples.to_s.size if performance_data? Rails.logger.info("Time to receive data from authority: #{access_time_s}s") end @@ -64,6 +65,7 @@ def normalize_results normalize_end_dt = Time.now.utc @normalize_time_s = normalize_end_dt - normalize_start_dt + @normalized_size = json.to_s.size if performance_data? Rails.logger.info("Time to convert data to json: #{normalize_time_s}s") json = append_performance_data(json) if performance_data? json @@ -171,6 +173,10 @@ def append_performance_data(results) performance = { result_count: results.size, fetch_time_s: access_time_s, normalization_time_s: normalize_time_s, + fetched_bytes: fetched_size, + normalized_bytes: normalized_size, + fetch_bytes_per_s: fetched_size / access_time_s, + normalization_bytes_per_s: normalized_size / normalize_time_s, total_time_s: (access_time_s + normalize_time_s) } { performance: performance, results: results } end diff --git a/spec/controllers/linked_data_terms_controller_spec.rb b/spec/controllers/linked_data_terms_controller_spec.rb index 8d76869a..b94eef1a 100644 --- a/spec/controllers/linked_data_terms_controller_spec.rb +++ b/spec/controllers/linked_data_terms_controller_spec.rb @@ -307,7 +307,9 @@ results = JSON.parse(response.body) expect(results).to be_kind_of Hash expect(results.keys).to match_array ['performance', 'results'] - expect(results['performance'].keys).to match_array ['result_count', 'fetch_time_s', 'normalization_time_s', 'total_time_s'] + expect(results['performance'].keys).to match_array ['result_count', 'fetch_time_s', 'normalization_time_s', + 'fetched_bytes', 'normalized_bytes', 'fetch_bytes_per_s', + 'normalization_bytes_per_s', 'total_time_s'] expect(results['performance']['total_time_s']).to eq results['performance']['fetch_time_s'] + results['performance']['normalization_time_s'] expect(results['performance']['result_count']).to eq 3 expect(results['results'].count).to eq 3 @@ -475,7 +477,9 @@ results = JSON.parse(response.body) expect(results).to be_kind_of Hash expect(results.keys).to match_array ['performance', 'results'] - expect(results['performance'].keys).to match_array ['predicate_count', 'fetch_time_s', 'normalization_time_s', 'total_time_s'] + expect(results['performance'].keys).to match_array ['predicate_count', 'fetch_time_s', 'normalization_time_s', + 'fetched_bytes', 'normalized_bytes', 'fetch_bytes_per_s', + 'normalization_bytes_per_s', 'total_time_s'] expect(results['performance']['total_time_s']).to eq results['performance']['fetch_time_s'] + results['performance']['normalization_time_s'] expect(results['performance']['predicate_count']).to eq 15 expect(results['results']['predicates'].count).to eq 15 @@ -631,7 +635,9 @@ results = JSON.parse(response.body) expect(results).to be_kind_of Hash expect(results.keys).to match_array ['performance', 'results'] - expect(results['performance'].keys).to match_array ['predicate_count', 'fetch_time_s', 'normalization_time_s', 'total_time_s'] + expect(results['performance'].keys).to match_array ['predicate_count', 'fetch_time_s', 'normalization_time_s', + 'fetched_bytes', 'normalized_bytes', 'fetch_bytes_per_s', + 'normalization_bytes_per_s', 'total_time_s'] expect(results['performance']['total_time_s']).to eq results['performance']['fetch_time_s'] + results['performance']['normalization_time_s'] expect(results['performance']['predicate_count']).to eq 7 expect(results['results']['predicates'].count).to eq 7 diff --git a/spec/lib/authorities/linked_data/find_term_spec.rb b/spec/lib/authorities/linked_data/find_term_spec.rb index f96ae0bb..fc31c255 100644 --- a/spec/lib/authorities/linked_data/find_term_spec.rb +++ b/spec/lib/authorities/linked_data/find_term_spec.rb @@ -28,7 +28,9 @@ end it 'includes performance in return hash' do expect(results.keys).to match_array [:performance, :results] - expect(results[:performance].keys).to match_array [:predicate_count, :fetch_time_s, :normalization_time_s, :total_time_s] + expect(results[:performance].keys).to match_array [:predicate_count, :fetch_time_s, :normalization_time_s, + :fetched_bytes, :normalized_bytes, :fetch_bytes_per_s, + :normalization_bytes_per_s, :total_time_s] expect(results[:performance][:predicate_count]).to eq 7 expect(results[:performance][:total_time_s]).to eq results[:performance][:fetch_time_s] + results[:performance][:normalization_time_s] end @@ -218,9 +220,13 @@ end context 'when alternate authority name is used to access loc' do - let(:results) { lod_loc.find('sh 85118553', subauth: 'subjects') } + before do + stub_request(:get, 'http://id.loc.gov/authorities/subjects/sh85118553') + .to_return(status: 200, body: webmock_fixture('lod_loc_term_found.rdf.xml'), headers: { 'Content-Type' => 'application/rdf+xml' }) + allow(lod_loc.term_config).to receive(:authority_name).and_return('ALT_LOC_AUTHORITY') + end - before { allow(lod_loc.term_config).to receive(:authority_name).and_return('ALT_LOC_AUTHORITY') } + let(:results) { lod_loc.find('sh 85118553', subauth: 'subjects') } it 'does special processing to remove blank from id' do expect(results[:uri]).to eq 'http://id.loc.gov/authorities/subjects/sh85118553' diff --git a/spec/lib/authorities/linked_data/search_query_spec.rb b/spec/lib/authorities/linked_data/search_query_spec.rb index 3ba63662..cec2e710 100644 --- a/spec/lib/authorities/linked_data/search_query_spec.rb +++ b/spec/lib/authorities/linked_data/search_query_spec.rb @@ -16,7 +16,9 @@ it 'includes performance in return hash' do expect(results).to be_kind_of Hash expect(results.keys).to match_array [:performance, :results] - expect(results[:performance].keys).to match_array [:result_count, :fetch_time_s, :normalization_time_s, :total_time_s] + expect(results[:performance].keys).to match_array [:result_count, :fetch_time_s, :normalization_time_s, + :fetched_bytes, :normalized_bytes, :fetch_bytes_per_s, + :normalization_bytes_per_s, :total_time_s] expect(results[:performance][:total_time_s]).to eq results[:performance][:fetch_time_s] + results[:performance][:normalization_time_s] expect(results[:performance][:result_count]).to eq 3 expect(results[:results].count).to eq 3