Search in sources :

Example 1 with NumericByteIterator

use of site.ycsb.NumericByteIterator in project YCSB by brianfrankcooper.

the class TimeSeriesWorkload method verifyRow.

/**
 * Parses the values returned by a read or scan operation and determines whether
 * or not the integer value matches the hash and timestamp of the original timestamp.
 * Only works for raw data points, will not work for group-by's or downsampled data.
 * @param key The time series key.
 * @param cells The cells read by the DB.
 * @return {@link Status#OK} if the data matched or {@link Status#UNEXPECTED_STATE} if
 * the data did not match.
 */
protected Status verifyRow(final String key, final Map<String, ByteIterator> cells) {
    Status verifyStatus = Status.UNEXPECTED_STATE;
    long startTime = System.nanoTime();
    double value = 0;
    long timestamp = 0;
    final TreeMap<String, String> validationTags = new TreeMap<String, String>();
    for (final Entry<String, ByteIterator> entry : cells.entrySet()) {
        if (entry.getKey().equals(timestampKey)) {
            final NumericByteIterator it = (NumericByteIterator) entry.getValue();
            timestamp = it.getLong();
        } else if (entry.getKey().equals(valueKey)) {
            final NumericByteIterator it = (NumericByteIterator) entry.getValue();
            value = it.isFloatingPoint() ? it.getDouble() : it.getLong();
        } else {
            validationTags.put(entry.getKey(), entry.getValue().toString());
        }
    }
    if (validationFunction(key, timestamp, validationTags) == value) {
        verifyStatus = Status.OK;
    }
    long endTime = System.nanoTime();
    measurements.measure("VERIFY", (int) (endTime - startTime) / 1000);
    measurements.reportStatus("VERIFY", verifyStatus);
    return verifyStatus;
}
Also used : Status(site.ycsb.Status) NumericByteIterator(site.ycsb.NumericByteIterator) ByteIterator(site.ycsb.ByteIterator) StringByteIterator(site.ycsb.StringByteIterator) NumericByteIterator(site.ycsb.NumericByteIterator) TreeMap(java.util.TreeMap)

Example 2 with NumericByteIterator

use of site.ycsb.NumericByteIterator in project YCSB by brianfrankcooper.

the class TestTimeSeriesWorkload method verifyRow.

@Test
public void verifyRow() throws Exception {
    final Properties p = getUTProperties();
    final TimeSeriesWorkload wl = getWorkload(p, true);
    final TreeMap<String, String> validationTags = new TreeMap<String, String>();
    final HashMap<String, ByteIterator> cells = new HashMap<String, ByteIterator>();
    validationTags.put("AA", "AAAA");
    cells.put("AA", new StringByteIterator("AAAA"));
    validationTags.put("AB", "AAAB");
    cells.put("AB", new StringByteIterator("AAAB"));
    long hash = wl.validationFunction("AAAA", 1451606400L, validationTags);
    cells.put(TimeSeriesWorkload.TIMESTAMP_KEY_PROPERTY_DEFAULT, new NumericByteIterator(1451606400L));
    cells.put(TimeSeriesWorkload.VALUE_KEY_PROPERTY_DEFAULT, new NumericByteIterator(hash));
    assertEquals(wl.verifyRow("AAAA", cells), Status.OK);
    // tweak the last value a bit
    for (final ByteIterator it : cells.values()) {
        it.reset();
    }
    cells.put(TimeSeriesWorkload.VALUE_KEY_PROPERTY_DEFAULT, new NumericByteIterator(hash + 1));
    assertEquals(wl.verifyRow("AAAA", cells), Status.UNEXPECTED_STATE);
    // no value cell, returns an unexpected state
    for (final ByteIterator it : cells.values()) {
        it.reset();
    }
    cells.remove(TimeSeriesWorkload.VALUE_KEY_PROPERTY_DEFAULT);
    assertEquals(wl.verifyRow("AAAA", cells), Status.UNEXPECTED_STATE);
}
Also used : NumericByteIterator(site.ycsb.NumericByteIterator) ByteIterator(site.ycsb.ByteIterator) NumericByteIterator(site.ycsb.NumericByteIterator) StringByteIterator(site.ycsb.StringByteIterator) HashMap(java.util.HashMap) StringByteIterator(site.ycsb.StringByteIterator) Properties(java.util.Properties) TreeMap(java.util.TreeMap) Test(org.testng.annotations.Test)

Example 3 with NumericByteIterator

use of site.ycsb.NumericByteIterator in project YCSB by brianfrankcooper.

the class TestTimeSeriesWorkload method insertWithValidation.

@Test
public void insertWithValidation() throws Exception {
    final Properties p = getUTProperties();
    p.put(CoreWorkload.FIELD_COUNT_PROPERTY, "1");
    p.put(CoreWorkload.DATA_INTEGRITY_PROPERTY, "true");
    p.put(TimeSeriesWorkload.VALUE_TYPE_PROPERTY, "integers");
    final TimeSeriesWorkload wl = getWorkload(p, true);
    final Object threadState = wl.initThread(p, 0, 1);
    final MockDB db = new MockDB();
    for (int i = 0; i < 74; i++) {
        assertTrue(wl.doInsert(db, threadState));
    }
    assertEquals(db.keys.size(), 74);
    assertEquals(db.values.size(), 74);
    long timestamp = 1451606400;
    for (int i = 0; i < db.keys.size(); i++) {
        assertEquals(db.keys.get(i), "AAAA");
        assertEquals(db.values.get(i).get("AA").toString(), "AAAA");
        assertEquals(Utils.bytesToLong(db.values.get(i).get(TimeSeriesWorkload.TIMESTAMP_KEY_PROPERTY_DEFAULT).toArray()), timestamp);
        assertFalse(((NumericByteIterator) db.values.get(i).get(TimeSeriesWorkload.VALUE_KEY_PROPERTY_DEFAULT)).isFloatingPoint());
        // validation check
        final TreeMap<String, String> validationTags = new TreeMap<String, String>();
        for (final Entry<String, ByteIterator> entry : db.values.get(i).entrySet()) {
            if (entry.getKey().equals(TimeSeriesWorkload.VALUE_KEY_PROPERTY_DEFAULT) || entry.getKey().equals(TimeSeriesWorkload.TIMESTAMP_KEY_PROPERTY_DEFAULT)) {
                continue;
            }
            validationTags.put(entry.getKey(), entry.getValue().toString());
        }
        assertEquals(wl.validationFunction(db.keys.get(i), timestamp, validationTags), ((NumericByteIterator) db.values.get(i).get(TimeSeriesWorkload.VALUE_KEY_PROPERTY_DEFAULT)).getLong());
        if (i % 2 == 0) {
            assertEquals(db.values.get(i).get("AB").toString(), "AAAA");
        } else {
            assertEquals(db.values.get(i).get("AB").toString(), "AAAB");
            timestamp += 60;
        }
    }
}
Also used : ByteIterator(site.ycsb.ByteIterator) NumericByteIterator(site.ycsb.NumericByteIterator) StringByteIterator(site.ycsb.StringByteIterator) Properties(java.util.Properties) TreeMap(java.util.TreeMap) Test(org.testng.annotations.Test)

Aggregations

TreeMap (java.util.TreeMap)3 ByteIterator (site.ycsb.ByteIterator)3 NumericByteIterator (site.ycsb.NumericByteIterator)3 StringByteIterator (site.ycsb.StringByteIterator)3 Properties (java.util.Properties)2 Test (org.testng.annotations.Test)2 HashMap (java.util.HashMap)1 Status (site.ycsb.Status)1