39 lines
907 B
Ruby
39 lines
907 B
Ruby
|
#!/usr/bin/ruby
|
||
|
|
||
|
require 'google/protobuf'
|
||
|
require 'test/unit'
|
||
|
|
||
|
module StressTest
|
||
|
pool = Google::Protobuf::DescriptorPool.new
|
||
|
pool.build do
|
||
|
add_message "TestMessage" do
|
||
|
optional :a, :int32, 1
|
||
|
repeated :b, :message, 2, "M"
|
||
|
end
|
||
|
add_message "M" do
|
||
|
optional :foo, :string, 1
|
||
|
end
|
||
|
end
|
||
|
|
||
|
TestMessage = pool.lookup("TestMessage").msgclass
|
||
|
M = pool.lookup("M").msgclass
|
||
|
|
||
|
class StressTest < Test::Unit::TestCase
|
||
|
def get_msg
|
||
|
TestMessage.new(:a => 1000,
|
||
|
:b => [M.new(:foo => "hello"),
|
||
|
M.new(:foo => "world")])
|
||
|
end
|
||
|
def test_stress
|
||
|
m = get_msg
|
||
|
data = TestMessage.encode(m)
|
||
|
100_000.times do
|
||
|
mnew = TestMessage.decode(data)
|
||
|
mnew = mnew.dup
|
||
|
assert_equal m.inspect, mnew.inspect
|
||
|
assert TestMessage.encode(mnew) == data
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|