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)
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))
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))
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()))
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"])
def benchmark_objson_set(text, times=1000000): obj = objson.loads(text) for _ in xrange(times): obj.name = 'benjamin2'
def benchmark_objson_get(text, times=1000000): obj = objson.loads(text) for _ in xrange(times): x = obj.name
def benchmark_objson(text, times=100000): for _ in xrange(times): objson.loads(text)
def benchmark_objson_dumps(text, times=100000): obj = objson.loads(text) for _ in xrange(times): objson.dumps(obj)
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()))
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))
def test_loads_exceptions(self): tests = ["{"] for text in tests: self.assertIsNone(objson.loads(text))
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)