testSMSJob
authorSandro Knauß <knauss@netzguerilla.net>
Fri, 08 Oct 2010 02:07:01 +0200
changeset 49 b1d0f7ffbb64
parent 48 32763e344d3b
child 50 30a40d7e2590
testSMSJob
iro/anbieter/anbieter.py
iro/anbieter/smstrade.py
iro/iro.py
iro/job.py
iro/providerlist.py
iro/tests/testWorker.py
--- a/iro/anbieter/anbieter.py	Fri Oct 08 00:03:38 2010 +0200
+++ b/iro/anbieter/anbieter.py	Fri Oct 08 02:07:01 2010 +0200
@@ -21,3 +21,6 @@
         pass
     def sendMail(self,mail,recipients):
         pass
+    
+    def setJob(self, job):
+        self.job=job
--- a/iro/anbieter/smstrade.py	Fri Oct 08 00:03:38 2010 +0200
+++ b/iro/anbieter/smstrade.py	Fri Oct 08 02:07:01 2010 +0200
@@ -16,10 +16,8 @@
 from sipgate import  NoValidStatusCode
 from telnumber import telnumber, NotATelNumber
 import ConfigParser
-import xmlrpclib
-import base64
-import gsm0338
 import urllib, httplib
+from httplib import socket
 
 import logging
 logger=logging.getLogger("smstrade")
@@ -57,7 +55,7 @@
         try:
             return self.statusCodes[self.code]
         except IndexError:
-            raise UnkownStatusCode(self.code)
+            raise UnknownStatusCode(self.code)
 
      def __int__(self):
         if not self.code in self.statusCodes.keys():
--- a/iro/iro.py	Fri Oct 08 00:03:38 2010 +0200
+++ b/iro/iro.py	Fri Oct 08 02:07:01 2010 +0200
@@ -126,7 +126,7 @@
     provider.setDefault("fax","sipgate")
     provider.setDefault("mail","localhost")
     jobqueue=Joblist(manager,  queue, provider)
-    
+   
     userdb=MyUserDB(userlist,jobqueue)
 
     #working thread erstellen
--- a/iro/job.py	Fri Oct 08 00:03:38 2010 +0200
+++ b/iro/job.py	Fri Oct 08 02:07:01 2010 +0200
@@ -11,9 +11,6 @@
 #You should have received a copy of the GNU General Public License
 #along with this program; if not, see <http://www.gnu.org/licenses/>.
 
-import logging
-logger=logging.getLogger("job")
-
 class Job(object):
     '''
     Basic class for all jobs
@@ -32,6 +29,9 @@
         
     def stop(self):
         self.status = "stopped"
+
+    def setLog(self,log):
+        self.log=log
         
     def getStatus(self,detailed=False):
         if detailed and self.status == "started" or self.status == "sended":
@@ -48,14 +48,12 @@
         return None
         
     def addGood(self, good):
-        logger.debug('Job(%d)-send to %s'%(self.id, str(good)))
         if type(good) == list:
             self.dStatus['good']=self.dStatus['good']+good
         else:
             self.dStatus['good'].append(good)
     
     def addFailed(self, failed):
-        logger.debug('Job(%d)-faild to send to %s'%(self.id, str(failed)))
         if type(failed) == list:
             self.dStatus['failed']=self.dStatus['failed']+failed
         else:
--- a/iro/providerlist.py	Fri Oct 08 00:03:38 2010 +0200
+++ b/iro/providerlist.py	Fri Oct 08 02:07:01 2010 +0200
@@ -37,11 +37,16 @@
         llist.sort()
         return llist
 
+    def status(self):
+        ret="provider:%s"%self.provider
+        ret +="\ntypes:%s"%self.types
+        return ret+"\ndefaults:%s"%self.defaults
+
     def getProvider(self, stype,  name="default"):
         if name=="default":
             return self.getDefault(stype)["class"]
-        
+
         if not stype in self.provider[name] ["types"]:
-            raise "argh"
+            raise Exception("argh")
 
         return self.provider[name]["class"]
--- a/iro/tests/testWorker.py	Fri Oct 08 00:03:38 2010 +0200
+++ b/iro/tests/testWorker.py	Fri Oct 08 02:07:01 2010 +0200
@@ -5,10 +5,13 @@
 from time import sleep
 
 from multiprocessing import Queue
-from multiprocessing.managers import BaseManager,ListProxy
+from multiprocessing.managers import BaseManager, ListProxy
 
 from iro.worker import Worker
-from iro.job import Job
+from iro.job import Job, SMSJob
+from iro.anbieter.anbieter import anbieter
+from iro.anbieter.content import SMS
+from iro.providerlist import Providerlist
 
 from logging.handlers import BufferingHandler
 
@@ -28,7 +31,6 @@
 
     def emit(self, record):
         if record.exc_info:                                                      #sonst geht das append schief, weil nicht picklebar
-            print record.exc_info
             record.exc_info=record.exc_info[:-1]                                              
         self.buffer.append(record.__dict__)
 
@@ -42,8 +44,10 @@
 class MyManager(BaseManager):
     pass
 MyManager.register('Job', Job) 
+MyManager.register('SMSJob', SMSJob) 
 MyManager.register('BadJob', BadJob) 
 MyManager.register('list', list, ListProxy)
+MyManager.register('Providerlist',Providerlist) 
 
 class TestWorker(unittest.TestCase):
     def setUp(self):
@@ -55,6 +59,9 @@
         self.manager.start()
         self.setUpLogging()
 
+        self.providerlist=self.manager.Providerlist()
+        self.providerlist.add("test", anbieter() , ["sms",  ])
+        
         #eigentlich Workerprocess starten
         self.worker= Worker(self.queue)
         self.worker.start()
@@ -115,7 +122,6 @@
         sleep(.1)
         self.stop()
         self.assertEqual(job.getStatus(),("error",{}))
-        print self.buffer
         self.assertEqual([(l['levelno'],l['msg']) for l in self.buffer if l['name']=="iro.worker"],
                 [(20,'Workerprocess läuft nun...'),
                  (20,'ein neuer Job(1)'),
@@ -124,6 +130,17 @@
         self.assertEqual(self.buffer[-1]['exc_info'][0],type(error))
         self.assertEqual(str(self.buffer[-1]['exc_info'][1]),str(error))
 
+    def testSMSJob(self):
+        job=self.manager.SMSJob(self.providerlist, "test", "name", SMS("message"),[012345])
+        self.assertEqual(job.getStatus(),("init",{}))
+        self.queue.put(job)
+        sleep(.1)
+        self.stop()
+        self.assertEqual(job.getStatus(),("sended",{'failed': [], 'good': []}))
+        self.assertEqual([(l['levelno'],l['msg']) for l in self.buffer if l['name']=="iro.worker"],
+                [(20,'Workerprocess läuft nun...'),
+                 (20,'ein neuer Job(1)'),
+                 (20,'Job(1) fertig ;)')])
 
 
 if __name__ == "__main__":