| #!/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 |
| |