stress.rb 907 B

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