• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#!/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
39