Ejemplo n.º 1
0
    def Run(self):
        """
        The program body for the thread.  This is not called
        directly, but is launched indirectly using the C{Start}
        member.
        """

        while True:
            # Wait at most self.qtimeout seconds for a new message to send
            # before sending a ping to let the other end know we're still
            # connected.
            try:
                # Queue.get([block[, timeout]])
                data = self.msgQueue.get(True, self.qtimeout)
                if data == None:
                    print "SenderThread: Stop() called, terminating"
                    break
            except Queue.Empty:
                data = cerealizer.dumps({'type': 'ping'})

            try:
                sendmessage(self.sock, data)
            except:
                print "SenderThread: caught exception, terminating: "
                traceback.print_exc(file=sys.stdout)
                break
Ejemplo n.º 2
0
    def test_setstate_hacked(self):
        class Sec4:
            pass

        cerealizer.register(Sec4)
        o = Sec4()
        Sec4.__setstate__ = lambda obj, state: self.fail()
        cerealizer.loads(cerealizer.dumps(o))
Ejemplo n.º 3
0
    def test_getstate_hacked(self):
        class Sec5:
            pass

        cerealizer.register(Sec5)
        o = Sec5()
        Sec5.__getstate__ = lambda obj: self.fail()
        cerealizer.loads(cerealizer.dumps(o))
Ejemplo n.º 4
0
    def test_new_hacked(self):
        class Sec6:
            pass

        cerealizer.register(Sec6)
        o = Sec6()
        Sec6.__new__ = lambda Class: self.fail()
        cerealizer.loads(cerealizer.dumps(o))
Ejemplo n.º 5
0
 def test_cycle2(self):
   class Obj11(object):
     pass
   cerealizer.register(Obj11)
   o = Obj11()
   o.o = o
   o2 = cerealizer.loads(cerealizer.dumps(o))
   assert o2.o is o2
Ejemplo n.º 6
0
    def dumps(self):
        """Unique.dumps() -> string

Saves the Unique object to a string. The default implementation uses Cerealizer."""
        soya._SAVING = self
        s = cerealizer.dumps(self, 1)
        soya._SAVING = None
        return s
Ejemplo n.º 7
0
    def test_cycle2(self):
        class ObjEmpty(object):
            pass

        cerealizer.register(ObjEmpty)
        o = ObjEmpty()
        o.o = o
        o2 = cerealizer.loads(cerealizer.dumps(o))
        assert o2.o is o2
Ejemplo n.º 8
0
 def test_cycle3(self):
   class Parent: pass
   class Child:
     def __init__(self, parent): self.parent = parent
     def __getstate__(self): return (self.parent,)
     def __setstate__(self, state): self.parent = state[0]
   cerealizer.register(Parent)
   cerealizer.register(Child)
   
   p = Parent()
   p.c = Child(p)
   p2 = cerealizer.loads(cerealizer.dumps(p))
   assert not p2.c.parent is None
Ejemplo n.º 9
0
    def test_cycle3(self):
        class Parent: pass
        class Child:
            def __init__(self, parent): self.parent = parent
            def __getstate__(self): return (self.parent,)
            def __setstate__(self, state): self.parent = state[0]

        cerealizer.register(Parent)
        cerealizer.register(Child)

        p = Parent()
        p.c = Child(p)
        p2 = cerealizer.loads(cerealizer.dumps(p))
        assert p2.c.parent is not None
Ejemplo n.º 10
0
    def test_upload(self):
        score = {2: [(95908, 5, 'ball', 'ae023fbc6bf4a764fdba0423ea7bb801d80bde51')]}
        score_str = binascii.hexlify(cerealizer.dumps(score))
        # score_str = "63657265616c310a330a646963740a6c6973740a7475706c650a340a6939353930380a69350a75340a62616c6c7534300a61653032336662633662663461373634666462613034323365613762623830316438306264653531310a72310a69320a310a72320a72300a"

        attrs = {
            "songName": "Song title",
            "songHash": "dadacafe",
            "version": "4.0",
            "scores": score_str,
        }
        response = self.client.get('/upload', attrs)

        # check the response
        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.content, b"True")
        # check objects
        self.assertEqual(Score.objects.count(), 1)
        self.assertEqual(Song.objects.count(), 1)
        self.assertEqual(Player.objects.count(), 1)
Ejemplo n.º 11
0
 def test_alias1(self):
   class OldObj(object):
     def __init__(self):
       self.x    = 1
       self.name = "jiba"
   cerealizer.register(OldObj)
   o = OldObj()
   s = cerealizer.dumps(o)
   
   reload(cerealizer)
   class NewObj(object):
     def __init__(self):
       self.x    = 2
       self.name = "jiba2"
   cerealizer.register(NewObj)
   cerealizer.register_alias(NewObj, "__main__.OldObj")
   o = cerealizer.loads(s)
   assert o.__class__ is NewObj
   assert o.x    == 1
   assert o.name == "jiba"
Ejemplo n.º 12
0
    def test_alias(self):
        class OldObj(object):
            def __init__(self):
                self.x = 1
                self.name = "jiba"
        cerealizer.register(OldObj)
        o = OldObj()
        s = cerealizer.dumps(o)

        imp.reload(cerealizer)
        class NewObj(object):
            def __init__(self):
                self.x = 2
                self.name = "jiba2"
        cerealizer.register(NewObj)
        cerealizer.register_alias(NewObj, "__main__.OldObj")
        o = cerealizer.loads(s)
        assert o.__class__ is NewObj
        assert o.x == 1
        assert o.name == "jiba"
Ejemplo n.º 13
0
    def Run(self):
        """
        The program body for the thread.  This is not called
        directly, but is launched indirectly using the C{Start}
        member.
        """

        while self.keepSending:
            # Wait at most self.qtimeout seconds for a new message to send
            # before sending a ping to let the other end know we're still
            # connected.
            try:
                # Queue.get([block[, timeout]])
                data = self.msgQueue.get(True, self.qtimeout)
            except Queue.Empty:
                data = cerealizer.dumps({'type': 'ping'})

            try:
                sendmessage(self.sock, data)
            except:
                print "SenderThread: caught exception, terminating: "
                print "    ", sys.exc_info()
                self.keepSending = False
                break
Ejemplo n.º 14
0
 def save(self, filename): #write savegame data
     f = open(filename, "wb") #open file to write out data
     data = cerealizer.dumps([self.obj_props, self.game_props]) #cerealize object data
     data = zlib.compress(data, 9) #compress pickled data
     f.write(data) #write out data
     f.close() #and close written file
Ejemplo n.º 15
0
 def testIntegrity(self):
     expected = self.scores
     scoresSerial = binascii.hexlify(cerealizer.dumps(self.scores))
     result = cerealizer.loads(binascii.unhexlify(scoresSerial))
     self.assertEqual(result, expected)
Ejemplo n.º 16
0
 def loads_dumps_and_compare(self, obj1):
     obj2 = cerealizer.loads(cerealizer.dumps(obj1))
     assert obj1 == obj2
Ejemplo n.º 17
0
 def dumps(self):
   soya._SAVING = self
   s = cerealizer.dumps(self, 1)
   soya._SAVING = None
   return s
Ejemplo n.º 18
0
 def send(self, message):
     # Putting messages on the queue, then having the SenderThread take them
     # off as available and send them, ensures that they get sent in order.
     self.msgQueue.put(cerealizer.dumps(message))
Ejemplo n.º 19
0
 def test_new_hacked(self):
   class Sec6: pass
   cerealizer.register(Sec6)
   o = Sec6()
   Sec6.__new__ = lambda Class: self.fail()
   cerealizer.loads(cerealizer.dumps(o))
Ejemplo n.º 20
0
    self.o = None
    self.l = [1, 2, 3, 4]
    
cerealizer.register(O)
cerealizer.freeze_configuration()


l = []
for i in range(20000):
  o = O()
  if l: o.o = l[-1]
  l.append(o)

print("cerealizer")
t = time.time()
s = cerealizer.dumps(l)
print("dumps in", time.time() - t, "s,", len(s), "bytes length")

t = time.time()
l2 = cerealizer.loads(s)
print("loads in", time.time() - t, "s")


import pickle

print()
print("pickle")
t = time.time()
s = pickle.dumps(l)
print("dumps in", time.time() - t, "s,", len(s), "bytes length")
Ejemplo n.º 21
0
 def test_getstate_hacked(self):
   class Sec5: pass
   cerealizer.register(Sec5)
   o = Sec5()
   Sec5.__getstate__ = lambda obj: self.fail()
   cerealizer.loads(cerealizer.dumps(o))
Ejemplo n.º 22
0
 def test_setstate_hacked(self):
   class Sec4: pass
   cerealizer.register(Sec4)
   o = Sec4()
   Sec4.__setstate__ = lambda obj, state: self.fail()
   cerealizer.loads(cerealizer.dumps(o))
Ejemplo n.º 23
0
 def test_register1(self):
   class Sec1: pass
   self.assertRaises(cerealizer.NonCerealizableObjectError, lambda : cerealizer.dumps(Sec1()))
Ejemplo n.º 24
0
 def getObfuscatedScores(self):
     s = {}
     for difficulty in self.highScores.keys():
         s[difficulty.id] = [(score, stars, name, self.getScoreHash(difficulty, score, stars, name)) for score, stars, name in self.highScores[difficulty]]
     return binascii.hexlify(cerealizer.dumps(s))
Ejemplo n.º 25
0
def dumps(obj):
    """ Serialize the given object and return it's string form. """
    objstr = cerealizer.dumps(obj)
    return objstr
Ejemplo n.º 26
0
def create_query_string(kwargs):
    return 'function_args=' + PMS.String.Quote(
        PMS.String.Encode(cerealizer.dumps(kwargs)))
Ejemplo n.º 27
0
 def dumps(self):
     return cerealizer.dumps(self)
Ejemplo n.º 28
0
    def test_register1(self):
        class Sec1:
            pass

        self.assertRaises(cerealizer.NonCerealizableObjectError,
                          lambda: cerealizer.dumps(Sec1()))
Ejemplo n.º 29
0
 def test_identity(self):
   o  = {}
   l1 = [o, o]
   l2 = cerealizer.loads(cerealizer.dumps(l1))
   assert l2[0] is l2[1]
Ejemplo n.º 30
0
 def serialize(self):
     #it would be great if this was encrypted
     #would could also fix this with using a public-key algorithim for p2p communication
     temp = pickle.dumps(self)
     return temp
Ejemplo n.º 31
0
 def loads_dumps_and_compare(self, obj1):
   obj2 = cerealizer.loads(cerealizer.dumps(obj1))
   assert obj1 == obj2
Ejemplo n.º 32
0
 def dumps(self):
   return base64.encodestring(cerealizer.dumps(self))
Ejemplo n.º 33
0
 def test_cycle1(self):
   obj1 = [1, [2.2, "jiba"]]
   obj1[1].append(obj1)
   obj2 = cerealizer.loads(cerealizer.dumps(obj1))
   assert repr(obj1) == repr(obj2) # Cannot use == on cyclic list!
Ejemplo n.º 34
0
def pack(obj):
    serialized_obj = cerealizer.dumps(obj)
    encoded_string = safe_encode(serialized_obj)
    return urllib.quote(encoded_string)
Ejemplo n.º 35
0
 def test_identity(self):
     o = {}
     l1 = [o, o]
     l2 = cerealizer.loads(cerealizer.dumps(l1))
     assert l2[0] is l2[1]
Ejemplo n.º 36
0
def pack(obj):
    serialized_obj = cerealizer.dumps(obj)
    encoded_string = safe_encode(serialized_obj)
    return urllib.quote(encoded_string)
Ejemplo n.º 37
0
 def test_cycle1(self):
     obj1 = [1, [2.2, "jiba"]]
     obj1[1].append(obj1)
     obj2 = cerealizer.loads(cerealizer.dumps(obj1))
     assert repr(obj1) == repr(obj2) # Cannot use == on cyclic list!
Ejemplo n.º 38
0
	def save(self, filename): #write savegame data
		f = open(filename, "wb") #open file to write out data
		data = cerealizer.dumps([self.obj_props, self.game_props]) #cerealize object data
		data = zlib.compress(data, 9) #compress pickled data
		f.write(data) #write data
		f.close() #and close written file
def create_query_string(kwargs):
  return 'function_args='+PMS.String.Quote(PMS.String.Encode(cerealizer.dumps(kwargs)))