unbound 2.0.0 → 2.1.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3cc064fa99fcaf867d9474ede41d93ad258742e4
4
- data.tar.gz: dd0dd181466af047705bb39f94db521141eaa752
3
+ metadata.gz: 211b56bb13a5da0ea3a1b0421fe41f6411db3f28
4
+ data.tar.gz: 29166b0876346b3594e526ad2b73334617691ac0
5
5
  SHA512:
6
- metadata.gz: 51c16931c919a0635208f7ec37f4820f5a7b53e9ec7de05d34f8f0c52d0496dd3e2be8684bf7ac3fedf0cb91565d8c9a14076885b789efd91eda13efbb708f81
7
- data.tar.gz: b24c0751df53c3e44418db0c85de1b8678c9bd0f0a6180511316ba88adcf39bb17c499a458927661a38b6d5545b8fd9cc0bee76249a37ce59fdbdadbec9e67f1
6
+ metadata.gz: 4bfe6de68443b48c64989b827f010a348d5d02058013aacabb3190c03b212301bce6b859311d935d2258869a4c71db25e32375ba48f62c1cf057431fd9f9579b
7
+ data.tar.gz: 14b676d3ba013c16914494abe81b46c21341de3420a34e84801e869926dcc0d532a535971aa24d628f9f11fe3a3d50dcbd50797437b1d5e8818f8bc5edcac1a1
@@ -0,0 +1,26 @@
1
+ Next
2
+ ====
3
+
4
+ * Your contribution here.
5
+
6
+ 2.1.0 (2014-07-23)
7
+ ==================
8
+
9
+ * Make :spec default rake task - [@justfalter](https://github.com/justfalter)
10
+ * Add CONTRIBUTING.md - [@justfalter](https://github.com/justfalter)
11
+ * Rename Changes -> CHANGELOG.md - [@justfalter](https://github.com/justfalter)
12
+ * [#2](https://github.com/justfalter/unbound-ruby/pull/2): Add helper for synchronous queries - [@corny](https://github.com/corny)
13
+
14
+ 2.0.0 (2014-03-12)
15
+ ==================
16
+ * Breaking change: Unbound::Query#cancel! no longer cancels the query. Instead, use Unbound::Resolver#cancel_query to cancel queries. - [@justfalter](https://github.com/justfalter)
17
+ * Unbound::Query#async_id will now be set to nil when the query has finished. - [@justfalter](https://github.com/justfalter)
18
+ * Disable autoclose on the return of Context#io object. autoclose is bad news. - [@justfalter](https://github.com/justfalter)
19
+
20
+ 1.0.1 (2014-03-06)
21
+ ==================
22
+ * Fix issue where the resolver couldn't keep track of in-flight queries on 32-bit systems. - [@justfalter](https://github.com/justfalter)
23
+
24
+ 1.0.0 (2014-01-31)
25
+ ==================
26
+ * Initial release. - [@justfalter](https://github.com/justfalter)
@@ -0,0 +1,116 @@
1
+ Contributing to Unbound-Ruby
2
+ ============================
3
+
4
+ You're encouraged to submit [pull requests](https://github.com/justfalter/unbound-ruby/pulls), [propose features and discuss issues](https://github.com/justfalter/unbound-ruby/issues).
5
+
6
+ #### Fork the Project
7
+
8
+ Fork the [project on Github](https://github.com/justfalter/unbound-ruby) and check out your copy.
9
+
10
+ ```
11
+ git clone https://github.com/contributor/unbound-ruby.git
12
+ cd unbound-ruby
13
+ git remote add upstream https://github.com/justfalter/unbount-ruby.git
14
+ ```
15
+
16
+ #### Create a Topic Branch
17
+
18
+ Make sure your fork is up-to-date and create a topic branch for your feature or bug fix.
19
+
20
+ ```
21
+ git checkout master
22
+ git pull upstream master
23
+ git checkout -b my-feature-branch
24
+ ```
25
+
26
+ #### Bundle Install and Test
27
+
28
+ Ensure that you can build the project and run tests.
29
+
30
+ ```
31
+ bundle install
32
+ bundle exec rake
33
+ ```
34
+
35
+ #### Write Tests
36
+
37
+ Try to write a test that reproduces the problem you're trying to fix or describes a feature that you want to build. Add to [spec/](spec/).
38
+
39
+ We definitely appreciate pull requests that highlight or reproduce a problem, even without a fix.
40
+
41
+ #### Write Code
42
+
43
+ Implement your feature or bug fix.
44
+
45
+ Make sure that `bundle exec rake` completes without errors.
46
+
47
+ #### Write Documentation
48
+
49
+ Document any external behavior in the [README](README.md).
50
+
51
+ #### Update Changelog
52
+
53
+ Add a line to [CHANGELOG](CHANGELOG.md) under *Next Release*. Make it look like every other line, including your name and link to your Github account.
54
+
55
+ #### Commit Changes
56
+
57
+ Make sure git knows your name and email address:
58
+
59
+ ```
60
+ git config --global user.name "Your Name"
61
+ git config --global user.email "contributor@example.com"
62
+ ```
63
+
64
+ Writing good commit logs is important. A commit log should describe what changed and why.
65
+
66
+ ```
67
+ git add ...
68
+ git commit
69
+ ```
70
+
71
+ #### Push
72
+
73
+ ```
74
+ git push origin my-feature-branch
75
+ ```
76
+
77
+ #### Make a Pull Request
78
+
79
+ Go to https://github.com/contributor/unbound-ruby and select your feature branch. Click the 'Pull Request' button and fill out the form. Pull requests are usually reviewed within a few days.
80
+
81
+ #### Rebase
82
+
83
+ If you've been working on a change for a while, rebase with upstream/master.
84
+
85
+ ```
86
+ git fetch upstream
87
+ git rebase upstream/master
88
+ git push origin my-feature-branch -f
89
+ ```
90
+
91
+ #### Update CHANGELOG Again
92
+
93
+ Update the [CHANGELOG](CHANGELOG.md) with the pull request number. A typical entry looks as follows.
94
+
95
+ ```
96
+ * [#123](https://github.com/justfalter/unbound-ruby/pull/123): Reticulated splines - [@contributor](https://github.com/contributor).
97
+ ```
98
+
99
+ Amend your previous commit and force push the changes.
100
+
101
+ ```
102
+ git commit --amend
103
+ git push origin my-feature-branch -f
104
+ ```
105
+
106
+ #### Check on Your Pull Request
107
+
108
+ Go back to your pull request after a few minutes and see whether it passed muster with Travis-CI. Everything should look green, otherwise fix issues and amend your commit as described above.
109
+
110
+ #### Be Patient
111
+
112
+ It's likely that your change will not be merged and that the nitpicky maintainers will ask you to do more, or fix seemingly benign problems. Hang on there!
113
+
114
+ #### Thank You
115
+
116
+ Please do know that we really appreciate and value your time and work. We love you, really.
data/Gemfile CHANGED
@@ -8,7 +8,8 @@ group :development do
8
8
  end
9
9
 
10
10
  group :test do
11
- gem "rspec"
11
+ gem "rspec", "~> 3.0"
12
+ gem "rspec-its"
12
13
  gem "simplecov"
13
14
  gem "rake"
14
15
  end
data/Rakefile CHANGED
@@ -26,7 +26,7 @@ else
26
26
  Dir.glob("examples/*") +
27
27
  Dir.glob("spec/{*.rb}") +
28
28
  Dir.glob("spec/conf/{*.conf}") +
29
- %w(LICENSE.txt Gemfile README.md Rakefile VERSION)
29
+ %w(CONTRIBUTING.md CHANGELOG.md LICENSE.txt Gemfile README.md Rakefile VERSION)
30
30
 
31
31
  end
32
32
  Jeweler::RubygemsDotOrgTasks.new
@@ -41,3 +41,5 @@ else
41
41
  spec.pattern = FileList['spec/**/*_spec.rb']
42
42
  end
43
43
  end
44
+
45
+ task :default => [:spec]
data/VERSION CHANGED
@@ -1 +1 @@
1
- 2.0.0
1
+ 2.1.0
@@ -87,6 +87,20 @@ module Unbound
87
87
  Unbound::Bindings.ub_fd(@ub_ctx)
88
88
  end
89
89
 
90
+ def resolve(name, rrtype=1, rrclass=1)
91
+ check_closed!
92
+ result_ptr = FFI::MemoryPointer.new :pointer
93
+ raise_if_error!(
94
+ Unbound::Bindings.ub_resolve(
95
+ @ub_ctx, name, rrtype, rrclass, result_ptr))
96
+ ptr = result_ptr.get_pointer(0)
97
+ begin
98
+ Unbound::Result.new(ptr).to_resolv
99
+ ensure
100
+ Unbound::Bindings.ub_resolve_free ptr
101
+ end
102
+ end
103
+
90
104
  def resolve_async(name, rrtype, rrclass, callback, private_data = nil)
91
105
  check_closed!
92
106
  async_id_ptr = FFI::MemoryPointer.new :int
@@ -10,25 +10,25 @@ describe Unbound::Context do
10
10
  end
11
11
 
12
12
  subject { @ctx }
13
- its(:raise_on_noid?) { should be_false }
13
+ its(:raise_on_noid?) { should eq false }
14
14
 
15
15
 
16
16
  it "should let me indicate that it should raise an error if the error code is :noid" do
17
17
  @ctx.raise_on_noid = true
18
- expect(@ctx.raise_on_noid?).to be_true
18
+ expect(@ctx.raise_on_noid?).to eq true
19
19
  end
20
20
 
21
21
  describe "#closed?" do
22
22
  it "should indicate whether the context is closed or not" do
23
- expect(@ctx.closed?).to be_false
23
+ expect(@ctx.closed?).to eq false
24
24
  @ctx.close
25
- expect(@ctx.closed?).to be_true
25
+ expect(@ctx.closed?).to eq true
26
26
  end
27
27
  end
28
28
 
29
29
  describe "#close" do
30
30
  it "should delete the underlying context" do
31
- Unbound::Bindings.should_receive(:ub_ctx_delete)
31
+ expect(Unbound::Bindings).to receive(:ub_ctx_delete)
32
32
  @ctx.close
33
33
  end
34
34
 
@@ -70,6 +70,24 @@ describe Unbound::Context do
70
70
  end
71
71
  end
72
72
 
73
+
74
+ context "an synchronous name resolution method" do
75
+ # expects:
76
+ # @ctx
77
+ describe 'existing zone' do
78
+ before :each do
79
+ @ctx.load_config(UnboundHelper.config_file("local_zone.conf"))
80
+ end
81
+ subject{ @ctx.resolve("mycomputer.local", 1, 1) }
82
+ it "should have the proper answer" do
83
+ expect(subject.answer.length).to be(1)
84
+ answer = subject.answer[0]
85
+ expect(answer[0].to_s).to eq("mycomputer.local")
86
+ expect(answer[2].address.to_s).to eq("192.0.2.51")
87
+ end
88
+ end
89
+ end
90
+
73
91
  shared_examples_for "an asynchronous name resolution method" do
74
92
  # expects:
75
93
  # @processing_proc = A Proc
@@ -126,14 +144,14 @@ describe Unbound::Context do
126
144
 
127
145
  it "should raise an APIError when canceling a non-existent query" do
128
146
  @ctx.raise_on_noid = true
129
- expect(@ctx.raise_on_noid?).to be_true
147
+ expect(@ctx.raise_on_noid?).to eq true
130
148
  expect(lambda do
131
149
  @ctx.cancel_async_query(@async_id + 1)
132
150
  end).to raise_error(Unbound::APIError)
133
151
  end
134
152
 
135
153
  it "#raise_on_noid=false should raise an APIError when canceling a non-existent query" do
136
- expect(@ctx.raise_on_noid?).to be_false
154
+ expect(@ctx.raise_on_noid?).to eq false
137
155
  expect(@ctx.cancel_async_query(@async_id + 1)).to eq(:noid)
138
156
  end
139
157
  end
@@ -149,7 +167,7 @@ describe Unbound::Context do
149
167
  end
150
168
 
151
169
  it "should not be set to autoclose" do
152
- expect(@ctx.io.autoclose?).to be_false
170
+ expect(@ctx.io.autoclose?).to eq false
153
171
  end
154
172
 
155
173
  it "should not autoclose when garbage collection occurs" do
@@ -16,20 +16,20 @@ describe Unbound::Query do
16
16
 
17
17
  describe "#finished?" do
18
18
  it "should be false by default" do
19
- expect(@query.finished?).to be_false
19
+ expect(@query.finished?).to eq false
20
20
  end
21
21
  it "should be true after #cancel! is called" do
22
22
  @query.cancel!
23
- expect(@query.finished?).to be_true
23
+ expect(@query.finished?).to eq true
24
24
  end
25
25
  it "should be true after #error! is called" do
26
26
  @query.error!(1234)
27
- expect(@query.finished?).to be_true
27
+ expect(@query.finished?).to eq true
28
28
  end
29
29
  it "should be true after #answer! is called" do
30
30
  result = double("Result")
31
31
  @query.answer!(result)
32
- expect(@query.finished?).to be_true
32
+ expect(@query.finished?).to eq true
33
33
  end
34
34
  end
35
35
 
@@ -64,11 +64,11 @@ describe Unbound::Query do
64
64
 
65
65
  describe "#started?" do
66
66
  it "should be false by default" do
67
- expect(@query.started?).to be_false
67
+ expect(@query.started?).to eq false
68
68
  end
69
69
  it "should be true after start! is called" do
70
70
  @query.start!(1234)
71
- expect(@query.started?).to be_true
71
+ expect(@query.started?).to eq true
72
72
  end
73
73
  end
74
74
 
@@ -78,33 +78,33 @@ describe Unbound::Resolver do
78
78
 
79
79
  describe "#outstanding_queries?" do
80
80
  it "should be false if there are no outstanding queries" do
81
- expect(@resolver.outstanding_queries?).to be_false
81
+ expect(@resolver.outstanding_queries?).to eq false
82
82
  end
83
83
 
84
84
  it "should be true if there are any outstanding queries" do
85
85
  @resolver.send_query(query)
86
- expect(@resolver.outstanding_queries?).to be_true
86
+ expect(@resolver.outstanding_queries?).to eq true
87
87
  end
88
88
  end
89
89
 
90
90
  describe "#closed?" do
91
91
  it "should not be closed by default" do
92
- expect(@resolver.closed?).to be_false
92
+ expect(@resolver.closed?).to eq false
93
93
  end
94
94
  it "should be closed after calling #close" do
95
95
  @resolver.close
96
- expect(@resolver.closed?).to be_true
96
+ expect(@resolver.closed?).to eq true
97
97
  end
98
98
  end
99
99
 
100
100
  describe "#close" do
101
101
  it "should call #cancel_all" do
102
- @resolver.should_receive(:cancel_all).and_call_original
102
+ expect(@resolver).to receive(:cancel_all).and_call_original
103
103
  @resolver.close
104
104
  end
105
105
 
106
106
  it "should close the context" do
107
- @context.should_receive(:close).and_call_original
107
+ expect(@resolver).to receive(:close).and_call_original
108
108
  @resolver.close
109
109
  end
110
110
  end
@@ -2,6 +2,8 @@ require 'rubygems'
2
2
  require 'bundler'
3
3
  Bundler.setup :default, :test
4
4
 
5
+ require 'rspec/its'
6
+
5
7
  module UnboundHelper
6
8
  require 'pathname'
7
9
  SPEC_ROOT = Pathname.new(__FILE__).dirname.expand_path
metadata CHANGED
@@ -1,41 +1,41 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: unbound
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Ryan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-03-12 00:00:00.000000000 Z
11
+ date: 2014-07-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ffi
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '>='
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: jeweler
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '>='
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  description: Unbound DNS resolver bindings for Ruby
@@ -46,6 +46,8 @@ extra_rdoc_files:
46
46
  - LICENSE.txt
47
47
  - README.md
48
48
  files:
49
+ - CHANGELOG.md
50
+ - CONTRIBUTING.md
49
51
  - Gemfile
50
52
  - LICENSE.txt
51
53
  - README.md
@@ -81,17 +83,17 @@ require_paths:
81
83
  - lib
82
84
  required_ruby_version: !ruby/object:Gem::Requirement
83
85
  requirements:
84
- - - '>='
86
+ - - ">="
85
87
  - !ruby/object:Gem::Version
86
88
  version: '0'
87
89
  required_rubygems_version: !ruby/object:Gem::Requirement
88
90
  requirements:
89
- - - '>='
91
+ - - ">="
90
92
  - !ruby/object:Gem::Version
91
93
  version: '0'
92
94
  requirements: []
93
95
  rubyforge_project:
94
- rubygems_version: 2.0.14
96
+ rubygems_version: 2.2.0
95
97
  signing_key:
96
98
  specification_version: 4
97
99
  summary: Unbound DNS resolver bindings for Ruby