config_loader.py
Go to the documentation of this file.
00001 #!/usr/bin/env python
00002 #
00003 # Software License Agreement (BSD License)
00004 #
00005 # Copyright (c) 2010, Willow Garage, Inc.
00006 # All rights reserved.
00007 #
00008 # Redistribution and use in source and binary forms, with or without
00009 # modification, are permitted provided that the following conditions
00010 # are met:
00011 #
00012 #  * Redistributions of source code must retain the above copyright
00013 #    notice, this list of conditions and the following disclaimer.
00014 #  * Redistributions in binary form must reproduce the above
00015 #    copyright notice, this list of conditions and the following
00016 #    disclaimer in the documentation and/or other materials provided
00017 #    with the distribution.
00018 #  * Neither the name of the Willow Garage nor the names of its
00019 #    contributors may be used to endorse or promote products derived
00020 #    from this software without specific prior written permission.
00021 #
00022 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
00023 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
00024 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
00025 # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
00026 # COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
00027 # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
00028 # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
00029 # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
00030 # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
00031 # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
00032 # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
00033 # POSSIBILITY OF SUCH DAMAGE.
00034 
00035 ##\brief Kevin Watts
00036 ##\brief Loads configuration files for Test Manager
00037 
00038 PKG = 'life_test'
00039 import roslib
00040 roslib.load_manifest(PKG)
00041 
00042 from xml.dom import minidom
00043 
00044 import os, sys
00045 import rospy
00046 
00047 from test_param import *
00048 from test_bay import *
00049 
00050 ##\brief Loads configuration file about testing rooms
00051 def load_rooms_from_file():
00052     filepath = os.path.join(roslib.packages.get_pkg_dir(PKG), 'wg_test_rooms.xml')
00053 
00054     rooms = {}
00055 
00056     try:
00057         doc = minidom.parse(filepath)
00058         rooms_xml = doc.getElementsByTagName('room')
00059         for room_xml in rooms_xml:
00060             hostname = room_xml.attributes['hostname'].value
00061             room = TestRoom(hostname)
00062             for bay in room_xml.getElementsByTagName('bay'):
00063                 room.add_bay(TestBay(bay))
00064                 rooms[hostname] = room
00065 
00066         return rooms
00067     except:
00068         import traceback
00069         rospy.logerr('Caught exception loading rooms data. Exception: %s' % traceback.format_exc())
00070 
00071         return {}
00072   
00073 ##\brief Loads configuration file about tests
00074 def load_tests_from_file(test_xml_path = os.path.join(roslib.packages.get_pkg_dir(PKG), 'tests.xml')):
00075     my_tests = {}
00076 
00077     try:
00078         doc = minidom.parse(test_xml_path)
00079     except IOError:
00080         rospy.logerr('Could not load tests from %s' % test_xml_path)
00081         return {}
00082 
00083     try:
00084         tests = doc.getElementsByTagName('test')
00085         for test_xml in tests:
00086             serial = test_xml.attributes['serial'].value
00087             
00088             my_tst = LifeTest()
00089 
00090             if not my_tst.init_xml(test_xml):
00091                 print >> sys.stderr, "Unable to load test: %s" % str(test_xml)
00092                 return {}
00093 
00094             my_tests.setdefault(serial, []).append(my_tst)
00095                 
00096         return my_tests
00097     except:
00098         import traceback
00099         rospy.logerr('Caught exception parsing test XML. Exception: %s' % traceback.format_exc())
00100         return {}


life_test
Author(s): Kevin Watts
autogenerated on Sat Dec 28 2013 17:56:37