use of edu.umass.cs.gnsserver.gnsapp.recordmap.NameRecord in project GNS by MobilityFirst.
the class Admintercessor method handleIncomingDumpResponsePackets.
/**
* Processes incoming Dump packets.
*
* @param json
* @param handler
*/
public void handleIncomingDumpResponsePackets(JSONObject json, ClientRequestHandlerInterface handler) {
try {
switch(Packet.getPacketType(json)) {
case DUMP_REQUEST:
try {
DumpRequestPacket<String> dumpResponse = new DumpRequestPacket<>(json, handler.getGnsNodeConfig());
int id = dumpResponse.getId();
// grab or make a new recordsMap
Map<String, TreeSet<NameRecord>> recordsMap = dumpStorage.get(id);
if (recordsMap == null) {
recordsMap = new TreeMap<>();
dumpStorage.put(id, recordsMap);
}
// pull the records out of the dump response and put them in dumpStorage
JSONArray jsonArray = dumpResponse.getJsonArray();
String serverID = dumpResponse.getPrimaryNameServer();
TreeSet<NameRecord> records = new TreeSet<>();
for (int i = 0; i < jsonArray.length(); i++) {
records.add(new NameRecord(null, jsonArray.getJSONObject(i)));
}
recordsMap.put(serverID, records);
} catch (JSONException e) {
ClientCommandProcessorConfig.getLogger().log(Level.WARNING, "JSON error during dump reponse processing: {0}", e);
}
break;
case SENTINAL:
// put the records in dumpResult and let the folks waiting know they are ready
try {
SentinalPacket sentinal = new SentinalPacket(json);
int id = sentinal.getId();
ClientCommandProcessorConfig.getLogger().log(Level.FINER, "Processing sentinel for {0}", id);
synchronized (dumpMonitor) {
dumpResult.put(id, dumpStorage.get(id));
dumpStorage.remove(id);
dumpMonitor.notifyAll();
}
} catch (JSONException e) {
ClientCommandProcessorConfig.getLogger().log(Level.WARNING, "JSON error during dump sentinel processing: {0}", e);
}
break;
}
} catch (JSONException e) {
ClientCommandProcessorConfig.getLogger().log(Level.WARNING, "JSON error while getting packet type: {0}", e);
}
}
use of edu.umass.cs.gnsserver.gnsapp.recordmap.NameRecord in project GNS by MobilityFirst.
the class NoSQLTest method test_21_UpdateEntireRecord.
/**
*
*/
@Test
public void test_21_UpdateEntireRecord() {
JSONObject json = new JSONObject();
try {
JSONObject innerJson = new JSONObject();
innerJson.put("key", "value");
json.put("map", innerJson);
} catch (JSONException e) {
fail("Problem creating json " + e);
}
ValuesMap valuesMap = new ValuesMap(json);
NameRecord nameRecord = new NameRecord(recordMap, guid2, valuesMap);
try {
instance.updateEntireRecord(collection, guid2, nameRecord.getValuesMap());
} catch (FailedDBOperationException | FieldNotFoundException e) {
fail("Problem during insert " + e);
}
}
use of edu.umass.cs.gnsserver.gnsapp.recordmap.NameRecord in project GNS by MobilityFirst.
the class NoSQLTest method test_01_Insert.
/**
*
*/
@Test
public void test_01_Insert() {
JSONObject json = new JSONObject();
try {
json.put(field, "some value");
} catch (JSONException e) {
fail("Problem creating json " + e);
}
ValuesMap valuesMap = new ValuesMap(json);
NameRecord nameRecord = new NameRecord(recordMap, guid, valuesMap);
try {
instance.insert(collection, guid, nameRecord.toJSONObject());
} catch (FailedDBOperationException | JSONException | RecordExistsException e) {
fail("Problem during insert " + e);
}
}
use of edu.umass.cs.gnsserver.gnsapp.recordmap.NameRecord in project GNS by MobilityFirst.
the class NoSQLTest method test_20_InsertRecord.
/**
*
*/
@Test
public void test_20_InsertRecord() {
JSONObject json = new JSONObject();
try {
json.put(field, "some value");
} catch (JSONException e) {
fail("Problem creating json " + e);
}
ValuesMap valuesMap = new ValuesMap(json);
NameRecord nameRecord = new NameRecord(recordMap, guid2, valuesMap);
try {
instance.insert(collection, guid2, nameRecord.toJSONObject());
} catch (FailedDBOperationException | JSONException | RecordExistsException e) {
fail("Problem during insert " + e);
}
}
use of edu.umass.cs.gnsserver.gnsapp.recordmap.NameRecord in project GNS by MobilityFirst.
the class NoSQLRecordsThroughputTest method testlookupMultipleSystemAndUserFields.
private static void testlookupMultipleSystemAndUserFields(String node, String guid, String field) {
//NoSQLRecords instance = new MongoRecords<String>(node);
NoSQLRecords instance = new DiskMapRecords(node);
GNSRecordMap<String> recordMap = new GNSRecordMap<String>(instance, COLLECTION_NAME);
JSONObject json = new JSONObject();
try {
json.put(field, "some value");
} catch (JSONException e) {
System.out.println("Problem creating json " + e);
}
ValuesMap valuesMap = new ValuesMap(json);
NameRecord nameRecord = new NameRecord(recordMap, guid, valuesMap);
try {
instance.insert(COLLECTION_NAME, guid, nameRecord.toJSONObject());
} catch (JSONException e) {
System.out.println("Problem writing json " + e);
} catch (FailedDBOperationException e) {
System.out.println("Problem adding " + json.toString() + " as value of " + guid + ": " + e);
} catch (RecordExistsException e) {
System.out.println(guid + " record already exists in database. Try something else." + e);
}
// and try to read it as fast as possible
try {
ArrayList<ColumnField> userFields = new ArrayList<>(Arrays.asList(new ColumnField(field, ColumnFieldType.USER_JSON)));
int frequency = 10000;
reset();
do {
Map<ColumnField, Object> map = instance.lookupSomeFields(COLLECTION_NAME, guid, NameRecord.NAME, NameRecord.VALUES_MAP, userFields);
if (incrCount() % frequency == 0) {
System.out.println(map);
System.out.println(DelayProfiler.getStats());
System.out.println("op/s = " + Format.formatTime(getCount() * 1000.0 / (System.currentTimeMillis() - initTime)));
if (getCount() > frequency * 20) {
System.out.println("**********************resetting************************");
reset();
}
}
} while (true);
} catch (FailedDBOperationException | RecordNotFoundException e) {
System.out.println("Lookup failed: " + e);
}
}
Aggregations