blob: 082d5e22df089ab903f326643b08bf5f80e595d7 [file] [log] [blame]
Brian Silverman9c614bc2016-02-15 20:20:02 -05001#!/usr/bin/ruby
2
3require 'google/protobuf'
4require 'test/unit'
5
6module StressTest
7 pool = Google::Protobuf::DescriptorPool.new
8 pool.build do
9 add_message "TestMessage" do
10 optional :a, :int32, 1
11 repeated :b, :message, 2, "M"
12 end
13 add_message "M" do
14 optional :foo, :string, 1
15 end
16 end
17
18 TestMessage = pool.lookup("TestMessage").msgclass
19 M = pool.lookup("M").msgclass
20
21 class StressTest < Test::Unit::TestCase
22 def get_msg
23 TestMessage.new(:a => 1000,
24 :b => [M.new(:foo => "hello"),
25 M.new(:foo => "world")])
26 end
27 def test_stress
28 m = get_msg
29 data = TestMessage.encode(m)
30 100_000.times do
31 mnew = TestMessage.decode(data)
32 mnew = mnew.dup
33 assert_equal mnew.inspect, m.inspect
34 assert TestMessage.encode(mnew) == data
35 end
36 end
37 end
38end