PROTON-799: Test for the Wrapper and rbkey system
Project: http://git-wip-us.apache.org/repos/asf/qpid-proton/repo Commit: http://git-wip-us.apache.org/repos/asf/qpid-proton/commit/30d3271d Tree: http://git-wip-us.apache.org/repos/asf/qpid-proton/tree/30d3271d Diff: http://git-wip-us.apache.org/repos/asf/qpid-proton/diff/30d3271d Branch: refs/heads/ruby-engine-apis Commit: 30d3271d18d9d6389fb75dc8cac5e50648bbb29d Parents: 548cf27 Author: Darryl L. Pierce <mcpie...@gmail.com> Authored: Thu May 14 15:57:02 2015 -0400 Committer: Darryl L. Pierce <mcpie...@gmail.com> Committed: Mon May 18 11:33:32 2015 -0400 ---------------------------------------------------------------------- examples/ruby/wrapper_test.rb | 82 ++++++++++++++++++++++++++ proton-c/bindings/ruby/lib/qpid_proton.rb | 1 + 2 files changed, 83 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/30d3271d/examples/ruby/wrapper_test.rb ---------------------------------------------------------------------- diff --git a/examples/ruby/wrapper_test.rb b/examples/ruby/wrapper_test.rb new file mode 100644 index 0000000..ca7e250 --- /dev/null +++ b/examples/ruby/wrapper_test.rb @@ -0,0 +1,82 @@ +#-- +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +#++ + +require 'qpid_proton' + +def how_many_transports?(expected) + count = ObjectSpace.each_object(Qpid::Proton::Transport).count + if expected.min == expected.max + expectation = "#{expected.min}" + else + expectation = "#{expected.min} <= count <= #{expected.max}" + end + puts "Transport count: found #{count}, expected #{expectation} (#{expected.include?(count) ? 'Good' : 'Bad'})" +end + +transport = Qpid::Proton::Transport.new +timpl = transport.impl + +puts "=================================" +puts "= Storing my original transport =" +puts "=================================" +puts " Stored transport=#{transport} (#{Cproton.pni_address_of(timpl).to_s(16)})" +how_many_transports?(1..1) +puts "=================================" +transport.instance_eval { @first_name = "Darryl"; @last_name = "Pierce", @instance_id = 717 } +transport = nil + + +puts "" +max = 1000 +puts "Creating #{max} instances of Transport" +(0...max).each do |which| + t = Qpid::Proton::Transport.new + t.instance_eval { @instance_id = which } + t = nil +end + +puts "" +puts "====================================" +puts "= Retrieving my original transport =" +puts "====================================" +transport = Qpid::Proton::Transport.wrap(timpl) +puts "Retrieved transport=#{transport} (#{Cproton.pni_address_of(timpl).to_s(16)})" +how_many_transports?(1..1001) +puts "====================================" +puts "My transport attributes:" +puts transport + +transport = nil +GC.start +how_many_transports?(1..1) + +puts "" +puts "======================================" +puts "= Throwing away the Transport object =" +puts "======================================" +transport = nil +timpl.instance_eval { @proton_wrapper = nil } +GC.start +begin + transport = Qpid::Proton::Transport.wrap(timpl) + puts "!!! This should fail!" +rescue Qpid::Proton::ProtonError => error + puts "Good, it failed..." +end +how_many_transports?(0..0) http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/30d3271d/proton-c/bindings/ruby/lib/qpid_proton.rb ---------------------------------------------------------------------- diff --git a/proton-c/bindings/ruby/lib/qpid_proton.rb b/proton-c/bindings/ruby/lib/qpid_proton.rb index 58b95d0..467d959 100644 --- a/proton-c/bindings/ruby/lib/qpid_proton.rb +++ b/proton-c/bindings/ruby/lib/qpid_proton.rb @@ -19,6 +19,7 @@ require "cproton" require "date" +require "weakref" if RUBY_VERSION < "1.9" require "kconv" --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org For additional commands, e-mail: commits-h...@qpid.apache.org