blob: 972d5977b89bac8fdbb0dc2ed3765ac3b698a68c [file]
#!/usr/bin/ruby
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
#
require 'test_base'
class ConsoleTest < ConsoleTestBase
def test_A_agent_presence
assert(@connection.connected?, "Connection not connected")
agents = []
count = 0
while agents.size == 0
agents = @qmfc.objects(Qmf::Query.new(:class => "agent"))
sleep(1)
count += 1
fail("Timed out waiting for remote agent") if count > 10
end
agentList = @qmfc.agents
assert_equal(agentList.size, 2, "Number of agents reported by Console")
end
def test_A_connection_settings
begin
@settings.bogusAttribute = 25
fail("Connection settings accepted bogus attribute")
rescue
end
end
def test_B_basic_method_invocation
parent = @qmfc.object(:class => "parent")
assert(parent, "Number of 'parent' objects")
for seq in 0...10
result = parent.echo(seq)
assert_equal(result.status, 0, "Method Response Status")
assert_equal(result.text, "OK", "Method Response Text")
assert_equal(result.args.sequence, seq, "Echo Response Sequence")
end
result = parent.set_numerics("bogus")
assert_equal(result.status, 1)
assert_equal(result.text, "Invalid argument value for test")
end
def test_C_basic_types_numeric_big
parent = @qmfc.object(:class =>"parent")
assert(parent, "Number of parent objects")
result = parent.set_numerics("big")
assert_equal(result.status, 0, "Method Response Status")
assert_equal(result.text, "OK", "Method Response Text")
parent.update
assert_equal(parent.uint64val, 0x9494949449494949)
assert_equal(parent.uint32val, 0xA5A55A5A)
assert_equal(parent.uint16val, 0xB66B)
assert_equal(parent.uint8val, 0xC7)
assert_equal(parent.int64val, 1000000000000000000)
assert_equal(parent.int32val, 1000000000)
assert_equal(parent.int16val, 10000)
assert_equal(parent.int8val, 100)
end
def test_C_basic_types_numeric_small
parent = @qmfc.object(:class =>"parent")
assert(parent, "Number of parent objects")
result = parent.set_numerics("small")
assert_equal(result.status, 0, "Method Response Status")
assert_equal(result.text, "OK", "Method Response Text")
parent.update
assert_equal(parent.uint64val, 4)
assert_equal(parent.uint32val, 5)
assert_equal(parent.uint16val, 6)
assert_equal(parent.uint8val, 7)
assert_equal(parent.int64val, 8)
assert_equal(parent.int32val, 9)
assert_equal(parent.int16val, 10)
assert_equal(parent.int8val, 11)
end
def test_C_basic_types_numeric_negative
parent = @qmfc.object(:class =>"parent")
assert(parent, "Number of parent objects")
result = parent.set_numerics("negative")
assert_equal(result.status, 0, "Method Response Status")
assert_equal(result.text, "OK", "Method Response Text")
parent.update
assert_equal(parent.uint64val, 0)
assert_equal(parent.uint32val, 0)
assert_equal(parent.uint16val, 0)
assert_equal(parent.uint8val, 0)
assert_equal(parent.int64val, -10000000000)
assert_equal(parent.int32val, -100000)
assert_equal(parent.int16val, -1000)
assert_equal(parent.int8val, -100)
end
def test_C_basic_types_string_short
parent = @qmfc.object(:class =>"parent")
assert(parent, "Number of parent objects")
strings = []
strings << ""
strings << "A"
strings << "BC"
strings << "DEF"
strings << "GHIJKLMNOPQRSTUVWXYZ"
big = "a"
for i in 0...254
big << "X"
end
strings << big
strings.each do |str|
result = parent.set_short_string(str)
assert_equal(result.status, 0, "Method Response Status")
compare = str
compare = compare[0..254] if compare.size > 255
assert_equal(result.args.value, compare, "Value returned by method")
parent.update
assert_equal(parent.sstrval, compare, "Value stored in the object")
end
end
def test_C_basic_types_string_long
parent = @qmfc.object(:class =>"parent")
assert(parent, "Number of parent objects")
strings = []
strings << ""
strings << "A"
strings << "BC"
strings << "DEF"
strings << "GHIJKLMNOPQRSTUVWXYZ"
big = "a"
for i in 0...270
big << "X"
end
strings << big
strings.each do |str|
result = parent.set_long_string(str)
assert_equal(result.status, 0, "Method Response Status")
assert_equal(result.args.value, str, "Value returned by method")
parent.update
assert_equal(parent.lstrval, str, "Value stored in the object")
end
end
def test_D_userid_for_method
parent = @qmfc.object(:class => "parent")
assert(parent, "Number of parent objects")
result = parent.probe_userid
assert_equal(result.status, 0, "Method Response Status")
assert_equal(result.args.userid, "anonymous")
end
def test_D_get_by_object_id
parent = @qmfc.object(:class => "parent")
assert(parent, "Number of parent objects")
list = @qmfc.objects(:object_id => parent.object_id)
assert_equal(list.size, 1)
bad_oid = Qmf::ObjectId.new
list = @qmfc.objects(:object_id => bad_oid)
assert_equal(list.size, 0)
# TODO: test a bad_oid that has an agent-bank that is not associated with an attached agent.
end
def test_D_get_with_agent
agents = @qmfc.agents
agents.each do |agent|
if agent.label == "agent_test_label"
parent = @qmfc.object(:class => "parent", :agent => agent)
assert(parent, "Number of parent objects")
return
end
end
fail("Didn't find a non-broker agent")
end
def test_E_filter_by_object_id
mgmt_exchange = @qmfc.object(:class => "exchange", 'name' => "qpid.management")
assert(mgmt_exchange, "No Management Exchange")
bindings = @qmfc.objects(:class => "binding", 'exchangeRef' => mgmt_exchange.object_id)
if bindings.size == 0
fail("No bindings found on management exchange")
end
bindings.each do |binding|
assert_equal(binding.exchangeRef, mgmt_exchange.object_id)
end
end
def test_F_events
@event_list.clear
@store_events = :true
parent = @qmfc.object(:class =>"parent")
assert(parent, "Number of parent objects")
parent.set_numerics("big")
parent.set_numerics("small")
parent.set_numerics("negative")
parent.set_short_string("TEST")
parent.set_long_string("LONG_TEST")
parent.probe_userid()
@store_events = :false
assert_equal(@event_list.length, 5)
assert_equal(@event_list[0].get_attr("uint32val"), 0xA5A55A5A)
assert_equal(@event_list[0].get_attr("strval"), "Unused")
# verify map and list event content.
# see agent for structure of listval and mapval
listval = @event_list[0].listval
assert(listval.class == Array)
assert_equal(listval.length, 5)
assert(listval[4].class == Array)
assert_equal(listval[4].length, 4)
assert(listval[4][3].class == Hash)
assert_equal(listval[4][3]["hi"], 10)
assert_equal(listval[4][3]["lo"], 5)
assert_equal(listval[4][3]["neg"], -3)
mapval = @event_list[0].mapval
assert(mapval.class == Hash)
assert_equal(mapval.length, 7)
assert_equal(mapval['aLong'], 9999999999)
assert_equal(mapval['aInt'], 54321)
assert_equal(mapval['aSigned'], -666)
assert_equal(mapval['aString'], "A String")
assert_equal(mapval['aFloat'], 3.1415)
assert(mapval['aMap'].class == Hash)
assert_equal(mapval['aMap'].length, 2)
assert_equal(mapval['aMap']['second'], 2)
assert(mapval['aList'].class == Array)
assert_equal(mapval['aList'].length, 4)
assert_equal(mapval['aList'][1], -1)
assert_equal(@event_list[1]["uint32val"], 5)
assert_equal(@event_list[1].get_attr("strval"), "Unused")
assert_equal(@event_list[2].get_attr("uint32val"), 0)
assert_equal(@event_list[2].get_attr("strval"), "Unused")
assert_equal(@event_list[3].get_attr("uint32val"), 0)
assert_equal(@event_list[3].get_attr("strval"), "TEST")
assert_equal(@event_list[4].get_attr("uint32val"), 0)
assert_equal(@event_list[4].get_attr("strval"), "LONG_TEST")
@event_list.clear
end
def test_G_basic_map_list_data
parent = @qmfc.object(:class => "parent")
assert(parent, "Number of 'parent' objects")
# see agent for structure of listval
assert(parent.listval.class == Array)
assert_equal(parent.listval.length, 5)
assert(parent.listval[4].class == Array)
assert_equal(parent.listval[4].length, 4)
assert(parent.listval[4][3].class == Hash)
assert_equal(parent.listval[4][3]["hi"], 10)
assert_equal(parent.listval[4][3]["lo"], 5)
assert_equal(parent.listval[4][3]["neg"], -3)
# see agent for structure of mapval
assert(parent.mapval.class == Hash)
assert_equal(parent.mapval.length, 7)
assert_equal(parent.mapval['aLong'], 9999999999)
assert_equal(parent.mapval['aInt'], 54321)
assert_equal(parent.mapval['aSigned'], -666)
assert_equal(parent.mapval['aString'], "A String")
assert_equal(parent.mapval['aFloat'], 3.1415)
assert(parent.mapval['aMap'].class == Hash)
assert_equal(parent.mapval['aMap'].length, 2)
assert_equal(parent.mapval['aMap']['second'], 2)
assert(parent.mapval['aList'].class == Array)
assert_equal(parent.mapval['aList'].length, 4)
assert_equal(parent.mapval['aList'][1], -1)
end
def test_H_map_list_method_call
parent = @qmfc.object(:class => "parent")
assert(parent, "Number of 'parent' objects")
inMap = {'aLong' => 9999999999,
'aInt' => 54321,
'aSigned' => -666,
'aString' => "A String",
'aFloat' => 3.1415,
'aList' => ['x', -1, 'y', 2],
'abool' => false}
inList = ['aString', 1, -1, 2.7182, {'aMap'=> -8}, true]
result = parent.test_map_list(inMap, inList)
assert_equal(result.status, 0)
assert_equal(result.text, "OK")
# verify returned values
assert_equal(inMap.length, result.args['outMap'].length)
result.args['outMap'].each do |k,v|
assert_equal(inMap[k], v)
end
assert_equal(inList.length, result.args['outList'].length)
for idx in 0...inList.length
assert_equal(inList[idx], result.args['outList'][idx])
end
end
def test_H_map_list_method_call_big
parent = @qmfc.object(:class => "parent")
assert(parent, "Number of 'parent' objects")
big_string = ""
segment = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
for idx in 1...1500
big_string = big_string + segment
end
inMap = {'aLong' => 9999999999,
'aInt' => 54321,
'aSigned' => -666,
'aString' => big_string,
'another' => big_string,
'aFloat' => 3.1415,
'aList' => ['x', -1, 'y', 2],
'abool' => false}
inList = ['aString', 1, -1, 2.7182, {'aMap'=> -8}, true]
result = parent.test_map_list(inMap, inList)
assert_equal(result.status, 0)
assert_equal(result.text, "OK")
# verify returned values
assert_equal(inMap.length, result.args['outMap'].length)
result.args['outMap'].each do |k,v|
assert_equal(inMap[k], v)
end
assert_equal(inList.length, result.args['outList'].length)
for idx in 0...inList.length
assert_equal(inList[idx], result.args['outList'][idx])
end
end
end
app = ConsoleTest.new