def test_bigtest05(self): '''Get recids_hm_intint''' message = self.bridge.createMessage('bigtest') \ .setParam('action', 'recids_hm_intint') \ .setParam('size', self.size) self.bridge.sendMessage(message) res = HashMap.cast_(message.getResults()) assert res.size() == self.size assert Integer.cast_(res.get(0)).equals(0) assert Integer.cast_(res.get(5)).equals(5)
def get_recids_changes(message): """Retrieves the recids of the last changed documents""" last_recid = None table = 'bibrec' if message.getParam("table"): table = str(message.getParam("table")) if message.getParam("last_recid"): #last_recid = int(Integer.cast_(message.getParam("last_recid")).intValue()) last_recid = int(str(message.getParam("last_recid"))) mod_date = None if message.getParam("mod_date"): mod_date = str(message.getParam("mod_date")) max_records = 10000 if message.getParam('max_records'): max_records = int(Integer.cast_(message.getParam("max_records")).intValue()) if last_recid and last_recid == -1: mod_date = None (wid, results) = api_calls.dispatch("get_recids_changes", last_recid, max_recs=max_records, mod_date=mod_date, table=table) if results: data, last_recid, mod_date = results out = HashMap() #.of_(String, JArray_int) for k,v in data.items(): out.put(k, JArray_int(v)) message.setResults(out) message.setParam('mod_date', mod_date) message.setParam('last_recid', last_recid)
def diagnostic_test(message): out = [] message.setParam("query", "boson") perform_request_search_ints(message) res = JArray_int.cast_(message.getResults()) out.append('Search for "boson" retrieved: %s hits' % len(res) ) out.append('Total hits: %s' % Integer.cast_(message.getParam("total"))) message.setResults('\n'.join(out))
def xtest_bigtest05(self): '''Get recids_hm_intint -- TODO: move to demotest, it will not work, because it needs solr instance''' #req = QueryRequest() size = self.size hm = HashMap().of_(String, String) hm.put('action', 'recids_hm_intint') hm.put('size', str(size)) params = MapSolrParams(hm) req = LocalSolrQueryRequest(self.core, params) rsp = SolrQueryResponse() message = self.bridge.createMessage('bigtest_www') \ .setParam('response', rsp) \ .setParam('request', req) self.bridge.sendMessage(message) res = HashMap.cast_(message.getResults()) assert res.size() == self.size assert Integer.cast_(res.get(0)).equals(0) assert Integer.cast_(res.get(5)).equals(5)
def delete_record(message): """deletes record""" diff = message.getParam('diff') if diff: diff = int(str(diff)) else: diff = 5 # 5 secs older recid = int(Integer.cast_(message.getParam('recid')).intValue()) record = search_engine.get_record(recid) bibrecord.record_add_field(record, "980", subfields=[("c", "DELETED")]) ret = bibupload.bibupload(record, opt_mode='replace') recid = ret[1] message.setResults(Integer(recid)) # extra query needed because invenio sets modification date=NOW() # and so the deleted recs have modification_date<creation_date #dbquery.run_sql("UPDATE bibrec SET modification_date=NOW() + %s WHERE id=%s" % (diff, recid)) change_date(recid, diff=diff)
def test_get_recids_deleted(self): #time.sleep(1) # otherwise the new record has the same creation time as the old recs #message = self.bridge.createMessage('create_delete') #self.bridge.sendMessage(message) message = self.bridge.createMessage('create_record') self.bridge.sendMessage(message) created_recid = int(Integer.cast_(message.getResults()).intValue()) message = self.bridge.createMessage('delete_record').setParam('recid', created_recid) self.bridge.sendMessage(message) deleted_recid = int(str(message.getResults())) req = QueryRequest() rsp = SolrQueryResponse() message = self.bridge.createMessage('get_recids_changes') \ .setSender('InvenioKeepRecidUpdated') \ .setParam('response', rsp) \ .setParam('last_recid', 30) self.bridge.sendMessage(message) results = message.getResults() out = HashMap.cast_(results) added = JArray_int.cast_(out.get('ADDED')) updated = JArray_int.cast_(out.get('UPDATED')) deleted = JArray_int.cast_(out.get('DELETED')) message = self.bridge.createMessage('wipeout_record') \ .setParam('recid', deleted_recid) self.bridge.sendMessage(message) assert created_recid == deleted_recid assert len(added) == 0 assert len(updated) == 0 assert len(deleted) == 1 assert int(str(deleted[0])) == deleted_recid
def wipeout_record(message): recid = int(Integer.cast_(message.getParam('recid')).intValue()) bibupload_regression_tests.wipe_out_record_from_all_tables(recid)