Example #1
0
 def test_loads_normal(self):
     text = r'{"sort":true, "name":{"first":"benjamin", "last": "yan"}}'
     obj = objson.loads(text)
     self.assertIsNotNone(obj)
     self.assertTrue(obj.sort)
     self.assertEqual("benjamin", obj.name.first)
     self.assertEqual("yan", obj.name.last)
Example #2
0
def send_rest(url, method='GET', body=None, timeout=120, session=None, headers=None, proxies=None):
    all_headers = {'Content-Type': 'Application/json'}
    if headers:
        all_headers.update(headers)
    if not session:
        session = _default_session
    session.trust_env = False
    if hasattr(body, "dumps"):
        body = body.dumps()
    elif body and not isinstance(body, basestring):
        body = dumps(body)

    try:
        # retry when response code equal 503 and connection error
        now = time.time()
        response = session.request(method, url,
                                   data=body,
                                   headers=all_headers,
                                   proxies=proxies,
                                   timeout=timeout)
        logger.info('{method} {url} {body} : time elapse {elapse} s'.format(method=method, url=url, body=body,
                                                                            elapse=time.time() - now))
        result = objson.loads(response.content)

        return response.status_code, result
    except (requests.Timeout, requests.ConnectionError), e:
        logger.error('retry because of network error %s %s error: %s' % (method, url, e))
Example #3
0
    def test_dump_normal2(self):
        text = r'[{"name":"benjamin", "age":21}]'
        obj = objson.loads(text)
        expected = objson.dumps(obj)
        self.assertEqual(json.loads(text), json.loads(expected))

        expected = objson.dumps([dict(name="benjamin", age=21)])
        self.assertEqual(json.loads(text), json.loads(expected))
Example #4
0
 def test_dump_change_value(self):
     text = r'{"name":"benjamin", "age":21}'
     obj = objson.loads(text)
     obj.age = 30
     fp = StringIO()
     objson.dump(obj, fp)
     expected = json.loads(text)
     expected["age"] = 30
     self.assertEqual(expected, json.loads(fp.getvalue()))
Example #5
0
    def test_loads_exceptions2(self):
        text = r'{"class":true, "def":true, "case":true}'
        obj = objson.loads(text)
        self.assertTrue(obj.mclass)
        self.assertTrue(obj.mdef)
        self.assertTrue(obj.case)

        self.assertTrue(obj["class"])
        self.assertTrue(obj["def"])

        text = r'{"class":true, "mclass":false, "from-cookie": true, "0file":true}'
        obj = objson.loads(text)
        self.assertFalse(obj.mclass)
        self.assertTrue(obj["class"])
        self.assertTrue(obj.from_cookie)
        self.assertTrue(obj["from-cookie"])
        self.assertTrue(obj.m0file)
        self.assertTrue(obj["0file"])
Example #6
0
def benchmark_objson_set(text, times=1000000):
    obj = objson.loads(text)
    for _ in xrange(times):
        obj.name = 'benjamin2'
Example #7
0
def benchmark_objson_get(text, times=1000000):
    obj = objson.loads(text)
    for _ in xrange(times):
        x = obj.name
Example #8
0
def benchmark_objson(text, times=100000):
    for _ in xrange(times):
        objson.loads(text)
Example #9
0
def benchmark_objson_dumps(text, times=100000):
    obj = objson.loads(text)
    for _ in xrange(times):
        objson.dumps(obj)
Example #10
0
 def test_dump_normal(self):
     text = r'{"name":"benjamin", "age":21}'
     obj = objson.loads(text)
     fp = StringIO()
     objson.dump(obj, fp)
     self.assertEqual(json.loads(text), json.loads(fp.getvalue()))
Example #11
0
 def test_dumps(self):
     text = r'{"sort":true, "name":{"first":"benjamin", "last": "yan"}}'
     obj = objson.loads(text)
     actual = objson.dumps(obj)
     self.assertDictEqual(json.loads(text), json.loads(actual))
Example #12
0
 def test_loads_exceptions(self):
     tests = ["{"]
     for text in tests:
         self.assertIsNone(objson.loads(text))
Example #13
0
 def test_loads_basic(self):
     tests = [(r'"ben"', "ben"), ("1", 1), ("3.1415", 3.1415), ("true", True), ("false", False), ("[]", [])]
     for text, expected in tests:
         actual = objson.loads(text)
         self.assertEqual(expected, actual)