#!/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 mnew.inspect, m.inspect | |
assert TestMessage.encode(mnew) == data | |
end | |
end | |
end | |
end |