relaton 1.9.3 → 1.9.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.rubocop.yml +2 -0
- data/docs/README.adoc +1 -0
- data/lib/relaton/db.rb +15 -7
- data/lib/relaton/registry.rb +1 -1
- data/lib/relaton/version.rb +1 -1
- data/lib/relaton/workers_pool.rb +3 -3
- data/relaton.gemspec +2 -0
- data/spec/relaton/db_spec.rb +10 -0
- data/spec/relaton/registry_spec.rb +8 -0
- data/spec/relaton_spec.rb +19 -5
- data/spec/vcr_cassetes/3gpp_tr_00_01u_umts_3_0_0.yml +112 -0
- data/spec/vcr_cassetes/async_fetch.yml +1572 -1619
- data/spec/vcr_cassetes/bsi_bs_en_iso_8848.yml +11 -11
- data/spec/vcr_cassetes/cc_dir_10005_2019.yml +14 -14
- data/spec/vcr_cassetes/cen_en_10160_1999.yml +29 -29
- data/spec/vcr_cassetes/cie_001_1980.yml +7 -7
- data/spec/vcr_cassetes/ecma_6.yml +7 -7
- data/spec/vcr_cassetes/fisp_140.yml +6 -6
- data/spec/vcr_cassetes/gb_t_20223_2006.yml +8 -8
- data/spec/vcr_cassetes/iana_service_names_port_numbers.yml +98 -0
- data/spec/vcr_cassetes/iec_60050_102_2007.yml +28 -28
- data/spec/vcr_cassetes/iec_combined_included.yml +90 -88
- data/spec/vcr_cassetes/ieee_528_2019.yml +14 -14
- data/spec/vcr_cassetes/iho_b_11.yml +7 -7
- data/spec/vcr_cassetes/iso_111111119115_1.yml +2 -2
- data/spec/vcr_cassetes/iso_19115_1.yml +15 -15
- data/spec/vcr_cassetes/iso_19115_1_2.yml +32 -32
- data/spec/vcr_cassetes/iso_19115_all_parts.yml +16 -16
- data/spec/vcr_cassetes/iso_19133_2005.yml +14 -14
- data/spec/vcr_cassetes/iso_cd_14093.yml +15 -15
- data/spec/vcr_cassetes/iso_combined_applied.yml +30 -30
- data/spec/vcr_cassetes/iso_combined_included.yml +32 -32
- data/spec/vcr_cassetes/itu_combined_included.yml +170 -170
- data/spec/vcr_cassetes/ogc_19_025r1.yml +7 -7
- data/spec/vcr_cassetes/omg_ami4ccm_1_0.yml +4 -4
- data/spec/vcr_cassetes/rfc_8341.yml +7 -7
- data/spec/vcr_cassetes/sp_800_38b.yml +6 -6
- data/spec/vcr_cassetes/threads_from_env.yml +448 -0
- data/spec/vcr_cassetes/un_rtade_cefact_2004_32.yml +30 -30
- data/spec/vcr_cassetes/w3c_json_ld11.yml +93 -138
- metadata +33 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: daae758f0751cfb8c4682b4f74c4d67b4046290562d47e84bc7103df5da670d4
|
4
|
+
data.tar.gz: 1348bdfebcf234ac6b29c0ba5e09a357eb3d8885645671932d937a95e2528a91
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 01c4d8fcc1c8a77e4425a87be0f28e5d178b758a1bedb19aaceacde9df7f9f138da4bd1df849d819d6ad2e6675a7e79479168ab9edce7800bd5491e4ee2e123d
|
7
|
+
data.tar.gz: 115ce0d39bf35ae82c973fc2043bc5f07d5b0d87ca5f6f1fc7e36cdc032c4e97c7aea9129d168c2e30f2073713f2d0128fd5d2f8de78eaa5f07344cb949723a4
|
data/.rubocop.yml
CHANGED
data/docs/README.adoc
CHANGED
data/lib/relaton/db.rb
CHANGED
@@ -17,6 +17,7 @@ module Relaton
|
|
17
17
|
@static_db = open_cache_biblio File.expand_path("../relaton/static_cache",
|
18
18
|
__dir__)
|
19
19
|
@queues = {}
|
20
|
+
@semaphore = Mutex.new
|
20
21
|
end
|
21
22
|
|
22
23
|
# Move global or local caches to anothe dirs
|
@@ -104,7 +105,8 @@ module Relaton
|
|
104
105
|
if stdclass
|
105
106
|
unless @queues[stdclass]
|
106
107
|
processor = @registry.processors[stdclass]
|
107
|
-
|
108
|
+
threads = ENV["RELATON_FETCH_PARALLEL"]&.to_i || processor.threads
|
109
|
+
wp = WorkersPool.new(threads) do |args|
|
108
110
|
args[3].call fetch(*args[0..2])
|
109
111
|
rescue RelatonBib::RequestError => e
|
110
112
|
args[3].call e
|
@@ -375,14 +377,20 @@ module Relaton
|
|
375
377
|
return bib_retval(bibentry, stdclass)
|
376
378
|
end
|
377
379
|
|
378
|
-
|
380
|
+
@semaphore.synchronize do
|
381
|
+
db.delete(id) unless db.valid_entry?(id, year)
|
382
|
+
end
|
379
383
|
if altdb
|
380
384
|
return bib_retval(altdb[id], stdclass) if opts[:fetch_db]
|
381
385
|
|
382
|
-
|
383
|
-
|
384
|
-
|
385
|
-
|
386
|
+
@semaphore.synchronize do
|
387
|
+
db.clone_entry id, altdb if altdb.valid_entry? id, year
|
388
|
+
end
|
389
|
+
entry = new_bib_entry(searchcode, year, opts, stdclass, db: db, id: id) unless db[id]
|
390
|
+
@semaphore.synchronize do
|
391
|
+
db[id] ||= entry
|
392
|
+
altdb.clone_entry(id, db) if !altdb.valid_entry?(id, year)
|
393
|
+
end
|
386
394
|
else
|
387
395
|
return bib_retval(db[id], stdclass) if opts[:fetch_db]
|
388
396
|
|
@@ -413,7 +421,7 @@ module Relaton
|
|
413
421
|
if args[:db] && args[:id] &&
|
414
422
|
bib_id && args[:id] !~ %r{#{Regexp.quote("(#{bib_id})")}}
|
415
423
|
bid = std_id(bib.docidentifier.first.id, nil, {}, stdclass).first
|
416
|
-
args[:db][bid] ||= bib_entry bib
|
424
|
+
@semaphore.synchronize { args[:db][bid] ||= bib_entry bib }
|
417
425
|
"redirection #{bid}"
|
418
426
|
else bib_entry bib
|
419
427
|
end
|
data/lib/relaton/registry.rb
CHANGED
@@ -9,7 +9,7 @@ module Relaton
|
|
9
9
|
relaton_gb relaton_iec relaton_ietf relaton_iso relaton_itu relaton_nist
|
10
10
|
relaton_ogc relaton_calconnect relaton_omg relaton_un relaton_w3c
|
11
11
|
relaton_ieee relaton_iho relaton_bipm relaton_ecma relaton_cie relaton_bsi
|
12
|
-
relaton_cen
|
12
|
+
relaton_cen relaton_iana relaton_3gpp
|
13
13
|
].freeze
|
14
14
|
|
15
15
|
include Singleton
|
data/lib/relaton/version.rb
CHANGED
data/lib/relaton/workers_pool.rb
CHANGED
@@ -4,9 +4,9 @@ module Relaton
|
|
4
4
|
# Workers poll.
|
5
5
|
class WorkersPool
|
6
6
|
def initialize(workers = 2, &_block)
|
7
|
-
num_workers = workers < 2 ? 2 : workers
|
8
|
-
@queue = SizedQueue.new(
|
9
|
-
@threads = Array.new
|
7
|
+
# num_workers = workers < 2 ? 2 : workers
|
8
|
+
@queue = SizedQueue.new(workers * 2)
|
9
|
+
@threads = Array.new workers do
|
10
10
|
Thread.new do
|
11
11
|
while item = @queue.pop; yield(item) end
|
12
12
|
end
|
data/relaton.gemspec
CHANGED
@@ -29,6 +29,7 @@ Gem::Specification.new do |spec|
|
|
29
29
|
spec.test_files = `git ls-files -- {spec}/*`.split("\n")
|
30
30
|
spec.required_ruby_version = Gem::Requirement.new(">= 2.5.0")
|
31
31
|
|
32
|
+
spec.add_dependency "relaton-3gpp", "~> 1.9.0"
|
32
33
|
spec.add_dependency "relaton-bipm", "~> 1.9.0"
|
33
34
|
spec.add_dependency "relaton-bsi", "~> 1.9.0"
|
34
35
|
spec.add_dependency "relaton-calconnect", "~> 1.9.0"
|
@@ -36,6 +37,7 @@ Gem::Specification.new do |spec|
|
|
36
37
|
spec.add_dependency "relaton-cie", "~> 1.9.0"
|
37
38
|
spec.add_dependency "relaton-ecma", "~> 1.9.0"
|
38
39
|
spec.add_dependency "relaton-gb", "~> 1.9.0"
|
40
|
+
spec.add_dependency "relaton-iana", "~> 1.9.0"
|
39
41
|
spec.add_dependency "relaton-iec", "~> 1.9.0"
|
40
42
|
spec.add_dependency "relaton-ieee", "~> 1.9.0"
|
41
43
|
spec.add_dependency "relaton-ietf", "~> 1.9.0"
|
data/spec/relaton/db_spec.rb
CHANGED
@@ -184,6 +184,16 @@ RSpec.describe Relaton::Db do
|
|
184
184
|
end
|
185
185
|
expect(result).to be_nil
|
186
186
|
end
|
187
|
+
|
188
|
+
it "use threads number from RELATON_FETCH_PARALLEL" do
|
189
|
+
expect(ENV).to receive(:[]).with("RELATON_FETCH_PARALLEL").and_return(1)
|
190
|
+
allow(ENV).to receive(:[]).and_call_original
|
191
|
+
expect(Relaton::WorkersPool).to receive(:new).with(1).and_call_original
|
192
|
+
VCR.use_cassette "threads_from_env" do
|
193
|
+
db.fetch_async("ITU-T G.993.5") { |r| queue << r }
|
194
|
+
Timeout.timeout(5) { queue.pop }
|
195
|
+
end
|
196
|
+
end
|
187
197
|
end
|
188
198
|
|
189
199
|
context "fetch documents form static cache" do
|
@@ -87,6 +87,14 @@ RSpec.describe Relaton::Registry do
|
|
87
87
|
it "CEN" do
|
88
88
|
expect(Relaton::Registry.instance.by_type("CEN")).to be_instance_of RelatonCen::Processor
|
89
89
|
end
|
90
|
+
|
91
|
+
it "IANA" do
|
92
|
+
expect(Relaton::Registry.instance.by_type("IANA")).to be_instance_of RelatonIana::Processor
|
93
|
+
end
|
94
|
+
|
95
|
+
it "3GPP" do
|
96
|
+
expect(Relaton::Registry.instance.by_type("3GPP")).to be_instance_of Relaton3gpp::Processor
|
97
|
+
end
|
90
98
|
end
|
91
99
|
|
92
100
|
it "find processot by dataset" do
|
data/spec/relaton_spec.rb
CHANGED
@@ -246,13 +246,13 @@ RSpec.describe Relaton::Db do
|
|
246
246
|
end
|
247
247
|
|
248
248
|
it "get W3C reference" do
|
249
|
-
w3c_fr = /\.relaton\/w3c\/bibliography\.yml/
|
250
|
-
expect(File).to receive(:exist?).with(w3c_fr).and_return false
|
251
|
-
expect(File).to receive(:exist?).and_call_original.at_least :once
|
252
|
-
expect(File).to receive(:write).with w3c_fr, kind_of(String), kind_of(Hash)
|
249
|
+
# w3c_fr = /\.relaton\/w3c\/bibliography\.yml/
|
250
|
+
# expect(File).to receive(:exist?).with(w3c_fr).and_return false
|
251
|
+
# expect(File).to receive(:exist?).and_call_original.at_least :once
|
252
|
+
# expect(File).to receive(:write).with w3c_fr, kind_of(String), kind_of(Hash)
|
253
253
|
# expect(File).to receive(:write).and_call_original.at_least :once
|
254
254
|
VCR.use_cassette "w3c_json_ld11" do
|
255
|
-
bib = @db.fetch "W3C
|
255
|
+
bib = @db.fetch "W3C REC-json-ld11-20200716", nil, {}
|
256
256
|
expect(bib).to be_instance_of RelatonW3c::W3cBibliographicItem
|
257
257
|
end
|
258
258
|
end
|
@@ -299,6 +299,20 @@ RSpec.describe Relaton::Db do
|
|
299
299
|
end
|
300
300
|
end
|
301
301
|
|
302
|
+
it "get IANA reference" do
|
303
|
+
VCR.use_cassette "iana_service_names_port_numbers" do
|
304
|
+
bib = @db.fetch "IANA service-names-port-numbers"
|
305
|
+
expect(bib).to be_instance_of RelatonBib::BibliographicItem
|
306
|
+
end
|
307
|
+
end
|
308
|
+
|
309
|
+
it "get 3GPP reference" do
|
310
|
+
VCR.use_cassette "3gpp_tr_00_01u_umts_3_0_0" do
|
311
|
+
bib = @db.fetch "3GPP TR 00.01U:UMTS/3.0.0"
|
312
|
+
expect(bib).to be_instance_of Relaton3gpp::BibliographicItem
|
313
|
+
end
|
314
|
+
end
|
315
|
+
|
302
316
|
context "get combined documents" do
|
303
317
|
context "ISO" do
|
304
318
|
it "included" do
|
@@ -0,0 +1,112 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: https://raw.githubusercontent.com/relaton/relaton-data-3gpp/main/data/TR_00.01U_UMTS_3.0.0.yaml
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
Accept-Encoding:
|
11
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
12
|
+
Accept:
|
13
|
+
- "*/*"
|
14
|
+
User-Agent:
|
15
|
+
- Ruby
|
16
|
+
Host:
|
17
|
+
- raw.githubusercontent.com
|
18
|
+
response:
|
19
|
+
status:
|
20
|
+
code: 200
|
21
|
+
message: OK
|
22
|
+
headers:
|
23
|
+
Connection:
|
24
|
+
- keep-alive
|
25
|
+
Content-Length:
|
26
|
+
- '457'
|
27
|
+
Cache-Control:
|
28
|
+
- max-age=300
|
29
|
+
Content-Security-Policy:
|
30
|
+
- default-src 'none'; style-src 'unsafe-inline'; sandbox
|
31
|
+
Content-Type:
|
32
|
+
- text/plain; charset=utf-8
|
33
|
+
Etag:
|
34
|
+
- W/"5d2f491d96c7faf0fe7b769cefadb3f744327d06d70da694edc1386de14fee7a"
|
35
|
+
Strict-Transport-Security:
|
36
|
+
- max-age=31536000
|
37
|
+
X-Content-Type-Options:
|
38
|
+
- nosniff
|
39
|
+
X-Frame-Options:
|
40
|
+
- deny
|
41
|
+
X-Xss-Protection:
|
42
|
+
- 1; mode=block
|
43
|
+
X-Github-Request-Id:
|
44
|
+
- 45B8:60DB:8C2BC7:933607:61B60A00
|
45
|
+
Accept-Ranges:
|
46
|
+
- bytes
|
47
|
+
Date:
|
48
|
+
- Sun, 12 Dec 2021 14:41:05 GMT
|
49
|
+
Via:
|
50
|
+
- 1.1 varnish
|
51
|
+
X-Served-By:
|
52
|
+
- cache-sof1510064-SOF
|
53
|
+
X-Cache:
|
54
|
+
- MISS
|
55
|
+
X-Cache-Hits:
|
56
|
+
- '0'
|
57
|
+
X-Timer:
|
58
|
+
- S1639320065.893291,VS0,VE196
|
59
|
+
Vary:
|
60
|
+
- Authorization,Accept-Encoding,Origin
|
61
|
+
Access-Control-Allow-Origin:
|
62
|
+
- "*"
|
63
|
+
X-Fastly-Request-Id:
|
64
|
+
- 93f34b3047b3a5fc6b81f1b6684eeb810830e9b0
|
65
|
+
Expires:
|
66
|
+
- Sun, 12 Dec 2021 14:46:05 GMT
|
67
|
+
Source-Age:
|
68
|
+
- '0'
|
69
|
+
body:
|
70
|
+
encoding: ASCII-8BIT
|
71
|
+
string: |
|
72
|
+
---
|
73
|
+
id: 3GPPTR00.01U-UMTS/3.0.0
|
74
|
+
title:
|
75
|
+
type: main
|
76
|
+
content: Work programme for the standardization of Universal Mobile Telecommunications
|
77
|
+
System (UMTS)
|
78
|
+
format: text/plain
|
79
|
+
link:
|
80
|
+
content: http://www.3gpp.org/ftp/Specs/archive/00_series/00.01U/0001U-300.zip
|
81
|
+
type: src
|
82
|
+
type: standard
|
83
|
+
docid:
|
84
|
+
- id: 3GPP TR 00.01U:UMTS/3.0.0
|
85
|
+
type: 3GPP
|
86
|
+
- id: '2261'
|
87
|
+
type: rapporteurId
|
88
|
+
docnumber: TR 00.01U:UMTS/3.0.0
|
89
|
+
language: en
|
90
|
+
script: Latn
|
91
|
+
docstatus:
|
92
|
+
stage:
|
93
|
+
value: withdrawn
|
94
|
+
fetched: '2021-12-09'
|
95
|
+
doctype: TR
|
96
|
+
editorialgroup:
|
97
|
+
name: SMG5
|
98
|
+
type: prime
|
99
|
+
radiotechnology: 3G
|
100
|
+
release:
|
101
|
+
version2g: '3'
|
102
|
+
version3g: '3'
|
103
|
+
defunct: true
|
104
|
+
freeze_meeting: SMG-28
|
105
|
+
freeze_stage1_meeting: SMG-28
|
106
|
+
freeze_stage2_meeting: SMG-28
|
107
|
+
freeze_stage3_meeting: SMG-28
|
108
|
+
close_meeting: SP-28
|
109
|
+
project_end: '1999-02-12'
|
110
|
+
http_version:
|
111
|
+
recorded_at: Sun, 12 Dec 2021 14:41:05 GMT
|
112
|
+
recorded_with: VCR 5.1.0
|