| #!/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 |