logstash-input-neo4j 0.9.0-java

Sign up to get free protection for your applications and to get access to all the features.
Files changed (52) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +36 -0
  3. data/Gemfile +2 -0
  4. data/LICENSE +202 -0
  5. data/README.md +4 -0
  6. data/Rakefile +22 -0
  7. data/lib/logstash/inputs/neo4j-client.rb +48 -0
  8. data/lib/logstash/inputs/neo4j.rb +87 -0
  9. data/logstash-input-neo4j.gemspec +35 -0
  10. data/spec/fixtures/graph.db/index/lucene-store.db +0 -0
  11. data/spec/fixtures/graph.db/neostore +0 -0
  12. data/spec/fixtures/graph.db/neostore.id +0 -0
  13. data/spec/fixtures/graph.db/neostore.labeltokenstore.db +0 -0
  14. data/spec/fixtures/graph.db/neostore.labeltokenstore.db.id +0 -0
  15. data/spec/fixtures/graph.db/neostore.labeltokenstore.db.names +0 -0
  16. data/spec/fixtures/graph.db/neostore.labeltokenstore.db.names.id +0 -0
  17. data/spec/fixtures/graph.db/neostore.nodestore.db +0 -0
  18. data/spec/fixtures/graph.db/neostore.nodestore.db.id +0 -0
  19. data/spec/fixtures/graph.db/neostore.nodestore.db.labels +0 -0
  20. data/spec/fixtures/graph.db/neostore.nodestore.db.labels.id +0 -0
  21. data/spec/fixtures/graph.db/neostore.propertystore.db +0 -0
  22. data/spec/fixtures/graph.db/neostore.propertystore.db.arrays +0 -0
  23. data/spec/fixtures/graph.db/neostore.propertystore.db.arrays.id +0 -0
  24. data/spec/fixtures/graph.db/neostore.propertystore.db.id +0 -0
  25. data/spec/fixtures/graph.db/neostore.propertystore.db.index +0 -0
  26. data/spec/fixtures/graph.db/neostore.propertystore.db.index.id +0 -0
  27. data/spec/fixtures/graph.db/neostore.propertystore.db.index.keys +0 -0
  28. data/spec/fixtures/graph.db/neostore.propertystore.db.index.keys.id +0 -0
  29. data/spec/fixtures/graph.db/neostore.propertystore.db.strings +0 -0
  30. data/spec/fixtures/graph.db/neostore.propertystore.db.strings.id +0 -0
  31. data/spec/fixtures/graph.db/neostore.relationshipstore.db +0 -0
  32. data/spec/fixtures/graph.db/neostore.relationshipstore.db.id +0 -0
  33. data/spec/fixtures/graph.db/neostore.relationshiptypestore.db +0 -0
  34. data/spec/fixtures/graph.db/neostore.relationshiptypestore.db.id +0 -0
  35. data/spec/fixtures/graph.db/neostore.relationshiptypestore.db.names +0 -0
  36. data/spec/fixtures/graph.db/neostore.relationshiptypestore.db.names.id +0 -0
  37. data/spec/fixtures/graph.db/neostore.schemastore.db +0 -0
  38. data/spec/fixtures/graph.db/neostore.schemastore.db.id +0 -0
  39. data/spec/fixtures/graph.db/schema/label/lucene/_0.fdt +0 -0
  40. data/spec/fixtures/graph.db/schema/label/lucene/_0.fdx +0 -0
  41. data/spec/fixtures/graph.db/schema/label/lucene/_0.fnm +1 -0
  42. data/spec/fixtures/graph.db/schema/label/lucene/_0.frq +0 -0
  43. data/spec/fixtures/graph.db/schema/label/lucene/_0.nrm +1 -0
  44. data/spec/fixtures/graph.db/schema/label/lucene/_0.tii +0 -0
  45. data/spec/fixtures/graph.db/schema/label/lucene/_0.tis +0 -0
  46. data/spec/fixtures/graph.db/schema/label/lucene/segments.gen +0 -0
  47. data/spec/fixtures/graph.db/schema/label/lucene/segments_1 +0 -0
  48. data/spec/fixtures/graph.db/store_lock +0 -0
  49. data/spec/inputs/neo4j-client_spec.rb +29 -0
  50. data/spec/inputs/neo4j_spec.rb +40 -0
  51. data/spec/spec_helper.rb +34 -0
  52. metadata +515 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 8755e85e0c717a794832644930108620f4fc0647
4
+ data.tar.gz: f00f30292b837cabb92a219e5980fe1b068defe3
5
+ SHA512:
6
+ metadata.gz: 03f59be033201cb9bebf1ee1a2c3ea6ef1606bcc05edb4a1696af5e2d24235f475b4714aef2443e1f8348208f8684a9b75a1f6c73dfdb5fc1fd56fc0895cf171
7
+ data.tar.gz: 049d816f86d0ec9368cc09e6f013685221cfe7889470df2063113fb4b0c5c85efb72372821b560b45041b11f4fcc7928e41aa8ee799f78c5333c2bf03f2cc0a7
@@ -0,0 +1,36 @@
1
+ *.gem
2
+ *.rbc
3
+ /.config
4
+ /coverage/
5
+ /InstalledFiles
6
+ /pkg/
7
+ /spec/reports/
8
+ /test/tmp/
9
+ /test/version_tmp/
10
+ /tmp/
11
+
12
+ ## Specific to RubyMotion:
13
+ .dat*
14
+ .repl_history
15
+ build/
16
+
17
+ ## Documentation cache and generated files:
18
+ /.yardoc/
19
+ /_yardoc/
20
+ /doc/
21
+ /rdoc/
22
+
23
+ ## Environment normalisation:
24
+ /.bundle/
25
+ /lib/bundler/man/
26
+
27
+ # for a library or gem, you might want to ignore these files since the code is
28
+ # intended to run in multiple environments; otherwise, check them in:
29
+ Gemfile.lock
30
+ .ruby-version
31
+ .ruby-gemset
32
+
33
+ # unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
34
+ .rvmrc
35
+ spec/fixtures/graph.db/*log*
36
+ spec/fixtures/graph.db/index/lucene.log*
data/Gemfile ADDED
@@ -0,0 +1,2 @@
1
+ source 'https://rubygems.org'
2
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,202 @@
1
+ Apache License
2
+ Version 2.0, January 2004
3
+ http://www.apache.org/licenses/
4
+
5
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6
+
7
+ 1. Definitions.
8
+
9
+ "License" shall mean the terms and conditions for use, reproduction,
10
+ and distribution as defined by Sections 1 through 9 of this document.
11
+
12
+ "Licensor" shall mean the copyright owner or entity authorized by
13
+ the copyright owner that is granting the License.
14
+
15
+ "Legal Entity" shall mean the union of the acting entity and all
16
+ other entities that control, are controlled by, or are under common
17
+ control with that entity. For the purposes of this definition,
18
+ "control" means (i) the power, direct or indirect, to cause the
19
+ direction or management of such entity, whether by contract or
20
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
21
+ outstanding shares, or (iii) beneficial ownership of such entity.
22
+
23
+ "You" (or "Your") shall mean an individual or Legal Entity
24
+ exercising permissions granted by this License.
25
+
26
+ "Source" form shall mean the preferred form for making modifications,
27
+ including but not limited to software source code, documentation
28
+ source, and configuration files.
29
+
30
+ "Object" form shall mean any form resulting from mechanical
31
+ transformation or translation of a Source form, including but
32
+ not limited to compiled object code, generated documentation,
33
+ and conversions to other media types.
34
+
35
+ "Work" shall mean the work of authorship, whether in Source or
36
+ Object form, made available under the License, as indicated by a
37
+ copyright notice that is included in or attached to the work
38
+ (an example is provided in the Appendix below).
39
+
40
+ "Derivative Works" shall mean any work, whether in Source or Object
41
+ form, that is based on (or derived from) the Work and for which the
42
+ editorial revisions, annotations, elaborations, or other modifications
43
+ represent, as a whole, an original work of authorship. For the purposes
44
+ of this License, Derivative Works shall not include works that remain
45
+ separable from, or merely link (or bind by name) to the interfaces of,
46
+ the Work and Derivative Works thereof.
47
+
48
+ "Contribution" shall mean any work of authorship, including
49
+ the original version of the Work and any modifications or additions
50
+ to that Work or Derivative Works thereof, that is intentionally
51
+ submitted to Licensor for inclusion in the Work by the copyright owner
52
+ or by an individual or Legal Entity authorized to submit on behalf of
53
+ the copyright owner. For the purposes of this definition, "submitted"
54
+ means any form of electronic, verbal, or written communication sent
55
+ to the Licensor or its representatives, including but not limited to
56
+ communication on electronic mailing lists, source code control systems,
57
+ and issue tracking systems that are managed by, or on behalf of, the
58
+ Licensor for the purpose of discussing and improving the Work, but
59
+ excluding communication that is conspicuously marked or otherwise
60
+ designated in writing by the copyright owner as "Not a Contribution."
61
+
62
+ "Contributor" shall mean Licensor and any individual or Legal Entity
63
+ on behalf of whom a Contribution has been received by Licensor and
64
+ subsequently incorporated within the Work.
65
+
66
+ 2. Grant of Copyright License. Subject to the terms and conditions of
67
+ this License, each Contributor hereby grants to You a perpetual,
68
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69
+ copyright license to reproduce, prepare Derivative Works of,
70
+ publicly display, publicly perform, sublicense, and distribute the
71
+ Work and such Derivative Works in Source or Object form.
72
+
73
+ 3. Grant of Patent License. Subject to the terms and conditions of
74
+ this License, each Contributor hereby grants to You a perpetual,
75
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76
+ (except as stated in this section) patent license to make, have made,
77
+ use, offer to sell, sell, import, and otherwise transfer the Work,
78
+ where such license applies only to those patent claims licensable
79
+ by such Contributor that are necessarily infringed by their
80
+ Contribution(s) alone or by combination of their Contribution(s)
81
+ with the Work to which such Contribution(s) was submitted. If You
82
+ institute patent litigation against any entity (including a
83
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
84
+ or a Contribution incorporated within the Work constitutes direct
85
+ or contributory patent infringement, then any patent licenses
86
+ granted to You under this License for that Work shall terminate
87
+ as of the date such litigation is filed.
88
+
89
+ 4. Redistribution. You may reproduce and distribute copies of the
90
+ Work or Derivative Works thereof in any medium, with or without
91
+ modifications, and in Source or Object form, provided that You
92
+ meet the following conditions:
93
+
94
+ (a) You must give any other recipients of the Work or
95
+ Derivative Works a copy of this License; and
96
+
97
+ (b) You must cause any modified files to carry prominent notices
98
+ stating that You changed the files; and
99
+
100
+ (c) You must retain, in the Source form of any Derivative Works
101
+ that You distribute, all copyright, patent, trademark, and
102
+ attribution notices from the Source form of the Work,
103
+ excluding those notices that do not pertain to any part of
104
+ the Derivative Works; and
105
+
106
+ (d) If the Work includes a "NOTICE" text file as part of its
107
+ distribution, then any Derivative Works that You distribute must
108
+ include a readable copy of the attribution notices contained
109
+ within such NOTICE file, excluding those notices that do not
110
+ pertain to any part of the Derivative Works, in at least one
111
+ of the following places: within a NOTICE text file distributed
112
+ as part of the Derivative Works; within the Source form or
113
+ documentation, if provided along with the Derivative Works; or,
114
+ within a display generated by the Derivative Works, if and
115
+ wherever such third-party notices normally appear. The contents
116
+ of the NOTICE file are for informational purposes only and
117
+ do not modify the License. You may add Your own attribution
118
+ notices within Derivative Works that You distribute, alongside
119
+ or as an addendum to the NOTICE text from the Work, provided
120
+ that such additional attribution notices cannot be construed
121
+ as modifying the License.
122
+
123
+ You may add Your own copyright statement to Your modifications and
124
+ may provide additional or different license terms and conditions
125
+ for use, reproduction, or distribution of Your modifications, or
126
+ for any such Derivative Works as a whole, provided Your use,
127
+ reproduction, and distribution of the Work otherwise complies with
128
+ the conditions stated in this License.
129
+
130
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
131
+ any Contribution intentionally submitted for inclusion in the Work
132
+ by You to the Licensor shall be under the terms and conditions of
133
+ this License, without any additional terms or conditions.
134
+ Notwithstanding the above, nothing herein shall supersede or modify
135
+ the terms of any separate license agreement you may have executed
136
+ with Licensor regarding such Contributions.
137
+
138
+ 6. Trademarks. This License does not grant permission to use the trade
139
+ names, trademarks, service marks, or product names of the Licensor,
140
+ except as required for reasonable and customary use in describing the
141
+ origin of the Work and reproducing the content of the NOTICE file.
142
+
143
+ 7. Disclaimer of Warranty. Unless required by applicable law or
144
+ agreed to in writing, Licensor provides the Work (and each
145
+ Contributor provides its Contributions) on an "AS IS" BASIS,
146
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147
+ implied, including, without limitation, any warranties or conditions
148
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149
+ PARTICULAR PURPOSE. You are solely responsible for determining the
150
+ appropriateness of using or redistributing the Work and assume any
151
+ risks associated with Your exercise of permissions under this License.
152
+
153
+ 8. Limitation of Liability. In no event and under no legal theory,
154
+ whether in tort (including negligence), contract, or otherwise,
155
+ unless required by applicable law (such as deliberate and grossly
156
+ negligent acts) or agreed to in writing, shall any Contributor be
157
+ liable to You for damages, including any direct, indirect, special,
158
+ incidental, or consequential damages of any character arising as a
159
+ result of this License or out of the use or inability to use the
160
+ Work (including but not limited to damages for loss of goodwill,
161
+ work stoppage, computer failure or malfunction, or any and all
162
+ other commercial damages or losses), even if such Contributor
163
+ has been advised of the possibility of such damages.
164
+
165
+ 9. Accepting Warranty or Additional Liability. While redistributing
166
+ the Work or Derivative Works thereof, You may choose to offer,
167
+ and charge a fee for, acceptance of support, warranty, indemnity,
168
+ or other liability obligations and/or rights consistent with this
169
+ License. However, in accepting such obligations, You may act only
170
+ on Your own behalf and on Your sole responsibility, not on behalf
171
+ of any other Contributor, and only if You agree to indemnify,
172
+ defend, and hold each Contributor harmless for any liability
173
+ incurred by, or claims asserted against, such Contributor by reason
174
+ of your accepting any such warranty or additional liability.
175
+
176
+ END OF TERMS AND CONDITIONS
177
+
178
+ APPENDIX: How to apply the Apache License to your work.
179
+
180
+ To apply the Apache License to your work, attach the following
181
+ boilerplate notice, with the fields enclosed by brackets "{}"
182
+ replaced with your own identifying information. (Don't include
183
+ the brackets!) The text should be enclosed in the appropriate
184
+ comment syntax for the file format. We also recommend that a
185
+ file or class name and description of purpose be included on the
186
+ same "printed page" as the copyright notice for easier
187
+ identification within third-party archives.
188
+
189
+ Copyright {yyyy} {name of copyright owner}
190
+
191
+ Licensed under the Apache License, Version 2.0 (the "License");
192
+ you may not use this file except in compliance with the License.
193
+ You may obtain a copy of the License at
194
+
195
+ http://www.apache.org/licenses/LICENSE-2.0
196
+
197
+ Unless required by applicable law or agreed to in writing, software
198
+ distributed under the License is distributed on an "AS IS" BASIS,
199
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200
+ See the License for the specific language governing permissions and
201
+ limitations under the License.
202
+
@@ -0,0 +1,4 @@
1
+ logstash-input-neo4j
2
+ =====================
3
+
4
+ This is the first version of a Logstash Neo4j input plugin
@@ -0,0 +1,22 @@
1
+ ROOT = File.expand_path(File.dirname(__FILE__))
2
+ $LOAD_PATH.unshift File.join(ROOT, 'lib')
3
+ Dir.glob('lib/**').each{ |d| $LOAD_PATH.unshift(File.join(ROOT, d)) }
4
+
5
+ require 'rubygems'
6
+ require 'bundler'
7
+ begin
8
+ Bundler.setup(:default, :development)
9
+ rescue Bundler::BundlerError => e
10
+ $stderr.puts e.message
11
+ $stderr.puts "Run `bundle install` to install missing gems"
12
+ exit e.status_code
13
+ end
14
+
15
+ require 'rspec'
16
+ require 'rspec/core/rake_task'
17
+
18
+ desc "Specs all at ones."
19
+ RSpec::Core::RakeTask.new(:spec) do |t|
20
+ t.fail_on_error = true
21
+ t.verbose = false
22
+ end
@@ -0,0 +1,48 @@
1
+ # encoding: utf-8
2
+ require "neo4j"
3
+
4
+ module Neo4jrb
5
+ class Client
6
+
7
+ public
8
+ def self.open(location)
9
+ session = start_session_at(location)
10
+ Neo4jrb::Client.new(session)
11
+ end
12
+
13
+ def count_nodes
14
+ Neo4j::Transaction.run { @session.graph_db.all_nodes.count }
15
+ end
16
+
17
+ def session
18
+ Neo4j::Session.current
19
+ end
20
+
21
+ def execute_query(statement, &block)
22
+ resultset = []
23
+ Neo4j::Session.query(statement).each do |result|
24
+ objects = result.members.map { |member| result.send member }
25
+ if block_given?
26
+ block.call(objects)
27
+ else
28
+ resultset << objects
29
+ end
30
+ end
31
+ resultset
32
+ end
33
+
34
+ private
35
+ def initialize(session)
36
+ @last_start = Time.at(0).utc
37
+ @session = session
38
+ end
39
+
40
+ def self.start_session_at(location)
41
+ if Neo4j::Session.current.nil?
42
+ session = ::Neo4j::Session.open(:embedded_db, location, auto_commit: true)
43
+ session.start
44
+ end
45
+ Neo4j::Session.current
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,87 @@
1
+ # encoding: utf-8
2
+ require "logstash/inputs/base"
3
+ require "logstash/namespace"
4
+ require "logstash/inputs/neo4j-client"
5
+
6
+ # This plugin gets data from a Neo4j database in predefined intervals. To fetch
7
+ # this data uses a given Cypher query.
8
+ #
9
+ # ### Usage:
10
+ # [source, ruby]
11
+ # input {
12
+ # neo4j {
13
+ # query => "MATCH (p:`Person`)-->(m:`Movie`) WHERE m.released = 2005 RETURN *"
14
+ # path => "/foo/bar.db"
15
+ # }
16
+ # }
17
+ #
18
+ # In embedded_db mode this plugin require a neo4j db 2.0.1 or superior. If
19
+ # using the remote version there is no major restriction.
20
+ #
21
+ class LogStash::Inputs::Neo4j < LogStash::Inputs::Base
22
+
23
+ config_name "neo4j"
24
+
25
+ # If undefined, Logstash will complain, even if codec is unused.
26
+ default :codec, "plain"
27
+
28
+ # Cypher query used to retrieve data from the neo4j database, this statement
29
+ # should looks like something like this:
30
+ #
31
+ # MATCH (p:`Person`)-->(m:`Movie`) WHERE m.released = 2005 RETURN *
32
+ #
33
+ config :query, :validate => :string, :required => true
34
+
35
+ # The path within your file system where the neo4j database is located
36
+ config :path, :validate => :string, :required => true
37
+
38
+ # Schedule of when to periodically run statement, in Cron format
39
+ # for example: "* * * * *" (execute query every minute, on the minute)
40
+ config :schedule, :validate => :string
41
+
42
+ public
43
+ def register
44
+ require "rufus/scheduler"
45
+ require "logstash/inputs/neo4j-client"
46
+ @client = Neo4jrb::Client.open(@path)
47
+ end # def register
48
+
49
+ def run(queue)
50
+ if @schedule
51
+ schedule(queue)
52
+ else
53
+ fetch(queue)
54
+ end
55
+ end # def run
56
+
57
+ private
58
+ def schedule(queue)
59
+ @scheduler = Rufus::Scheduler.new
60
+ @scheduler.cron @schedule do
61
+ fetch(queue)
62
+ end
63
+ @scheduler.join
64
+ end
65
+
66
+ def fetch(queue)
67
+ @client.execute_query(@query) do |nodes|
68
+ payload = compose_payload(nodes)
69
+ event = LogStash::Event.new(payload)
70
+ decorate(event)
71
+ queue << event
72
+ end
73
+ end
74
+
75
+ def compose_payload(nodes)
76
+ object = { "labels" => nodes[0].labels, "props" => nodes[0].props }
77
+ object["_rels"] = []
78
+ (1...nodes.count).each do |i|
79
+ rel = nodes[i]
80
+ payload = { "props" => rel.props }
81
+ payload["labels"] = if rel.respond_to?(:labels) then rel.labels else "Relationship" end
82
+ object["_rels"] << payload
83
+ end
84
+ { "message" => object.to_json, "host" => @client.session.inspect}
85
+ end
86
+
87
+ end # class LogStash::Inputs::Neo4j
@@ -0,0 +1,35 @@
1
+ Gem::Specification.new do |s|
2
+
3
+ s.name = 'logstash-input-neo4j'
4
+ s.version = '0.9.0'
5
+ s.licenses = ['Apache License (2.0)']
6
+ s.summary = "Logstash Input for Neo4j"
7
+ s.description = "Output events to Neo4j"
8
+ s.authors = ["Pere Urbon-Bayes"]
9
+ s.email = 'pere.urbon@gmail.com'
10
+ s.homepage = "http://purbon.com/"
11
+ s.require_paths = ["lib"]
12
+
13
+ # Files
14
+ s.files = `git ls-files`.split($\)
15
+
16
+ # Tests
17
+ s.test_files = s.files.grep(%r{^(test|spec|features)/})
18
+
19
+ # Special flag to let us know this is actually a logstash plugin
20
+ s.metadata = { "logstash_plugin" => "true", "logstash_group" => "output" }
21
+
22
+ s.add_runtime_dependency 'logstash-core', '>= 1.4.0', '< 2.0.0'
23
+ s.add_runtime_dependency 'jar-dependencies'
24
+ s.add_runtime_dependency 'rufus-scheduler', '3.0.9'
25
+
26
+ if RUBY_PLATFORM == 'java'
27
+ s.platform = RUBY_PLATFORM
28
+ s.add_runtime_dependency 'neo4j', '>= 3.0'
29
+ s.add_runtime_dependency 'neo4j-community', '~> 2.0.0'
30
+ end
31
+
32
+ s.add_development_dependency 'logstash-devutils'
33
+ s.add_development_dependency 'logstash-codec-plain'
34
+
35
+ end
@@ -0,0 +1 @@
1
+ ����rangeQ0labelQ1
File without changes
@@ -0,0 +1,29 @@
1
+ require 'spec_helper'
2
+
3
+ describe "Neo4jrb::Client" do
4
+
5
+
6
+ let(:path) { "spec/fixtures/graph.db" }
7
+ let(:client) { Neo4jrb::Client.open(path) }
8
+
9
+ it "can count all nodes within the database" do
10
+ expect(client.count_nodes).to eq(171)
11
+ end
12
+
13
+ context "while running a query" do
14
+ let(:query) { "MATCH (p:`Person`)-->(m:`Movie`) WHERE m.released = 2000 RETURN *" }
15
+
16
+ subject(:resultset) { client.execute_query(query) }
17
+
18
+ it "return the right amount of data" do
19
+ expect(resultset.count).to eq(24)
20
+ end
21
+
22
+ it "return the right type of data as array" do
23
+ resultset.each do |result|
24
+ result.map! { |e| e.labels.first }.flatten
25
+ expect(result).to eq([:Movie, :Person])
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,40 @@
1
+ require 'spec_helper'
2
+ require "logstash/plugin"
3
+ require "logstash/json"
4
+
5
+ describe "inputs/neo4j" do
6
+
7
+ let(:path) { "spec/fixtures/graph.db" }
8
+ let(:query) { "MATCH (p:`Person`)-[r]->(m:`Movie`) WHERE m.released = 2000 RETURN *" }
9
+ let(:plugin) { LogStash::Plugin.lookup("input", "neo4j").new( {"path" => path, "query" => query} ) }
10
+
11
+ it "register without errors" do
12
+ expect { plugin.register }.to_not raise_error
13
+ end
14
+
15
+ it "teardown without errors" do
16
+ expect { plugin.teardown }.to_not raise_error
17
+ end
18
+
19
+ context "event retrieval" do
20
+
21
+ let(:logstash_queue) { Queue.new }
22
+
23
+ before do
24
+ plugin.register
25
+ plugin.run logstash_queue
26
+ end
27
+
28
+ it "retrieve data from neo4j" do
29
+ expect(logstash_queue.size).to eq(24)
30
+ end
31
+
32
+ it "retrieve data in the expected format" do
33
+ while(!logstash_queue.empty?)
34
+ element = logstash_queue.pop
35
+ message = JSON.parse(element["message"])
36
+ expect(message["props"]["released"]).to eq(2000)
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,34 @@
1
+ require "logstash/devutils/rspec/spec_helper"
2
+ require 'logstash/inputs/neo4j'
3
+
4
+ def load_fixture(name)
5
+ IO.read("spec/fixtures/#{name}")
6
+ end
7
+
8
+ RSpec.configure do |config|
9
+
10
+ config.before(:suite) do
11
+ session = Neo4j::Session.open(:embedded_db, 'spec/fixtures/graph.db', auto_commit: true)
12
+ session.start
13
+ end
14
+
15
+ config.after(:suite) do
16
+ Neo4j::Session.current.shutdown
17
+ end
18
+
19
+ end
20
+
21
+ def to_arr(root)
22
+ Neo4j::Transaction.run do
23
+ session.graph_db.get_all_nodes.to_a.map { |m| "#{m.props[:_classname]}##{m.props[:value]||'NaN'}" }
24
+ end
25
+ end
26
+
27
+ def has_child(source_clazz, source_value, target_clazz, target_value)
28
+ source_clazz.where({:value => source_value}).map do |n|
29
+ n.nodes(dir: :outgoing, :type => :child).select do |m|
30
+ m.is_a?(target_clazz) && (!m.is_a?(::TimeTree::Root) && m.props[:value] == target_value)
31
+ end
32
+ end.flatten
33
+ end
34
+
metadata ADDED
@@ -0,0 +1,515 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: logstash-input-neo4j
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.9.0
5
+ platform: java
6
+ authors:
7
+ - Pere Urbon-Bayes
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-03-29 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: logstash-core
15
+ version_requirements: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>='
18
+ - !ruby/object:Gem::Version
19
+ version: 1.4.0
20
+ - - <
21
+ - !ruby/object:Gem::Version
22
+ version: 2.0.0
23
+ requirement: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - '>='
26
+ - !ruby/object:Gem::Version
27
+ version: 1.4.0
28
+ - - <
29
+ - !ruby/object:Gem::Version
30
+ version: 2.0.0
31
+ prerelease: false
32
+ type: :runtime
33
+ - !ruby/object:Gem::Dependency
34
+ name: jar-dependencies
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - '>='
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
40
+ requirement: !ruby/object:Gem::Requirement
41
+ requirements:
42
+ - - '>='
43
+ - !ruby/object:Gem::Version
44
+ version: '0'
45
+ prerelease: false
46
+ type: :runtime
47
+ - !ruby/object:Gem::Dependency
48
+ name: rufus-scheduler
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - '='
52
+ - !ruby/object:Gem::Version
53
+ version: 3.0.9
54
+ requirement: !ruby/object:Gem::Requirement
55
+ requirements:
56
+ - - '='
57
+ - !ruby/object:Gem::Version
58
+ version: 3.0.9
59
+ prerelease: false
60
+ type: :runtime
61
+ - !ruby/object:Gem::Dependency
62
+ name: neo4j
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - '>='
66
+ - !ruby/object:Gem::Version
67
+ version: '3.0'
68
+ requirement: !ruby/object:Gem::Requirement
69
+ requirements:
70
+ - - '>='
71
+ - !ruby/object:Gem::Version
72
+ version: '3.0'
73
+ prerelease: false
74
+ type: :runtime
75
+ - !ruby/object:Gem::Dependency
76
+ name: neo4j-community
77
+ version_requirements: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ~>
80
+ - !ruby/object:Gem::Version
81
+ version: 2.0.0
82
+ requirement: !ruby/object:Gem::Requirement
83
+ requirements:
84
+ - - ~>
85
+ - !ruby/object:Gem::Version
86
+ version: 2.0.0
87
+ prerelease: false
88
+ type: :runtime
89
+ - !ruby/object:Gem::Dependency
90
+ name: logstash-devutils
91
+ version_requirements: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - '>='
94
+ - !ruby/object:Gem::Version
95
+ version: '0'
96
+ requirement: !ruby/object:Gem::Requirement
97
+ requirements:
98
+ - - '>='
99
+ - !ruby/object:Gem::Version
100
+ version: '0'
101
+ prerelease: false
102
+ type: :development
103
+ - !ruby/object:Gem::Dependency
104
+ name: logstash-codec-plain
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ requirement: !ruby/object:Gem::Requirement
111
+ requirements:
112
+ - - '>='
113
+ - !ruby/object:Gem::Version
114
+ version: '0'
115
+ prerelease: false
116
+ type: :development
117
+ description: Output events to Neo4j
118
+ email: pere.urbon@gmail.com
119
+ executables: []
120
+ extensions: []
121
+ extra_rdoc_files: []
122
+ files:
123
+ - .gitignore
124
+ - Gemfile
125
+ - LICENSE
126
+ - README.md
127
+ - Rakefile
128
+ - lib/logstash/inputs/neo4j-client.rb
129
+ - lib/logstash/inputs/neo4j.rb
130
+ - logstash-input-neo4j.gemspec
131
+ - spec/fixtures/graph.db/active_tx_log
132
+ - spec/fixtures/graph.db/index/lucene-store.db
133
+ - spec/fixtures/graph.db/index/lucene.log.active
134
+ - spec/fixtures/graph.db/index/lucene.log.v0
135
+ - spec/fixtures/graph.db/index/lucene.log.v1
136
+ - spec/fixtures/graph.db/index/lucene.log.v10
137
+ - spec/fixtures/graph.db/index/lucene.log.v11
138
+ - spec/fixtures/graph.db/index/lucene.log.v12
139
+ - spec/fixtures/graph.db/index/lucene.log.v13
140
+ - spec/fixtures/graph.db/index/lucene.log.v14
141
+ - spec/fixtures/graph.db/index/lucene.log.v15
142
+ - spec/fixtures/graph.db/index/lucene.log.v16
143
+ - spec/fixtures/graph.db/index/lucene.log.v17
144
+ - spec/fixtures/graph.db/index/lucene.log.v18
145
+ - spec/fixtures/graph.db/index/lucene.log.v19
146
+ - spec/fixtures/graph.db/index/lucene.log.v2
147
+ - spec/fixtures/graph.db/index/lucene.log.v20
148
+ - spec/fixtures/graph.db/index/lucene.log.v21
149
+ - spec/fixtures/graph.db/index/lucene.log.v22
150
+ - spec/fixtures/graph.db/index/lucene.log.v23
151
+ - spec/fixtures/graph.db/index/lucene.log.v24
152
+ - spec/fixtures/graph.db/index/lucene.log.v25
153
+ - spec/fixtures/graph.db/index/lucene.log.v26
154
+ - spec/fixtures/graph.db/index/lucene.log.v27
155
+ - spec/fixtures/graph.db/index/lucene.log.v28
156
+ - spec/fixtures/graph.db/index/lucene.log.v29
157
+ - spec/fixtures/graph.db/index/lucene.log.v3
158
+ - spec/fixtures/graph.db/index/lucene.log.v30
159
+ - spec/fixtures/graph.db/index/lucene.log.v31
160
+ - spec/fixtures/graph.db/index/lucene.log.v32
161
+ - spec/fixtures/graph.db/index/lucene.log.v33
162
+ - spec/fixtures/graph.db/index/lucene.log.v34
163
+ - spec/fixtures/graph.db/index/lucene.log.v35
164
+ - spec/fixtures/graph.db/index/lucene.log.v36
165
+ - spec/fixtures/graph.db/index/lucene.log.v37
166
+ - spec/fixtures/graph.db/index/lucene.log.v38
167
+ - spec/fixtures/graph.db/index/lucene.log.v39
168
+ - spec/fixtures/graph.db/index/lucene.log.v4
169
+ - spec/fixtures/graph.db/index/lucene.log.v40
170
+ - spec/fixtures/graph.db/index/lucene.log.v41
171
+ - spec/fixtures/graph.db/index/lucene.log.v42
172
+ - spec/fixtures/graph.db/index/lucene.log.v43
173
+ - spec/fixtures/graph.db/index/lucene.log.v44
174
+ - spec/fixtures/graph.db/index/lucene.log.v45
175
+ - spec/fixtures/graph.db/index/lucene.log.v46
176
+ - spec/fixtures/graph.db/index/lucene.log.v47
177
+ - spec/fixtures/graph.db/index/lucene.log.v48
178
+ - spec/fixtures/graph.db/index/lucene.log.v49
179
+ - spec/fixtures/graph.db/index/lucene.log.v5
180
+ - spec/fixtures/graph.db/index/lucene.log.v50
181
+ - spec/fixtures/graph.db/index/lucene.log.v51
182
+ - spec/fixtures/graph.db/index/lucene.log.v52
183
+ - spec/fixtures/graph.db/index/lucene.log.v53
184
+ - spec/fixtures/graph.db/index/lucene.log.v54
185
+ - spec/fixtures/graph.db/index/lucene.log.v55
186
+ - spec/fixtures/graph.db/index/lucene.log.v56
187
+ - spec/fixtures/graph.db/index/lucene.log.v57
188
+ - spec/fixtures/graph.db/index/lucene.log.v58
189
+ - spec/fixtures/graph.db/index/lucene.log.v59
190
+ - spec/fixtures/graph.db/index/lucene.log.v6
191
+ - spec/fixtures/graph.db/index/lucene.log.v60
192
+ - spec/fixtures/graph.db/index/lucene.log.v61
193
+ - spec/fixtures/graph.db/index/lucene.log.v62
194
+ - spec/fixtures/graph.db/index/lucene.log.v63
195
+ - spec/fixtures/graph.db/index/lucene.log.v64
196
+ - spec/fixtures/graph.db/index/lucene.log.v65
197
+ - spec/fixtures/graph.db/index/lucene.log.v7
198
+ - spec/fixtures/graph.db/index/lucene.log.v8
199
+ - spec/fixtures/graph.db/index/lucene.log.v9
200
+ - spec/fixtures/graph.db/messages.log
201
+ - spec/fixtures/graph.db/neostore
202
+ - spec/fixtures/graph.db/neostore.id
203
+ - spec/fixtures/graph.db/neostore.labeltokenstore.db
204
+ - spec/fixtures/graph.db/neostore.labeltokenstore.db.id
205
+ - spec/fixtures/graph.db/neostore.labeltokenstore.db.names
206
+ - spec/fixtures/graph.db/neostore.labeltokenstore.db.names.id
207
+ - spec/fixtures/graph.db/neostore.nodestore.db
208
+ - spec/fixtures/graph.db/neostore.nodestore.db.id
209
+ - spec/fixtures/graph.db/neostore.nodestore.db.labels
210
+ - spec/fixtures/graph.db/neostore.nodestore.db.labels.id
211
+ - spec/fixtures/graph.db/neostore.propertystore.db
212
+ - spec/fixtures/graph.db/neostore.propertystore.db.arrays
213
+ - spec/fixtures/graph.db/neostore.propertystore.db.arrays.id
214
+ - spec/fixtures/graph.db/neostore.propertystore.db.id
215
+ - spec/fixtures/graph.db/neostore.propertystore.db.index
216
+ - spec/fixtures/graph.db/neostore.propertystore.db.index.id
217
+ - spec/fixtures/graph.db/neostore.propertystore.db.index.keys
218
+ - spec/fixtures/graph.db/neostore.propertystore.db.index.keys.id
219
+ - spec/fixtures/graph.db/neostore.propertystore.db.strings
220
+ - spec/fixtures/graph.db/neostore.propertystore.db.strings.id
221
+ - spec/fixtures/graph.db/neostore.relationshipstore.db
222
+ - spec/fixtures/graph.db/neostore.relationshipstore.db.id
223
+ - spec/fixtures/graph.db/neostore.relationshiptypestore.db
224
+ - spec/fixtures/graph.db/neostore.relationshiptypestore.db.id
225
+ - spec/fixtures/graph.db/neostore.relationshiptypestore.db.names
226
+ - spec/fixtures/graph.db/neostore.relationshiptypestore.db.names.id
227
+ - spec/fixtures/graph.db/neostore.schemastore.db
228
+ - spec/fixtures/graph.db/neostore.schemastore.db.id
229
+ - spec/fixtures/graph.db/nioneo_logical.log.active
230
+ - spec/fixtures/graph.db/nioneo_logical.log.v0
231
+ - spec/fixtures/graph.db/nioneo_logical.log.v1
232
+ - spec/fixtures/graph.db/nioneo_logical.log.v10
233
+ - spec/fixtures/graph.db/nioneo_logical.log.v11
234
+ - spec/fixtures/graph.db/nioneo_logical.log.v12
235
+ - spec/fixtures/graph.db/nioneo_logical.log.v13
236
+ - spec/fixtures/graph.db/nioneo_logical.log.v14
237
+ - spec/fixtures/graph.db/nioneo_logical.log.v15
238
+ - spec/fixtures/graph.db/nioneo_logical.log.v16
239
+ - spec/fixtures/graph.db/nioneo_logical.log.v17
240
+ - spec/fixtures/graph.db/nioneo_logical.log.v18
241
+ - spec/fixtures/graph.db/nioneo_logical.log.v19
242
+ - spec/fixtures/graph.db/nioneo_logical.log.v2
243
+ - spec/fixtures/graph.db/nioneo_logical.log.v20
244
+ - spec/fixtures/graph.db/nioneo_logical.log.v21
245
+ - spec/fixtures/graph.db/nioneo_logical.log.v22
246
+ - spec/fixtures/graph.db/nioneo_logical.log.v23
247
+ - spec/fixtures/graph.db/nioneo_logical.log.v24
248
+ - spec/fixtures/graph.db/nioneo_logical.log.v25
249
+ - spec/fixtures/graph.db/nioneo_logical.log.v26
250
+ - spec/fixtures/graph.db/nioneo_logical.log.v27
251
+ - spec/fixtures/graph.db/nioneo_logical.log.v28
252
+ - spec/fixtures/graph.db/nioneo_logical.log.v29
253
+ - spec/fixtures/graph.db/nioneo_logical.log.v3
254
+ - spec/fixtures/graph.db/nioneo_logical.log.v30
255
+ - spec/fixtures/graph.db/nioneo_logical.log.v31
256
+ - spec/fixtures/graph.db/nioneo_logical.log.v32
257
+ - spec/fixtures/graph.db/nioneo_logical.log.v33
258
+ - spec/fixtures/graph.db/nioneo_logical.log.v34
259
+ - spec/fixtures/graph.db/nioneo_logical.log.v35
260
+ - spec/fixtures/graph.db/nioneo_logical.log.v36
261
+ - spec/fixtures/graph.db/nioneo_logical.log.v37
262
+ - spec/fixtures/graph.db/nioneo_logical.log.v38
263
+ - spec/fixtures/graph.db/nioneo_logical.log.v39
264
+ - spec/fixtures/graph.db/nioneo_logical.log.v4
265
+ - spec/fixtures/graph.db/nioneo_logical.log.v40
266
+ - spec/fixtures/graph.db/nioneo_logical.log.v41
267
+ - spec/fixtures/graph.db/nioneo_logical.log.v42
268
+ - spec/fixtures/graph.db/nioneo_logical.log.v43
269
+ - spec/fixtures/graph.db/nioneo_logical.log.v44
270
+ - spec/fixtures/graph.db/nioneo_logical.log.v45
271
+ - spec/fixtures/graph.db/nioneo_logical.log.v46
272
+ - spec/fixtures/graph.db/nioneo_logical.log.v47
273
+ - spec/fixtures/graph.db/nioneo_logical.log.v48
274
+ - spec/fixtures/graph.db/nioneo_logical.log.v49
275
+ - spec/fixtures/graph.db/nioneo_logical.log.v5
276
+ - spec/fixtures/graph.db/nioneo_logical.log.v50
277
+ - spec/fixtures/graph.db/nioneo_logical.log.v51
278
+ - spec/fixtures/graph.db/nioneo_logical.log.v52
279
+ - spec/fixtures/graph.db/nioneo_logical.log.v53
280
+ - spec/fixtures/graph.db/nioneo_logical.log.v54
281
+ - spec/fixtures/graph.db/nioneo_logical.log.v55
282
+ - spec/fixtures/graph.db/nioneo_logical.log.v56
283
+ - spec/fixtures/graph.db/nioneo_logical.log.v57
284
+ - spec/fixtures/graph.db/nioneo_logical.log.v58
285
+ - spec/fixtures/graph.db/nioneo_logical.log.v59
286
+ - spec/fixtures/graph.db/nioneo_logical.log.v6
287
+ - spec/fixtures/graph.db/nioneo_logical.log.v60
288
+ - spec/fixtures/graph.db/nioneo_logical.log.v61
289
+ - spec/fixtures/graph.db/nioneo_logical.log.v62
290
+ - spec/fixtures/graph.db/nioneo_logical.log.v63
291
+ - spec/fixtures/graph.db/nioneo_logical.log.v64
292
+ - spec/fixtures/graph.db/nioneo_logical.log.v65
293
+ - spec/fixtures/graph.db/nioneo_logical.log.v7
294
+ - spec/fixtures/graph.db/nioneo_logical.log.v8
295
+ - spec/fixtures/graph.db/nioneo_logical.log.v9
296
+ - spec/fixtures/graph.db/schema/label/lucene/_0.fdt
297
+ - spec/fixtures/graph.db/schema/label/lucene/_0.fdx
298
+ - spec/fixtures/graph.db/schema/label/lucene/_0.fnm
299
+ - spec/fixtures/graph.db/schema/label/lucene/_0.frq
300
+ - spec/fixtures/graph.db/schema/label/lucene/_0.nrm
301
+ - spec/fixtures/graph.db/schema/label/lucene/_0.tii
302
+ - spec/fixtures/graph.db/schema/label/lucene/_0.tis
303
+ - spec/fixtures/graph.db/schema/label/lucene/segments.gen
304
+ - spec/fixtures/graph.db/schema/label/lucene/segments_1
305
+ - spec/fixtures/graph.db/store_lock
306
+ - spec/fixtures/graph.db/tm_tx_log.1
307
+ - spec/inputs/neo4j-client_spec.rb
308
+ - spec/inputs/neo4j_spec.rb
309
+ - spec/spec_helper.rb
310
+ homepage: http://purbon.com/
311
+ licenses:
312
+ - Apache License (2.0)
313
+ metadata:
314
+ logstash_plugin: 'true'
315
+ logstash_group: output
316
+ post_install_message:
317
+ rdoc_options: []
318
+ require_paths:
319
+ - lib
320
+ required_ruby_version: !ruby/object:Gem::Requirement
321
+ requirements:
322
+ - - '>='
323
+ - !ruby/object:Gem::Version
324
+ version: '0'
325
+ required_rubygems_version: !ruby/object:Gem::Requirement
326
+ requirements:
327
+ - - '>='
328
+ - !ruby/object:Gem::Version
329
+ version: '0'
330
+ requirements: []
331
+ rubyforge_project:
332
+ rubygems_version: 2.4.5
333
+ signing_key:
334
+ specification_version: 4
335
+ summary: Logstash Input for Neo4j
336
+ test_files:
337
+ - spec/fixtures/graph.db/active_tx_log
338
+ - spec/fixtures/graph.db/index/lucene-store.db
339
+ - spec/fixtures/graph.db/index/lucene.log.active
340
+ - spec/fixtures/graph.db/index/lucene.log.v0
341
+ - spec/fixtures/graph.db/index/lucene.log.v1
342
+ - spec/fixtures/graph.db/index/lucene.log.v10
343
+ - spec/fixtures/graph.db/index/lucene.log.v11
344
+ - spec/fixtures/graph.db/index/lucene.log.v12
345
+ - spec/fixtures/graph.db/index/lucene.log.v13
346
+ - spec/fixtures/graph.db/index/lucene.log.v14
347
+ - spec/fixtures/graph.db/index/lucene.log.v15
348
+ - spec/fixtures/graph.db/index/lucene.log.v16
349
+ - spec/fixtures/graph.db/index/lucene.log.v17
350
+ - spec/fixtures/graph.db/index/lucene.log.v18
351
+ - spec/fixtures/graph.db/index/lucene.log.v19
352
+ - spec/fixtures/graph.db/index/lucene.log.v2
353
+ - spec/fixtures/graph.db/index/lucene.log.v20
354
+ - spec/fixtures/graph.db/index/lucene.log.v21
355
+ - spec/fixtures/graph.db/index/lucene.log.v22
356
+ - spec/fixtures/graph.db/index/lucene.log.v23
357
+ - spec/fixtures/graph.db/index/lucene.log.v24
358
+ - spec/fixtures/graph.db/index/lucene.log.v25
359
+ - spec/fixtures/graph.db/index/lucene.log.v26
360
+ - spec/fixtures/graph.db/index/lucene.log.v27
361
+ - spec/fixtures/graph.db/index/lucene.log.v28
362
+ - spec/fixtures/graph.db/index/lucene.log.v29
363
+ - spec/fixtures/graph.db/index/lucene.log.v3
364
+ - spec/fixtures/graph.db/index/lucene.log.v30
365
+ - spec/fixtures/graph.db/index/lucene.log.v31
366
+ - spec/fixtures/graph.db/index/lucene.log.v32
367
+ - spec/fixtures/graph.db/index/lucene.log.v33
368
+ - spec/fixtures/graph.db/index/lucene.log.v34
369
+ - spec/fixtures/graph.db/index/lucene.log.v35
370
+ - spec/fixtures/graph.db/index/lucene.log.v36
371
+ - spec/fixtures/graph.db/index/lucene.log.v37
372
+ - spec/fixtures/graph.db/index/lucene.log.v38
373
+ - spec/fixtures/graph.db/index/lucene.log.v39
374
+ - spec/fixtures/graph.db/index/lucene.log.v4
375
+ - spec/fixtures/graph.db/index/lucene.log.v40
376
+ - spec/fixtures/graph.db/index/lucene.log.v41
377
+ - spec/fixtures/graph.db/index/lucene.log.v42
378
+ - spec/fixtures/graph.db/index/lucene.log.v43
379
+ - spec/fixtures/graph.db/index/lucene.log.v44
380
+ - spec/fixtures/graph.db/index/lucene.log.v45
381
+ - spec/fixtures/graph.db/index/lucene.log.v46
382
+ - spec/fixtures/graph.db/index/lucene.log.v47
383
+ - spec/fixtures/graph.db/index/lucene.log.v48
384
+ - spec/fixtures/graph.db/index/lucene.log.v49
385
+ - spec/fixtures/graph.db/index/lucene.log.v5
386
+ - spec/fixtures/graph.db/index/lucene.log.v50
387
+ - spec/fixtures/graph.db/index/lucene.log.v51
388
+ - spec/fixtures/graph.db/index/lucene.log.v52
389
+ - spec/fixtures/graph.db/index/lucene.log.v53
390
+ - spec/fixtures/graph.db/index/lucene.log.v54
391
+ - spec/fixtures/graph.db/index/lucene.log.v55
392
+ - spec/fixtures/graph.db/index/lucene.log.v56
393
+ - spec/fixtures/graph.db/index/lucene.log.v57
394
+ - spec/fixtures/graph.db/index/lucene.log.v58
395
+ - spec/fixtures/graph.db/index/lucene.log.v59
396
+ - spec/fixtures/graph.db/index/lucene.log.v6
397
+ - spec/fixtures/graph.db/index/lucene.log.v60
398
+ - spec/fixtures/graph.db/index/lucene.log.v61
399
+ - spec/fixtures/graph.db/index/lucene.log.v62
400
+ - spec/fixtures/graph.db/index/lucene.log.v63
401
+ - spec/fixtures/graph.db/index/lucene.log.v64
402
+ - spec/fixtures/graph.db/index/lucene.log.v65
403
+ - spec/fixtures/graph.db/index/lucene.log.v7
404
+ - spec/fixtures/graph.db/index/lucene.log.v8
405
+ - spec/fixtures/graph.db/index/lucene.log.v9
406
+ - spec/fixtures/graph.db/messages.log
407
+ - spec/fixtures/graph.db/neostore
408
+ - spec/fixtures/graph.db/neostore.id
409
+ - spec/fixtures/graph.db/neostore.labeltokenstore.db
410
+ - spec/fixtures/graph.db/neostore.labeltokenstore.db.id
411
+ - spec/fixtures/graph.db/neostore.labeltokenstore.db.names
412
+ - spec/fixtures/graph.db/neostore.labeltokenstore.db.names.id
413
+ - spec/fixtures/graph.db/neostore.nodestore.db
414
+ - spec/fixtures/graph.db/neostore.nodestore.db.id
415
+ - spec/fixtures/graph.db/neostore.nodestore.db.labels
416
+ - spec/fixtures/graph.db/neostore.nodestore.db.labels.id
417
+ - spec/fixtures/graph.db/neostore.propertystore.db
418
+ - spec/fixtures/graph.db/neostore.propertystore.db.arrays
419
+ - spec/fixtures/graph.db/neostore.propertystore.db.arrays.id
420
+ - spec/fixtures/graph.db/neostore.propertystore.db.id
421
+ - spec/fixtures/graph.db/neostore.propertystore.db.index
422
+ - spec/fixtures/graph.db/neostore.propertystore.db.index.id
423
+ - spec/fixtures/graph.db/neostore.propertystore.db.index.keys
424
+ - spec/fixtures/graph.db/neostore.propertystore.db.index.keys.id
425
+ - spec/fixtures/graph.db/neostore.propertystore.db.strings
426
+ - spec/fixtures/graph.db/neostore.propertystore.db.strings.id
427
+ - spec/fixtures/graph.db/neostore.relationshipstore.db
428
+ - spec/fixtures/graph.db/neostore.relationshipstore.db.id
429
+ - spec/fixtures/graph.db/neostore.relationshiptypestore.db
430
+ - spec/fixtures/graph.db/neostore.relationshiptypestore.db.id
431
+ - spec/fixtures/graph.db/neostore.relationshiptypestore.db.names
432
+ - spec/fixtures/graph.db/neostore.relationshiptypestore.db.names.id
433
+ - spec/fixtures/graph.db/neostore.schemastore.db
434
+ - spec/fixtures/graph.db/neostore.schemastore.db.id
435
+ - spec/fixtures/graph.db/nioneo_logical.log.active
436
+ - spec/fixtures/graph.db/nioneo_logical.log.v0
437
+ - spec/fixtures/graph.db/nioneo_logical.log.v1
438
+ - spec/fixtures/graph.db/nioneo_logical.log.v10
439
+ - spec/fixtures/graph.db/nioneo_logical.log.v11
440
+ - spec/fixtures/graph.db/nioneo_logical.log.v12
441
+ - spec/fixtures/graph.db/nioneo_logical.log.v13
442
+ - spec/fixtures/graph.db/nioneo_logical.log.v14
443
+ - spec/fixtures/graph.db/nioneo_logical.log.v15
444
+ - spec/fixtures/graph.db/nioneo_logical.log.v16
445
+ - spec/fixtures/graph.db/nioneo_logical.log.v17
446
+ - spec/fixtures/graph.db/nioneo_logical.log.v18
447
+ - spec/fixtures/graph.db/nioneo_logical.log.v19
448
+ - spec/fixtures/graph.db/nioneo_logical.log.v2
449
+ - spec/fixtures/graph.db/nioneo_logical.log.v20
450
+ - spec/fixtures/graph.db/nioneo_logical.log.v21
451
+ - spec/fixtures/graph.db/nioneo_logical.log.v22
452
+ - spec/fixtures/graph.db/nioneo_logical.log.v23
453
+ - spec/fixtures/graph.db/nioneo_logical.log.v24
454
+ - spec/fixtures/graph.db/nioneo_logical.log.v25
455
+ - spec/fixtures/graph.db/nioneo_logical.log.v26
456
+ - spec/fixtures/graph.db/nioneo_logical.log.v27
457
+ - spec/fixtures/graph.db/nioneo_logical.log.v28
458
+ - spec/fixtures/graph.db/nioneo_logical.log.v29
459
+ - spec/fixtures/graph.db/nioneo_logical.log.v3
460
+ - spec/fixtures/graph.db/nioneo_logical.log.v30
461
+ - spec/fixtures/graph.db/nioneo_logical.log.v31
462
+ - spec/fixtures/graph.db/nioneo_logical.log.v32
463
+ - spec/fixtures/graph.db/nioneo_logical.log.v33
464
+ - spec/fixtures/graph.db/nioneo_logical.log.v34
465
+ - spec/fixtures/graph.db/nioneo_logical.log.v35
466
+ - spec/fixtures/graph.db/nioneo_logical.log.v36
467
+ - spec/fixtures/graph.db/nioneo_logical.log.v37
468
+ - spec/fixtures/graph.db/nioneo_logical.log.v38
469
+ - spec/fixtures/graph.db/nioneo_logical.log.v39
470
+ - spec/fixtures/graph.db/nioneo_logical.log.v4
471
+ - spec/fixtures/graph.db/nioneo_logical.log.v40
472
+ - spec/fixtures/graph.db/nioneo_logical.log.v41
473
+ - spec/fixtures/graph.db/nioneo_logical.log.v42
474
+ - spec/fixtures/graph.db/nioneo_logical.log.v43
475
+ - spec/fixtures/graph.db/nioneo_logical.log.v44
476
+ - spec/fixtures/graph.db/nioneo_logical.log.v45
477
+ - spec/fixtures/graph.db/nioneo_logical.log.v46
478
+ - spec/fixtures/graph.db/nioneo_logical.log.v47
479
+ - spec/fixtures/graph.db/nioneo_logical.log.v48
480
+ - spec/fixtures/graph.db/nioneo_logical.log.v49
481
+ - spec/fixtures/graph.db/nioneo_logical.log.v5
482
+ - spec/fixtures/graph.db/nioneo_logical.log.v50
483
+ - spec/fixtures/graph.db/nioneo_logical.log.v51
484
+ - spec/fixtures/graph.db/nioneo_logical.log.v52
485
+ - spec/fixtures/graph.db/nioneo_logical.log.v53
486
+ - spec/fixtures/graph.db/nioneo_logical.log.v54
487
+ - spec/fixtures/graph.db/nioneo_logical.log.v55
488
+ - spec/fixtures/graph.db/nioneo_logical.log.v56
489
+ - spec/fixtures/graph.db/nioneo_logical.log.v57
490
+ - spec/fixtures/graph.db/nioneo_logical.log.v58
491
+ - spec/fixtures/graph.db/nioneo_logical.log.v59
492
+ - spec/fixtures/graph.db/nioneo_logical.log.v6
493
+ - spec/fixtures/graph.db/nioneo_logical.log.v60
494
+ - spec/fixtures/graph.db/nioneo_logical.log.v61
495
+ - spec/fixtures/graph.db/nioneo_logical.log.v62
496
+ - spec/fixtures/graph.db/nioneo_logical.log.v63
497
+ - spec/fixtures/graph.db/nioneo_logical.log.v64
498
+ - spec/fixtures/graph.db/nioneo_logical.log.v65
499
+ - spec/fixtures/graph.db/nioneo_logical.log.v7
500
+ - spec/fixtures/graph.db/nioneo_logical.log.v8
501
+ - spec/fixtures/graph.db/nioneo_logical.log.v9
502
+ - spec/fixtures/graph.db/schema/label/lucene/_0.fdt
503
+ - spec/fixtures/graph.db/schema/label/lucene/_0.fdx
504
+ - spec/fixtures/graph.db/schema/label/lucene/_0.fnm
505
+ - spec/fixtures/graph.db/schema/label/lucene/_0.frq
506
+ - spec/fixtures/graph.db/schema/label/lucene/_0.nrm
507
+ - spec/fixtures/graph.db/schema/label/lucene/_0.tii
508
+ - spec/fixtures/graph.db/schema/label/lucene/_0.tis
509
+ - spec/fixtures/graph.db/schema/label/lucene/segments.gen
510
+ - spec/fixtures/graph.db/schema/label/lucene/segments_1
511
+ - spec/fixtures/graph.db/store_lock
512
+ - spec/fixtures/graph.db/tm_tx_log.1
513
+ - spec/inputs/neo4j-client_spec.rb
514
+ - spec/inputs/neo4j_spec.rb
515
+ - spec/spec_helper.rb