summaryrefslogtreecommitdiff
path: root/qpid/cpp/bindings/qmf/tests/ruby_console.rb
blob: c071829f09451686d50b63dcb660c302dd3f54d7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
#!/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 'qmf'
require 'socket'

class App < Qmf::ConsoleHandler

  def dump_schema
    packages = @qmfc.get_packages
    puts "----- Packages -----"
    packages.each do |p|
      puts p
      puts "    ----- Object Classes -----"
      classes = @qmfc.get_classes(p)
      classes.each do |c|
        puts "    #{c.name}"

        puts "        ---- Properties ----"
        props = c.properties
        props.each do |prop|
          puts "        #{prop.name}"
        end

        puts "        ---- Statistics ----"
        stats = c.statistics
        stats.each do |stat|
          puts "        #{stat.name}"
        end

        puts "        ---- Methods ----"
        methods = c.methods
        methods.each do |method|
          puts "        #{method.name}"
          puts "            ---- Args ----"
          args = method.arguments
          args.each do |arg|
            puts "            #{arg.name}"
          end
        end
      end

      puts "    ----- Event Classes -----"
      classes = @qmfc.get_classes(p, Qmf::CLASS_EVENT)
      classes.each do |c|
        puts "    #{c.name}"
        puts "        ---- Args ----"
        args = c.arguments
        args.each do |arg|
          puts "        #{arg.name}"
        end
      end
    end
    puts "-----"
  end

  def main
    @settings = Qmf::ConnectionSettings.new
    @settings.set_attr("host", ARGV[0]) if ARGV.size > 0
    @settings.set_attr("port", ARGV[1].to_i) if ARGV.size > 1
    @connection = Qmf::Connection.new(@settings)
    @qmfc = Qmf::Console.new

    @broker = @qmfc.add_connection(@connection)
    @broker.waitForStable

    dump_schema

    agents = @qmfc.get_agents()
    puts "---- Agents ----"
    agents.each do |a|
      puts "  => #{a.label}"
    end
    puts "----"

    for idx in 0...20
      blist = @qmfc.get_objects(Qmf::Query.new(:class => "broker"))
      puts "---- Brokers ----"
      blist.each do |b|
        puts "    ---- Broker ----"
        puts "    systemRef: #{b.get_attr('systemRef')}"
        puts "    port     : #{b.get_attr('port')}"
        puts "    uptime   : #{b.get_attr('uptime') / 1000000000}"
      end
      puts "----"
      sleep(5)
    end

    sleep(5)
    puts "Deleting connection..."
    @qmfc.del_connection(@broker)
    puts "    done"
    sleep
  end
end

app = App.new
app.main