summaryrefslogtreecommitdiff
path: root/cpp/src/tests/verify_cluster_objects
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/tests/verify_cluster_objects')
-rwxr-xr-xcpp/src/tests/verify_cluster_objects107
1 files changed, 0 insertions, 107 deletions
diff --git a/cpp/src/tests/verify_cluster_objects b/cpp/src/tests/verify_cluster_objects
deleted file mode 100755
index 94661cf6b9..0000000000
--- a/cpp/src/tests/verify_cluster_objects
+++ /dev/null
@@ -1,107 +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.
-#
-
-# Verify managment objects are consistent in a cluster.
-# Arguments: url of one broker in the cluster.
-
-import qmf.console, sys, re
-
-class Session(qmf.console.Session):
- """A qmf.console.Session that caches useful values"""
-
- def __init__(self):
- qmf.console.Session.__init__(self)
- self.classes = None
-
- def all_classes(self):
- if self.classes is None:
- self.classes = [c for p in self.getPackages() for c in self.getClasses(p)]
- return self.classes
-
-class Broker:
- def __init__(self, url, qmf):
- self.url = url
- self.qmf = qmf
- self.broker = self.qmf.addBroker(url)
- self.broker._waitForStable()
- self.objects = None
- self.ignore_list = [ re.compile("org.apache.qpid.broker:system:") ]
-
- def get_objects(self):
- def ignore(name):
- for m in self.ignore_list:
- if m.match(name): return True
- if self.objects is None:
- obj_list = []
- ignored=0
- for c in self.qmf.all_classes():
- for o in self.qmf.getObjects(_key=c, _broker=self.broker):
- name=o.getObjectId().getObject()
- if not ignore(name): obj_list.append(name)
- else: ignored += 1
- self.objects = set(obj_list)
- if (len(obj_list) != len(self.objects)):
- raise Exception("Duplicates in object list for %s"%(self.url))
- print "%d objects on %s, ignored %d."%(len(self.objects), self.url, ignored)
- return self.objects
-
- def compare(self,other):
- def compare1(x,y):
- diff = x.get_objects() - y.get_objects()
- if diff:
- print "ERROR: found on %s but not %s"%(x, y)
- for o in diff: print " %s"%(o)
- return False
- return True
-
- so = compare1(self, other)
- os = compare1(other, self)
- return so and os
-
- def __str__(self): return self.url
-
- def get_cluster(self):
- """Given one Broker, return list of all brokers in its cluster"""
- clusters = self.qmf.getObjects(_class="cluster")
- if not clusters: raise ("%s is not a cluster member"%(self.url))
- def first_address(url):
- """Python doesn't understand the brokers URL syntax. Extract a simple addres"""
- return re.compile("amqp:tcp:([^,]*)").match(url).group(1)
- return [Broker(first_address(url), self.qmf)
- for url in clusters[0].members.split(";")]
-
- def __del__(self): self.qmf.delBroker(self.broker)
-
-def main(argv=None):
- if argv is None: argv = sys.argv
- qmf = Session()
- brokers = Broker(argv[1], qmf).get_cluster()
- print "%d members in cluster."%(len(brokers))
- base = brokers.pop(0)
- try:
- for b in brokers:
- if not base.compare(b): return 1
- print "No differences."
- return 0
- finally:
- del base
- del brokers
-
-if __name__ == "__main__": sys.exit(main())