package com.orientechnologies.orient.core.storage.impl.local.statistic;
import com.orientechnologies.common.types.OModifiableInteger;
import com.orientechnologies.orient.core.record.impl.ODocument;
import org.testng.Assert;
import org.testng.annotations.Test;
import java.util.HashMap;
import java.util.Map;
@Test
public class OSessionStoragePerformanceStatisticTest {
public void testReadFromCache() {
final OModifiableInteger increment = new OModifiableInteger();
OSessionStoragePerformanceStatistic sessionStoragePerformanceStatistic = new OSessionStoragePerformanceStatistic(100,
new OSessionStoragePerformanceStatistic.NanoTimer() {
private long counter = 0;
@Override
public long getNano() {
return counter += increment.getValue();
}
}, -1);
Assert.assertEquals(sessionStoragePerformanceStatistic.getAmountOfPagesReadFromCache(), 0);
sessionStoragePerformanceStatistic.startCommitTimer();
for (int i = 0; i < 50; i++) {
increment.setValue(50);
sessionStoragePerformanceStatistic.startComponentOperation("c1po", OSessionStoragePerformanceStatistic.ComponentType.GENERAL);
sessionStoragePerformanceStatistic.startComponentOperation("c1po", OSessionStoragePerformanceStatistic.ComponentType.GENERAL);
sessionStoragePerformanceStatistic.startPageReadFromCacheTimer();
sessionStoragePerformanceStatistic.stopPageReadFromCacheTimer();
increment.setValue(150);
sessionStoragePerformanceStatistic.startComponentOperation("c2po", OSessionStoragePerformanceStatistic.ComponentType.GENERAL);//c2po inside of c1po
sessionStoragePerformanceStatistic.startPageReadFromCacheTimer();
sessionStoragePerformanceStatistic.stopPageReadFromCacheTimer();
sessionStoragePerformanceStatistic.completeComponentOperation();//c2po
sessionStoragePerformanceStatistic.completeComponentOperation();//c1po first
sessionStoragePerformanceStatistic.completeComponentOperation();//c1po last
}
increment.setValue(100);
for (int i = 0; i < 50; i++) {
sessionStoragePerformanceStatistic.startPageReadFromCacheTimer();
sessionStoragePerformanceStatistic.stopPageReadFromCacheTimer();
}
sessionStoragePerformanceStatistic.stopCommitTimer();
Assert.assertEquals(sessionStoragePerformanceStatistic.getAmountOfPagesPerOperation("c3po"), -1);
sessionStoragePerformanceStatistic.startComponentOperation("c4po", OSessionStoragePerformanceStatistic.ComponentType.GENERAL);
sessionStoragePerformanceStatistic.startComponentOperation("c3po", OSessionStoragePerformanceStatistic.ComponentType.GENERAL);
sessionStoragePerformanceStatistic.completeComponentOperation();
Assert.assertEquals(sessionStoragePerformanceStatistic.getAmountOfPagesPerOperation(null), -1);
Assert.assertEquals(sessionStoragePerformanceStatistic.getAmountOfPagesPerOperation("c1po"), 2);
Assert.assertEquals(sessionStoragePerformanceStatistic.getAmountOfPagesPerOperation("c2po"), 1);
Assert.assertEquals(sessionStoragePerformanceStatistic.getAmountOfPagesPerOperation("c3po"), 0);
Assert.assertEquals(sessionStoragePerformanceStatistic.getAmountOfPagesPerOperation("c4po"), -1);
Assert.assertEquals(sessionStoragePerformanceStatistic.getAmountOfPagesPerOperation("c5po"), -1);
Assert.assertEquals(sessionStoragePerformanceStatistic.getAmountOfPagesReadFromCache(), 150);
Assert.assertEquals(sessionStoragePerformanceStatistic.getAmountOfPagesReadFromCache(null), 150);
Assert.assertEquals(sessionStoragePerformanceStatistic.getAmountOfPagesReadFromCache("c1po"), 100);
Assert.assertEquals(sessionStoragePerformanceStatistic.getAmountOfPagesReadFromCache("c2po"), 50);
Assert.assertEquals(sessionStoragePerformanceStatistic.getAmountOfPagesReadFromCache("c3po"), 0);
Assert.assertEquals(sessionStoragePerformanceStatistic.getAmountOfPagesReadFromCache("c4po"), -1);
Assert.assertEquals(sessionStoragePerformanceStatistic.getReadSpeedFromCacheInPages(), 10000000);
Assert.assertEquals(sessionStoragePerformanceStatistic.getReadSpeedFromCacheInPages(null), 10000000);
Assert.assertEquals(sessionStoragePerformanceStatistic.getReadSpeedFromCacheInPages("c1po"), 10000000);
Assert.assertEquals(sessionStoragePerformanceStatistic.getReadSpeedFromCacheInPages("c2po"), 6666666);
Assert.assertEquals(sessionStoragePerformanceStatistic.getReadSpeedFromCacheInPages("c3po"), -1);
Assert.assertEquals(sessionStoragePerformanceStatistic.getReadSpeedFromCacheInPages("c4po"), -1);
final ODocument doc = sessionStoragePerformanceStatistic.toDocument();
Assert.assertEquals(doc.field("amountOfPagesReadFromCache"), 150L);
Assert.assertEquals(doc.field("readSpeedFromCacheInPages"), 10000000L);
final ODocument docC1PO = doc.<Map<String, ODocument>>field("dataByComponent").get("c1po");
Assert.assertEquals(docC1PO.field("amountOfPagesReadFromCache"), 100L);
Assert.assertEquals(docC1PO.field("readSpeedFromCacheInPages"), 10000000L);
Assert.assertEquals(docC1PO.field("amountOfPagesPerOperation"), 2L);
final ODocument docC2PO = doc.<Map<String, ODocument>>field("dataByComponent").get("c2po");
Assert.assertEquals(docC2PO.field("amountOfPagesReadFromCache"), 50L);
Assert.assertEquals(docC2PO.field("readSpeedFromCacheInPages"), 6666666L);
Assert.assertEquals(docC2PO.field("amountOfPagesPerOperation"), 1L);
}
public void testReadFromFile() {
final OModifiableInteger increment = new OModifiableInteger();
OSessionStoragePerformanceStatistic sessionStoragePerformanceStatistic = new OSessionStoragePerformanceStatistic(100,
new OSessionStoragePerformanceStatistic.NanoTimer() {
private long counter = 0;
@Override
public long getNano() {
return counter += increment.getValue();
}
}, -1);
Assert.assertEquals(sessionStoragePerformanceStatistic.getAmountOfPagesReadFromFile(), 0);
Assert.assertEquals(sessionStoragePerformanceStatistic.getReadSpeedFromFileInPages(), -1);
sessionStoragePerformanceStatistic.startCommitTimer();
for (int i = 0; i < 50; i++) {
increment.setValue(50);
sessionStoragePerformanceStatistic.startComponentOperation("c1po", OSessionStoragePerformanceStatistic.ComponentType.GENERAL);
sessionStoragePerformanceStatistic.startComponentOperation("c1po", OSessionStoragePerformanceStatistic.ComponentType.GENERAL);
sessionStoragePerformanceStatistic.startPageReadFromFileTimer();
sessionStoragePerformanceStatistic.stopPageReadFromFileTimer(10);
increment.setValue(150);
sessionStoragePerformanceStatistic.startComponentOperation("c2po", OSessionStoragePerformanceStatistic.ComponentType.GENERAL);
sessionStoragePerformanceStatistic.startPageReadFromFileTimer();
sessionStoragePerformanceStatistic.stopPageReadFromFileTimer(10);
sessionStoragePerformanceStatistic.completeComponentOperation();
sessionStoragePerformanceStatistic.completeComponentOperation();
sessionStoragePerformanceStatistic.completeComponentOperation();
}
increment.setValue(100);
for (int i = 0; i < 50; i++) {
sessionStoragePerformanceStatistic.startPageReadFromFileTimer();
sessionStoragePerformanceStatistic.stopPageReadFromFileTimer(10);
}
sessionStoragePerformanceStatistic.stopCommitTimer();
Assert.assertEquals(sessionStoragePerformanceStatistic.getAmountOfPagesReadFromFile(), 1500);
Assert.assertEquals(sessionStoragePerformanceStatistic.getAmountOfPagesReadFromFile(null), 1500);
Assert.assertEquals(sessionStoragePerformanceStatistic.getAmountOfPagesReadFromFile("c1po"), 1000);
Assert.assertEquals(sessionStoragePerformanceStatistic.getAmountOfPagesReadFromFile("c2po"), 500);
Assert.assertEquals(sessionStoragePerformanceStatistic.getAmountOfPagesReadFromFile("c3po"), -1);
Assert.assertEquals(sessionStoragePerformanceStatistic.getReadSpeedFromFileInPages(), 100000000);
Assert.assertEquals(sessionStoragePerformanceStatistic.getReadSpeedFromFileInPages(null), 100000000);
Assert.assertEquals(sessionStoragePerformanceStatistic.getReadSpeedFromFileInPages("c1po"), 100000000);
Assert.assertEquals(sessionStoragePerformanceStatistic.getReadSpeedFromFileInPages("c2po"), 66666666);
Assert.assertEquals(sessionStoragePerformanceStatistic.getReadSpeedFromFileInPages("c3po"), -1);
final ODocument doc = sessionStoragePerformanceStatistic.toDocument();
Assert.assertEquals(doc.field("amountOfPagesReadFromFile"), 1500L);
Assert.assertEquals(doc.field("readSpeedFromFileInPages"), 100000000L);
final ODocument docC1PO = doc.<Map<String, ODocument>>field("dataByComponent").get("c1po");
Assert.assertEquals(docC1PO.field("amountOfPagesReadFromFile"), 1000L);
Assert.assertEquals(docC1PO.field("readSpeedFromFileInPages"), 100000000L);
final ODocument docC2PO = doc.<Map<String, ODocument>>field("dataByComponent").get("c2po");
Assert.assertEquals(docC2PO.field("amountOfPagesReadFromFile"), 500L);
Assert.assertEquals(docC2PO.field("readSpeedFromFileInPages"), 66666666L);
}
public void testWriteInCache() {
final OModifiableInteger increment = new OModifiableInteger();
OSessionStoragePerformanceStatistic sessionStoragePerformanceStatistic = new OSessionStoragePerformanceStatistic(100,
new OSessionStoragePerformanceStatistic.NanoTimer() {
private long counter = 0;
@Override
public long getNano() {
return counter += increment.getValue();
}
}, -1);
Assert.assertEquals(sessionStoragePerformanceStatistic.getAmountOfPagesWrittenInCache(), 0);
Assert.assertEquals(sessionStoragePerformanceStatistic.getWriteSpeedInCacheInPages(), -1);
sessionStoragePerformanceStatistic.startCommitTimer();
for (int i = 0; i < 50; i++) {
increment.setValue(50);
sessionStoragePerformanceStatistic.startComponentOperation("c1po", OSessionStoragePerformanceStatistic.ComponentType.GENERAL);
sessionStoragePerformanceStatistic.startComponentOperation("c1po", OSessionStoragePerformanceStatistic.ComponentType.GENERAL);
sessionStoragePerformanceStatistic.startPageWriteInCacheTimer();
sessionStoragePerformanceStatistic.stopPageWriteInCacheTimer();
increment.setValue(150);
sessionStoragePerformanceStatistic.startComponentOperation("c2po", OSessionStoragePerformanceStatistic.ComponentType.GENERAL);
sessionStoragePerformanceStatistic.startPageWriteInCacheTimer();
sessionStoragePerformanceStatistic.stopPageWriteInCacheTimer();
sessionStoragePerformanceStatistic.completeComponentOperation();
sessionStoragePerformanceStatistic.completeComponentOperation();
sessionStoragePerformanceStatistic.completeComponentOperation();
}
increment.setValue(100);
for (int i = 0; i < 50; i++) {
sessionStoragePerformanceStatistic.startPageWriteInCacheTimer();
sessionStoragePerformanceStatistic.stopPageWriteInCacheTimer();
}
sessionStoragePerformanceStatistic.stopCommitTimer();
Assert.assertEquals(sessionStoragePerformanceStatistic.getAmountOfPagesWrittenInCache(), 150);
Assert.assertEquals(sessionStoragePerformanceStatistic.getAmountOfPagesWrittenInCache(null), 150);
Assert.assertEquals(sessionStoragePerformanceStatistic.getAmountOfPagesWrittenInCache("c1po"), 100);
Assert.assertEquals(sessionStoragePerformanceStatistic.getAmountOfPagesWrittenInCache("c2po"), 50);
Assert.assertEquals(sessionStoragePerformanceStatistic.getAmountOfPagesWrittenInCache("c3po"), -1);
Assert.assertEquals(sessionStoragePerformanceStatistic.getWriteSpeedInCacheInPages(), 10000000);
Assert.assertEquals(sessionStoragePerformanceStatistic.getWriteSpeedInCacheInPages(null), 10000000);
Assert.assertEquals(sessionStoragePerformanceStatistic.getWriteSpeedInCacheInPages("c1po"), 10000000);
Assert.assertEquals(sessionStoragePerformanceStatistic.getWriteSpeedInCacheInPages("c2po"), 6666666);
Assert.assertEquals(sessionStoragePerformanceStatistic.getWriteSpeedInCacheInPages("c3po"), -1);
ODocument doc = sessionStoragePerformanceStatistic.toDocument();
Assert.assertEquals(doc.field("amountOfPagesWrittenInCache"), 150L);
Assert.assertEquals(doc.field("writeSpeedInCacheInPages"), 10000000L);
final ODocument docC1PO = doc.<Map<String, ODocument>>field("dataByComponent").get("c1po");
Assert.assertEquals(docC1PO.field("amountOfPagesWrittenInCache"), 100L);
Assert.assertEquals(docC1PO.field("writeSpeedInCacheInPages"), 10000000L);
final ODocument docC2PO = doc.<Map<String, ODocument>>field("dataByComponent").get("c2po");
Assert.assertEquals(docC2PO.field("amountOfPagesWrittenInCache"), 50L);
Assert.assertEquals(docC2PO.field("writeSpeedInCacheInPages"), 6666666L);
}
public void testCommitCount() {
OSessionStoragePerformanceStatistic sessionStoragePerformanceStatistic = new OSessionStoragePerformanceStatistic(100,
new OSessionStoragePerformanceStatistic.NanoTimer() {
private long counter = 0;
@Override
public long getNano() {
return counter += 100;
}
}, -1);
Assert.assertEquals(sessionStoragePerformanceStatistic.getCommitTime(), -1);
sessionStoragePerformanceStatistic.startPageReadFromCacheTimer();
for (int i = 0; i < 100; i++) {
sessionStoragePerformanceStatistic.startCommitTimer();
sessionStoragePerformanceStatistic.stopCommitTimer();
}
sessionStoragePerformanceStatistic.stopPageReadFromCacheTimer();
Assert.assertEquals(sessionStoragePerformanceStatistic.getCommitTime(), 100);
final ODocument doc = sessionStoragePerformanceStatistic.toDocument();
Assert.assertEquals(doc.field("commitTime"), 100L);
}
public void testCacheHit() {
OSessionStoragePerformanceStatistic sessionStoragePerformanceStatistic = new OSessionStoragePerformanceStatistic(100,
new OSessionStoragePerformanceStatistic.NanoTimer() {
private long counter = 0;
@Override
public long getNano() {
return counter += 100;
}
}, -1);
Assert.assertEquals(sessionStoragePerformanceStatistic.getCacheHits(), -1);
for (int i = 0; i < 50; i++) {
sessionStoragePerformanceStatistic.startComponentOperation("c1po", OSessionStoragePerformanceStatistic.ComponentType.GENERAL);
sessionStoragePerformanceStatistic.startComponentOperation("c1po", OSessionStoragePerformanceStatistic.ComponentType.GENERAL);
sessionStoragePerformanceStatistic.incrementPageAccessOnCacheLevel(i % 2 == 0);
sessionStoragePerformanceStatistic.startComponentOperation("c2po", OSessionStoragePerformanceStatistic.ComponentType.GENERAL);
sessionStoragePerformanceStatistic.incrementPageAccessOnCacheLevel(true);
sessionStoragePerformanceStatistic.completeComponentOperation();
sessionStoragePerformanceStatistic.completeComponentOperation();
sessionStoragePerformanceStatistic.completeComponentOperation();
}
for (int i = 0; i < 50; i++) {
sessionStoragePerformanceStatistic.incrementPageAccessOnCacheLevel(false);
}
Assert.assertEquals(sessionStoragePerformanceStatistic.getCacheHits(), 50);
Assert.assertEquals(sessionStoragePerformanceStatistic.getCacheHits(null), 50);
Assert.assertEquals(sessionStoragePerformanceStatistic.getCacheHits("c1po"), 75);
Assert.assertEquals(sessionStoragePerformanceStatistic.getCacheHits("c2po"), 100);
Assert.assertEquals(sessionStoragePerformanceStatistic.getCacheHits("c3po"), -1);
final ODocument doc = sessionStoragePerformanceStatistic.toDocument();
Assert.assertEquals(doc.field("cacheHits"), 50);
final ODocument docC1PO = doc.<Map<String, ODocument>>field("dataByComponent").get("c1po");
Assert.assertEquals(docC1PO.field("cacheHits"), 75);
final ODocument docC2PO = doc.<Map<String, ODocument>>field("dataByComponent").get("c2po");
Assert.assertEquals(docC2PO.field("cacheHits"), 100);
}
public void testPushComponentCounters() {
final OModifiableInteger counterOne = new OModifiableInteger();
OSessionStoragePerformanceStatistic sessionStoragePerformanceStatisticOne = new OSessionStoragePerformanceStatistic(100,
new OSessionStoragePerformanceStatistic.NanoTimer() {
@Override
public long getNano() {
counterOne.increment(100);
return counterOne.getValue();
}
}, -1);
OSessionStoragePerformanceStatistic.PerformanceCountersHolder performanceCountersHolder = new OSessionStoragePerformanceStatistic.PerformanceCountersHolder();
final Map<String, OSessionStoragePerformanceStatistic.PerformanceCountersHolder> counters = new HashMap<String, OSessionStoragePerformanceStatistic.PerformanceCountersHolder>();
sessionStoragePerformanceStatisticOne.pushComponentCounters(counters);
sessionStoragePerformanceStatisticOne.pushComponentCounters("c3po", performanceCountersHolder);
sessionStoragePerformanceStatisticOne.startComponentOperation("c3po", OSessionStoragePerformanceStatistic.ComponentType.GENERAL);
sessionStoragePerformanceStatisticOne.incrementPageAccessOnCacheLevel(false);
sessionStoragePerformanceStatisticOne.incrementPageAccessOnCacheLevel(false);
sessionStoragePerformanceStatisticOne.incrementPageAccessOnCacheLevel(false);
sessionStoragePerformanceStatisticOne.incrementPageAccessOnCacheLevel(true);
sessionStoragePerformanceStatisticOne.startPageReadFromCacheTimer();
counterOne.increment(50);
sessionStoragePerformanceStatisticOne.stopPageReadFromCacheTimer();
sessionStoragePerformanceStatisticOne.startPageReadFromCacheTimer();
counterOne.increment(50);
sessionStoragePerformanceStatisticOne.stopPageReadFromCacheTimer();
sessionStoragePerformanceStatisticOne.startPageReadFromCacheTimer();
sessionStoragePerformanceStatisticOne.stopPageReadFromCacheTimer();
sessionStoragePerformanceStatisticOne.startPageReadFromFileTimer();
sessionStoragePerformanceStatisticOne.stopPageReadFromFileTimer(2);
sessionStoragePerformanceStatisticOne.startPageWriteInCacheTimer();
counterOne.increment(200);
sessionStoragePerformanceStatisticOne.stopPageWriteInCacheTimer();
sessionStoragePerformanceStatisticOne.completeComponentOperation();
OSessionStoragePerformanceStatistic sessionStoragePerformanceStatisticTwo = new OSessionStoragePerformanceStatistic(100,
new OSessionStoragePerformanceStatistic.NanoTimer() {
private long counter = 0;
@Override
public long getNano() {
return counter += 100;
}
}, -1);
sessionStoragePerformanceStatisticTwo.startComponentOperation("c3po", OSessionStoragePerformanceStatistic.ComponentType.GENERAL);
sessionStoragePerformanceStatisticTwo.incrementPageAccessOnCacheLevel(true);
sessionStoragePerformanceStatisticTwo.completeComponentOperation();
sessionStoragePerformanceStatisticTwo.startComponentOperation("c1po", OSessionStoragePerformanceStatistic.ComponentType.GENERAL);
sessionStoragePerformanceStatisticTwo.startPageReadFromCacheTimer();
sessionStoragePerformanceStatisticTwo.stopPageReadFromCacheTimer();
sessionStoragePerformanceStatisticTwo.startPageReadFromFileTimer();
sessionStoragePerformanceStatisticTwo.stopPageReadFromFileTimer(1);
sessionStoragePerformanceStatisticTwo.startPageWriteInCacheTimer();
sessionStoragePerformanceStatisticTwo.stopPageWriteInCacheTimer();
sessionStoragePerformanceStatisticTwo.completeComponentOperation();
sessionStoragePerformanceStatisticOne.pushComponentCounters("c3po", performanceCountersHolder);
Assert.assertEquals(performanceCountersHolder.getCacheHits(), sessionStoragePerformanceStatisticOne.getCacheHits());
Assert.assertEquals(performanceCountersHolder.getAmountOfPagesPerOperation(),
sessionStoragePerformanceStatisticOne.getAmountOfPagesPerOperation("c3po"));
Assert.assertEquals(performanceCountersHolder.getAmountOfPagesReadFromCache(),
sessionStoragePerformanceStatisticOne.getAmountOfPagesReadFromCache("c3po"));
Assert.assertEquals(performanceCountersHolder.getAmountOfPagesReadFromFile(),
sessionStoragePerformanceStatisticOne.getAmountOfPagesReadFromFile("c3po"));
Assert.assertEquals(performanceCountersHolder.getAmountOfPagesWrittenInCache(),
sessionStoragePerformanceStatisticOne.getAmountOfPagesWrittenInCache("c3po"));
Assert.assertEquals(performanceCountersHolder.getReadSpeedFromCacheInPages(),
sessionStoragePerformanceStatisticOne.getReadSpeedFromCacheInPages("c3po"));
Assert.assertEquals(performanceCountersHolder.getReadSpeedFromFileInPages(),
sessionStoragePerformanceStatisticOne.getReadSpeedFromFileInPages("c3po"));
Assert.assertEquals(performanceCountersHolder.getWriteSpeedInCacheInPages(),
sessionStoragePerformanceStatisticOne.getWriteSpeedInCacheInPages("c3po"));
performanceCountersHolder = new OSessionStoragePerformanceStatistic.PerformanceCountersHolder();
sessionStoragePerformanceStatisticTwo.pushComponentCounters("c3po", performanceCountersHolder);
Assert.assertEquals(performanceCountersHolder.getCacheHits(), sessionStoragePerformanceStatisticTwo.getCacheHits());
Assert.assertEquals(performanceCountersHolder.getAmountOfPagesPerOperation(),
sessionStoragePerformanceStatisticTwo.getAmountOfPagesPerOperation("c3po"));
Assert.assertEquals(performanceCountersHolder.getAmountOfPagesReadFromCache(),
sessionStoragePerformanceStatisticTwo.getAmountOfPagesReadFromCache("c3po"));
Assert.assertEquals(performanceCountersHolder.getAmountOfPagesReadFromFile(),
sessionStoragePerformanceStatisticTwo.getAmountOfPagesReadFromFile("c3po"));
Assert.assertEquals(performanceCountersHolder.getAmountOfPagesWrittenInCache(),
sessionStoragePerformanceStatisticTwo.getAmountOfPagesWrittenInCache("c3po"));
Assert.assertEquals(performanceCountersHolder.getReadSpeedFromCacheInPages(),
sessionStoragePerformanceStatisticTwo.getReadSpeedFromCacheInPages("c3po"));
Assert.assertEquals(performanceCountersHolder.getReadSpeedFromFileInPages(),
sessionStoragePerformanceStatisticTwo.getReadSpeedFromFileInPages("c3po"));
Assert.assertEquals(performanceCountersHolder.getWriteSpeedInCacheInPages(),
sessionStoragePerformanceStatisticTwo.getWriteSpeedInCacheInPages("c3po"));
sessionStoragePerformanceStatisticOne.pushComponentCounters("c3po", performanceCountersHolder);
Assert.assertEquals(performanceCountersHolder.getCacheHits(), 40);
Assert.assertEquals(performanceCountersHolder.getAmountOfPagesPerOperation(), 1);
Assert.assertEquals(performanceCountersHolder.getAmountOfPagesReadFromCache(),
sessionStoragePerformanceStatisticOne.getAmountOfPagesReadFromCache("c3po"));
Assert.assertEquals(performanceCountersHolder.getAmountOfPagesReadFromFile(),
sessionStoragePerformanceStatisticOne.getAmountOfPagesReadFromFile("c3po"));
Assert.assertEquals(performanceCountersHolder.getAmountOfPagesWrittenInCache(),
sessionStoragePerformanceStatisticOne.getAmountOfPagesWrittenInCache("c3po"));
Assert.assertEquals(performanceCountersHolder.getReadSpeedFromCacheInPages(),
sessionStoragePerformanceStatisticOne.getReadSpeedFromCacheInPages("c3po"));
Assert.assertEquals(performanceCountersHolder.getReadSpeedFromFileInPages(),
sessionStoragePerformanceStatisticOne.getReadSpeedFromFileInPages("c3po"));
Assert.assertEquals(performanceCountersHolder.getWriteSpeedInCacheInPages(),
sessionStoragePerformanceStatisticOne.getWriteSpeedInCacheInPages("c3po"));
performanceCountersHolder = new OSessionStoragePerformanceStatistic.PerformanceCountersHolder();
sessionStoragePerformanceStatisticOne.pushComponentCounters("c3po", performanceCountersHolder);
sessionStoragePerformanceStatisticTwo.pushComponentCounters("c1po", performanceCountersHolder);
Assert.assertEquals(performanceCountersHolder.getCacheHits(), sessionStoragePerformanceStatisticOne.getCacheHits());
Assert.assertEquals(performanceCountersHolder.getAmountOfPagesPerOperation(), 2);
Assert.assertEquals(performanceCountersHolder.getAmountOfPagesReadFromCache(), 4);
Assert.assertEquals(performanceCountersHolder.getAmountOfPagesReadFromFile(), 3);
Assert.assertEquals(performanceCountersHolder.getAmountOfPagesWrittenInCache(), 2);
Assert.assertEquals(performanceCountersHolder.getReadSpeedFromCacheInPages(), 8000000);
Assert.assertEquals(performanceCountersHolder.getReadSpeedFromFileInPages(), 15000000);
Assert.assertEquals(performanceCountersHolder.getWriteSpeedInCacheInPages(), 5000000);
sessionStoragePerformanceStatisticOne.pushComponentCounters(counters);
sessionStoragePerformanceStatisticTwo.pushComponentCounters(counters);
Assert.assertEquals(counters.get("c3po").getCacheHits(), 40);
Assert.assertEquals(counters.get("c3po").getAmountOfPagesPerOperation(), 1);
Assert.assertEquals(counters.get("c3po").getAmountOfPagesReadFromCache(), 3);
Assert.assertEquals(counters.get("c3po").getAmountOfPagesReadFromFile(), 2);
Assert.assertEquals(counters.get("c3po").getReadSpeedFromCacheInPages(), 7500000);
Assert.assertEquals(counters.get("c3po").getReadSpeedFromFileInPages(), 20000000);
Assert.assertEquals(counters.get("c3po").getWriteSpeedInCacheInPages(), 3333333);
Assert.assertEquals(counters.get("c1po").getCacheHits(), -1);
Assert.assertEquals(counters.get("c1po").getAmountOfPagesPerOperation(), 1);
Assert.assertEquals(counters.get("c1po").getAmountOfPagesReadFromCache(), 1);
Assert.assertEquals(counters.get("c1po").getAmountOfPagesReadFromFile(), 1);
Assert.assertEquals(counters.get("c1po").getReadSpeedFromCacheInPages(), 10000000);
Assert.assertEquals(counters.get("c1po").getReadSpeedFromFileInPages(), 10000000);
Assert.assertEquals(counters.get("c1po").getWriteSpeedInCacheInPages(), 10000000);
}
public void testSystemCounters() {
final OModifiableInteger counterOne = new OModifiableInteger();
OSessionStoragePerformanceStatistic sessionStoragePerformanceStatisticOne = new OSessionStoragePerformanceStatistic(100,
new OSessionStoragePerformanceStatistic.NanoTimer() {
@Override
public long getNano() {
counterOne.increment(100);
return counterOne.getValue();
}
}, -1);
final OSessionStoragePerformanceStatistic.PerformanceCountersHolder counters = new OSessionStoragePerformanceStatistic.PerformanceCountersHolder();
sessionStoragePerformanceStatisticOne.pushSystemCounters(counters);
sessionStoragePerformanceStatisticOne.incrementPageAccessOnCacheLevel(false);
sessionStoragePerformanceStatisticOne.incrementPageAccessOnCacheLevel(false);
sessionStoragePerformanceStatisticOne.incrementPageAccessOnCacheLevel(false);
sessionStoragePerformanceStatisticOne.incrementPageAccessOnCacheLevel(true);
sessionStoragePerformanceStatisticOne.startPageReadFromCacheTimer();
counterOne.increment(50);
sessionStoragePerformanceStatisticOne.stopPageReadFromCacheTimer();
sessionStoragePerformanceStatisticOne.startPageReadFromCacheTimer();
counterOne.increment(50);
sessionStoragePerformanceStatisticOne.stopPageReadFromCacheTimer();
sessionStoragePerformanceStatisticOne.startPageReadFromCacheTimer();
sessionStoragePerformanceStatisticOne.stopPageReadFromCacheTimer();
sessionStoragePerformanceStatisticOne.startPageReadFromFileTimer();
sessionStoragePerformanceStatisticOne.stopPageReadFromFileTimer(2);
sessionStoragePerformanceStatisticOne.startPageWriteInCacheTimer();
counterOne.increment(200);
sessionStoragePerformanceStatisticOne.stopPageWriteInCacheTimer();
sessionStoragePerformanceStatisticOne.startCommitTimer();
counterOne.increment(100);
sessionStoragePerformanceStatisticOne.stopCommitTimer();
OSessionStoragePerformanceStatistic sessionStoragePerformanceStatisticTwo = new OSessionStoragePerformanceStatistic(100,
new OSessionStoragePerformanceStatistic.NanoTimer() {
private long counter = 0;
@Override
public long getNano() {
return counter += 100;
}
}, -1);
sessionStoragePerformanceStatisticTwo.incrementPageAccessOnCacheLevel(true);
sessionStoragePerformanceStatisticTwo.startPageReadFromCacheTimer();
sessionStoragePerformanceStatisticTwo.stopPageReadFromCacheTimer();
sessionStoragePerformanceStatisticTwo.startPageReadFromFileTimer();
sessionStoragePerformanceStatisticTwo.stopPageReadFromFileTimer(1);
sessionStoragePerformanceStatisticTwo.startPageWriteInCacheTimer();
sessionStoragePerformanceStatisticTwo.stopPageWriteInCacheTimer();
sessionStoragePerformanceStatisticTwo.startCommitTimer();
sessionStoragePerformanceStatisticTwo.stopCommitTimer();
sessionStoragePerformanceStatisticTwo.completeComponentOperation();
sessionStoragePerformanceStatisticOne.pushSystemCounters(counters);
sessionStoragePerformanceStatisticTwo.pushSystemCounters(counters);
Assert.assertEquals(counters.getCacheHits(), 40);
Assert.assertEquals(counters.getAmountOfPagesReadFromCache(), 4);
Assert.assertEquals(counters.getAmountOfPagesReadFromFile(), 3);
Assert.assertEquals(counters.getAmountOfPagesWrittenInCache(), 2);
Assert.assertEquals(counters.getReadSpeedFromCacheInPages(), 8000000);
Assert.assertEquals(counters.getReadSpeedFromFileInPages(), 15000000);
Assert.assertEquals(counters.getWriteSpeedInCacheInPages(), 5000000);
Assert.assertEquals(counters.getCommitTime(), 150);
}
public void testCleanOnSnapshot() {
final OModifiableInteger counter = new OModifiableInteger(-100);
OSessionStoragePerformanceStatistic statistic = new OSessionStoragePerformanceStatistic(200,
new OSessionStoragePerformanceStatistic.NanoTimer() {
@Override
public long getNano() {
counter.increment(100);
return counter.getValue();
}
}, 200);
OSessionStoragePerformanceStatistic.PerformanceCountersHolder performanceCountersHolder = new OSessionStoragePerformanceStatistic.PerformanceCountersHolder();
statistic.startComponentOperation("c3po", OSessionStoragePerformanceStatistic.ComponentType.GENERAL);
statistic.incrementPageAccessOnCacheLevel(false);//100
counter.setValue(0);
statistic.completeComponentOperation();//100
statistic.startComponentOperation("c3po", OSessionStoragePerformanceStatistic.ComponentType.GENERAL);
statistic.incrementPageAccessOnCacheLevel(true);//200-clear
counter.setValue(100);
statistic.completeComponentOperation();//200
statistic.startComponentOperation("c3po", OSessionStoragePerformanceStatistic.ComponentType.GENERAL);
statistic.incrementPageAccessOnCacheLevel(true);//300
counter.setValue(200);
statistic.completeComponentOperation();//300
statistic.startComponentOperation("c3po", OSessionStoragePerformanceStatistic.ComponentType.GENERAL);
statistic.incrementPageAccessOnCacheLevel(true);//400 - clear
counter.setValue(300);
statistic.completeComponentOperation();//400
statistic.pushSystemCounters(performanceCountersHolder);
Assert.assertEquals(performanceCountersHolder.getCacheHits(), 100);
performanceCountersHolder = new OSessionStoragePerformanceStatistic.PerformanceCountersHolder();
statistic.pushComponentCounters("c3po", performanceCountersHolder);
Assert.assertEquals(performanceCountersHolder.getCacheHits(), 100);
statistic.startComponentOperation("c3po", OSessionStoragePerformanceStatistic.ComponentType.GENERAL);
counter.setValue(300);
statistic.startPageReadFromCacheTimer();//400
statistic.stopPageReadFromCacheTimer();//500
counter.setValue(400);
statistic.startPageReadFromCacheTimer();//500
statistic.stopPageReadFromCacheTimer();//600 - clear
counter.setValue(500);
statistic.completeComponentOperation();//600
statistic.startComponentOperation("c3po", OSessionStoragePerformanceStatistic.ComponentType.GENERAL);
counter.setValue(500);
statistic.startPageReadFromCacheTimer();//600
counter.increment(100);
statistic.stopPageReadFromCacheTimer();//800 - clear
counter.setValue(700);
statistic.completeComponentOperation();//900
performanceCountersHolder = new OSessionStoragePerformanceStatistic.PerformanceCountersHolder();
statistic.pushSystemCounters(performanceCountersHolder);
Assert.assertEquals(performanceCountersHolder.getAmountOfPagesReadFromCache(), 1);
Assert.assertEquals(performanceCountersHolder.getReadSpeedFromCacheInPages(), 5000000);
performanceCountersHolder = new OSessionStoragePerformanceStatistic.PerformanceCountersHolder();
statistic.pushComponentCounters("c3po", performanceCountersHolder);
Assert.assertEquals(performanceCountersHolder.getAmountOfPagesReadFromCache(), 1);
Assert.assertEquals(performanceCountersHolder.getReadSpeedFromCacheInPages(), 5000000);
statistic.startComponentOperation("c3po", OSessionStoragePerformanceStatistic.ComponentType.GENERAL);
counter.setValue(700);
statistic.startPageReadFromFileTimer();//800
statistic.stopPageReadFromFileTimer(1);//900
counter.setValue(800);
statistic.startPageReadFromFileTimer();//900
statistic.stopPageReadFromFileTimer(1);//1000 - clear
counter.setValue(900);
statistic.completeComponentOperation();//1000
statistic.startComponentOperation("c3po", OSessionStoragePerformanceStatistic.ComponentType.GENERAL);
counter.setValue(900);
statistic.startPageReadFromFileTimer();//1000
statistic.stopPageReadFromFileTimer(2);//1100
statistic.completeComponentOperation();//1200 - clear
performanceCountersHolder = new OSessionStoragePerformanceStatistic.PerformanceCountersHolder();
statistic.pushSystemCounters(performanceCountersHolder);
Assert.assertEquals(performanceCountersHolder.getAmountOfPagesReadFromFile(), 2);
Assert.assertEquals(performanceCountersHolder.getReadSpeedFromFileInPages(), 20000000);
performanceCountersHolder = new OSessionStoragePerformanceStatistic.PerformanceCountersHolder();
statistic.pushComponentCounters("c3po", performanceCountersHolder);
Assert.assertEquals(performanceCountersHolder.getAmountOfPagesReadFromFile(), 2);
Assert.assertEquals(performanceCountersHolder.getReadSpeedFromFileInPages(), 20000000);
statistic.startComponentOperation("c3po", OSessionStoragePerformanceStatistic.ComponentType.GENERAL);
counter.setValue(1100);
statistic.startPageWriteInCacheTimer();//1200
statistic.stopPageWriteInCacheTimer();//1300
counter.setValue(1200);
statistic.startPageWriteInCacheTimer();//1300
statistic.stopPageWriteInCacheTimer();//1400 - clear
counter.setValue(1300);
statistic.completeComponentOperation();//1400
statistic.startComponentOperation("c3po", OSessionStoragePerformanceStatistic.ComponentType.GENERAL);
counter.setValue(1300);
statistic.startPageWriteInCacheTimer();//1400
counter.increment(100);
statistic.stopPageWriteInCacheTimer();//1600 - clear
counter.setValue(1500);
statistic.completeComponentOperation();//1600
performanceCountersHolder = new OSessionStoragePerformanceStatistic.PerformanceCountersHolder();
statistic.pushSystemCounters(performanceCountersHolder);
Assert.assertEquals(performanceCountersHolder.getAmountOfPagesWrittenInCache(), 1);
Assert.assertEquals(performanceCountersHolder.getWriteSpeedInCacheInPages(), 5000000);
performanceCountersHolder = new OSessionStoragePerformanceStatistic.PerformanceCountersHolder();
statistic.pushComponentCounters("c3po", performanceCountersHolder);
Assert.assertEquals(performanceCountersHolder.getAmountOfPagesWrittenInCache(), 1);
Assert.assertEquals(performanceCountersHolder.getWriteSpeedInCacheInPages(), 5000000);
statistic.startComponentOperation("c3po", OSessionStoragePerformanceStatistic.ComponentType.GENERAL);
counter.setValue(1500);
statistic.startCommitTimer();//1600
statistic.stopCommitTimer();//1700
counter.setValue(1600);
statistic.startCommitTimer();//1700
statistic.stopCommitTimer();//1800 - clear
counter.setValue(1700);
statistic.completeComponentOperation();//1800
statistic.startComponentOperation("c3po", OSessionStoragePerformanceStatistic.ComponentType.GENERAL);
counter.setValue(1600);
statistic.startCommitTimer();//1700
counter.increment(100);
statistic.stopCommitTimer();//1900
statistic.completeComponentOperation();//2000 - clear
performanceCountersHolder = new OSessionStoragePerformanceStatistic.PerformanceCountersHolder();
statistic.pushSystemCounters(performanceCountersHolder);
Assert.assertEquals(performanceCountersHolder.getCommitTime(), 200);
}
}