use of com.codahale.metrics.Gauge in project lucene-solr by apache.
the class TestIndexSearcher method testReopen.
public void testReopen() throws Exception {
assertU(adoc("id", "1", "v_t", "Hello Dude", "v_s1", "string1"));
assertU(adoc("id", "2", "v_t", "Hello Yonik", "v_s1", "string2"));
assertU(commit());
SolrQueryRequest sr1 = req("q", "foo");
IndexReader r1 = sr1.getSearcher().getRawReader();
String sval1 = getStringVal(sr1, "v_s1", 0);
assertEquals("string1", sval1);
assertU(adoc("id", "3", "v_s1", "{!literal}"));
assertU(adoc("id", "4", "v_s1", "other stuff"));
assertU(commit());
SolrQueryRequest sr2 = req("q", "foo");
IndexReader r2 = sr2.getSearcher().getRawReader();
// make sure the readers share the first segment
// Didn't work w/ older versions of lucene2.9 going from segment -> multi
assertEquals(r1.leaves().get(0).reader(), r2.leaves().get(0).reader());
assertU(adoc("id", "5", "v_f", "3.14159"));
assertU(adoc("id", "6", "v_f", "8983", "v_s1", "string6"));
assertU(commit());
SolrQueryRequest sr3 = req("q", "foo");
IndexReader r3 = sr3.getSearcher().getRawReader();
// make sure the readers share segments
// assertEquals(r1.getLeafReaders()[0], r3.getLeafReaders()[0]);
assertEquals(r2.leaves().get(0).reader(), r3.leaves().get(0).reader());
assertEquals(r2.leaves().get(1).reader(), r3.leaves().get(1).reader());
sr1.close();
sr2.close();
// should currently be 1, but this could change depending on future index management
int baseRefCount = r3.getRefCount();
assertEquals(1, baseRefCount);
Map<String, Metric> metrics = h.getCore().getCoreMetricManager().getRegistry().getMetrics();
Gauge<Date> g = (Gauge<Date>) metrics.get("SEARCHER.searcher.registeredAt");
Date sr3SearcherRegAt = g.getValue();
// nothing has changed
assertU(commit());
SolrQueryRequest sr4 = req("q", "foo");
assertSame("nothing changed, searcher should be the same", sr3.getSearcher(), sr4.getSearcher());
assertEquals("nothing changed, searcher should not have been re-registered", sr3SearcherRegAt, g.getValue());
IndexReader r4 = sr4.getSearcher().getRawReader();
// force an index change so the registered searcher won't be the one we are testing (and
// then we should be able to test the refCount going all the way to 0
assertU(adoc("id", "7", "v_f", "7574"));
assertU(commit());
// test that reader didn't change
assertSame(r3, r4);
assertEquals(baseRefCount, r4.getRefCount());
sr3.close();
assertEquals(baseRefCount, r4.getRefCount());
sr4.close();
assertEquals(baseRefCount - 1, r4.getRefCount());
SolrQueryRequest sr5 = req("q", "foo");
IndexReaderContext rCtx5 = sr5.getSearcher().getTopReaderContext();
assertU(delI("1"));
assertU(commit());
SolrQueryRequest sr6 = req("q", "foo");
IndexReaderContext rCtx6 = sr6.getSearcher().getTopReaderContext();
// only a single doc left in the first segment
assertEquals(1, rCtx6.leaves().get(0).reader().numDocs());
// readers now different
assertTrue(!rCtx5.leaves().get(0).reader().equals(rCtx6.leaves().get(0).reader()));
sr5.close();
sr6.close();
}
use of com.codahale.metrics.Gauge in project lucene-solr by apache.
the class MetricUtils method convertMetric.
/**
* Convert a single instance of metric into a map or flattened object.
* @param n metric name
* @param metric metric instance
* @param propertyFilter limit what properties of a metric are returned
* @param skipHistograms discard any {@link Histogram}-s and histogram parts of {@link Timer}-s.
* @param skipAggregateValues discard internal values of {@link AggregateMetric}-s.
* @param compact use compact representation for counters and gauges.
* @param simple use simplified representation for complex metrics - instead of a (name, map)
* only the selected (name "." key, value) pairs will be produced.
* @param consumer consumer that accepts produced objects
*/
static void convertMetric(String n, Metric metric, PropertyFilter propertyFilter, boolean skipHistograms, boolean skipAggregateValues, boolean compact, boolean simple, BiConsumer<String, Object> consumer) {
if (metric instanceof Counter) {
Counter counter = (Counter) metric;
convertCounter(n, counter, propertyFilter, compact, consumer);
} else if (metric instanceof Gauge) {
Gauge gauge = (Gauge) metric;
try {
convertGauge(n, gauge, propertyFilter, simple, compact, consumer);
} catch (InternalError ie) {
if (n.startsWith("memory.") && ie.getMessage().contains("Memory Pool not found")) {
LOG.warn("Error converting gauge '" + n + "', possible JDK bug: SOLR-10362", ie);
consumer.accept(n, null);
} else {
throw ie;
}
}
} else if (metric instanceof Meter) {
Meter meter = (Meter) metric;
convertMeter(n, meter, propertyFilter, simple, consumer);
} else if (metric instanceof Timer) {
Timer timer = (Timer) metric;
convertTimer(n, timer, propertyFilter, skipHistograms, simple, consumer);
} else if (metric instanceof Histogram) {
if (!skipHistograms) {
Histogram histogram = (Histogram) metric;
convertHistogram(n, histogram, propertyFilter, simple, consumer);
}
} else if (metric instanceof AggregateMetric) {
convertAggregateMetric(n, (AggregateMetric) metric, propertyFilter, skipAggregateValues, simple, consumer);
}
}
use of com.codahale.metrics.Gauge in project lucene-solr by apache.
the class BasicFunctionalityTest method testSomeStuff.
@Test
public void testSomeStuff() throws Exception {
clearIndex();
SolrCore core = h.getCore();
// test that we got the expected config, not just hardcoded defaults
assertNotNull(core.getRequestHandler("mock"));
// test stats call
SolrMetricManager manager = core.getCoreContainer().getMetricManager();
String registry = core.getCoreMetricManager().getRegistryName();
Map<String, Metric> metrics = manager.registry(registry).getMetrics();
assertTrue(metrics.containsKey("CORE.coreName"));
assertTrue(metrics.containsKey("CORE.refCount"));
Gauge<Number> g = (Gauge<Number>) metrics.get("CORE.refCount");
assertTrue(g.getValue().intValue() > 0);
lrf.args.put(CommonParams.VERSION, "2.2");
assertQ("test query on empty index", req("qlkciyopsbgzyvkylsjhchghjrdf"), "//result[@numFound='0']");
// test escaping of ";"
assertU("deleting 42 for no reason at all", delI("42"));
assertU("adding doc#42", adoc("id", "42", "val_s", "aa;bb"));
assertU("does commit work?", commit());
assertQ("backslash escaping semicolon", req("id:42 AND val_s:aa\\;bb"), "//*[@numFound='1']", "//int[@name='id'][.='42']");
assertQ("quote escaping semicolon", req("id:42 AND val_s:\"aa;bb\""), "//*[@numFound='1']", "//int[@name='id'][.='42']");
assertQ("no escaping semicolon", req("id:42 AND val_s:aa"), "//*[@numFound='0']");
assertU(delI("42"));
assertU(commit());
assertQ(req("id:42"), "//*[@numFound='0']");
// test overwrite default of true
assertU(adoc("id", "42", "val_s", "AAA"));
assertU(adoc("id", "42", "val_s", "BBB"));
assertU(commit());
assertQ(req("id:42"), "//*[@numFound='1']", "//str[.='BBB']");
assertU(adoc("id", "42", "val_s", "CCC"));
assertU(adoc("id", "42", "val_s", "DDD"));
assertU(commit());
assertQ(req("id:42"), "//*[@numFound='1']", "//str[.='DDD']");
// test deletes
String[] adds = new String[] { add(doc("id", "101"), "overwrite", "true"), add(doc("id", "101"), "overwrite", "true"), add(doc("id", "105"), "overwrite", "false"), add(doc("id", "102"), "overwrite", "true"), add(doc("id", "103"), "overwrite", "false"), add(doc("id", "101"), "overwrite", "true") };
for (String a : adds) {
assertU(a, a);
}
assertU(commit());
// test maxint
assertQ(req("q", "id:[100 TO 110]", "rows", "2147483647"), "//*[@numFound='4']");
// test big limit
assertQ(req("q", "id:[100 TO 111]", "rows", "1147483647"), "//*[@numFound='4']");
assertQ(req("id:[100 TO 110]"), "//*[@numFound='4']");
assertU(delI("102"));
assertU(commit());
assertQ(req("id:[100 TO 110]"), "//*[@numFound='3']");
assertU(delI("105"));
assertU(commit());
assertQ(req("id:[100 TO 110]"), "//*[@numFound='2']");
assertU(delQ("id:[100 TO 110]"));
assertU(commit());
assertQ(req("id:[100 TO 110]"), "//*[@numFound='0']");
assertU(h.simpleTag("rollback"));
assertU(commit());
}
use of com.codahale.metrics.Gauge in project sling by apache.
the class MetricWebConsolePlugin method addGaugeDetails.
private void addGaugeDetails(PrintWriter pw, SortedMap<String, Gauge> gauges) {
if (gauges.isEmpty()) {
return;
}
pw.println("<br>");
pw.println("<div class='table'>");
pw.println("<div class='ui-widget-header ui-corner-top buttonGroup'>Gauges</div>");
pw.println("<table class='nicetable' id='data-gauges'>");
pw.println("<thead>");
pw.println("<tr>");
pw.println("<th class='header'>Name</th>");
pw.println("<th class='header'>Value</th>");
pw.println("</tr>");
pw.println("</thead>");
pw.println("<tbody>");
String rowClass = "odd";
for (Map.Entry<String, Gauge> e : gauges.entrySet()) {
Gauge g = e.getValue();
String name = e.getKey();
pw.printf("<tr class='%s ui-state-default'>%n", rowClass);
pw.printf("<td>%s</td>", name);
pw.printf("<td>%s</td>", g.getValue());
pw.println("</tr>");
rowClass = "odd".equals(rowClass) ? "even" : "odd";
}
pw.println("</tbody>");
pw.println("</table>");
pw.println("</div>");
}
use of com.codahale.metrics.Gauge in project metrics by dropwizard.
the class JmxReporterTest method registersMBeansForMetricObjectsUsingProvidedObjectNameFactory.
@Test
public void registersMBeansForMetricObjectsUsingProvidedObjectNameFactory() throws Exception {
ObjectName n = new ObjectName(name + ":name=dummy");
try {
String widgetName = "something";
when(mockObjectNameFactory.createName(any(String.class), any(String.class), any(String.class))).thenReturn(n);
Gauge aGauge = mock(Gauge.class);
when(aGauge.getValue()).thenReturn(1);
JmxReporter reporter = JmxReporter.forRegistry(registry).registerWith(mBeanServer).inDomain(name).createsObjectNamesWith(mockObjectNameFactory).build();
registry.register(widgetName, aGauge);
reporter.start();
verify(mockObjectNameFactory).createName(eq("gauges"), any(String.class), eq("something"));
// verifyNoMoreInteractions(mockObjectNameFactory);
} finally {
reporter.stop();
if (mBeanServer.isRegistered(n)) {
mBeanServer.unregisterMBean(n);
}
}
}
Aggregations