summaryrefslogtreecommitdiff
path: root/qpid/python/examples/api
diff options
context:
space:
mode:
authorDarryl L. Pierce <mcpierce@apache.org>2013-09-18 21:15:24 +0000
committerDarryl L. Pierce <mcpierce@apache.org>2013-09-18 21:15:24 +0000
commit2414494947e9761548321ed6da9fbfc303f42f8d (patch)
treed491ee35d23bc28f591be888d58463541371b61e /qpid/python/examples/api
parentd04baf535485895d250945723469a043f6949cd5 (diff)
downloadqpid-python-2414494947e9761548321ed6da9fbfc303f42f8d.tar.gz
QPID-4924: Move the Python examples under the bindings directory.
They now are found with the other languages. git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1524574 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/python/examples/api')
-rwxr-xr-xqpid/python/examples/api/console99
-rwxr-xr-xqpid/python/examples/api/drain102
-rwxr-xr-xqpid/python/examples/api/hello56
-rwxr-xr-xqpid/python/examples/api/hello_xml81
-rwxr-xr-xqpid/python/examples/api/server100
-rwxr-xr-xqpid/python/examples/api/spout139
-rw-r--r--qpid/python/examples/api/statistics.py139
7 files changed, 0 insertions, 716 deletions
diff --git a/qpid/python/examples/api/console b/qpid/python/examples/api/console
deleted file mode 100755
index 2facc368c3..0000000000
--- a/qpid/python/examples/api/console
+++ /dev/null
@@ -1,99 +0,0 @@
-#!/usr/bin/env python
-#
-# 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.
-#
-
-import optparse, sys, traceback
-
-try:
- from qpid_messaging import *
-except:
- from qpid.messaging import *
-
-parser = optparse.OptionParser(usage="usage: %prog [options] ADDRESS ...",
- description="handle requests from the supplied address.")
-parser.add_option("-b", "--broker", default="localhost",
- help="connect to specified BROKER (default %default)")
-parser.add_option("-r", "--reconnect", action="store_true",
- help="enable auto reconnect")
-parser.add_option("-i", "--reconnect-interval", type="float", default=3,
- help="interval between reconnect attempts")
-parser.add_option("-l", "--reconnect-limit", type="int", default=10,
- help="maximum number of reconnect attempts")
-parser.add_option("-v", dest="verbose", action="store_true",
- help="enable logging")
-
-opts, args = parser.parse_args()
-
-if args:
- addr = args.pop(0)
-else:
- parser.error("address is required")
-
-conn = Connection(opts.broker,
- reconnect=opts.reconnect,
- reconnect_interval=opts.reconnect_interval,
- reconnect_limit=opts.reconnect_limit)
-
-try:
- conn.open()
- session = conn.session()
- sender = session.sender(addr)
- response_queue = "response-queue;{create:always}"
- receiver = session.receiver(response_queue)
- receiver.capacity = 10
-
- while True:
- cmdtype = None
- data = None
- input = raw_input("Type (eval/shell/exit, ENTER=shell):")
- if input != "exit":
- if input == "eval":
- cmdtype = input
- data = raw_input("Text to evaluate: ")
- elif input == "shell" or input == "":
- cmdtype = "shell"
- data = raw_input("Shell cmd: ")
-
- if cmdtype != None and data != "":
- msg = Message()
- msg.properties["type"] = cmdtype
- # TODO: fix this
- # msg.setProperty("type", cmdtype)
- msg.content = data
- msg.reply_to = response_queue
- try:
- sender.send(msg)
- response = receiver.fetch()
- print "Response:"
- print "%s" % response.content
- session.acknowledge(response)
- except SendError, e:
- print e
- else:
- break
- if sender is not None:
- sender.close()
- if receiver is not None:
- receiver.close()
-except ReceiverError, e:
- print e
-except KeyboardInterrupt:
- pass
-
-conn.close()
diff --git a/qpid/python/examples/api/drain b/qpid/python/examples/api/drain
deleted file mode 100755
index 2b15a50500..0000000000
--- a/qpid/python/examples/api/drain
+++ /dev/null
@@ -1,102 +0,0 @@
-#!/usr/bin/env python
-#
-# 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.
-#
-
-import optparse
-
-try:
- from qpid_messaging import *
-except:
- from qpid.messaging import *
-
-from qpid.util import URL
-from qpid.log import enable, DEBUG, WARN
-
-parser = optparse.OptionParser(usage="usage: %prog [options] ADDRESS ...",
- description="Drain messages from the supplied address.")
-parser.add_option("-b", "--broker", default="localhost",
- help="connect to specified BROKER (default %default)")
-parser.add_option("-c", "--count", type="int",
- help="number of messages to drain")
-parser.add_option("-f", "--forever", action="store_true",
- help="ignore timeout and wait forever")
-parser.add_option("-r", "--reconnect", action="store_true",
- help="enable auto reconnect")
-parser.add_option("-i", "--reconnect-interval", type="float", default=3,
- help="interval between reconnect attempts")
-parser.add_option("-l", "--reconnect-limit", type="int",
- help="maximum number of reconnect attempts")
-parser.add_option("-t", "--timeout", type="float", default=0,
- help="timeout in seconds to wait before exiting (default %default)")
-parser.add_option("-p", "--print", dest="format", default="%(M)s",
- help="format string for printing messages (default %default)")
-parser.add_option("-v", dest="verbose", action="store_true",
- help="enable logging")
-
-opts, args = parser.parse_args()
-
-if opts.verbose:
- enable("qpid", DEBUG)
-else:
- enable("qpid", WARN)
-
-if args:
- addr = args.pop(0)
-else:
- parser.error("address is required")
-if opts.forever:
- timeout = None
-else:
- timeout = opts.timeout
-
-class Formatter:
-
- def __init__(self, message):
- self.message = message
- self.environ = {"M": self.message,
- "P": self.message.properties,
- "C": self.message.content}
-
- def __getitem__(self, st):
- return eval(st, self.environ)
-
-conn = Connection(opts.broker,
- reconnect=opts.reconnect,
- reconnect_interval=opts.reconnect_interval,
- reconnect_limit=opts.reconnect_limit)
-try:
- conn.open()
- ssn = conn.session()
- rcv = ssn.receiver(addr)
-
- count = 0
- while not opts.count or count < opts.count:
- try:
- msg = rcv.fetch(timeout=timeout)
- print opts.format % Formatter(msg)
- count += 1
- ssn.acknowledge()
- except Empty:
- break
-except ReceiverError, e:
- print e
-except KeyboardInterrupt:
- pass
-
-conn.close()
diff --git a/qpid/python/examples/api/hello b/qpid/python/examples/api/hello
deleted file mode 100755
index 52ea955093..0000000000
--- a/qpid/python/examples/api/hello
+++ /dev/null
@@ -1,56 +0,0 @@
-#!/usr/bin/env python
-#
-# 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.
-#
-
-import sys
-
-try:
- from qpid_messaging import *
-except:
- from qpid.messaging import *
-
-if len(sys.argv)<2:
- broker = "localhost:5672"
-else:
- broker = sys.argv[1]
-
-if len(sys.argv)<3:
- address = "amq.topic"
-else:
- address = sys.argv[2]
-
-connection = Connection(broker)
-
-try:
- connection.open()
- session = connection.session()
-
- sender = session.sender(address)
- receiver = session.receiver(address)
-
- sender.send(Message("Hello world!"));
-
- message = receiver.fetch()
- print message.content
- session.acknowledge()
-
-except MessagingError,m:
- print m
-
-connection.close()
diff --git a/qpid/python/examples/api/hello_xml b/qpid/python/examples/api/hello_xml
deleted file mode 100755
index 05fa5cc7ba..0000000000
--- a/qpid/python/examples/api/hello_xml
+++ /dev/null
@@ -1,81 +0,0 @@
-#!/usr/bin/env python
-#
-# 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.
-#
-
-import sys
-
-try:
- from qpid_messaging import *
-except:
- from qpid.messaging import *
-
-broker = "localhost:5672"
-connection = Connection(broker)
-
-try:
- connection.open()
- session = connection.session()
-
-# Set up the receiver
- query = """
- let $w := ./weather
- return $w/station = 'Raleigh-Durham International Airport (KRDU)'
- and $w/temperature_f > 50
- and $w/temperature_f - $w/dewpoint > 5
- and $w/wind_speed_mph > 7
- and $w/wind_speed_mph < 20 """
-
-# query="./weather"
-
- address = """
- xml; {
- create: always,
- node:{ type: queue },
- link: {
- x-bindings: [{ exchange: xml, key: weather, arguments: { xquery: %r} }]
- }
- }
- """ % query
-
- receiver = session.receiver(address)
-
-# Send an observation
-
- observations = """
- <weather>
- <station>Raleigh-Durham International Airport (KRDU)</station>
- <wind_speed_mph>16</wind_speed_mph>
- <temperature_f>70</temperature_f>
- <dewpoint>35</dewpoint>
- </weather> """
-
- message = Message(subject="weather", content=observations)
- sender = session.sender("xml")
- sender.send(message)
-
-# Retrieve matching message from the receiver and print it
-
- message = receiver.fetch(timeout=1)
- print message.content
- session.acknowledge()
-
-except MessagingError,m:
- print m
-
-connection.close()
diff --git a/qpid/python/examples/api/server b/qpid/python/examples/api/server
deleted file mode 100755
index fb87951bad..0000000000
--- a/qpid/python/examples/api/server
+++ /dev/null
@@ -1,100 +0,0 @@
-#!/usr/bin/env python
-#
-# 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.
-#
-
-import optparse, sys, traceback
-
-try:
- from qpid_messaging import *
-except:
- from qpid.messaging import *
-
-from qpid.util import URL
-from subprocess import Popen, STDOUT, PIPE
-from qpid.log import enable, DEBUG, WARN
-
-parser = optparse.OptionParser(usage="usage: %prog [options] ADDRESS ...",
- description="handle requests from the supplied address.")
-parser.add_option("-b", "--broker", default="localhost",
- help="connect to specified BROKER (default %default)")
-parser.add_option("-r", "--reconnect", action="store_true",
- help="enable auto reconnect")
-parser.add_option("-i", "--reconnect-interval", type="float", default=3,
- help="interval between reconnect attempts")
-parser.add_option("-l", "--reconnect-limit", type="int",
- help="maximum number of reconnect attempts")
-parser.add_option("-v", dest="verbose", action="store_true",
- help="enable logging")
-
-opts, args = parser.parse_args()
-
-if opts.verbose:
- enable("qpid", DEBUG)
-else:
- enable("qpid", WARN)
-
-if args:
- addr = args.pop(0)
-else:
- parser.error("address is required")
-
-conn = Connection(opts.broker,
- reconnect=opts.reconnect,
- reconnect_interval=opts.reconnect_interval,
- reconnect_limit=opts.reconnect_limit)
-def dispatch(msg):
- msg_type = msg.properties.get("type")
- if msg_type == "shell":
- proc = Popen(msg.content, shell=True, stderr=STDOUT, stdin=PIPE, stdout=PIPE)
- output, _ = proc.communicate()
- result = Message(output)
- result.properties["exit"] = proc.returncode
- elif msg_type == "eval":
- try:
- content = str(eval(msg.content))
- except:
- content = traceback.format_exc()
- result = Message(content = content)
- else:
- result = Message("unrecognized message type: %s" % msg_type)
- return result
-
-try:
- conn.open()
- ssn = conn.session()
- rcv = ssn.receiver(addr)
-
- while True:
- msg = rcv.fetch()
- response = dispatch(msg)
- snd = None
- try:
- snd = ssn.sender(msg.reply_to)
- snd.send(response)
- except SendError, e:
- print e
- if snd is not None:
- snd.close()
- ssn.acknowledge()
-except ReceiverError, e:
- print e
-except KeyboardInterrupt:
- pass
-
-conn.close()
diff --git a/qpid/python/examples/api/spout b/qpid/python/examples/api/spout
deleted file mode 100755
index 48921d4387..0000000000
--- a/qpid/python/examples/api/spout
+++ /dev/null
@@ -1,139 +0,0 @@
-#!/usr/bin/env python
-#
-# 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.
-#
-
-import optparse, time
-
-try:
- from qpid_messaging import *
- from uuid import uuid4
-except:
- from qpid.messaging import *
-
-from qpid.util import URL
-from qpid.log import enable, DEBUG, WARN
-
-def nameval(st):
- idx = st.find("=")
- if idx >= 0:
- name = st[0:idx]
- value = st[idx+1:]
- else:
- name = st
- value = None
- return name, value
-
-parser = optparse.OptionParser(usage="usage: %prog [options] ADDRESS [ CONTENT ... ]",
- description="Send messages to the supplied address.")
-parser.add_option("-b", "--broker", default="localhost",
- help="connect to specified BROKER (default %default)")
-parser.add_option("-r", "--reconnect", action="store_true",
- help="enable auto reconnect")
-parser.add_option("-i", "--reconnect-interval", type="float", default=3,
- help="interval between reconnect attempts")
-parser.add_option("-l", "--reconnect-limit", type="int",
- help="maximum number of reconnect attempts")
-parser.add_option("-c", "--count", type="int", default=1,
- help="stop after count messages have been sent, zero disables (default %default)")
-parser.add_option("-d", "--durable", action="store_true",
- help="make the message persistent")
-parser.add_option("-t", "--timeout", type="float", default=None,
- help="exit after the specified time")
-parser.add_option("-I", "--id", help="use the supplied id instead of generating one")
-parser.add_option("-S", "--subject", help="specify a subject")
-parser.add_option("-R", "--reply-to", help="specify reply-to address")
-parser.add_option("-P", "--property", dest="properties", action="append", default=[],
- metavar="NAME=VALUE", help="specify message property")
-parser.add_option("-M", "--map", dest="entries", action="append", default=[],
- metavar="KEY=VALUE",
- help="specify map entry for message body")
-parser.add_option("-v", dest="verbose", action="store_true",
- help="enable logging")
-
-opts, args = parser.parse_args()
-
-if opts.verbose:
- enable("qpid", DEBUG)
-else:
- enable("qpid", WARN)
-
-if opts.id is None:
- spout_id = str(uuid4())
-else:
- spout_id = opts.id
-if args:
- addr = args.pop(0)
-else:
- parser.error("address is required")
-
-content = None
-content_type = None
-
-if args:
- text = " ".join(args)
-else:
- text = None
-
-if opts.entries:
- content = {}
- if text:
- content["text"] = text
- for e in opts.entries:
- name, val = nameval(e)
- content[name] = val
-else:
- content = text
- # no entries were supplied, so assume text/plain for
- # compatibility with java (and other) clients
- content_type = "text/plain"
-
-conn = Connection(opts.broker,
- reconnect=opts.reconnect,
- reconnect_interval=opts.reconnect_interval,
- reconnect_limit=opts.reconnect_limit)
-try:
- conn.open()
- ssn = conn.session()
- snd = ssn.sender(addr)
-
- count = 0
- start = time.time()
- while (opts.count == 0 or count < opts.count) and \
- (opts.timeout is None or time.time() - start < opts.timeout):
- msg = Message(subject=opts.subject,
- reply_to=opts.reply_to,
- content=content)
- if opts.durable:
- msg.durable = True
- if content_type is not None:
- msg.content_type = content_type
- msg.properties["spout-id"] = "%s:%s" % (spout_id, count)
- for p in opts.properties:
- name, val = nameval(p)
- msg.properties[name] = val
-
- snd.send(msg)
- count += 1
- print msg
-except SendError, e:
- print e
-except KeyboardInterrupt:
- pass
-
-conn.close()
diff --git a/qpid/python/examples/api/statistics.py b/qpid/python/examples/api/statistics.py
deleted file mode 100644
index 089b81b740..0000000000
--- a/qpid/python/examples/api/statistics.py
+++ /dev/null
@@ -1,139 +0,0 @@
-#!/usr/bin/env python
-#
-# 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.
-#
-
-import time
-
-TS = "ts"
-TIME_SEC = 1000000000
-MILLISECOND = 1000
-
-class Statistic:
- def message(self, msg):
- return
- def report(self):
- return ""
- def header(self):
- return ""
-
-
-class Throughput(Statistic):
- def __init__(self):
- self.messages = 0
- self.started = False
-
- def message(self, m):
- self.messages += 1
- if not self.started:
- self.start = time.time()
- self.started = True
-
- def header(self):
- return "tp(m/s)"
-
- def report(self):
- if self.started:
- elapsed = time.time() - self.start
- return str(int(self.messages/elapsed))
- else:
- return "0"
-
-
-class ThroughputAndLatency(Throughput):
- def __init__(self):
- Throughput.__init__(self)
- self.total = 0.0
- self.min = float('inf')
- self.max = -float('inf')
- self.samples = 0
-
- def message(self, m):
- Throughput.message(self, m)
- if TS in m.properties:
- self.samples+=1
- latency = MILLISECOND * (time.time() - float(m.properties[TS])/TIME_SEC)
- if latency > 0:
- self.total += latency
- if latency < self.min:
- self.min = latency
- if latency > self.max:
- self.max = latency
-
- def header(self):
-# Throughput.header(self)
- return "%s\tl-min\tl-max\tl-avg" % Throughput.header(self)
-
- def report(self):
- output = Throughput.report(self)
- if (self.samples > 0):
- output += "\t%.2f\t%.2f\t%.2f" %(self.min, self.max, self.total/self.samples)
- return output
-
-
-# Report batch and overall statistics
-class ReporterBase:
- def __init__(self, batch, wantHeader):
- self.batchSize = batch
- self.batchCount = 0
- self.headerPrinted = not wantHeader
- self.overall = None
- self.batch = None
-
- def create(self):
- return
-
- # Count message in the statistics
- def message(self, m):
- if self.overall == None:
- self.overall = self.create()
- self.overall.message(m)
- if self.batchSize:
- if self.batch == None:
- self.batch = self.create()
- self.batch.message(m)
- self.batchCount+=1
- if self.batchCount == self.batchSize:
- self.header()
- print self.batch.report()
- self.create()
- self.batchCount = 0
-
- # Print overall report.
- def report(self):
- if self.overall == None:
- self.overall = self.create()
- self.header()
- print self.overall.report()
-
- def header(self):
- if not self.headerPrinted:
- if self.overall == None:
- self.overall = self.create()
- print self.overall.header()
- self.headerPrinted = True
-
-
-class Reporter(ReporterBase):
- def __init__(self, batchSize, wantHeader, Stats):
- ReporterBase.__init__(self, batchSize, wantHeader)
- self.__stats = Stats
-
- def create(self):
- ClassName = self.__stats.__class__
- return ClassName()