def round_trip(self, doc): bson_bytes = to_bson(doc) self.assertEqual(bson_bytes, bsonjs.loads(bsonjs.dumps(bson_bytes))) # Check compatibility between bsonjs and json_util self.assertEqual(doc, json_util.loads( bsonjs.dumps(bson_bytes), json_options=json_util.STRICT_JSON_OPTIONS)) self.assertEqual(bson_bytes, bsonjs.loads(json_util.dumps( doc, json_options=json_util.STRICT_JSON_OPTIONS)))
def test_dump_basic(self): json_str = '{ "test" : "me" }' bson_bytes = bsonjs.loads(json_str) filep = StringIO() bsonjs.dump(bson_bytes, filep) filep.seek(0) self.assertEqual(json_str, filep.read())
def test_load_unicode(self): json_unicode = u'{ "test" : "me" }' class UnicodeRead(object): def read(self): return json_unicode self.assertEqual(bsonjs.loads(json_unicode), bsonjs.load(UnicodeRead()))
def setUpClass(cls) -> None: cls.dict = { 'a': 'sdg', 'b': .5, 'aihghfasiuhhsdojkhgfhoijhdgh': 8762135476, 'f': { 'fdghgdfh': 763187225, 'dfsgh': 'fd' }, 'd': [1, 2, 3, 4, 45], } cls.json = json.dumps(cls.dict) cls.doc = LazyDoc(bsonjs.loads(cls.json))
def dump_to_file(self, entry): oplog_entry_in_json_format=dumps(entry) ## DISCUSS dumps # Reading ts value from Timestamp(ts,i) oplog_entry_epoch_time = entry['ts'].time LOG.info("timestamp : '%s'",oplog_entry_epoch_time) start_time, end_time = self.get_oplog_file_name(oplog_entry_epoch_time) oplog_file_name = str(start_time) + '-' + str(end_time) + '.bson' LOG.info("timestamp : '%s' belong '%s'",oplog_entry_epoch_time, oplog_file_name) LOG.info("oplogEntry '%s'",oplog_entry_in_json_format) bson_bytes = bsonjs.loads(oplog_entry_in_json_format) f= open("/var/vcap/store/oplogDump/"+oplog_file_name,"a") f.write(bson_bytes) f.close() self.write_to_localdb(oplog_file_name)
# noqa: E501 :param body: ${KEY} to be created :type body: dict | bytes :rtype: str """ if connexion.request.is_json: body = connexion.request.get_json() # noqa: E501 doc_id = str(uuid.uuid4()) body['_id'] = doc_id body['_sys'] = {'created_ts': int(time.time()), 'created_by': connexion.request.headers['x-api-user']} body_str = json.dumps(body) collection.insert_one(RawBSONDocument(bsonjs.loads(body_str))) qKey='{}{}'.format(KEY, dpath(body)) publisher(body_str, routing_key='{}.create'.format(qKey), retry=True, declare=createQueues(qKey), headers={'_id':doc_id}) skey = '{}|{}'.format(KEY, doc_id) r.set(skey, body_str, ex=3) r.delete(KEY) return doc_id def delete${KEY}(ID): # noqa: E501 """Delete the ${KEY} instance based on ID # noqa: E501
def bsonjs_loads(json_str): """Provide same API as json_util.loads""" return to_object(bsonjs.loads(json_str))
def test_load_basic(self): json_str = '{ "test" : "me" }' filep = StringIO(json_str) self.assertEqual(bsonjs.loads(json_str), bsonjs.load(filep))
def test_dump_throws_no_write_attribute(self): bson_bytes = bsonjs.loads('{ "test" : "me" }') not_file = {} self.assertRaises(AttributeError, bsonjs.dump, bson_bytes, not_file)
def test_loads_multiple_json_documents(self): json_str = '{ "test" : "me" }' self.assertEqual(bsonjs.loads(json_str), bsonjs.loads(json_str + "{}"))
def test_dumps_multiple_bson_documents(self): json_str = '{ "test" : "me" }' bson_bytes = bsonjs.loads(json_str) self.assertEqual(json_str, bsonjs.dumps(bson_bytes + bson_bytes))
def test_load_mongodb_extended_type_at_top_level(self): self.assertRaises(ValueError, bsonjs.loads, '{"$numberLong": "42"}') self.assertRaises(ValueError, bsonjs.loads, '{"$numberLong": "42", "a": 1}') _ = bsonjs.loads('{"a": 1, "$numberLong": "42"}')
def test_load_mongodb_extended_type_at_top_level(self): _ = bsonjs.loads('{"$numberLong": "42"}') _ = bsonjs.loads('{"$numberLong": "42", "a": 1}') _ = bsonjs.loads('{"a": 1, "$numberLong": "42"}')