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