| #!/usr/bin/env python |
| import logging |
| ''' |
| Created on 24-Oct-2012 |
| |
| @authors: Anil Kumar (anilkumar.s@paxterrasolutions.com), |
| Raghav Kashyap(raghavkashyap@paxterrasolutions.com) |
| |
| |
| TestON is free software: you can redistribute it and/or modify |
| it under the terms of the GNU General Public License as published by |
| the Free Software Foundation, either version 2 of the License, or |
| (at your option) any later version. |
| |
| TestON is distributed in the hope that it will be useful, |
| but WITHOUT ANY WARRANTY; without even the implied warranty of |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| GNU General Public License for more details. |
| |
| You should have received a copy of the GNU General Public License |
| along with TestON. If not, see <http://www.gnu.org/licenses/>. |
| |
| |
| |
| ''' |
| |
| import re |
| from logging import Logger |
| |
| class Component(object): |
| ''' |
| This is the tempalte class for components |
| ''' |
| def __init__(self): |
| self.default = '' |
| self.wrapped = sys.modules[__name__] |
| |
| def __getattr__(self, name): |
| ''' |
| This will invoke, if the attribute wasn't found the usual ways. |
| Here it will look for assert_attribute and will execute when AttributeError occurs. |
| It will return the result of the assert_attribute. |
| ''' |
| try: |
| return getattr(self.wrapped, name) |
| except AttributeError: |
| try: |
| def experimentHandling(**kwargs): |
| if main.EXPERIMENTAL_MODE == main.TRUE: |
| result = self.experimentRun(**kwargs) |
| main.log.info("EXPERIMENTAL MODE. API "+str(name)+" not yet implemented. Returning dummy values") |
| return result |
| else: |
| return main.FALSE |
| return experimentHandling |
| except TypeError,e: |
| main.log.error("Arguments for experimental mode does not have key 'retruns'" + e) |
| |
| |
| def connect(self): |
| |
| vars(main)[self.name+'log'] = logging.getLogger(self.name) |
| |
| session_file = main.logdir+"/"+self.name+".session" |
| self.log_handler = logging.FileHandler(session_file) |
| self.log_handler.setLevel(logging.DEBUG) |
| |
| vars(main)[self.name+'log'].setLevel(logging.DEBUG) |
| _formatter = logging.Formatter("%(asctime)s %(name)-10s: %(levelname)-8s: %(message)s") |
| self.log_handler.setFormatter(_formatter) |
| vars(main)[self.name+'log'].addHandler(self.log_handler) |
| # Adding header for the component log |
| vars(main)[self.name+'log'].info(main.logHeader) |
| # Opening the session log to append command's execution output |
| self.logfile_handler = open(session_file,"a") |
| |
| return "Dummy" |
| |
| def execute(self,cmd): |
| return main.TRUE |
| #import commands |
| #return commands.getoutput(cmd) |
| |
| def disconnect(self): |
| return main.TRUE |
| |
| def config(self): |
| self = self |
| # Need to update the configuration code |
| |
| def cleanup(self): |
| return main.TRUE |
| |
| def log(self,message): |
| ''' |
| Here finding the for the component to which the |
| log message based on the called child object. |
| ''' |
| vars(main)[self.name+'log'].info("\n"+message+"\n") |
| |
| def close_log_handles(self) : |
| vars(main)[self.name+'log'].removeHandler(self.log_handler) |
| if self.logfile_handler: |
| self.logfile_handler.close() |
| |
| def get_version(self): |
| return "Version unknown" |
| |
| def experimentRun(self,**kwargs): |
| args = utilities.parse_args(["RETURNS"],**kwargs) |
| return args["RETURNS"] |
| |
| |
| if __name__ != "__main__": |
| import sys |
| sys.modules[__name__] = Component() |