orientdb_client 0.0.5 → 0.0.6
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/CHANGELOG.md +6 -0
- data/README.md +5 -2
- data/lib/orientdb_client/version.rb +1 -1
- data/lib/orientdb_client.rb +9 -3
- data/spec/orientdb_client_spec.rb +47 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 03bbffcac337c8b24baa097e7f55f3d4350cea44
|
4
|
+
data.tar.gz: a2074ddd31091c8aaae2af2fb49f2d94633d370d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a4191890669fe5a9fe9ff44e986b355adaf9a4c7182783e9d47df3ce9f4ec64d2f4f91a8050544b5509b16d4166a92a9c1cbf7a46af6fbc13103d3a2a03cce8c
|
7
|
+
data.tar.gz: 896fc166ca48be6faef0729eb14cd4fda54a894460d3270b78389e0a480dcd129b6d06b3c00cb3216c42449b671599aeeef8920bf973eafa06b4d5c5308b29f7
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,12 @@
|
|
2
2
|
|
3
3
|
## Master
|
4
4
|
|
5
|
+
## 0.0.6
|
6
|
+
|
7
|
+
* Correctly handle error message for database creation conflict exceptions.
|
8
|
+
* Ensure `NegativeArraySizeException`s are correctly converted to `NotFoundError`s across all supported versions of Orientdb.
|
9
|
+
* Ensure "database already exists" errors messages are consistent across all supported versions of Orientdb.
|
10
|
+
|
5
11
|
## 0.0.5
|
6
12
|
|
7
13
|
* Differentiate between Typhoeus adapter timeouts and connection failures.
|
data/README.md
CHANGED
@@ -2,7 +2,8 @@
|
|
2
2
|
|
3
3
|
[](https://travis-ci.org/lukeasrodgers/orientdb_client)
|
4
4
|
|
5
|
-
|
5
|
+
While not yet at version 1.0, the client has been in use in a production environment for several months, working fine, with some minor improvements and bugfixes along the way.
|
6
|
+
|
6
7
|
Inspired by https://github.com/veny/orientdb4r
|
7
8
|
|
8
9
|
Goals:
|
@@ -12,11 +13,13 @@ Goals:
|
|
12
13
|
|
13
14
|
Tested on:
|
14
15
|
* 2.1.5
|
16
|
+
* 2.1.4
|
15
17
|
* 2.0.6 - specs may fail due to Orientdb bug with deleting database (https://github.com/orientechnologies/orientdb/issues/3746)
|
16
18
|
* 2.0.4
|
17
19
|
* 2.0.2
|
18
20
|
|
19
|
-
CI tests with Travis currently only run non-integration tests (i.e. they don't actually hit an Orientdb server).
|
21
|
+
CI tests with Travis currently only run non-integration tests (i.e. they don't actually hit an Orientdb server). This means that the "tested on versions x.x.x" is *manual testing*.
|
22
|
+
That is to say, this testing process is error-prone, so you should run the tests yourself with whatever version of Orientdb you are using.
|
20
23
|
|
21
24
|
## Installation
|
22
25
|
|
data/lib/orientdb_client.rb
CHANGED
@@ -344,14 +344,20 @@ module OrientdbClient
|
|
344
344
|
when /ODatabaseException/
|
345
345
|
if odb_error_message.match(/already exists/)
|
346
346
|
klass = ConflictError
|
347
|
+
message = 'Database already exists'
|
347
348
|
else
|
348
349
|
klass = ServerError
|
350
|
+
message = "#{odb_error_class}: #{odb_error_message}"
|
349
351
|
end
|
350
|
-
raise klass.new(
|
352
|
+
raise klass.new(message, code, body)
|
351
353
|
when /ODistributedRecordLockedException/
|
352
354
|
raise DistributedRecordLockedException.new("#{odb_error_class}: #{odb_error_message}", code, body)
|
353
355
|
when /OSerializationException/
|
354
356
|
raise SerializationException.new("#{odb_error_class}: #{odb_error_message}", code, body)
|
357
|
+
when /NegativeArraySizeException/
|
358
|
+
raise NegativeArraySizeException.new("#{odb_error_class}: #{odb_error_message}", code, body)
|
359
|
+
else
|
360
|
+
raise ServerError.new("Unparseable Orientdb server error", code, body)
|
355
361
|
end
|
356
362
|
end
|
357
363
|
|
@@ -365,7 +371,7 @@ module OrientdbClient
|
|
365
371
|
code = response.response_code
|
366
372
|
body = response.body
|
367
373
|
if (body.match(/Database.*already exists/))
|
368
|
-
raise ConflictError.new(
|
374
|
+
raise ConflictError.new('Database already exists', code, body)
|
369
375
|
elsif (body.match(/NegativeArraySizeException/))
|
370
376
|
raise NegativeArraySizeException.new(e.message, code, body)
|
371
377
|
else
|
@@ -379,7 +385,7 @@ module OrientdbClient
|
|
379
385
|
[matches[1], matches[2]]
|
380
386
|
rescue => e
|
381
387
|
if (response.body.match(/Database.*already exists/))
|
382
|
-
raise ConflictError.new(
|
388
|
+
raise ConflictError.new('Database already exists', response.response_code, response.body)
|
383
389
|
elsif (response.body.match(/NegativeArraySizeException/))
|
384
390
|
raise NegativeArraySizeException.new(e.message, response.response_code, response.body)
|
385
391
|
else
|
@@ -97,13 +97,23 @@ RSpec.describe OrientdbClient do
|
|
97
97
|
end
|
98
98
|
|
99
99
|
context 'with existing database' do
|
100
|
-
it '
|
100
|
+
it 'raises a ConflictError' do
|
101
101
|
client.create_database(temp_db_name, 'plocal', 'document')
|
102
102
|
expect(client.database_exists?(temp_db_name)).to be true
|
103
103
|
expect do
|
104
104
|
client.create_database(temp_db_name, 'plocal', 'document')
|
105
105
|
end.to raise_exception(OrientdbClient::ConflictError)
|
106
106
|
end
|
107
|
+
|
108
|
+
it 'extracts the right conflict error message' do
|
109
|
+
client.create_database(temp_db_name, 'plocal', 'document')
|
110
|
+
expect(client.database_exists?(temp_db_name)).to be true
|
111
|
+
begin
|
112
|
+
client.create_database(temp_db_name, 'plocal', 'document')
|
113
|
+
rescue => e
|
114
|
+
expect(e.message).to eql('Database already exists')
|
115
|
+
end
|
116
|
+
end
|
107
117
|
end
|
108
118
|
|
109
119
|
context 'with invalid storage type' do
|
@@ -651,6 +661,42 @@ RSpec.describe OrientdbClient do
|
|
651
661
|
end
|
652
662
|
end
|
653
663
|
|
664
|
+
describe 'handling `NegativeArraySizeException`s' do
|
665
|
+
before do
|
666
|
+
client.connect(username: username, password: password, db: db)
|
667
|
+
if client.has_class?('Person')
|
668
|
+
client.command('delete vertex Person')
|
669
|
+
client.drop_class('Person')
|
670
|
+
end
|
671
|
+
if client.has_class?('Friend')
|
672
|
+
client.drop_class('Friend')
|
673
|
+
end
|
674
|
+
end
|
675
|
+
|
676
|
+
after do
|
677
|
+
client.command('delete vertex Person')
|
678
|
+
client.drop_class('Person')
|
679
|
+
client.drop_class('Friend')
|
680
|
+
end
|
681
|
+
|
682
|
+
it 'translates this exception into a NotFoundError' do
|
683
|
+
client.create_class('Person', extends: 'V')
|
684
|
+
client.create_class('Friend', extends: 'E')
|
685
|
+
client.command('create property Friend.out link Person')
|
686
|
+
client.command('create property Friend.in link Person')
|
687
|
+
client.command('create index FollowIdx on Friend (out,in) unique')
|
688
|
+
client.command('create property Person.user_id integer')
|
689
|
+
jim = client.command('insert into Person CONTENT ' + Oj.dump({'name' => 'jim', 'user_id' => 1}))
|
690
|
+
bob = client.command('insert into Person CONTENT ' + Oj.dump({'name' => 'bob', 'user_id' => 2}))
|
691
|
+
jim_rid = jim['result'][0]['@rid']
|
692
|
+
bob_rid = bob['result'][0]['@rid']
|
693
|
+
client.command("create edge Friend from #{jim_rid} to #{bob_rid}")
|
694
|
+
expect do
|
695
|
+
client.query("select in('Friend')[660-669].user_id,user_id from Person where user_id in [2]", {:limit=>1})
|
696
|
+
end.to raise_exception(OrientdbClient::NotFoundError)
|
697
|
+
end
|
698
|
+
end
|
699
|
+
|
654
700
|
describe 'duplicate record creation violating index constraint' do
|
655
701
|
before do
|
656
702
|
client.connect(username: username, password: password, db: db)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: orientdb_client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Luke Rodgers
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-01-
|
11
|
+
date: 2016-01-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: typhoeus
|